| 浮動小数点形式 |
|---|
| IEEE 754 |
| 他の |
| 代替案 |
| テーパード浮動小数点 |
ブロック浮動小数点(BFP )は、固定小数点プロセッサを使用しながら浮動小数点に近い演算を行うために使用される手法である。BFPは、単一の仮数部に独自の指数を割り当てるのではなく、複数の仮数部(浮動小数点数の指数部以外の部分)を1つの指数に割り当てる。BFPは、指数を再利用することでハードウェアのメモリ使用量を制限し、浮動小数点アルゴリズムと同じ機能を実行できるという利点がある。また、ブロック間の複数の値に対する一部の演算も、計算量を削減して実行できる。[ 1 ]
共通指数は、ブロック内で振幅が最大となるデータによって求められます。指数の値を求めるには、先頭のゼロの数(先頭のゼロの数)を求める必要があります。そのためには、データに必要な左シフトの数を、使用するプロセッサのダイナミックレンジに合わせて正規化する必要があります。一部のプロセッサには、指数検出命令や正規化命令など、この演算を自ら行う手段が備わっています。[ 2 ] [ 3 ]
ブロック浮動小数点アルゴリズムはジェームズ・ハーディ・ウィルキンソンによって広く研究された。[ 4 ] [ 5 ] [ 6 ]
BFP は、パフォーマンスをわずかに向上させるためにソフトウェアで再作成できます。
マイクロスケーリング(MX)形式
マイクロスケーリング(MX)形式は、AIおよび機械学習のワークロード向けに特別に設計されたブロック浮動小数点(BFP)データ形式の一種です。非常に小さな浮動小数点数(ミニフロート)は、機械学習のパフォーマンス向上に使用されますが、固定小数点数と同様に、表現可能な範囲が狭くなります。共有指数を使用することで、非常に小さなスペースとパフォーマンスのオーバーヘッドで、表現可能な値の範囲を拡大することができます。[ 7 ] [ 8 ] AMD、Arm、Intel、Meta、Microsoft、NVIDIA、Qualcommなどの業界の主要企業によって承認および標準化されているMX形式は、AI向けの狭精度データ形式における大きな進歩を表しています。[ 9 ]
MXフォーマットは、k(通常は32)個の要素からなるブロックで構成され、各要素はdビット長です。これらの要素はwビットのスケーリング係数を共有するため、ブロック全体のサイズはw + kdビットになります。標準的なMXデータ型には以下が含まれます。[ 10 ]
| 名前 | 要素データ型 | d | け | スケールデータ型 | わ | ブロックあたりのビット数 |
|---|---|---|---|---|---|---|
| MXFP8 (E5M2) | FP8(E5M2) | 8 | 32 | E8M0 | 8 | 264 |
| MXFP8 (E4M3) | FP8(E4M3) | 8 | 32 | E8M0 | 8 | 264 |
| MXFP6 (E6M2) | FP6(E3M2) | 6 | 32 | E8M0 | 8 | 200 |
| MXFP6 (E2M3) | FP6(E2M3) | 6 | 32 | E8M0 | 8 | 200 |
| MXFP4 | FP4(E2M1) | 4 | 32 | E8M0 | 8 | 136 |
| MXINT8 | INT8 | 8 | 32 | E8M0 | 8 | 264 |
ここで、E8M0は実質的に単精度浮動小数点数の指数部であり、2 −127から2 127までの2の累乗を表現できます。NaN用に1つの値が予約されています。FP8-E5M2などのデータ型の説明については、Minifloat § 機械学習を参照してください。
MXフォーマットは、大規模言語モデル(LLM)、画像分類、音声認識、推奨システムなど、さまざまなAIタスクで効果があることが実証されています。[ 11 ]たとえば、MXFP6は量子化を考慮した微調整後の推論タスクではFP32とほぼ一致し、MXFP4はわずかな精度のペナルティのみで生成言語モデルのトレーニングに使用できます。
MXフォーマットは、Open Compute Project (OCP)を通じてMicroscaling Formats (MX)仕様v1.0として標準化されています。[ 9 ] [ 10 ]また、データサイエンスのアプローチの詳細とMXの実際の動作結果を提供するためのエミュレーションライブラリも公開されています。[ 12 ]
さらなる発展
MXFP4フォーマットは、ダイナミックレンジが非常に狭い32個の4ビットミニフロートをグループ化します。量子化アーティファクトを削減するために、NvidiaはNVFP4を導入しました。NVFP4では、ブロック内の16個のFP4-E2M1数値のみをグループ化し、スケーリング係数をE4M3に変更することで精度を高めています。ダイナミックレンジを回復するために、テンソル内の多数のブロックは、2層構成の共有fp32(E8M23)スケーリング係数の対象となります。スケーリングにはM0数値は使用されません。その結果、すべてのスケーリングは、ビットシフトや浮動小数点値の指数部の単純な操作ではなく、実際の乗算を必要とします。[ 13 ]
ハードウェアサポート
BFP のハードウェア サポートは、メンバーの基礎となるデータ型のサポート (整数固定小数点またはミニ浮動小数点) と、スケーリング操作のより高速な実装の 2 つのレイヤーで存在します。
固定小数点要素を持つBFP
- d-Matrix Jayhawk IIはBFP12、BFP16、SBFP12を扱います。[ 14 ]これらのデータ型は固定小数点ベースのBFPです。BFP12はUINT4要素のグループと共有8ビット指数を持つことを指し、BFP16はUINT8要素のグループと共有8ビット指数を持つことを指し、SBFP12は符号付きINT4要素のグループと共有8ビット指数を持つことを指します。[ 15 ]
- Tenstorrent Grayskull e75とe150、Wormhole n150とn300は、メーカーがBFP8、BFP4、BFP2と呼ぶものをサポートしています。[ 16 ]これらのメンバーには独自の指数はありません。言い換えれば、それらは固定小数点にスケーリングされます。[ 17 ]
- AMD Strix Point APU(Ryzen AI 300シリーズとしてブランド化)は、XDNA2ニューラルプロセッシングユニット(NPU)でブロックFP16をサポートしています。[ 18 ] [ 19 ]繰り返しますが、要素には独自の指数はありません。[ 20 ]
ミニフロート要素を持つBFP
ミニフロート数の並列処理は、パック整数の処理に比べてソフトウェアでのエミュレーションが複雑です。そのため、基盤となるミニフロートのハードウェアサポートは、ミニフロート付きBFPのサポートに大きく貢献します。
- AVX10.2拡張セットを実装したx86プロセッサは、OCP-FP8フォーマットのE5M2およびE4M3をパック形式でサポートします。この拡張は、既存の単一の演算を用いて実行可能な高速ブロックスケーリングを追加しません。[ 21 ]
- AMD Instinct GPUは、 CDNA 3以降、OCP-FP8とパックドMXFP8(E5M2、E4M3)をサポートしています。CDNA 4では、MXFP4とMXFP6のサポートが追加されました。CDNA4は、固定小数点要素を持つ形式であるMXINT8もサポートしています。
- Nvidia GPUのテンソルコアは、Hopper(マイクロアーキテクチャ)以降FP8をサポートしています。FP4とFP6はBlackwell(マイクロアーキテクチャ)で追加されました。[ 22 ] MXフォーマットの32幅のサイズは、ハードウェアスケーリングの加速も提供するテンソルコアの構造に適しています。[ 23 ] BlackwellはNVFP4のスケーリングも加速します。[ 13 ]
- Intel Gaudi 2以降のアクセラレータもFP8をサポートしています。[ 24 ]
その他のBFPの種類
- AMD Versal AI Edgeシリーズ Gen 2は、MX6およびMX9データ型をサポートしています。これらのデータ型は、標準的なMXと固定小数点ベースのBFPの中間に位置する、2段階の指数共有を備えています。[ 25 ]また、このハードウェアは、従来のBFPで使用するための高速INT8演算もサポートしています。[ 26 ]
参照
- バイナリスケーリング
- 高速フーリエ変換(FFT)
- デジタル信号プロセッサ(DSP)
参考文献
- ^ 「ブロック浮動小数点」 BDTI DSP辞書. Berkeley Design Technology, Inc. (BDTI). 2018年7月11日時点のオリジナルよりアーカイブ。 2015年11月1日閲覧。
- ^ Chhabra, Arun; Iyer, Ramesh (1999年12月). 「TMS320C55x A Block Floating Point Implementation on the TMS320C54x DSP」(PDF) (アプリケーションレポート). デジタル信号処理ソリューション. Texas Instruments . SPRA610. 2018年7月11日時点のオリジナルよりアーカイブ(PDF) 。 2018年7月11日閲覧。
- ^ Elam, David; Iovescu, Cesar (2003年9月). 「TMS320C55x DSPにおけるN点FFTのブロック浮動小数点実装」(PDF) (アプリケーションレポート). TMS320C5000ソフトウェアアプリケーション. Texas Instruments . SPRA948. 2018年7月11日時点のオリジナルよりアーカイブ(PDF) . 2015年11月1日閲覧.
- ^ウィルキンソン、ジェームズ・ハーディ(1994) [初版 1963].代数的プロセスにおける丸め誤差(第1版). エングルウッド・クリフス、ニュージャージー州、アメリカ合衆国:プレンティス・ホール社. ISBN 978-0-486-67999-0. MR 0161456 .
- ^ミュラー、ジャン=ミシェル;ブリセバーレ、ニコラス。デ・ディネシン、フィレンツェ。ジャンヌロ、クロード・ピエール。ルフェーブル、ヴァンサン。メルキオンド、ギョーム。ナタリー・レボル;ステレ、ダミアン。トーレス、セルジュ (2010)。浮動小数点演算ハンドブック(第 1 版)。ビルクホイザー。土井: 10.1007/978-0-8176-4705-6。ISBN 978-0-8176-4704-9。LCCN 2009939668。
- ^オーバートン、マイケル・L. (2001). IEEE浮動小数点演算による数値計算 - 1つの定理、1つの経験則、101の演習を含む(第1版).応用数学協会(SIAM). ISBN 0-89871-482-69-780898-714821-90000。
- ^ Rouhani, Bita Darvish; Zhao, Ritchie; More, Ankit; Hall, Mathew; Khodamoradi, Alireza; Deng, Summer; Choudhary, Dhruv; Cornea, Marius; Dellinger, Eric (2023-10-19). 「ディープラーニングのためのマイクロスケーリングデータフォーマット」. arXiv : 2310.10537 [ cs.LG ].
- ^ D'Sa, Reynold; Borkar, Rani (2023年10月17日). 「標準化を通じたAIインフラの進歩の促進」 . Microsoft Azure ブログ. 2024年6月3日閲覧。
- ^ a b「AMD、Arm、Intel、Meta、Microsoft、NVIDIA、QualcommがAI向け次世代狭精度データフォーマットを標準化」 Open Compute Project . 2024年6月3日閲覧。
- ^ a b「OCP Microscaling Formats (MX) 仕様 バージョン 1.0」。Open Compute Project 。 2024年2月24日時点のオリジナルよりアーカイブ。 2025年2月21日閲覧。
- ^ Rouhani, Bita; Zhao, Ritchie; Elango, Venmugil; Shafipour, Rasoul; Hall, Mathew; Mesmakhosroshahi, Maral; More, Ankit; Melnick, Levi; Golub, Maximilian (2023-04-12). 「共有マイクロ指数を用いた場合、少しのシフトで大きな効果が得られる」arXiv : 2302.08007 [ cs.LG ].
- ^ microsoft/microxcaling、Microsoft、2024年5月29日、 2024年6月3日取得
- ^ a b「効率的かつ正確な低精度推論を実現するNVFP4の導入」 NVIDIA技術ブログ。2025年6月24日。
- ^ Shilov, Anton (2023年9月19日). 「D-MatrixのJayhawk IIがエッジとクラウドのAIワークロードに対応」 . EE Times .
- ^ Trukhanov, Nikita; Soloveychik, Ilya (2024). 「外れ値を考慮したLLMSにおける正確なブロック量子化」arXiv : 2403.20137v1 [ cs.AI ].
- ^ 「Tenstorrent AI アクセラレータ」(PDF)。
- ^ 「データ形式と数学的忠実度 — TT Buda ドキュメント」 . docs.tenstorrent.com .
- ^ Bonshor, Gavin. 「AMD、モバイル向けRyzen AI 300シリーズを発表:RDNA 3.5搭載のZen 5、50 TOPSのXDNA2 NPU」 www.anandtech.com 。 2024年6月3日時点のオリジナルよりアーカイブ。 2024年6月3日閲覧。
- ^ 「AMD、Computex 2024で新型AMD Instinct、Ryzen、EPYCプロセッサを発表、データセンターとPCにおけるAIと高性能リーダーシップを拡大」Advanced Micro Devices, Inc. 2024年6月2日. 2024年6月3日閲覧。
- ^ 「BFP16(ブロック浮動小数点)量子化 — AMD Quark 0.10 ドキュメント」 . quark.docs.amd.com .
- ^ 「Intel Advanced Vector Extensions 10.2 (Intel AVX10.2) アーキテクチャ仕様」 . Intel . 2024年10月16日. p. 39. 361050-002US . 2024年12月27日閲覧。
- ^ハオ、ジウェイ;郭建元。シェン、リー。ルオ、ヨン。胡、漢。王、国霞。ユウ、ディアンハイ。ウェン・ヨンガン。タオ、大成(2025)。 「大規模言語モデルの低精度トレーニング: 方法、課題、および機会」。arXiv : 2505.01043v1 [ cs.LG ]。
- ^ 「FP8トレーニングを効果的に行うためのテンソルごと、ブロックごとのスケーリング戦略」 NVIDIA技術ブログ2025年7月1日。
- ^ Kim, Jiwoo; Lee, Joonhyung; Park, Gunho; Kim, Byeongwook; Se Jung Kwon; Lee, Dongsoo; Lee, Youngjoo (2025). 「LLM推論のためのFP8アクロスアクセラレータの調査」. arXiv : 2502.01070v1 [ cs.LG ].
- ^ 「2レベル量子化フォーマット(MX4、MX6、MX9:共有マイクロ指数)— AMD Quark 0.10ドキュメント」。quark.docs.amd.com 。
- ^ 「AMD Versal™ AI Edge シリーズ Gen 2」。
さらに読む
- 「FFT/IFFTブロック浮動小数点スケーリング」(PDF)(アプリケーションノート)。米国カリフォルニア州サンノゼ:Altera Corporation。2005年10月。404-1.0。2018年7月11日時点のオリジナルからアーカイブ(PDF) 。 2018年7月11日閲覧。