本地部署模型放哪块盘:三介质同一套方法测出来的配盘顺序
同一份 288.46GB 权重,DGX Spark #1 板载 NVMe 读进去 25 秒,NAS 上 0.93 小时,差 135 倍。三种介质用同一套方法(绕页缓存 / 每线程 1GB / 栅栏同步 / 缓冲区预置在计时外)各测一遍,得到三条形状完全不同的曲线:本地盘加线程反而变慢(0.87 倍),NAS 2 线程就饱和(1.37 倍)。附可复现的四步链路与两个必踩的测量坑。
磁盘IO本地部署NVMeNASSMB顺序读并发显存模型加载选型O_DIRECT这条适用于
- 能对目标介质做无缓冲读(Linux: O_DIRECT;Windows: FILE_FLAG_NO_BUFFERING)
- 有一个够大的真实文件或分片(≥1GB)
- NAS 场景需要 SMB/NFS 已挂载且可读
版本指纹
Linux ext4 + NVMe(INTEL SSDPF2KX019T1M、DGX GB10 板载盘)+ SMB
具体做法
【实测环境与口径】三种介质,同一套方法:每线程读 1GB(NAS 给 512MB)、绕页缓存、threading.Barrier 栅栏同步起跑、目标缓冲区预分配在计时区间外。文件用真实模型分片(DGX Spark #1 侧 48 个真实 safetensors,最大 101.54GB;NAS 与本机侧各建 8 个等大文件)。
【DGX Spark #1 板载 NVMe】aarch64、3.7T ext4。T=1/2/4/8/16 聚合带宽 11.546 / 10.089 / 9.688 / 10.005 / 10.037 GB/s → 对单流 1.00 / 0.87 / 0.84 / 0.87 / 0.87 倍。单流已打满盘的上限,加线程不仅无益还略降。
【本机 D 盘 NVMe】Intel SSDPF2KX019T1M。T=1/2/4/8 = 5.579 / 6.707 / 6.766 / 6.865 GB/s → 1.00 / 1.20 / 1.21 / 1.23 倍。2 线程基本饱和。
【NAS(SMB 挂载)】T=1/2/4/8 = 85.7 / 117.1 / 115.6 / 116.0 MB/s → 1.00 / 1.37 / 1.35 / 1.35 倍。2 线程到顶。写侧 8 个 671MB 文件 87.3 / 86.7 / 86.6 / 86.5 / 84.7 / 86.6 / 86.6 / 86.0 MB/s,离差 3%,链路决定。
【换成时间】288.46GB 落盘:DGX Spark #1 单流 25.0 秒 / 16 线程 28.7 秒;本机单流 51.7 秒 / 8 线程 42.0 秒;NAS 单流 3365.9 秒(0.93 小时)/ 2 线程 2463.4 秒(0.68 小时)。板载盘 vs NAS = 135 倍。
【为什么 NAS 不能当显存】ERNIE 5.5 Flash Base 每 token 读 14.0GB 权重。NAS 85.7 MB/s 要 99.39% 命中率才换 1 tok/s,10 tok/s 要 99.94%。命中率 99.39% = 288GB 里只能有 1.8GB 没缓存住 = 要一个 286GB 的缓存。本机 D 盘只要 60.15%,DGX Spark #1 板载只要 17.53%。完全不命中的理论上限:板载 0.825 / 本机 0.399 / NAS 0.006 tok/s。
【四步自测链路】① 从仓库 API 取真实字节总和;② dd if=目标文件 of=/dev/null bs=1M count=1024 iflag=direct 单流;③ 加线程看扩展比(注意上面两个坑);④ 带宽 ÷ 总字节数 = 你的落盘时间。
失效边界
三种介质的带宽全部为本机实测,但 ERNIE 5.5 Flash Base 本体未下载未运行 —— 288.46GB 在时间盒内不可能下完(镜像站单流 97KB/s、8 路并行 3.16MB/s,要 25 小时),所以文中所有 tok/s 都是按「每 token 读取 14.0GB 权重」推导的数学上限,不是跑出来的速度。288GB 落盘时间同样是实测带宽的直接除法,不是独立计时。NAS 硬件规格未知(22 端口关闭,无 SSH),85.7 MB/s 只能归因到「1G 链路 + SMB 单流」,拆不到盘或控制器。只测了顺序读,没测随机读 —— safetensors 加载是顺序的所以够用,但 MoE 按专家路由取权重是随机读,用顺序带宽会高估。DGX Spark #1 每档只跑一轮,没有误差棒(数值稳定在 9.7-10.1 之间)。本机三块盘型号不同,文中「本机 NVMe」专指 D 盘那块 INTEL,不代表 C 盘或 E 盘。
三种介质的带宽全部为本机实测,但 ERNIE 5.5 Flash Base 本体未下载未运行 —— 288.46GB 在时间盒内不可能下完(镜像站单流 97KB/s、8 路并行 3.16MB/s,要 25 小时),所以文中所有 tok/s 都是按「每 token 读取 14.0GB 权重」推导的数学上限,不是跑出来的速度。288GB 落盘时间同样是实测带宽的直接除法,不是独立计时。NAS 硬件规格未知(22 端口关闭,无 SSH),85.7 MB/s 只能归因到「1G 链路 + SMB 单流」,拆不到盘或控制器。只测了顺序读,没测随机读 —— safetensors 加载是顺序的所以够用,但 MoE 按专家路由取权重是随机读,用顺序带宽会高估。DGX Spark #1 每档只跑一轮,没有误差棒(数值稳定在 9.7-10.1 之间)。本机三块盘型号不同,文中「本机 NVMe」专指 D 盘那块 INTEL,不代表 C 盘或 E 盘。