新上8卡RTX 5090 限时特惠 Read more

NVMe 全闪做模型缓存:加载 70B 模型从 90 秒降到 8 秒的实操 - 云数方舟

NVMe 全闪做模型缓存:加载 70B 模型从 90 秒降到 8 秒的实操

推理服务更新 LoRA 或重启 vLLM,加载 70B 模型从磁盘读 140GB 权重,SATA SSD 要 90 秒,业务中断肉眼可见。换 NVMe 全闪 + 缓存策略,压到 8 秒。

第一层:NVMe 本身

PCIe Gen4 NVMe 顺序读 7GB/s,Gen5 能到 14GB/s。70B FP16 约 140GB,纯顺序读 Gen4 理论 20 秒,实际受文件系统开销影响 30-40 秒。

# 确认盘速
fio --name=seqread --rw=read --bs=1M --size=10G \
    --filename=/mnt/nvme/test --direct=1

# 看是否跑满
iostat -x 1

第二层:page cache 复用

第一次加载后内核会把文件留在 page cache,第二次启动直接内存读(微秒级)。但 page cache 会被其他 IO 挤掉。

# 锁定模型文件不被换出(需要 root)
vmtouch -t -l /models/Qwen3-70B/
# -t 预读进缓存,-l 锁住不换出

第三层:tmpfs 常驻

内存够大(512G+),直接把模型挂 tmpfs:

mount -t tmpfs -o size=150G tmpfs /mnt/modelram
cp /models/Qwen3-70B/* /mnt/modelram/
# vLLM 从 tmpfs 加载,8 秒搞定

代价:内存占用高,但推理节点本来内存就富余。权衡是重启机器要重新拷模型(写一次 30 秒),比每次服务重启都从盘读划算。

第四层:直接 IO 绕过 page cache

vLLM 默认用 mmap 加载权重,走 page cache。加 --load-format dummy 配合自定义加载脚本用 O_DIRECT,适合内存紧张、NVMe 够快的场景。

达拉斯节点标配 NVMe 全闪 + 512G 内存,模型缓存方案开箱可用:云数方舟 GPU 物理机

云数方舟
  • contact@globaldc.cn