数据集放在哪不拖慢训练?算力租赁平台的存储与带宽配置清单
租 GPU 时花在型号和卡数上的时间,通常远多于花在存储上的时间。但训练跑得慢、启动等太久、任务莫名中断,原因经常不在卡上,而在盘和带宽上。GPU 空转等数据的成本,和显卡本身一样贵。
这篇文章把容器实例的存储与带宽配置拆开讲清楚:三种盘各自负责什么、1000Mb 共享带宽换算成实际速度是多少、小文件为什么是训练效率的真凶、以及镜像预热这类容易被忽略的功能什么时候值得用。
一、三种盘的分工:系统盘、数据盘、文件存储
容器实例的存储一般分三层,理解它们的差别能避免一个常见事故:把重要数据放在会被重建的盘上。
系统盘承载操作系统和运行环境,挂载在根路径。它的容量通常最小,且与实例生命周期强绑定,实例重建时内容一般不保留。官网容器实例的系统盘多为50G,个别规格为40G或60G。它不适合放数据集,也不适合放训练输出。
数据盘挂载在独立路径上,容量比系统盘大得多,是放数据集、模型权重和训练日志的地方。官网各规格的数据盘容量差别不小,4090 24G 为100G,4090 48G 为500G,华为 910B 64G 为200G,其83折节点为300G。这一层通常与实例解绑设置,比系统盘安全。
文件存储是独立于单个实例的共享存储,多个实例可以挂载同一份数据。当一份数据集要同时给多台实例读的时候,它的价值就体现出来了,不需要每台各拷一份,也避免了副本之间不同步。
一条容易被忽视的页面提示
官网容器实例页面明确标注容器实例不支持再次安装 docker。这意味着依赖自定义容器运行时的任务,直接在实例里装 docker 是走不通的,需要把环境做进镜像再通过镜像启动实例。选型阶段就要确认这一点,否则会在部署时卡住。
二、带宽换算:1000Mb 共享是什么水平
官网容器实例的公网带宽统一标注为1000Mb共享带宽。这里有两个关键字要分开看,一是数值,二是共享。
先说数值换算。网络带宽的单位是比特,文件大小的单位是字节,两者相差8倍。1000Mb/s 换算成字节口径,理论峰值约为125MB/s。按这个速度读1TB数据,需要 1024 × 1024 ÷ 125 ≈ 8389秒,接近2.33小时。
再说共享。共享意味着这条1000Mb的通道不是实例独占,而是与其他实例共用。标称值是上限而不是保证值。把数据集放在公网侧的存储上、训练时实时拉取,遇到高峰期就可能拖慢整个训练。这也是为什么在 算力市场 上选实例时,数据集应该落在数据盘或文件存储上,而不是靠公网现拉。
| 容器实例型号 | 系统盘 | 数据盘 | 公网带宽 |
|---|---|---|---|
| NVIDIA 4090 24G | 50G | 100G | 1000Mb 共享 |
| NVIDIA 4090 48G | 40G | 500G | 1000Mb 共享 |
| 华为 910B 64G | 50G | 200G | 1000Mb 共享 |
| 华为 910B 64G(83折节点) | 60G | 300G | 1000Mb 共享 |
需要更大盘容量的场景,可以转向裸金属整机。整机的存储配置量级完全不同,系统盘有480G×2、960G×2、1920G×2几种,数据盘有3.84T×2、7.68T、1T×4、4T×4,高端机型如 B300 288G 甚至配到3.84T×8,且多数标注为 NVMe 或 SSD。整机的盘是本地直连,不走公网,这也是整机在大数据集训练场景下的实际优势。
三、小文件才是真凶:落盘方式决定训练效率
很多团队把数据集从本地搬到云上后,发现同样的代码慢了好几倍,排查到最后问题出在文件的组织方式上,而不是盘不够快。
原因是随机读写。大量小文件意味着每次读都要做一次寻址,吞吐被元数据操作吃掉,实际的顺序读性能用不上。数据集里的图片、音频、小样本文本都属于这一类,几十万个几 KB 到几百 KB 的文件很常见。
工程上的通用做法是先合并再读取,把数据集打包成数量更少但体积更大的分片文件,让读取从随机变成顺序。这样既减少了元数据开销,也让预取和并发读更有效。顺序读的性能,才是盘的能力上限能被兑现的场景。
用带宽算一遍小文件的代价
假设数据集是20万张小图、总大小1TB。如果按单文件逐个读取,除了1TB的数据量,还要额外承担20万次元数据操作。同样的数据量,如果打包成几个分片,就只剩几次顺序读的开销。数据总量没变,时间差在元数据上。
另一个容易被忽略的是算力与存储的带宽落差。据今日头条10月11日报道,落地昌平的华为昇腾950DT千卡超节点,内存带宽达4TB/s、卡间互联带宽2TB/s。算力侧的带宽单位是 TB/s 量级,而公网侧常见单位是 Mb/s 量级。这个差距决定了:算力越强,越不能容忍数据供应跟不上,否则卡越快,空转越多。
四、镜像预热:省下的是启动时间,也是钱
容器实例页面提供了镜像预热功能。它的作用是在实例启动之前,先把镜像拉取并准备好,让实例起来就能直接进入运行状态。
这个功能对两类场景价值最大。一类是需要频繁创建和释放实例的调试阶段,每次启动都要等镜像拉取,累计起来的时间很可观。另一类是使用大体积基础镜像的任务,拉取时间本身就长,如果按量计费,等待期间的费用照收。预热本质上是把这段时间省下来。
配套的建议是把依赖前置到镜像里。既然容器实例不支持再装 docker,环境定制只能通过镜像完成,那么镜像的构建就应该一次性把驱动版本、Python 依赖、算子库都对齐,避免在实例启动后再装包。启动后现装包除了耗时,还会在实例重建后需要重来。
五、配置清单与三个常见误区
把上面的内容收敛成一份配置清单:数据集与模型权重放数据盘或文件存储;系统盘只放运行环境;数据集优先打包成顺序读的分片;依赖全部做进镜像并启用镜像预热;需要大容量和本地直连盘时转裸金属整机。
三个常见误区值得单独提一下。第一,把数据集放系统盘。系统盘空间小且随实例重建,一次误操作可能丢掉整批数据。第二,按公网带宽估算训练时间。训练读数据走的是本地盘,不是公网,只有数据上传下载才受公网带宽约束,两者不能混算。第三,只看盘的总容量不看盘型。官网裸金属整机明确区分 NVMe、SSD 与普通盘,同样容量下随机读写性能差异明显,容量满足不等于性能满足。
常见问题
数据盘和系统盘,实例释放后都会丢吗?
两者的生命周期策略不同。系统盘与运行环境绑定,实例重建时一般不保留;数据盘通常做了解绑设置,比系统盘更安全。但最稳妥的做法仍是把训练产出定期同步到独立存储或对象存储,不依赖单实例的盘。
1000Mb 共享带宽够用吗?
看用途。跑训练时数据已经落在本地盘上,公网带宽只承载结果回传和监控上报,通常够用。如果用公网实时拉数据集、或者要频繁上传大模型权重,共享带宽就会成为瓶颈,这种情况应该选带独享带宽的裸金属整机。
多台实例要用同一份数据集怎么办?
用文件存储挂载,多个实例读同一份数据,避免各拷一份带来的存储浪费和版本不一致。如果数据集极大,另一种做法是先打包上传一次,再在各实例的数据盘上落一份本地副本,因为本地直连盘的读取速度通常更好。
镜像预热是必须开启的吗?
不是必须,但对频繁创建实例或使用大镜像的场景收益明显。它减少的是启动等待时间,按量计费时这段时间也在计费,所以预热的收益可以直接折算成费用。
数据来源与时效
官网配置与价格采集于2026年10月12日,来源为极智算官网容器实例页面与裸金属页面。1000Mb 换算为125MB/s 依据1字节等于8比特的换算关系,1TB 读取耗时2.33小时为该换算下的理论值,实际受并发、协议与盘型影响。行业数据来源:今日头条(10月11日,昇腾950DT千卡超节点内存带宽4TB/s、卡间互联带宽2TB/s,落地北京昌平信息港数据中心,采用中国移动披露口径)。价格与配置随市场波动,以实际下单页面为准。