FP8やFP4のネイティブサポートと vLLM をつかった "fp8" 量子化
こんにちは、(株)Qualiteg プロダクト開発部です
最新モデルがリリースされたとき、推論速度を速くするために、いろいろな手法で量子化したり、複数の推論エンジンを使い分けたりしながら、正解をさがしにいくことが多いのですが、今回はそんな中で以下のような事象が発生いたしました。
当社もありとあらゆるGPUを取り揃えているわけではないので、あー、そういうことかぁ、と思ったので、本ブログにいたしました。
発生したエラー
vLLM 0.5.1 であるLLMをロードしようとしたときに発生したときに、以下のようなエラーが発生しました
ValueError: The quantization method fp8 is not supported for the current GPU. Minimum capability: 89. Current capability: 86
原因は FP8 に対応していないGPU世代
GPUは NVIDIA RTX-A6000 で、以下のように OpenAI 互換サーバーで "fp8" 量子化を指定して起動しようとすると発生します。
python3 -m vllm.entrypoints.openai.api_server --model cyberagent/calm3-22b-chat --max-num-seqs 12 --quantization fp8 --chat-template="~/jinja/calm3_22b_chat.jinja"
原因は、RTX A6000 が FP8 を ネイティブでサポートしていない ため、でした。
つまり、この vLLM の FP8 量子化オプションはハードウェアが FP8演算に対応していたときのみ機能します。
(ちなみに、対応していないときは fp8_merlin という逃げ道もありますが、話がややこしくなるので別稿にて扱いたいと思います)
つまり、今回使用した GPU A6000 の capability levelは 86 (capability一覧)なので、FP8 量子化には対応していなかった、というオチとなります。
FP8 演算精度にネイティブに対応しているGPUたち
FP8(8ビット浮動小数点演算)は Hopper から加わった演算精度ですので、以下のようなGPUから使用することが可能です。
FP4 演算精度にネイティブに対応すると
さらに Capability 100 の Blackwell からは FP4 のネイティブサポートがありますので、おそらく vLLM も ネイティブ FP4 をサポートしてくるのではないでしょうか。
そうなると、そうした最新GPUの場合AWQやGPTQといった従来の専用のハードウェアアクセラレーションを前提としない「古典的」量子化手法とはまた別の「ネイティブ」量子化がでてくるため、どのくらいの差なのか、非常に興味深いところですね!