618ZXW

古いグラフィック カードに朗報!Meituan は、INT8 グラフィック カード向けの初のオープンソース、フルパワー、ロスレス DeepSeek R1 をリリースしました。

本格的な DeepSeek R1 がA100に導入され、INT8 量子化に基づいて、BF16 と比較して50% のスループット向上を実現しました。

Meituan Search & Push 機械学習チームは最近、DeepSeek R1 モデル向けにほぼロスレスの INT8 精度量子化を実現するオープンソース プロジェクトをリリースしました。

ネイティブDeepSeek R1モデルの重みはFP8データ形式であり、 GPUチップの種類に厳しい制限があることに注意してください。これは新しいNVIDIA GPU(AdaやHopperアーキテクチャチップなど)でのみサポートされ、他のGPUモデル(A100など)は直接展開できません。

現在、量子化コードはオープンソースの LLM 推論フレームワーク SGLang に統合されており、量子化モデルはユーザーが簡単にアクセスできるように Hugging Face コミュニティにリリースされています。

INT8: フレンドリーな「代替案」

DeepSeekの最新技術レポートによると、V3/R1の画期的な学習コスト制御は、主にFP8精度学習スキームに依存しています。FP8は典型的なモデル量子化技術です。業界で一般的なBF16精度と比較して、FP8精度はデータビット幅を半分にすることで実行あたりの計算コストを大幅に削減しますが、精度も若干低下します。

実際には、DeepSeek R1 はハイブリッド精度トレーニング メカニズムを採用して、精度低下の問題を効果的に軽減します。

高いスループット性能を維持するために、Meituanの技術チームはFP8精度と同じビット幅を持つINT8精度を選択しました。さらに、INT8精度はネイティブハードウェアで広くサポートされているため、DeepSeekモデルのハードウェア展開範囲が大幅に拡大しました。Meituanの技術チームは、ハードウェアフレンドリーなINT8精度を中心に、FP8を置き換える実装ソリューションの検討を開始しました。

定量技術の探究

具体的には、DeepSeek V3/R1における量子化損失を低減するためのキーテクノロジーの一つとして、ブロック単位の量子化が挙げられます。重み行列を細かく分割することで、ブロック単位の量子化は[128, 128]行列内で量子化演算を制御するため、分布の分散確率を低減し、各量子化処理における損失を効果的に抑制します。

Meituanの技術チームは、DeepSeekのトレーニングで使用された量子化戦略を継承し、[128, 128]行列内でブロック量子化を実行することで、トレーニングと推論の整合性を確保しました。量子化ターゲットの選択に関しては、INT8はFP8と同じビット幅を共有できるという利点があり、ほとんどのハードウェアがネイティブでINT8データ計算をサポートしています。

実際には、DeepSeekは半精度浮動小数点(BF16)の重みを提供しないため、ネイティブFP8モデルの重みはまずBF16に逆量子化され、その後INT8型にブロック量子化される必要があります。さらに、推論時には、重みのブロック量子化に合わせるため、活性化値はトークングループごとにオンラインで量子化されます。つまり、各トークンの埋め込みベクトルは複数のグループに分割され、各グループは順次量子化されます。ブロック量子化された活性化値と重みの乗算プロセスは、以下の左図に示されています。

上記のブロック量子化に加えて、Meituan の技術チームは、重みの各列をグループとして量子化する、より効率的なチャネル単位の量子化も研究しました。

チャネル量子化では、INT8で行列乗算を実行した後、逆量子化演算を1回だけ実行する必要があるため、計算オーバーヘッドが低減されます。実際には、ネイティブFP8モデルの重みはまずBF16に逆量子化され、その後チャネルごとにINT8に量子化されます。同時に、活性化値にはオンライントークン単位の量子化が適用され、活性化時の量子化損失を最小限に抑えます。チャネル量子化における活性化値と重みの乗算処理は、右下の図に示されています。

現在、両方のタイプの INT8 量子化重みが Hugging Face にオープンソース化されています。

INT8量子化モデルの精度

上記の2つの量子化手法をオープンソースのDeepSeek R1モデルに適用し、INT8量子化を行い、GSM8KおよびMMLUデータセットで量子化モデルの精度を評価しました。評価結果は以下の表に示されています。ベースラインのBF16およびFP8モデルと比較すると、2つのINT8量子化モデルの精度は実質的にロスレスです。

注: 表の精度結果は複数のテストの結果の平均です。

INT8量子化モデル推論スループット

上述の2つのINT8量子化手法に対する推論サポートを、著名なオープンソース推論フレームワークSGLang上で提供し、推論スループットを評価しました。SGLangは現在、最先端のオープンソースLLM推論フレームワークであり、DeepSeekモデルにおいて最適な推論性能を誇り、業界で広く利用されています。

A100 GPU上で、2つのINT8モデルとBF16モデルの推論スループットを評価しました。メモリ要件が低いため、INT8量子化モデルは推論に必要なA100 GPUが16個であるのに対し、BF16モデルは32個です。公平性を確保するため、スループットテストは32個のA100 GPUで均一に実施しました。結果は以下の表に示されています。INT8推論のブロック量子化は、BF16と比較してスループットを33%向上させ、INT8推論のチャネル量子化はさらに50%のスループット向上を実現します。

INT8量子化モデルの展開

それぞれ 8 個の A100 GPU を備えたデュアルノード セットアップを例にとると、開発者は両方のデプロイメント ノードに最新バージョンの SGLang をインストールし、各ノードで次のコマンドを実行する必要があります。

 # 分块量化INT8推理# 主节点python3 -m sglang.launch_server --model meituan/DeepSeek-R1-Block-INT8 --tp 16 --dist-init-addr HEAD_IP:5000 --nnodes 2 --node-rank 0 --trust-remote --enable-torch-compile --torch-compile-max-bs 8 # 副节点python3 -m sglang.launch_server --model meituan/DeepSeek-R1-Block-INT8 --tp 16 --dist-init-addr HEAD_IP:5000 --nnodes 2 --node-rank 1 --trust-remote --enable-torch-compile --torch-compile-max-bs 8
 # 通道量化INT8推理# 主节点python3 -m sglang.launch_server --model meituan/DeepSeek-R1-Channel-INT8 --tp 16 --dist-init-addr HEAD_IP:5000 --nnodes 2 --node-rank 0 --trust-remote --enable-torch-compile --torch-compile-max-bs 8 --quantization w8a8_int8 # 副节点python3 -m sglang.launch_server --model meituan/DeepSeek-R1-Channel-INT8 --tp 16 --dist-init-addr HEAD_IP:5000 --nnodes 2 --node-rank 1 --trust-remote --enable-torch-compile --torch-compile-max-bs 8 --quantization w8a8_int8

興味深い事例をいくつか紹介します。

深い思考力の実証

curl を使用してリクエストを送信する例を次に示します。

 curl -X POST 'http://HEAD_IP:5000/v1/chat/completions' --header 'Content-Type: application/json' -d '{ "model": "deepseek-r1", "messages": [{"role": "user", "content": "下列选项中,找出与众不同的一个:1.铝2.锡3.钢4.铁5.铜" } ] }'彼の INT8 R1 の回答 (スペースの制限により一部の内容は省略されています) では、彼独自の反省スタイルを見ることができます。 curl -X POST 'http://HEAD_IP:5000/v1/chat/completions' --header 'Content-Type: application/json' -d '{ "model": "deepseek-r1", "messages": [{"role": "user", "content": "下列选项中,找出与众不同的一个:1.铝2.锡3.钢4.铁5.铜" } ] }'

しかし、これが正しいかどうか確認する必要があります。例えば、他の選択肢にも合金が含まれる可能性はありますか?例えば、スズは他の金属と組み合わせて使用​​されることがありますが、スズ自体は純金属です。同様に、アルミニウム、鉄、銅はすべて純金属です。したがって、鋼が合金であることが重要な違いであるはずです。さらに、用途、物理的特性、化学的特性など、他の特性も考慮できます。例えば、電気伝導性:銀は最高の導体ですが、ここには銀がありません。銅も良好な導体であり、アルミニウムは良好ですが、鉄と鋼は比較的導電性が低いです。ただし、この分類では、どれが異なるのかを判断するのが難しくなる可能性があります。…しかし、最初の分類に戻ると、鋼だけが合金であり、その他は純金属であり、おそらくより基本的なものです。したがって、答えは3. 鋼であるはずです。ただし、この結論にはさらなる検証が必要です。

最終的な答えも正解です。

答え: 3. 鋼

多数の小さなボールの動きをシミュレートする

他の LLM テスト プロンプトを入力として使用し、INT8 (上) と FP8 (下) の出力コードの実行パフォーマンスを比較すると、INT8 は FP8 に比べて決して劣っていません。

球体の中で100個のボールが跳ね回るスクリプトを書いてください。衝突判定を適切に処理してください。球体をゆっくり回転させてください。ボールが球体の中に留まるようにしてください。p5.jsで実装してください。

要約と展望

まとめると、研究チームはDeepSeek R1上でINT8量子化技術を探求し、SGLangフレームワークに基づく推論機能をサポートしました。これにより、量子化モデルの精度を確保しながら、DeepSeek R1をA100などの旧型GPUに展開し、推論スループットを向上させることができました。オープンソースコードと重みがより多くのユーザーと企業に利益をもたらすことを期待しています。皆様が関連技術を積極的に交換し、オープンソースコミュニティを共同で構築し、貢献することを歓迎します。

連絡先メールアドレス: mailto:search.platform@meitua...

参考文献
[1] 技術レポート: Liu A、Feng B、Xue B、他。 Deepseek-v3 技術レポート[J]。 arXiv プレプリント arXiv:2412.19437、2024。
[2] ハギングフェイス:https://huggingface.co/meitua..., https://huggingface.co/meitua...
[3] 推論サポート: ブロック単位のINT8 DeepSeek R1サポート (https://github.com/sgl-projec...)、チャネル単位のINT8 DeepSeek R1サポート (https://github.com/sgl-projec...)
[4] その他のLLMテスト: https://qwenlm.github.io/blog...