
2026/06/03 2:52
AMD MI300X 上で DeepSeek-V4-Flash を実行する
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Doubleword のエンジニアリングチームは、NVIDIA の H100 チップに対するコスト効果の高い代替手段として AMD の MI300X を成功裏に展開し、以前 AI ワークロードを無効化させていた深刻な初期ソフトウェアの障壁を克服した。主な成果は、AMD のユニークな"fnuz"FP8 ディアレクト(後続のアーキテクチャが採用している新しい OCP 標準とは異なる)への適応や、CDNA4 ではなく CDNA3 アーキテクチャをサポートするように AITER などのライブラリを更新するといった重大な互換性問題の解決にあります。ランチ形状を最適化して小規模バッチと飽和サービング両方のレジームに対応し、HIP グラフを用いて Python のオーバーヘッドを削減し、MoE ルーティングおよび Triton カーネル内のバグを修正するなどの特筆すべきコード変更を実施した結果、DeepSeek-V4-Flash モデルのケースにおいて 2,485 トークン/秒から 2,699 トークン/秒へのスループットの 8.6% の向上が実現されました。この転換は重要であり、MI300X は H100 の 80GB に比べてメモリー容量 192GB を提供しつつ、約半分の価格および安価なレンタル料を確保するためです。今後の計画として、Doubleword はこれらの修正をメインの vLLM リポジトリにアップストリーム化し、より広範なコミュニティがこれを利用可能なオープンソースソリューションとして活用できるようにします。結論として、このケースは、目標指向的なエンジニアリングにより、高価な単一ベンダー(NVIDIA)への依存度を、より安価で拡張性の高い AMD オプションへと置き換えることが、プロダクション推論クラウドにおいて可能であることを示しています。
本文
MI300X で DeepSeek-V4-Flash を動作させる技術的課題と解決策
Doubleword(ダブルワード)では、大量処理に最適化された推論クラウドの構築に取り組んでいます。そのためには、現在存在する計算リソース不足という課題を克服する必要があります。
背景:AMD MI300X の立ち位置と現状
AMD は 2023 年 12 月 6 日、「Advancing AI」イベントで MI300X を発表しました。これは NVIDIA の H100 に対する対抗策として位置づけられています。
MI300X と H100 の比較
| 項目 | MI300X (AMD) | H100 (NVIDIA) | 注釈 |
|---|---|---|---|
| HBM3 メモリ容量 | 192 GB | 80 GB | MI300X は約 2.4 倍多い |
| FP8 演算性能 | 同等レベル | 同等レベル | - |
| 価格 | 概ね半分 | - | レンタルコストが低い |
- 市場の課題: H100 は価格高騰(レンタル価格が短期間で 40% 上昇)と在庫不足に見舞われています。
- MI300X の状況: MI300X は評価が低く、ソフトウェア互換性のギャップにより活用が進んでいませんでした。
ソフトウェア面の改善兆候
近年、AMD ベースの AI ワークロード実行に伴う問題に改善が見られます。SemiAnalysis の InferenceX ダッシュボード は、最新の AMD パーツ(MI350X, MI355X)が NVIDIA と対比して追跡されていることを示しています。
ただし、このソフトウェア面への注目の拡大は旧型モデルには波及していません。
- 2026 年 5 月初頭時点では、vLLM を用いて DeepSeek-V4-Flashを MI300X で動作させることは事実上不可能でした。
- 今回は、MI300X 上でこのモデルを稼働させる際に遭遇した鋭角な課題と、それを解決するための作業ログを示します。
FP8 デイアレクトの不一致と対応
問題点:FP8 デイアレクトの違い
MI300X(CDNA3 コア)は、ビット幅の低減に向けた進化の一環として、**「fnuz」**という独自の FP8 デイアレクトをサポートしています。
- fnuz の特徴: Finite(有限値)、Nan(非数)、Unsigned Zero(符号なしゼロ)のみ。負のゼロも正無限大もない。
- OCP 準拠 (最新 AMD チップ): MI325, MI350, MI355X は IEEE 754 に近い標準的な「e4m3/e5m2」仕様を採用している。
vLLM の初期実装は、fnuz と OCP デイアレクトの違いを無視していました。両者はビットレイアウトは共有していますが、指数バイアスが 1 ビット異なるため、誤ったデイアレクトとして読み込んだバイトは正確に 2 倍の値を返してしまいます。
解決策
DeepSeek V4 のコンプレッサーおよびキャッシュ書き込みをプラットフォーム固有の FP8 デイアレクトに合わせて変更しました。
: DeepSeek v4 のコンプレッサーと統合されたコンプレス/量化/キャッシュ書き込みが、プラットフォーム固有の FP8 デイアレクトを使用するように変更。スケール係数とキャッシュバイト数の整合性を確保。236de4e64
: スライディングウィンドウ KV キャッシュを処理する際、fnuz を認識した統合されたクエンタイズおよび挿入ヘルパーを介してルート化。bd06e5d87
欠落したアテンションの高速パス (AITER)
DeepSeek v4 はスパースなアテンション機構を採用しています。
- 仕組み: 各クエリは学習済みインデックスにより KV キャッシュのトップ k サブセットのみを参照し、スライディングウィンドウコンテキストについては別途処理。
- 構成要素: KV 圧縮、インデキサー、スライディングウィンドウパス、FP8 キャッシュなど多数の構成要素を持つ。
AITER の重要性と課題
AMD で高性能を実現するための鍵は AITER です。
- AITER: AMD が提供するチューニング済みカーネルライブラリ。NVIDIA 版(cuBLAS, cuDNN, FlashAttention など)に同等的性能を発揮。
- 問題点: AITER に非対応の形状には汎用的な Triton にフォールバックします。しかし、汎用 Triton のアテンション性能はチューニング済みカーネルの数倍遅いです。
現状の欠如: AITER のカバレッジは偏っており、MI300X が搭載する gfx942 コア への対応が不十分でした。
gxf942 での具体的な影響と回避策
AI TER パスの欠落または機能不全により、以下のケースが発生しました。
-
完全に AITER パスが欠落している場合
- 対象:
,paged MQA logits
,スパース MLA プレフィルスパース MLA デコード - 対策: ROCm 固有のヘルパーを介して呼び出し、存在しない場合は Triton 実装にフォールスルー。
- 対象:
-
AITER パスは存在するが機能しない場合
- 対象:
,AITER プレフィル MQA logitsAITER スパースプレフィル logits - 現象:
プラットフォーム報告時にエラー。gfx942 - 対策: ディスパッチを拒否し、Triton のフォールバック処理を引き受ける(コミット:
)。cb8a18556
- 対象:
HIP グラフによる最適化の制限と解決
HIP グラフは CUDA グラフの AMD 版で、ウォームアップ時にストリーム上の操作を記録し、以後再生することで Python オーバーヘッドを削減します。DeepSeek v4 の多数の構成要素を活かす上で重要です。
制約事項
キャプチャされた領域はデバイス入力の純粋な関数である必要があります。
- ホストから読み込むことや、Ragged テンソル(動的な形状変化)を割り当てたりすることは、記録後に永遠に同じ値で再生されてしまうため不可。
AITER カーネルは C++ で起動され、デバイスポインタとサイズを受け取る構造になっており、上記制約と整合しています。しかし、Triton カーネルでは動的な ragged スcratch を扱うのが難しく、以下の修正が必要です。
: スパース MLA デコードメタデータを静的なキャプチャ安全なテンソルとして再構築。動的 ragged 割り当てやホストからデバイスへのスカラー書き込みを排除。22cc02230
未解決の小さな問題と修正
いくつかのバグに直面しました。
-
MoE ルーティングバグ
- 原因: エキスパートマスクの形状が、Matmul が AITER かどうかではなく、ROCm AITER のグローバル有効性だけでゲートされていた。
- 影響: MXFP4 エミュレーション時などにカーネルが間違ったマスクを受け取り、トークンが誤ったエキスパートへルーティングされた。
- コミット:
8b5f7aa2c
-
Triton カーネルのパディング問題
- 原因: パディング済みレーンに対してグローバルテンソルバウンドをマスキングせず、論理的ブロックサイズを使用した。
- 影響: 高並列下で、パディング済みレーンが MoE ルーティングビット行列全体にスクリブル(汚染)を引き起こした。
- コミット:
c32932bb9
最適化と性能向上
正確性が確保された段階で基本的な最適化を行いました。
- 高コスト部分の特定: スパース MLA パスと MXFP4 MoE パスがボトルネックであることが判明(これは改善余地がある好ましい状況)。
マイクロチューニングによる成果
当初はマテムル本体よりも、その周囲の書式整理やチューニングに時間がかかっていました。これらを解決し、静的な Triton 起動形状で小バッチと飽和サービングの両方をカバーできました。
- MXFP4 OGS タイル形状: 外観が異なる動作領域において単一の静的選択として扱うことで効率化。
- 結果: GPU あたりの出力トークン数を 2,485 → 2,699 に改善(約 +8.6% の向上)。
投資対効果と結論
モデル立ち上げ、最適化、テストの結果、以下の数値を得ることができました。
MI300X の利点
- コスト: 競合する NVIDIA クラスターに対し、カードあたりの HBM 容量は倍以上多く、レンタル価格は約半額。
- 可用性: H100/H200 のリードタイム拡大中でありながら、オンデマンドで入手可能。
- パフォーマンス: トークン毎のドルコストパフォーマンス(Tokens per second per dollar)で NVIDIA に対抗できる有用なレベルに達しました。
困難は一時的なもの
多くの課題は解決策が見つかりました:
- FP8 ダイアレクト問題: CDNA3 固有であり、最新の MI325/MI350/MI355X はすべて OCP 準拠のため、将来のモデルではこの罠は存在しません。
- AITER カバレッジギャップ: AMD のカーネル開発が進化し、自身のハードウェアに追いつく過程で埋まっていきます。
Doubleword API との連携
本作業を通じてオープンソース化する準備を進めていた vLLM リポジトリのパフォーマンスと安定性が大幅に改善されました。AMD ハードウェア自体は良好であり、ソフトウェアのギャップも縮まりつつあります(AMD の集中努力とエージェント型コーディングの台頭による)。
本記事に含まれる全ての修正 は、公開 vLLM リポジトリ
doublewordai/vllm-amd-blog でデモ PR としてアップストリームされる予定です。
結論: これらの要因により、Doubleword API に DeepSeek-V4-Flash リクエストを送信した際、レスポンスはAMD ハードウェアによって駆動されている可能性があります。