806 GiBを10回運ぶな。NVIDIA ModelExpressがLLM起動を8分から1分44秒へ縮めた仕組み

遠いストレージから同じモデル重みを何度も運ぶ経路と、稼働中GPUから隣のGPUへ直接渡す経路を対比したデータセンターの概念図
重複ダウンロードとGPU間リレーの違いをAICompanyが独自に再構成した画像

806 GiBを10回運ぶな。NVIDIA ModelExpressがLLM起動を8分から1分44秒へ縮めた仕組み

大規模言語モデルを増設するとき、GPUが遅いとは限らない。GPUは空いているのに、数百GiBの重みをストレージから運び、メモリへ置き、カーネルをコンパイルするまで働けないことがある。

NVIDIAが2026年7月24日に公開したModelExpressの技術解説は、この待ち時間を「読み込み速度」の一語で片づけない。まず、同じ重みを持つGPUがすでに近くにいないかを探す。見つかれば、そのGPUを次のレプリカの配布元にする。

楽天最安値を一発検索!価格ナビで今すぐチェック!

NVIDIAの測定では、DeepSeek-V4 Proの重みとJITカーネルキャッシュを稼働中レプリカから新規レプリカへ10秒未満で移し、プロセス開始からAPI準備完了までを8分から1分44秒へ短縮した。

魔法ではない。倉庫へ毎回取りに行くのをやめ、すでに現場にある荷物を隣へ渡す。モデルは最先端でも、ボトルネックはだいたい物流である。AIも引っ越し業者には勝てない。

古い問題:レプリカが増えるたび、同じ重みを運び直す

一般的なコールドスタートでは、新しいワーカーがオブジェクトストレージや共有ディスクからモデルを読む。オートスケール、ローリング更新、障害復旧のたびに同じ処理が繰り返される。

公式記事は、806 GiBのDeepSeek-V4 Proを10レプリカが同時に取得する例を挙げる。各レプリカが独立してダウンロードすると、クラスタ外から約8 TiBの同一データを運ぶことになる。帯域を奪い合うため、台数を増やしたのに起動が遅くなることさえある。

さらに、重みがGPUへ入れば終わりではない。初回のforward passでは、torch.compile、Triton、DeepGEMM、TileLang、FlashInferなどが環境に合わせたカーネルをコンパイルし、CUDA Graphを作る。重みの読み込みを速くすると、今度はこの準備時間が次のボトルネックとして現れる。

核心:ロード前に「互換する重みはどこか」を聞く

ModelExpressの基本は単純だ。

  1. 同じモデルと実行設定を持つ稼働中レプリカを探す
  2. 互換性があればGPUからGPUへ直接転送する
  3. なければ利用可能なストレージ経路から最初の1台を起動する
  4. 起動したレプリカを次の配布元へ加える

互換性の判定には、モデルとテンソル配置を決める実行設定から作る mx_source_id を使う。名前が同じモデルでも、dtype、量子化、tensor parallelの配置などが違えば、メモリ上の並びは同じとは限らない。だから「同じモデル名だからコピーしてよい」ではなく、「同じレイアウトだと確認できた相手だけ」を候補にする。

データ転送にはNVIDIA Inference Xfer Library(NIXL)を使い、P2P RDMAで稼働中GPUから対象GPUへ重みを移す。制御プレーンはRedis、Kubernetes CRD、Kubernetes Service経由で配布元を発見するが、重み本体は制御プレーンを通らない。

P2P RDMA、オブジェクトストレージのストリーミング、ローカルストレージ直結、通常ローダーの4経路が対象GPUへ向かう概念図
ModelExpressの実行時経路選択をAICompanyが独自に再構成した図。NVIDIA公式図の転載ではありません

4つの経路を、速い順に試す

ModelExpressは特定のハードウェア経路だけを前提にしない。起動時に利用可能な機能を調べ、現在の優先順で次を試す。

  1. P2P RDMA:稼働中GPUから直接受け取る
  2. ModelStreamer:オブジェクトストレージまたはローカルから並列に読み、CPUバッファ経由でGPU配置と重ねる
  3. GPUDirect Storage(GDS):ローカルストレージからGPUメモリへ直接読む
  4. 通常ローダー:host memoryを経由するPOSIX I/Oへ戻る

重要なのは、最速経路がない環境でも全体が止まらないことだ。転送開始前の失敗なら次の経路へ進む。すでに重みの一部が配置された後の失敗なら、モデルを再初期化してからフォールバックする。部分的に書かれたモデルを、そのまま推論へ出さないためである。

最初の1台は、どうしてもストレージから起動する。その際もModelStreamerはsafetensorsの範囲を複数スレッドで読み、後半を取得している間に前半をGPUへ置く。tensor parallel構成では、rankごとに同じ全量を取らず、リモート読み込みを分担できる。

共有ディスクキャッシュがある場合は、Model Cache Serviceが原子的な取得権を1台へ与える。残りのレプリカは進捗を追い、完成した同じキャッシュを使う。外部ストレージへの請求書を、10枚から1枚へ減らす設計だ。

数万回のメモリ登録を、1回へまとめる

RDMA転送では、GPUメモリをネットワークから扱えるよう登録し、Remote Keyを得る必要がある。大規模モデルには数万個のテンソルがあり、テンソルごとに登録すると、その管理処理自体が無視できない。

ModelExpressは2つの最適化を用意する。

  • プール登録:テンソル単位ではなく、元のCUDA割り当て単位で登録する。公式記事では一般的なモデルで登録数を80%から99%削減するとしている
  • VMM arena登録:ロード時の割り当てを16 TiBの仮想アドレス領域へ集め、実際に使った範囲を最後に1回だけ登録する

転送帯域だけを上げても、接続準備を数万回繰り返せば待ち時間は残る。ModelExpressは「データを速く流す」だけでなく、「流す前の事務手続き」を減らしている。

重みの次は、JITキャッシュを相続する

新しいレプリカが既存レプリカと同じモデル、ソフトウェアスタック、GPUアーキテクチャを使うなら、コンパイル結果も再利用できる。

ModelExpressのArtifact Transfer APIは、Triton、DeepGEMM、TileLang、CuTe DSL、FlashInferなどのファイル型キャッシュをまとめ、CPU間RDMAで転送する。受信側で検証して対応するキャッシュディレクトリへ置く。互換しない構成のキャッシュを誤って使わないよう、成果物にも専用の識別子を持たせる。

NVIDIAの8基B200構成では、ここまで含めてAPI準備完了が8分から1分44秒になった。重み転送だけの短縮ではない点が重要だ。

ストレージ取得と長いJIT準備を行うコールドスタートと、GPU間転送とJITキャッシュ相続を使う起動経路の比較図
重み転送後にJIT準備が次のボトルネックになる流れをAICompanyが独自に再構成した図

実務で変わるのは、平均起動時間だけではない

AICompanyの解釈では、ModelExpressの価値は「4.6倍」という一つの倍率より、起動を観測可能な3層へ分けたことにある。

  • 入手:重みをどこから得たか
  • 配置:重みがいつGPUへ置かれたか
  • 準備:JITとCUDA Graphを含め、いつAPIが応答可能になったか

本番では平均だけを見ると、P2Pに成功した起動とストレージへフォールバックした起動が混ざる。少なくとも次を分けて測りたい。

  • P2Pヒット率
  • 経路別の重み準備時間
  • プロセス開始からhealth check成功まで
  • JITキャッシュ転送の成功率
  • 外部ストレージからの総転送量
  • フォールバック理由

この分解があれば、ネットワークを増強すべきか、キャッシュ互換性を揃えるべきか、レプリカ配置を変えるべきか判断しやすい。

小さな追試:2レプリカでボトルネックの移動を見る

論文サイズのクラスタがなくても、考え方は検証できる。

同じモデルと設定で2つのレプリカを順番に起動する。1台目は通常経路、2台目はModelExpressを使う。両方で次の3時刻を記録する。

  1. プロセス開始
  2. 重み配置完了
  3. 最初のhealth check成功

次に、2台目が本当にP2Pを選んだか、別経路へ戻ったかをログで確認する。最後にJITキャッシュ転送を無効、有効で分ける。

見るべきなのは、NVIDIAと同じ秒数になるかではない。重み配置を短縮した後、残り時間の中心がJITへ移るかである。ボトルネックが移動したなら、最適化は効いている。

限界:どのクラスタでも同じ倍率にはならない

今回の主要数値は、NVIDIAによるDeepSeek-V4 Pro、TP=8、8基のB200 GPU、ConnectX-7、vLLM 0.23.0での測定である。独立した第三者再現ではない。

効果はモデルサイズ、GPU、NIC、ネットワーク構成、ストレージ帯域、キャッシュの互換性に依存する。小さなモデルや単一GPUでは、導入の複雑さが利益を上回る可能性がある。

公式リポジトリにも既知の問題がある。現在のGDSローダーはtensor parallelのrankごとに全チェックポイントを読み、後からvLLMが分割する。そのためTP数が増えるとディスク読み込みも増え、GDSの利点が小さくなるか、通常のmmap経路より遅くなる場合がある。

また、RL post-trainingのreceiver-driven refit、multi-tier cache、詳細な観測性などは開発中だ。公開コードはApache-2.0で活発に更新されているが、すべてが完成済みという意味ではない。

結論:モデル起動は、計算より先に物流を設計する

ModelExpressが示すのは、巨大モデルの起動では「どれだけ速いストレージを買うか」だけでは足りないということだ。

同じ重みがすでにGPUにあるなら、そこから渡す。なければ最適なストレージ経路を選ぶ。重みが届いた後は、コンパイル済み成果物も引き継ぐ。失敗したら、安全に通常経路へ戻る。

モデルが大きくなるほど、賢さを動かす前の物流が支配的になる。次のオートスケール改善では、GPU使用率だけでなく「その重みは今どこにあるか」を見る価値がある。

一次資料

【送料無料】マクロキーパッド、ストリームコントローラーデッキゲームストリーミングショートカットキーボード、18個のプログラム可能

投稿者 AICompany

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA