滚动新闻 →
电池包为什么越来越像汽车底盘的一部分 冯小刚回应《抓特务》亏损 网友:你对不起韩红 家庭使用梯子时应该注意什么 大模型训练的数据读取速度应该怎样估算,存储吞吐与 GPU 计算能力如何匹配 存3000万被欠15万利息 黑龙江商店起诉银行 习近平睡不着了!酒店外美国人也“踩习” 广州女出境携百万玉石被拦 竟因高铁错拿行李 中共砸60亿推真人短剧 民众怒轰糟蹋民脂民膏 习下榻酒店外抗议声震天 高喊“共产党下台”(组图/视频) Google Cloud 磁盘类型怎么选,Persistent Disk、SSD 和不同存储方案有什么区别 伊总统联大讲话自称受害者 遭白宫反呛 中共扣留F-35敏感零件 美澳展开调查 SaaS 多租户数据库有哪些常见设计方式,各自适合什么场景 阿富汗坎达哈遭袭击 夜间传巨大爆炸声 电脑运行大型软件时突然黑屏,显卡过热和电源不足如何区分 知情者:张又侠案常委督办高度保密 军中不满 习近平访美 抗议人群抬棺材、举黑旗“送葬” Windows 11 休眠功能怎么开启?它和睡眠模式到底有哪些区别? 太平洋史上最强风暴之一 飓风波洛威胁墨西哥 Windows 11 安装 Composer 的完整流程,以及环境变量如何设置 从《聊斋志异》看古人的想象世界 “济公”游本昌病亡 宣誓入党仅一年 中共雇用红色团体“欢迎习”知情者爆花钱内幕 《黄帝内经》中的四时养生思想 以色列驻美大使之子约旦河西岸遇冲撞 重伤命危 围棋中的眼和活棋有什么区别 如何教育孩子尊重别人的物品 室内灯光不足应该怎么办 27人东欧旅游险遭丢包 旅行社负责人伪造汇款遭诉 太空AIDC成能源新战场 台厂握钙钛矿技术助攻 中共代表团被抗议者包围 高喊“习近平下台” 京杭大运河对中国历史究竟有多重要 舒力基最快明转中台 中秋全台赏月有望 收假日变天 北约东翼拉警报 欧洲紧急屯粮备战? 卧室照明应该如何改善 惊呆?川普欢迎仪式 B-1轰炸机突从习头顶掠过 川普高调迎接习党魁 或为远交近攻的缓兵之计 美国柴油价格破新高 川普支持限制出口救内需 酒在中国传统饮食文化中扮演什么角色 川习会前对台军售成焦点 台湾:按计划推进

大模型训练的数据读取速度应该怎样估算,存储吞吐与 GPU 计算能力如何匹配

发布时间: 2026-09-24 03:00:02    最后更新: 2026-09-24 04:48:59    阅读:8  约12 分钟阅读     

训练一个大模型,很多人第一反应是看 GPU 有多少 TFLOPS、显存有多少 GB,却很少计算另一个同样现实的问题:GPU 每秒到底需要多少训练数据?

如果 GPU 已经开始计算,而数据加载线程还在等待磁盘,昂贵的 GPU 就会出现空闲时间。反过来,如果存储系统能够提供几十GB甚至上百GB每秒的数据,而 GPU 本身根本消化不了这么多数据,那么继续升级存储也不会让训练速度明显提高。

所以,大模型训练中的存储性能并不是越高越好。真正需要解决的是计算、数据读取、数据预处理以及 GPU 内存之间的供需平衡。

估算训练数据读取速度,最简单的方法是从训练吞吐量开始。

假设一个训练集大小为10TB,整个训练过程希望在10分钟内把这10TB顺序读取一遍,那么理论平均读取速度就是:

10TB ÷ 600秒 ≈ 16.7GB/s

这里需要特别注意,这个数字描述的是“在这10分钟里平均需要读取多少数据”,并不代表任何一台 SSD 都必须单独提供16.7GB/s。

如果训练数据被分布在多个 NVMe SSD、多个存储节点或者对象存储与本地缓存组成的分层架构中,那么整个数据系统可以共同提供这个吞吐量。

更重要的是,训练数据通常不会只读取一次。

假设一个10TB的数据集训练100个 epoch,理论上数据可能被读取数百TB甚至更多。但这并不意味着存储系统必须每秒提供一个极高的固定带宽,因为训练过程中可能存在本地缓存、操作系统页缓存、数据预取、数据集分片以及其他缓存机制。

因此,真正应该计算的是单位时间内训练程序实际需要的数据,而不是简单拿“数据集总容量”除以训练时间。

可以从一个更实用的指标开始:

每秒训练多少个样本。

假设一个训练任务每秒处理2000个样本,每个样本在进入 GPU 前需要读取并解码平均20MB数据,那么原始数据需求大约是:

2000 × 20MB = 40GB/s

这时候,存储和数据加载系统理论上至少要能够持续提供接近40GB/s的数据流。

但这仍然只是第一层估算。

因为磁盘上的数据通常不是以“GPU 可以直接使用的形式”保存的。训练数据可能是图片、文本、音频、视频或者经过序列化的数据集。数据从存储系统读取以后,还可能经历解压、解码、随机访问、格式转换、tokenization、数据增强以及 batch 组装。

因此,一个训练任务的实际数据路径可能是:

存储系统 → CPU内存 → 数据预处理 → pinned memory → GPU显存 → GPU计算

每一个环节都可能成为瓶颈。

例如存储系统可以提供50GB/s,但 CPU 数据解码只能处理20GB/s,那么 GPU 最终得到的仍然只有大约20GB/s的数据供给能力。

反过来,如果 CPU 和存储都非常快,而 GPU 每秒只需要10GB的数据,那么继续增加存储带宽也没有意义。

这就是为什么不能简单使用“GPU TFLOPS × 数据吞吐系数”计算所需磁盘带宽。

TFLOPS描述的是 GPU 的计算能力,而训练数据读取量主要取决于 batch size、序列长度、样本格式、训练吞吐量以及数据预处理方式。两者之间存在联系,但不是一个简单的乘法关系。

例如,一块 GPU 可以拥有数百甚至上千 TFLOPS 的理论计算能力,但训练过程中每秒从数据集读取的数据可能只有几GB到几十GB。GPU 通过大量计算把这些输入数据转化成梯度和模型状态,而不是每执行一次浮点运算都从 SSD 读取数据。

因此,在设计训练系统时,更有意义的关系是:

存储与数据管道吞吐量 ≥ 训练任务实际数据消耗速度

同时:

数据管道处理能力 ≥ GPU 实际训练吞吐所要求的数据供给速度

如果这两个条件成立,存储就不太可能成为主要瓶颈。

GPU 数量增加以后,问题会进一步复杂。

假设一台服务器有8块 GPU,每块 GPU 每秒需要5GB训练数据,那么整个节点的数据供给需求大约就是40GB/s。

如果增加到64块 GPU,而每块 GPU 的训练吞吐量和数据需求保持类似,那么整个训练集群的数据供给需求可能达到数百GB/s。

这时候,一块普通 PCIe NVMe SSD 显然不够。

解决方法可以是使用多个 NVMe SSD,通过 RAID、分布式文件系统或者本地缓存构建更高的聚合吞吐量,也可以使用专门面向 AI/高性能计算的数据存储系统。

这也是为什么大规模 AI 集群经常采用本地 NVMe 加共享存储的分层架构。

共享存储负责保存完整的数据集,本地 NVMe 则负责缓存当前训练任务需要频繁访问的数据。

这样做的好处,是让昂贵的高速本地存储承担“热点数据”,让容量更大的共享存储承担“数据仓库”。

对于小型模型或者单机训练环境,一两块高速 NVMe SSD 往往已经足够。此时真正的瓶颈可能根本不是存储,而是 GPU 显存、CPU 数据预处理或者训练代码本身。

当 GPU 数量增加以后,存储架构的重要性才会迅速提高。

例如8块高端 GPU 同时训练时,如果所有 GPU 都依赖一台普通网络文件服务器读取数据,那么网络带宽可能比 SSD 本身更早成为瓶颈。

假设服务器到存储系统只有25Gbps网络,那么理论网络带宽大约只有3.125GB/s,实际可用吞吐还会受到协议开销、网络栈、存储系统以及访问模式影响。

这意味着即使后面的存储系统能够提供100GB/s,训练节点最终也可能只能拿到远低于100GB/s的数据。

如果换成100Gbps网络,理论带宽约12.5GB/s;400Gbps则约50GB/s。到了大规模 GPU 集群,网络已经不再只是“连接服务器的东西”,而成为整个训练数据管道的一部分。

不过,训练数据访问方式也非常重要。

很多训练任务并不是简单地从一个巨大文件里连续读取数据,而是不断读取大量小文件。如果数据被拆成数百万个小文件,那么元数据操作、文件打开关闭、目录查询以及随机 I/O 都可能造成严重影响。

这时候,即使存储设备拥有很高的顺序读取速度,实际训练吞吐仍然可能很差。

因此,大模型训练通常会对数据格式进行优化,例如将大量小文件打包成更适合顺序读取的数据分片,并结合预取和缓存降低随机访问开销。

这也是为什么“SSD标称读取速度是多少”并不能直接代表训练数据加载速度。

假设某块 NVMe SSD 标称顺序读取速度为7GB/s,并不意味着 PyTorch DataLoader 就一定能够稳定获得7GB/s。

实际速度还受到文件大小、访问模式、线程数量、CPU 解码速度、文件系统、缓存命中率以及数据格式等因素影响。

PyTorch 的 DataLoader 本身也可能成为瓶颈。

如果 num_workers 设置过低,CPU 来不及准备下一批数据,GPU 就可能出现等待。如果 worker 太多,又可能造成 CPU 竞争、内存压力和 I/O 抖动。

因此,训练性能优化经常需要同时观察 GPU utilization、CPU utilization、磁盘吞吐、I/O wait、内存带宽以及 DataLoader 等指标。

如果 GPU 长时间只有50%左右的利用率,同时 CPU 正在忙于解码数据,那么升级 SSD 未必有效。

如果 CPU 很空闲、GPU 也在等待,而存储吞吐已经达到上限,那么存储系统才更像真正的瓶颈。

还有一个非常容易被混淆的问题,就是“模型太大导致需要不断从 SSD 读取模型参数”。

正常训练时,模型参数和大量训练状态会尽可能驻留在 GPU 显存或者其他高速内存体系中。对于超大模型,如果单块 GPU 放不下,训练框架会采用数据并行、张量并行、流水线并行、参数分片以及其他显存优化技术。

这类情况下发生的是 GPU 与 GPU、GPU 与主机内存之间的数据交换,以及分布式训练过程中的通信,并不意味着每一次参数计算都要从 SSD 读取模型参数。

如果模型因为显存不足而不得不频繁进行 CPU offload、NVMe offload,那么存储系统的重要性才会明显增加。此时 NVMe 的延迟和吞吐都可能直接影响训练速度,但这已经属于一种特殊的内存层级设计,而不是普通训练数据读取问题。

GPU 之间的通信同样不能忽略。

在多 GPU 训练中,梯度同步、参数交换以及模型并行通信可能产生非常大的数据流量。这部分流量主要发生在 GPU 间互连和网络上,例如 NVLink、PCIe 或高速 InfiniBand/Ethernet 网络,而不是传统意义上的“硬盘读取”。

因此,一个拥有8块 GPU 的训练服务器,即使存储速度非常快,如果 GPU 之间的通信性能不足,训练仍然可能无法达到预期效率。

最终可以把整个系统理解成几条连续的数据通道。

第一条是存储到 CPU 内存。

第二条是 CPU 内存到 GPU 显存。

第三条是 GPU 与 GPU 之间的通信。

第四条是 GPU 自身的计算和显存访问。

任何一条通道出现明显瓶颈,都可能让昂贵的 GPU 计算资源闲置。

对于单机训练,可以先测量实际训练过程中每秒读取多少数据,再观察 GPU 利用率。如果 GPU 长时间接近满载,而磁盘读取量远低于 SSD 理论上限,那么没有必要为了“AI训练”这个标签盲目购买更快的 SSD。

如果 GPU 利用率周期性掉到很低,而每次掉速都伴随磁盘吞吐达到上限,则应该考虑增加 NVMe 数量、优化数据格式、提高并发读取能力或者增加缓存。

对于多 GPU 甚至多节点训练,则需要进一步计算整个集群的数据供给需求。

例如64块 GPU,每块 GPU 实际训练吞吐对应的数据需求为5GB/s,那么理论数据供给需求就是320GB/s。此时,一套只能提供10GB/s的共享存储显然无法满足持续满负载训练。工程师需要考虑本地 NVMe 缓存、并行文件系统、分布式存储、高速网络以及数据预取等手段。

但这也不是说存储必须永远达到320GB/s。

如果数据已经被预取到本地缓存,训练过程中大部分读取都来自本地 NVMe,那么共享存储只需要负责补充缓存,而不是直接承担所有 GPU 的实时读取请求。

这就是 AI 基础设施中经常出现的分层存储思想。

慢而便宜的存储负责保存完整数据集,高速共享存储负责提供集群级数据访问,本地 NVMe 负责热点缓存,而 GPU 显存负责保存当前计算最需要的数据。

这样设计以后,系统就不需要让最昂贵的存储设备承担所有工作。

所以,大模型训练中的存储性能估算,第一步不是看 GPU 有多少 TFLOPS,而是测量训练任务每秒实际消耗多少数据。然后沿着“存储、CPU内存、数据预处理、GPU显存、GPU计算、GPU间通信”这条链路逐层寻找瓶颈。

对于普通单机训练,高性能 NVMe SSD 往往已经能够满足需求;对于几十块甚至数百块 GPU 的训练集群,问题则会逐渐从“SSD够不够快”变成“整个数据管道能不能持续供应计算集群”。

GPU 越快,系统越容易暴露其他环节的不足。昂贵的 GPU 如果因为等待数据而空转,购买更多 GPU 并不能自动提高训练效率。好的 AI 基础设施并不是把每一个组件都堆到最高规格,而是让存储、网络、CPU、内存和 GPU 之间形成合理的数据流。最终决定训练速度的,往往不是某一个硬件的理论峰值,而是整个系统能否持续、稳定地把数据送到计算发生的地方。

喜欢这篇报道?

使用下面的功能,方便以后继续阅读和分享 MNewsTV

设为 Google 新闻首选来源 让 Google 新闻优先显示 MNewsTV 的最新报道
我的收藏 查看已经收藏的文章
关于文章收藏 收藏不需要注册帐号,收藏信息仅保存在当前浏览器中。 删除收藏请进入「我的收藏」进行管理。
分享这篇报道

分享 Facebook | X | WhatsApp | LinkedIn

捐助(Paypal): https://www.paypal.me/observeccp
订阅中国观察电报 Telegram : https://t.me/s/ObserveCCP