AI/TLDR

ModelExpress

A sidecar for inference servers that finds the fastest available copy of a model's weights and moves it into GPU memory, instead of cold-loading from storage

Serving & DeploymentOpen source
Updated
24 Jul 2026
Language
Rust
License
Apache-2.0
Coverage
1 story

What's new

24 Jul 2026

NVIDIA open-sourced ModelExpress under Apache-2.0 as a component that peer-to-peer transfers model weights next to vLLM, SGLang, TensorRT-LLM and Dynamo, reporting a 48× cold-load speedup on DeepSeek-V4-Pro.

Latest news

Overview

ModelExpress (MX) is a component from the NVIDIA Dynamo project that sits next to an existing inference server and answers one question before a model loads: where does a compatible copy of these weights already live? Instead of treating every replica as an independent cold start, it discovers available sources and picks the fastest supported path into GPU memory — a peer-to-peer RDMA transfer from a replica that is already serving, a server-side cache, InstantTensor from local safetensors, a concurrent ranged fetch through ModelStreamer, GPUDirect Storage, or the engine's own loader as a fallback. The first applicable strategy runs; if one fails before changing model state it moves to the next, and it reinitialises the model rather than serve a partially loaded one.

It also transfers the JIT compilation caches that dominate warmup — compatible vLLM and SGLang TorchInductor, Triton, DeepGEMM, TileLang, CuTe DSL and FlashInfer caches move from a ready replica instead of being rebuilt. The published benchmark: DeepSeek-V4-Pro weights loaded from a serving replica in 11 seconds, a 48× speedup over the 8m 53s cold Hugging Face pull in the same environment, and process-start-to-API-ready cut from 8m 01s to 1m 44s (4.6×), measured with vLLM 0.23.0 at TP=8 on an 8×B200 node with ConnectX-7 NICs.

The control plane brokers metadata only — through Redis, Kubernetes CRDs, or a decentralised `k8s-service` backend — while weight bytes move directly between the source and the target on the data plane. Integrations are native where possible: `--load-format modelexpress` in vLLM 0.23.0+, SGLang's `remote_instance` loader with the `modelexpress` backend, `checkpoint_format="MX"` in TensorRT-LLM (beta, Llama family), the Dynamo vLLM and SGLang runtimes, and an upstream llm-d baseline integration. It ships a Helm chart, CRDs and a Rust CLI, and is Apache-2.0.

What it does

  • Fixed loading-strategy chain — P2P RDMA → server cache → InstantTensor → ModelStreamer → GPUDirect Storage → native loader — with safe fallback at each step
  • GPU-to-GPU weight transfer over NVIDIA NIXL across InfiniBand, RoCE, NVLink and EFA; each new replica joins the source pool
  • JIT kernel-cache transfer for vLLM and SGLang, so scale-out does not rebuild compilation caches
  • Metadata backends: Redis, Kubernetes CRD, or decentralised Kubernetes Service routing — weight bytes never pass through the server
  • Model pull providers beyond Hugging Face: NGC catalog and Google Cloud Storage, plus S3, Azure Blob and local paths via ModelStreamer
  • Kubernetes deployment with a Helm chart, CRDs, PVC-backed Hugging Face cache and init-container pre-warming
  • Rust CLI for health, download, list, validate and clear operations

Getting started

ModelExpress runs as a server plus a client that plugs into your inference engine. The fastest way to see it work is to switch vLLM's load format.

Point vLLM at ModelExpress

vLLM 0.23.0 and later carry the loader natively; older versions use the ModelExpress plugin. With a compatible replica already serving, weights and JIT caches transfer peer-to-peer rather than being reloaded.

bashbash
vllm serve <model> --load-format modelexpress

Or use the SGLang backend

SGLang's `remote_instance` loader takes `modelexpress` as its backend, with `transport=nixl` or `transport=transfer_engine`. The nixl transport also carries JIT caches.

bashbash
# see docs/SGLANG.md in the repository for the full flag set
--load-format remote_instance --remote-instance-backend modelexpress --transport nixl

Or set the TensorRT-LLM checkpoint format

TensorRT-LLM support is beta and covers the Llama family.

pythonpython
checkpoint_format="MX"

Deploy the server on Kubernetes

The repository ships a Helm chart and CRDs, plus `examples/p2p_transfer_k8s/` and `examples/dynamo_p2p_transfer_k8s/` as working references. Configuration and the strategy chain are documented in docs/CONFIGURATION.md.

Commands and code are distilled from the project's own documentation — always check the official repo for the latest.

When to use it

  • Reach for it when autoscaling an LLM service and each new replica spends minutes pulling the same weights
  • Reach for it when JIT warmup, not the weight download, is what dominates your time-to-first-request
  • Reach for it when many nodes need one model and you would rather not multiply external egress from Hugging Face or S3
  • Reach for it when you have RDMA fabric between GPUs and want to use it for model loading, not just inference traffic

How ModelExpress compares

ModelExpress alongside other open-source serving & deployment tools AI/TLDR tracks, ranked by GitHub stars.

ToolStarsWhat it does
Transformers★ 165kHugging Face Transformers is a Python framework that defines and runs state-of-the-art pretrained models for text, vision, audio, and multimodal tasks, for both inference and training.
vLLM★ 91.4kA high-throughput LLM serving engine that uses PagedAttention and continuous batching to serve many requests at once.
SGLang★ 35.8kA serving framework for LLMs and multimodal models that boosts throughput by reusing shared prompt prefixes across requests.
Modular Platform★ 29.7kModular's AI platform: the MAX inference framework with an OpenAI-compatible serving endpoint and GPU kernel library, plus the Mojo language and compiler.
TensorRT-LLM★ 14.6kNVIDIA's library that compiles LLMs into optimized engines for the fastest inference on its data-center GPUs.
OpenLLM★ 12.5kA tool to run any open-source LLM as an OpenAI-compatible API endpoint locally or in the cloud.
LMCache★ 11.7kA KV-cache layer that stores and shares cached attention state across engines and requests to cut repeated computation.
ModelExpress★ 147A sidecar for inference servers that finds the fastest available copy of a model's weights and moves it into GPU memory, instead of cold-loading from storage