滚动新闻 →
卫生间地面容易积水应该注意哪些问题 知情者:王忠林问题很多 就看彭丽媛能否保住他 为了找乐子!罗马青少年踹飞滑板车骑士 知名演员重伤 不敌成长减缓 Netflix传将裁员千人 贵州1岁宝宝老鼠药中毒 邻居投案却拒赔医药费 豆豉是怎样成为中国饮食文化的一部分 为什么旅行景点不是越多越好 发电机故障会出现哪些驾驶表现 为什么一些电动车采用换电模式 川普宣布能源大单 台湾承诺购买700亿天然气 从移民身份到财产疑云 奥马尔面临多重调查 通胀再拉警报 9月CPI飙至3.7% 油价暴涨9.1% 涉为中国洗钱及违反制裁 美国银行遭罚$12亿 世界第一瀑布-伊瓜苏水量暴增八倍 场面震撼 传黄奇帆中山演讲后在深圳机场被抓走 北美买房时除了房价还需要考虑哪些成本 家庭建立财务规划应该从哪里开始 欧盟商讨应对中国廉价商品 并寻求越南矿产 加州代孕案 亲共侨领管理200账户 交易上亿 豪华游艇投资的真实回报应该如何计算 演员怎样从候选名单一步步进入最终谈判名单 华为庭审曝内部文件:奖金激励员工情报搜集 诺亚方舟在这里?研究团队提出新的证据 美打击朝鲜IT犯罪网络 起诉14人 含10中国人 俄国鼠疫疑云持续发酵 内蒙古删除警示引担忧 犯下战争罪 加拿大华人侨领“老虎”将被驱逐 加拿大雇主修改T4后应该怎么办 十三殖民地的法院如何运作 美司法部限加州48小时 查核非公民选民名单 浙男因经济拮据报复社会 杀害29岁陌生女子 美中期选举倒数 十州选情左右参院归属 告别大陆市场? 蔡康永社媒号删经纪人电话 对伊朗“忍无可忍” 川普放话:宽限期将尽 美国获日韩$710亿投资 建天然气和半导体项目 只因停车纠纷 成都宝妈拿U型锁把对方砸得满头血 肖肖尼人与美国西部的早期历史 窗户玻璃为什么会出现冷凝水 云南虎跳峡 男游客突然跳入激流中 河南银行风控系统形同虚设 贫困老人遭哄骗背上贷款 AI 训练数据为什么经常采用对象存储,和传统文件系统相比有哪些不同

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

发布时间: 2026-09-24 03:00:02    最后更新: 2026-10-13 22:24:54    阅读:66  约12 分钟阅读     

大模型训练的数据读取速度应该怎样估算,存储吞吐与 GPU 计算能力如何匹配
图片说明:示意图   图片来源:Public Domain(公有领域)
训练一个大模型,很多人第一反应是看 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 的最新报道 ›
★ 我的收藏 查看已经收藏的文章
关于文章收藏 收藏不需要注册帐号,收藏信息仅保存在当前浏览器中。 删除收藏请进入「我的收藏」进行管理。
分享这篇报道

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