- Nvidiaが10年間でGPU性能を1000倍向上させた4つの要素
- Chief ScientistのBill DallyがIEEE Hot Chips 2023のキーノートで1枚のスライドで説明
Number Representation: 16倍
- 「概して、私たちが得た最大の利点は数値表現の改善だった」
- これらの数値はニューラルネットワークの主要なパラメータを意味する
- これらのパラメータの1つは重み(Weights)で、もう1つは活性化(Activations)
- 重み: モデル内のニューロン間の接続強度
- 活性化: ニューロンで重みが適用された入力の合計を掛け合わせて活性化するかどうかを決定し、次のレイヤーへ情報を伝播するもの
- P100以前のNvidia GPUは、こうした重みを単精度浮動小数点(single precision floating-point)数で表現していた
- IEEE 754標準で定義されたこの数値は長さが32bitで、23ビットは仮数を表し、8ビットは仮数に適用される指数の役割を持ち、1ビットは数値の符号に使われる
- しかし機械学習の研究者たちは、多くの計算でより精度の低い数値を使っても、ニューラルネットワークが依然として正しい答えを出せることを見いだした
- このように処理するビット数を減らすと、機械学習の主要な計算(乗算および累積)を実行するロジックをより小さく効率的にできる
- そこでNvidiaはP100でFP16を採用し、その数を半分に減らした。Googleもbfloat16という独自版を投入した
- 両者の違いは、精度を提供する仮数ビットと、範囲を提供する指数ビットの相対的な数の違い
- bfloat16はFP32と同じ数の指数ビットを持つため、両形式間の変換が容易
- 今日の最新GPUであるH100は、ChatGPTやその他のLLMのような大規模トランスフォーマー型ニューラルネットワークの特定部分で8ビット数値を使用できる
- ただしNvidiaは、これがあらゆる場合に当てはまるone-size-fits-allの解決策ではないことを見いだした
- たとえばNvidiaのHopper GPUアーキテクチャは、実際には2種類の異なるFP8フォーマットを使って計算する
- 1つは精度がやや高く、もう1つは範囲がやや広い
- Nvidiaの特別な強みは、いつどの形式を使うべきかを知っていること
- Dallyと彼のチームは、より少ないビットでより多くのAI性能を引き出すための、さまざまな興味深いアイデアを持っている
- そして浮動小数点システムが理想的ではないことは明らか
- 主な問題の1つは、数値が大きくても小さくても、浮動小数点の精度がかなり一貫していること
- しかしニューラルネットワークのパラメータは大きな数値を使わず、0の周辺に集まっている
- そのためNvidiaのR&Dの焦点は、数値を0に近いところでより正確に表現できる効率的な方法を見つけること
Complex Instructions: 12.5倍
- 「命令をフェッチしてデコードするオーバーヘッドは、単純な算術演算を実行するよりも何倍も高い」
- たとえばある乗算では、演算そのものに必要な1.5ピコジュール(picojoules)の20倍に達するオーバーヘッドを消費する
- 一連の命令ではなく単一命令で大きな計算を実行できるようにGPUを設計することで、Nvidiaは大きな利益を得た
- 依然としてオーバーヘッドはあるが、複雑な命令を使えば、より多くの数学演算によってコストを償却できる
- たとえば、複雑な命令であるIMMA(integer matrix multiply and accumulate、整数行列乗算および累積)のオーバーヘッドは、数学演算のエネルギーコストの16%にすぎない
Moore’s Law: 2.5倍
- ムーアの法則の進展を維持するには、数十億ドル規模の投資と非常に複雑なエンジニアリング、そして数多くの国際的な不安要因が伴う
- しかしこれもNvidiaのGPU性能向上の一部である
- Nvidiaは最先端の製造技術を継続的に活用してきた
- H100はTSMCのN5(5ナノメートル)プロセスで製造されており、チップファウンドリは2022年末になってようやく次世代N3の初期生産を開始した
Sparsity: 2倍
- 学習後には、ニューラルネットワークには本来そもそも存在すべきでなかったニューロンが多く残る
- 一部のニューラルネットワークでは、「ニューロンの半分以上を取り除いても精度を失わない可能性がある」
- こうしたニューロンの重みの値は0か、ほぼ0に近いため、出力に寄与せず、計算に含めるのは時間とエネルギーの無駄にすぎない
- 計算負荷を減らすために、こうしたネットワークを「疎(Sparse)」にするのは難しい作業
- しかしH100の前身であるA100を通じて、Nvidiaは構造化スパース性(Structured Sparsity)と呼ぶ機能を導入した
- このハードウェアは、可能な整理イベント4件のうち2件を強制的に発生させ、新しいより小さな行列計算につなげられるようにする
- 「スパース性の問題はまだ終わっていない」「私たちは活性化について何かをしなければならず、重みにおいてもさらに大きなスパース性を持たせられる」
6件のコメント
おお、良い記事をありがとうございます!
面白く読みました。
うわ、株を買い続けなきゃ..
2018年に偵察買いしておいたNvidia株が少しあるんですが、今は1100%ですね。あの時に思い切ってたくさん買っておけばよかった。しくしく
わあ..!
16 x 12.5 x 2.5 x 2 にすると、ちょうど1000ですね。