滚动新闻 →
陕西商南凶案嫌犯逃亡两日后深山自尽 俄方以制裁为由接管日烟资产 日本敦促立即撤销 《白衣逆行者》撤档引争议 电影方未回应集体抵制 男子向警车投掷汽油瓶引发火灾 警方跨区追捕10小时擒凶 中国女厕偷拍黑产蔓延 超14万女性受害 河北中学厕所冲突致13岁学生死亡 4人获刑 从古典文学看中国人的时间观念 内部人士曝马兴瑞接班饭局内幕 触犯习大忌 经络理论在传统医学中的形成 印章上的篆书为什么特别多 中共大搞3C检查 多地五金店“恐慌式闭店” 巴拉圭银行倒闭 总统潘尼亚抢先国会弹劾提离职 赖均辅逆转许皓鋐 玄乐杯决赛第三局上演惊天逆转 刘云平将成美国国会亚裔最高职位者 民主党夺回国会布局完成 医药高官余艳红主动投案 涉及与习御医曾益新密切关联 如何教育孩子为自己的行为承担后果 欧洲多国航班接连遭遇炸弹恐吓 超25架客机受影响 进化骗局(34) 造假打磨 世界认可 陆配亚亚返乡后展示卫星影像 引发两岸舆论争议 民主党内部派系博弈加剧 四大政治挑战浮现 为什么剪辑不是简单地把片段拼起来 纽约布鲁克林住宅火灾致6人遇难 锂电池或成主因 台湾AI产业带动经济回暖 百货业预期景气延续至2027年 万斯直指伊朗战争影响选情 赫格塞斯或遭弹劾 台股重挫逾3700点失守年线 新台币跌破33元创逾1年半新低 退休夫妇邮轮退休梦破灭 突发停运令203名住户陷入困境 美国国会权力更迭 或重塑全球外交格局 APEC暗潮涌动 美中俄会晤能否成行留悬念 晚清为什么不断出现改革与失败 加拿大公布新预算案 卡尼推动经济自主 赤字引发关注 台湾退役军官涉中共选举干预遭限制出境 中共对台跨境镇压升级 九大手段威胁民主自由 美军加速部署无人机防御体系 涉及超2.5万套装备 纽约布鲁克林木质排屋火灾致6死9伤 美股四大指数重挫 AI科技股集体暴跌 英伟达特斯拉跌逾9% 小户型如何利用墙角空间 欧洲多架航班遭遇炸弹威胁 战斗机紧急护航 加拿大面临中共渗透风险 专家呼吁加强安全审查 马兴瑞贪腐25年被起诉 习彭人脉遭冲击 黄之锋被判十年监禁 国际社会谴责中共人权问题

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

发布时间: 2026-09-24 03:00:02    最后更新: 2026-11-05 21:57:25    阅读:104  约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