MXFP4やNVFP4の話(ブロック浮動小数点数)

以前3月に4ビットの浮動小数点数の話題を挙げたが,公式のドキュメントも少なかったので断定的な書き方ができなかった。

fp4の話(4ビット浮動小数点数) - 48's diary

 

いくつか(素人向けにも)公になってきたので簡単にまとめておく。

 

6月のNVIDIAのテクニカルブログによるNVFP4の説明

Introducing NVFP4 for Efficient and Accurate Low-Precision Inference | NVIDIA Technical Blog

FP4 (E2M1)の定義は私の予想通りのようである。

ご丁寧に「For example, the values in the range could include 0.0, 0.5, 1.0, 1.5, 2, 3, 4, 6 (same for the negative range)」と私が以前書いたものと同じように記載されている。

加えてMXFP4がFP4の値32個に対して共通に2の階乗スケールのスケーリングパラメータを持つ。NVFP4はFP4の値16個に対して共通にFP8スケールのパラメータを持つと書かれている。

私の以前の書き方だと0~1スケールに正規化もしくは2の階乗でスケーリングと予測していたが実質的に両方それぞれ実装があったようである。MXFP4が対数スケールでNVFP4が乗数スケール(といってもFPなので対数部を持つ)なのが面白い点である。

NVFP4の方が流用しやすく応用が利きそうだがMXFP4の方が実装コストが安いのがミソである。

 

で,MXFP4の規格化が遅れていたのかというとそうでもなく2023年には業界内で共通規格として文書が残っている。

AMD, Arm, Intel, Meta, Microsoft, NVIDIA, and Qualcomm Standardize Next-Generation Narrow Precision Data Formats for AI » Open Compute Project

といっても大規模半導体の実装期間として十分かどうかは私には測りかねる。

NVIDIA内部で保守的な対応をされたと憶測するのが妥当だろうか。

 

で,面白いのがこのMXFP4(に近い)実装したのがAMDである。

正確にはBlock FP16と表記されておりINT8に共通に2の階乗スケールのスケーリングパラメータを持つものである。記載されていないがINT4実装もあるのではないかと推察される。

ASCII.jp:Ryzen AI 300に搭載された「RDNA 3.5」「XDNA 2」がAI処理を高速化 AIが常時動く未来はそう遠くない! AMD Tech Dayレポート (1/4)

ブロック浮動小数点 - Wikipedia

例に挙げられているのがINT8を8個に対して8ビットのスケーリングパラメータを置き72ビットで構成するとなっている。変則的だが専用機実装としてアリと判断したのだろう。

BFP16(実質INT8)で50TOPSであればINT4の50TOPSよりは大変だがAI演算の実行性能はほぼ同じとなる。NVIDIAの保守的判断に比べやや狙い過ぎで外している感がある。

ということで修正舵の噂もある。

 

以上がNVIDIAAMDのハードウェア実装であるが,肝心のソフトウェアはどうなっているかというとパッケージングにMXFP4を採用したらしい。

【AI】gpt-ossの核心的技術「MXFP4」とは|STEAM/acc

昨今のLLMでは低ビット多パラメータが極められており3ビットの声も聞こえたが4ビットくらいが落としどころのようで,gpt-ossでMXFP4だそうである。

 

他のLLMがどうしているかは以下のところが詳しい。

うさぎでもわかるLLM量子化手法完全ガイド: q4_K_Mの謎を解く

MXFP4で4.25ビット,q4_K_Mで約4.8ビットとなっている。

これが120bのgpt-ossが65GBに収められている構造だそうな。RLEとか入ってないのだろうか。

 

ollamaのモデルではgpt-ossがMXFP4でQwen3やGemma3がQ4_K_Mであることを確認した。昨今Q4_K_Mが主流のようだ。

https://ollama.com/library/gpt-oss

 

ということで4ビット浮動小数点数の最近の動向のまとめである。

収束しそうな気配と言って良いだろうか。

 

---

おまけ:

リークされたAMD FSR 4 INT8ファイルにより、Windows上のRadeon RX 7000でFSR 4を有効にすることが可能に。RDNA 2およびRTX 3000シリーズGPUでも動作 - 自作ユーザーが解説するゲーミングPCガイド

 

AMDから最新のアップスケーリング技術であるFSR4の実装の一部ソースが流出したようで,簡単に言うと最新ハードウェアでないと最新のFSR4に対応できないとしていたが実際はINT8演算でもちょっと遅くなる程度で対応できたという話である。

Block FP16がどういうものか分かれば腑に落ちると思われる。

 

---

ぼやっと:

136ビットレジスタとか72ビットレジスタとかブロック浮動小数点数を扱うGPU内部ではあるんだろうか。