每一字节的搬动都有成本。当模型检查点增长到数百 GB 甚至 1TB 时,这笔成本会迅速累积。更麻烦的是,在集群中搬运模型权重极为常见:冷启动需要把权重从远程存储拉入 GPU 显存;自动扩缩容和滚动更新要为每个新副本填充权重;强化学习后训练还要持续把更新后的权重从训练端送到 rollout worker。这些场景看似不同,却共同承担同一项反复出现的税——在真正开始有效工作之前花在搬运权重上的时间。
NVIDIA ModelExpress(MX)围绕一个简单的思路构建:在加载模型之前,先问这个模型权重的兼容副本已经存在于哪里。它不再把每个副本都视为独立的冷启动,而是选择可用来源中最快的一条传输路径。
当服务中的对等节点已经在 GPU 中持有兼容权重时,MX 会通过 NVIDIA Inference Xfer Library(NIXL)在 GPU 之间以 P2P RDMA 直接传输,绕过对对象存储、本地磁盘和主机内存的冗余访问。当没有可用对等节点时,MX 会从最快的受支持路径引导启动:从对象存储流式加载而不落盘,或直接把本地文件读入 GPU 显存。
效果上,MX 可以把 DeepSeek-V4 Pro 的权重以及即时编译内核缓存产物,从一个正在服务的副本传入全新副本,用时不到 10 秒,使整体启动时间从 8 分钟缩短到 1 分 44 秒。
具体到首个 worker 的启动,远程对象存储到 GPU 的路径使用 Model Streamer,通过可复用的 CPU 暂存缓冲区把 safetensors 送入 GPU,检查点全程不落到本地磁盘,省去中间下载、重载和存储卷。Model Streamer 使用多线程张量读取器,跨检查点分片并发获取张量区间,并在张量到达时把远程读取与 GPU 放置流水化:已完成的张量交给推理引擎,后续张量仍在获取。在张量并行部署中,各 rank 分摊远程读取并通过 NCCL 共享结果,而不是让每个 rank 独立下载完整检查点。
当集群维护共享磁盘缓存层时,MX 会确保整个机群只填充一次。如果 10 个副本同时想拉取 806 GiB 的 DeepSeek-V4 Pro 模型,它们将需要通过竞争同一入口带宽在网络中传输约 8 TiB 的完全相同数据;MX 的模型缓存服务把这些请求合并为一次协同下载,由元数据存储中的原子声明选出下载者,其余副本跟踪进度并复用缓存副本,集群只为外部下载付费一次。
当系统支持 GPUDirect Storage(GDS)时,MX 通过 NIXL 的多线程 GDS 后端把检查点文件直接从本地存储读入 GPU 显存,跳过主机内存和传统加载器所需的暂存拷贝;用户无需显式开启 GDS,MX 会自动检测能力,不可用时回退到其他加载策略。MX 也可以通过 ModelStreamer 加载本地检查点,多个操作系统线程并发读取到可配置的 CPU 缓冲区,已完成的张量继续前往 GPU,后续读取并行进行,从而把磁盘 IO 与 GPU 放置重叠起来。
最具特色的是首个 worker 之后的每一个 worker:一旦已有副本正在服务同一个模型,其权重就已完成大部分旅程——常驻 GPU 显存、经过后处理、并按推理引擎需要完成布局。MX 会把该对等节点视为首选来源,只有在找不到兼容对等节点时才回退到存储路径。
WeChat
Profile