世界を動かす技術を、日本語で。

AMD MI300X単体でのDeepSeek V4フラッシュ

2026年8月4日原文(github.com)

概要

  • DeepSeek V4 Flashを AMD MI300X 単体で動作させるための構成とパッチ集
  • Docker Compose によるプロダクション運用例とバージョン固定
  • FP8対応・MoEルーティング・KV同期 などMI300X固有の修正
  • 高性能・高同時接続 を実現するカスタムチューニング
  • 導入手順、パッチ内容、パフォーマンス指標の詳細解説

DeepSeek V4 Flash on a single AMD MI300X 構成と特徴

  • deepseek-ai/DeepSeek-V4-Flash-0731を AMD MI300X 単体で本番運用するためのリポジトリ
  • Docker Compose スタック、SHA-256固定ファイル、パッチ、チューニングテーブルを収録
  • チェックポイントは 追加の量子化やオフロードなし でそのまま動作
  • vLLM ROCm nightly 0.26.1rc1.dev229+g124154a88.rocm723、AITER 0.1.19で検証済み
  • 代表的なパフォーマンス:
    • シングルストリームデコード: 168.6 tok/s(DSpark-7)
    • プレフィル (カーネルチューニング済み): 約7.9–8.5K tok/s
    • 8ストリーム同時実行: 合計542 tok/s、1ストリームあたり90.3 tok/s
    • 64ストリームバースト: 合計830 tok/s、OOMやエラーなし
    • 256Kコンテキスト 検証済み(アーキテクチャ上は1M対応)
    • HBM上の重み: 156.67 GiB(追加量子化・オフロードなし)

MI300Xでの運用意義と特徴

  • MI300X は192 GB HBM3と5.3 TB/s帯域、H100 SXM5の2.4倍のHBM容量
  • コストは約半分 (Doublewordの試算)
  • 304Bパラメータのモデルを HBMに全て収容 可能
    • PCIe経由の重みストリーミングやレイヤーオフロード不要
    • 20 GB GPU KVプール+96 GiB CPUティアでキャッシュ管理
    • 1枚で2–8ストリーム常時、最大64ストリームバースト対応
  • FP8実装差異 (MI300XはAMD/Graphcore fnuz、MI325X以降はOCP標準FP8)
    • FP8対応の正確性重視、パフォーマンスチューニングは後回し

既存研究と本リポジトリの追加点

  • Fergus FinnやDoublewordのリポジトリで FP8非互換・MoEルーティングバグ等 を特定
  • vLLM公式レシピはNVIDIA・新型AMD(MI325X/MI355X)向け
  • 本リポジトリで追加した内容
    • ROCm nightly向け正確性パッチ (未マージ分含む)
    • DSparkドラフティング・ブロックリジェクト・K=7静的設定 を含む検証済みサービング構成
      • 2,048トークンのスケジューラバジェット、1,024トークンのロングプレフィル上限
    • AITER GEMMチューニングテーブル (gfx942形状追加)、MXFP4エキスパート用OGSジオメトリ
    • ハイブリッドKV戦略 (20 GB fp8_ds_mla GPUキャッシュ+96 GiB CPUオフロード、パス修正付き)

リポジトリ構成

  • compose.yaml:本番用スタック(vLLM ROCm+Caddy)、ダイジェスト固定
  • Caddyfile.example:Caddyfile用サンプル
  • vllm-entrypoint.sh:/dev/shmの古いCPU-KV mmap削除
  • SHA256SUMS:全ランタイムアーティファクトのSHA-256
  • patches/:パッチファイル群(.py、diff/.patch、README.md)
  • tuning/:AITER A8W8ブロックスケールチューニングテーブル(gfx942用)

ランタイム構成要点

  • ダイジェスト固定のvLLM ROCm nightly +DeepSeek V4トークナイザ・推論・ツールパーサ
  • fp8_ds_mla KVキャッシュ (UE8M0ブロックスケールFP8、256トークンブロック)
  • VLLM_ROCM_USE_AITER=1、--moe-backend triton(Triton OGSとAITERで分担)
  • DSpark-7スペキュレーティブデコード (確率的ドラフティング+ブロックリジェクト)
  • CUDAグラフキャプチャ (steady decode時に1トークンごとに起動)
  • Caddy によるIP制限付きHTTPSプロキシ

導入手順

  • ハードウェア要件 :MI300X(gfx942)、AMDカーネルドライバ、Docker Compose、~235 GiB RAM、~500 GBディスク
  • イメージ・モデル取得
    • vLLM ROCmイメージとDeepSeekモデルを SHA-256指定でpull
  • 設定ファイル準備
    • Caddyfile.exampleをコピーし、ホスト名・メール・CIDRを設定
    • aiter-cache、crash-dumpsディレクトリ作成、vllm-entrypoint.shに実行権限付与
    • SHA256SUMSでオーバーレイ検証
  • 起動
    • docker compose config -q、docker compose up -d、docker compose logs -f inference
    • 正常起動には「Model loading took 156.67 GiB」等のログ確認
  • 動作確認
    • curlで/v1/models、/v1/completionsエンドポイントをテスト

パッチ内容一覧

  • patches/*.pyは 本番用フルファイルオーバーレイ (コンテナ内にread-onlyでマウント)
  • 対応するdiffs/*.patchでupstreamとの差分記録
  • 主なパッチ例
    • gpt_oss_triton_kernels_moe.pack128-fused-silu-fast-routing.py :MXFP4ビットマトリクスパディング修正+SiLU融合
    • mxfp4.fused-silu.py :fused-SiLUカーネル用レイアウト修正
    • triton-kernels-matmul-ogs-opt-flags.dsv4-mi300x.py :gfx942用OGSタイルジオメトリ
    • fused_compress_quant_cache.fnuz-shuffle.py :FNUZ FP8+16×16プリシャッフル
    • aiter_pa_mqa_logits.i64.py :64ビットオフセット対応
    • rocm_aiter_mla_sparse.prefill-bh64.py :決定論的torch.topk+BLOCK_H=64
    • rocm_aiter_mla.dspark-causal.py :因果的マルチトークンスペキュレーティブ検証
    • dspark-speculator.independent-draft-gumbel.py+spec-decode-utils.independent-draft-gumbel.py :Gumbelノイズ独立化
    • kv_offload_cpu_gpu_worker.load-war.py :CPU→GPU KVリストアのフェンス修正

正確性・パフォーマンス最適化

  • FP8形式の違い :OCPとFNUZでスケール誤差が最大2倍、シャッフル・最大値設定でMI300Xに最適化
  • MoEルーティング :パディングレーンのマスク不備を修正
  • DSpark :確率的ドラフティング+ブロックリジェクト
  • AITER GEMMチューニング :21種類のA8W8形状をgfx942用に最適化
  • Sparse prefill :BLOCK_H=64でプレフィル7.9–8.5K tok/s
  • KVキャッシュ戦略 :GPU 20 GB+CPU 96 GiBで最大1.93Mトークン相当

パフォーマンス指標

  • シングルストリーム:126.2–168.6 tok/s、TTFT 1.0秒前後
  • 8ストリーム:合計542.3 tok/s、1ストリームあたり90.3 tok/s
  • 64ストリーム:合計830.2 tok/s、OOM・エラーなし
  • プレフィル :チューニング済みでC1 7.9–7.99K tok/s、C4 8.46–8.51K tok/s
  • ロングプレフィル制限 :短リクエストのTTFTが8.2秒→0.5秒に短縮

プロダクション運用上の注意

  • HBMヘッドルーム は極小(204.5/205.8 GB)、--kv-cache-memory-bytesの増加は不可
  • CPU KVティア はキャッシュエントリ用、重み格納用ではない
  • --kv-offloading-size 96 で96 GiBのオフロード領域を確保
  • パッチ・バージョン固定 で安定運用、アップグレード時は再検証必須

この構成により、 DeepSeek V4 FlashAMD MI300X 単体で高効率かつ安定して運用可能。 FP8非互換・MoEルーティング・KV同期 などMI300X固有の課題を克服し、 高同時接続・低レイテンシ を両立しています。

Hackerたちの意見

「MI300X」を単体で買うことはできないよね?8台入りのボックスだけで、約25万ユーロするみたい。

AIバブルが弾けたら、これが市場に溢れ出すだろうね。

いくつかのクラウドプロバイダーからオンデマンドで利用できるよ。一番安いのは、Digital Oceanが提供するAMD Developer Cloudで、1時間あたり1.99ドルだね。追記:考えてみたら、これがDeepSeek V4 Flash 0731を専用の推論サーバーで元の重みで動かす一番安い方法かも。ミックスロードのベンチマークはやったことないけど、1時間あたり3〜4ドル分のトークンを生成しつつ、ユーザーごとのスループットを維持するのは可能だと思う。

MI350pは存在していて、そこそこ良い量子化(例えば、約96GBのantirezミックス)を処理できるはずだけど、これ1台分の値段でRTX Pro 6000を2台買えるし、8台(実際にはもっと)のR9700とそれを動かすための機材も揃えられるよ。そうじゃなければ、どこかで中古のを買って(SXM A100もそういう感じで手に入るし)、アダプターボードで動かすこともできるかも。

192GBのHBMと256GBのRAMを見て、消費者向けのGPUだと思ってたのがびっくりした。

eBayで2万ドルくらいで手に入るけど、バックプレーンが付いてないし、中国からのH200用のPCIeカードアダプタみたいなのは無いと思う。

これ、DeepSeekがH800で得ているパフォーマンスにはまだ遠いね。彼らのDSpark論文では、15kトークン/s/GPUのスループットを報告している。MI300はH800と競争できるはずだから、まだまだ最適化できるところがたくさんあると思う。

残念ながら、MI300XはOAMモジュールなんだ。MI350Pが欲しいやつで、PCIeカードだけどメモリは少なめ:144GBだよ。幸いなことに、DeepSeek V4 Flashは144GBでも動くから、256 MoEのエクスポートがネイティブMXFP4で量子化されてるんだ。

それどうやって計算したの?重みだけを読み込んだ時点で、vLLMで156GB使ってたよ。ウォームアップしてKVキャッシュプールを追加したら、200GB以上かかってた。しかもこの実装は、通常得られる1Mトークンのコンテキストウィンドウをすでに削減してるし。

彼らのハードウェアプログラミングインターフェースは、フロンティアモデルの推論を実装するのに合理的なのかな?量子化なしで、数テラのパラメータがあるけど。ところで、オープンウェイトのフロンティアモデルには何テラのパラメータがあるの?数テラ、100テラ?

Kimi-K3: 2.8T、Qwen3.8-Max: 2.4T、DeepSeek V4 Pro: 1.6T、DeepSeek V4 Flash: 284B(全部、総パラメータ数で、アクティブパラメータではないよ)

前の技術ではDwarfStarがリストアップされてないのが不思議だね。DwarfStarは同じモデルを(多分違う量子化でだけど)少ないメモリで動かせるのに。著者は知らないのかな?

Hacker Newsで議論の続きを見る