English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

ゲスト
1 / ?

符号、指数部、仮数部

IEEE 754 浮動小数点形式

すべての浮動小数点数は 3 つのフィールドを保存します:


- 符号ビット (1 ビット): 正または負

- 指数 (E ビット): 倍率スケール、2 の整数乗

- 仮数 (M ビット): 小数点以下の精度、1.0 ~ ~2.0 の間の数


総ビット数 = 1 + E + M。値はおよそ (-1)^sign (1 + mantissa) 2^(exponent - bias) に等しい。


トレーニングにおいて重要な2つの特性:


ダイナミックレンジ = 2^(2^E) (およそ)。指数ビットの増加により、オーバーフローせずにより小さくより大きな数を表現可能。


精度 = 2^M 個の異なる値(2のべき乗ごと)。マンティサのビット数が多いほど、連続する2のべき乗間の表現が細かくなります。


3つのフォーマット


フォーマット総ビット数符号指数マンティサ動的範囲精度
FP32321823~10^-38 から ~10^38~7桁
FP16161510~10^-5 to ~10^5~3 digits
FP8 E4M38143~2^-9 to ~448~2 digits

FP8 E4M3 は「4 指数ビット、3 仮数ビット」を意味します。代替の FP8 E5M2 は精度を範囲と交換します。ANDREA の実験では E4M3 を使用します。なぜなら、トランスフォーマーの活性化は狭い大きさの帯域に留まり、追加の精度が追加の範囲より優位になるからです。

パラメータあたりのバイト数

ANDREA-120M は約 120,000,000 のパラメータを保持します。重み行列のみのストレージ容量を (a) FP32、(b) FP16、(c) FP8 で計算してください。MB 単位で算術を示してください。次に (d) 重み + Adam 一次モーメント + Adam 二次モーメント(重みの 3 倍)の FP16 でのストレージ容量を計算してください。

なぜ低精度が高速に動作するのか

メモリ帯域幅がトレーニング速度を支配する

現代の GPU は計算よりもメモリを待つ時間の方が多い。RTX 4090 は 1008 GB/s のメモリ帯域幅と 165 TFLOPS の FP16 計算性能を持つ。典型的な層は VRAM から重みを読み込み、アクティベーションを乗算し、結果を書き戻す。帯域幅が、計算ではなく、スループットを決定する。


精度を半分にするとパラメータあたりのバイト数が半分になるため、同じ重みを読み込むのにメモリ帯域幅の半分しか使わない。スループットはほぼ 2 倍になる。


テンソルコア:ハードウェアアクセラレーション付き行列乗算

RTX 4090には、FP16またはFP8で直接行列乗算を計算する専用のテンソルコアユニットが搭載されています。1回のテンソルコア演算で小さなブロック(例: 16x16)を1サイクルで乗算し、スカラーFP32乗算よりも劇的に高速です。


ANDREA-120Mからの実証数値:


精度ステップ/分備考
FP32~3ベースライン;テンソルコア加速なし
FP16~6cuBLAS テンソルコア; 2倍の速度向上
FP8 E4M3~6テンソルコア; FP16 と同等

FP8 はこのワークロードで FP16 のスループットを上回らなかった。計算スループットがボトルネックでなくなったためで、メモリ帯域幅と起動オーバーヘッドが制約となった。ANDREA-120M v3 は、FP16 cuBLAS で 6 steps/min で出荷され、スループットを失わずに快適な安全マージンを確保している。


FP8 での NaN リスク

FP8 E4M3 は ~2^-9 から ~448 までの数を表現する。その範囲外のアクティベーションやグラディエントは NaN(not a number)にオーバーフローするか、ゼロにアンダーフローする。1つの NaN が下流のすべての計算を汚染する:NaN を含む行列乗算はすべて NaN を返す;すべて NaN のグラディエントは AdamW の状態を破損;NaN の m & v を持つ AdamW は NaN の更新を出力;重みが NaN になり;トレーニング全体が死ぬ。


ANDREAのFP8実験では、損失スケーリング、スケジュールされた精度切り替え、またはフォールバックパスを必要とする断続的なNaNクリフが発生しました。FP16の動的範囲(~10^-5 から ~10^5)は十分に広く、複雑なスケーリングトリックなしでNaNイベントをまれに抑えられます。


Precision Comparison: FP32 vs FP16 vs FP8

新しいラン用の精度選択

RTX 4090で新しいANDREAスタイルのトレーニングランを開始します。相反する2つの優先事項があります:(1) steps/minを最大化、(2) トレーニング途中のNaNクラッシュのデバッグを避ける。ANDREA-120M v3は、両方とも~6 steps/minで動作するにもかかわらず、FP8 E4M3よりFP16 cuBLASを選択しました。FP16がこの決定で勝った理由を考察してください。回答では動的範囲と**tensor core**サポートを参照してください。

1枚の4090に120Mを収める

イントロレッスンからの6-8倍の乗数

grow_a_language_model_introから思い出すと、トレーニングメモリは生の重み数のおよそ6-8倍で、次のものを考慮しています:


- 重み (1x)

- Adamの第一モーメント m (1x)

- Adamの第二モーメント v (1x)

- グラディエントバッファ (1x)

- アクティベーション & 一時変数 (~2-4x、バッチとコンテキストに依存)


ANDREA-120M を FP16 で、batch_size=8、context=1024 で:


コンポーネントFP16 サイズ
重み240 MB
m (第1モーメント)240 MB
v (第2モーメント)240 MB
勾配240 MB
活性化~2-4 GB (バッチ, コンテキスト)
合計~3.5 GB

RTX 4090 は 24 GB VRAM を搭載。ANDREA-120M は FP16 で ~14% を使用。より大きなバッチサイズや長いコンテキストウィンドウに十分な余裕あり。ANDREA-12M は合計で 1.4 GB のみ使用。


混合精度が使用される場所

ANDREA はすべてを一つの精度で保持しません。混合精度トレーニングでは以下を保存します:


- マスター重み: FP32 (トレーニングの安定性を保持)

- フォワード & バックワード計算: FP16 (テンソルコアを使用)

- AdamW オプティマイザ状態: FP32 (m & v は長尾更新のために精度が必要)

- グラディエントバッファ: FP16 (計算側)


最終的なメモリ予算は両方を混ぜたものです。ANDREAの実際のフットプリントは、純粋なFP16(720 MB optimizer state)と純粋なFP32(1.44 GB optimizer state)の間にあり、m と v がFP32のままなのでFP32に近いです。

ANDREA-480Mのための予算の規模決め

ANDREA-480M(ファミリーの計画された3番目のメンバー)は約4億8000万のパラメータを持ちます。(a) FP16の重みのみをMBで、(b) FP16の重み + m + v をMBで(簡略化のためm & vもFP16と仮定)、(c) 6-8倍の目安ルールから、FP16での総トレーニング時フットプリントを推定してください。ANDREA-480Mは単一のRTX 4090(24 GB)に収まりますか?

実践での精度

トレーニング中にANDREA-120MがFP16で約5000ステップごとに時折NaN損失を発生させ、各NaNでチェックポイントから再起動が必要だと判明したとします。FP16を離れずにNaN頻度を減らすために最初に試す**1つの変更**は何ですか?1文でメカニズムを正当化してください。

関連活動

精度に関連する3つの兄弟活動:


- Activity 1: Intro / VRAM budget. 精度はメモリ予算の算術の各項を乗算します。6-8倍の目安ルールは無次元です;bytes-per-paramで次元を与えます。

- アクティビティ 10: AdamW. オプティマイザの状態(m & v)は、フォワード/バックワード計算が FP16 で実行されていても、通常 FP32 のままです。理由:オプティマイザにとっては、長尾の累積器精度が実行速度よりも重要です。

- アクティビティ 12: グラディエントクリッピング. クリッピングは、オプティマイザの状態更新前にグラディエントの大きさを制限します。FP16 フォワード/バックワードと FP32 オプティマイザの場合、クリッピングは精度が変化する境界およびオーバーフローリスクが集中する場所で発生します。


精度は無料のつまみです:変更すると、モデルが高速に訓練され、メモリ使用量が少なくなります。コストは数値的な注意:NaN 処理、損失スケーリング、混合精度の規律です。ANDREA-120M v3 はその成果を示しています:120M パラメータが、FP16 によりすべてが半分になったため、コンシューマハードウェアで 23 日で訓練されました。