OpenAIの「GPT-3」AI言語モデルはパラメタが1750億個あり、Lambda社のWebページでは、V100 GPUを使う割安な高性能クラウドを使っても、GPT-3の学習には355年かかり、クラウドの使用料は460万ドル掛かると書かれている。
しかし、Hot Chips 33でCerebrasが発表した最大規模のシステムを使えば、GPT-3は1日で学習ができ、Microsoftが提唱している1兆パラメタのモデルでも長めの週末一回で学習ができると見積っているという。1兆パラメタのモデルは人間の脳のパラメタの規模であり、人間の脳レベルのモデルの学習ができるようになったら、何ができるかは興味深い。
この図2の写真のチップは直径300mmのウェハで作れる最大サイズのチップ(? これをチップと呼ぶのは違和感がある)で、これより大きいものは450mmウェハを使うファブが稼働しなければ作れない。それには製造設備を全部450mm対応に変更する必要があり、容易なことではない。したがって、当面は、これより大きなシングルチップは作れない。
今回の発表は、このWafer Scale Engine(WSE)の第2世代品「WSE-2」を搭載した超高速ディープラーニングシステム「CS-2」を最大192台並べると何ができるかという話である。ただし、現在のCS-2は192台を並べるのに適した形にはなっていない。消費電力が大きいので、水冷にして、大きな筐体に何台ものCS-2を詰め込むような実装にする必要があるように思われる。
AI研究の最先端では、たった2年で、1000倍サイズのモデルが出現し、1000倍の計算能力を持つAIエンジンが必要になって来ている。
なお、指数関数的な増加に勝てるものはなく、192台のCS-2を並べたシステムが作れたとしても、それで間に合うのは一時的で、すぐに、より強力なアクセラレータの開発が必要となる。それはともかく、今作れるのはCS-2を192台並べるシステムである。
これに対するCerebrasの解は、120兆パラメタのモデルを1台のCS-2に収容することである。後述するように、モデルの重みをストリーミング供給することで、大きなモデルを容易に扱うことができる。そして、192台のCS-2を使うクラスタでも計算速度はほぼリニアにスケールする。
さらにCS-2はSparseな計算を入力の値をチェックして省くハードウェアを持っているので、Sparse性の利用が容易というメリットがある。
そして、今回の発表の目玉は「MemoryX」と「SwarmX」である。MemoryXは巨大なモデルを格納するメモリであると同時に各CS-2が計算した傾きを集めて、重みの更新を行う。そして、SwarmXはMemoryXから供給される更新した重みをCS-2に配る。
MemoryXとSwarmXとCS-2とそれぞれの処理を分割して実行することにより、192台のCS-2を使って計算能力を増やしてもAIシステムの学習能力はスケールする。
重みストリーミング型の実行モデルでは
- 重みはウェハ外に記憶
- 重みはウェハにストリーミング供給
- アクティベーションはウェハに保持して、重み層ごとに計算を進める
計算した傾きはウェハからMemoryXに吐き出し、重みの更新を行う。
計算を層ごとに実行するとL1の計算が終わらないとL2の計算が出来ないので、レーテンシが問題となる。そこで、Cerebrasは図11のように、粗粒度と細粒度のパイプラインを組み合わせて使っている。層の間を進んでいくForward/Delta/Gradientと完全にパイプライン化する。層ごとの繰り返しの部分は層間の依存性のない計算であり、計算順序を気にする必要は無い。Fowardパスと重みのアップデートを行う部分のオーバラップは細粒度のパイプライン化で順序を確保する。
巨大モデルを扱うには2つの容量問題がある。1つは巨大モデルをどのように格納するか。もう1つは巨大モデルをどのようにして実行するかである。
巨大モデルを扱うためにCerebrasはMemoryX Technologyを開発した。図13に示すMemoryXはDRAMとFlashで作られたハイブリッドのストレージで、最大2.4PBの容量を持ち1200億の重みを扱える。
MemoryXは重みのアップデートや最適化のための計算機能も持っている。そして、レーテンシを隠すため、インテリジェントなパイプライン化も行う。
WSEは大容量のローカルメモリを持ちすべてのActivationを格納している。大きなCompute Arrayを持ち、重みのストリームとActivationの積を計算する。十分なメモリバンド幅があるので、フルの演算性能を発揮できる。高バンド幅のインタコネクトを持っているので、部分積の加算をウェハ全域について並列に計算できる。
そして、それらの計算のためにマトリクスのブロッキングやパーティショニングを行う必要はなく、普通に計算を進めれば良い。
学習は複数のCS-2の上でデータ並列に行われる。重みはMemoryXからすべてのCS-2にブロードキャストされる。傾きは重みと逆方向に更新されていく。結果として、マルチシステムでもシングルステムと同じように実行されていく。
同じシステムアーキテクチャのモデルが使えるので、ほぼリニアにスケーリングし、使用するCS-2の台数に逆数に比例して計算時間を短縮できる。
しかし、NLPのモデルサイズの拡大は歴史的に継続しており、この拡大が続けば計算能力が不足するので、計算量の拡大を抑える努力も重要である。
これまでに発表されている疎計算の研究では10倍余りの効率の改善が示されている。
Cerebrasの計算コアにはDataflow Triggerというハードウェアが付いており、非ゼロのデータが入力された場合だけ計算を行うようになっている。そして、WSEは高バンド幅のメモリを持っているので、ゼロのデータが来ても非ゼロのデータを選択してフルの演算性能を維持することができる。
また、WSEは高バンドのインタコネクトを持っているので、ゼロ入力をスキップしてリダクションを継続できるなど、すべてのタイプの疎計算に対応している。
行列計算には行列×行列の和を計算するGEMM、行列×ベクトルのGEMV、スカラ×ベクトルのAXPYがある。SparseなGEMMは1つの非ゼロの重みごとに1回のAXPY計算で済む。
Sparseな重みはすべてのCS-2にストリーム入力される。計算結果のSparseな傾きは逆方向伝搬に伴って纏められる。Sparseな重みのアップデートはMemoryXで行われる。この計算フローは密行列でも疎行列でも同じである。
WSEはSparseな非ゼロの重みのストリームを受け取る。この部分でゼロの重みが除去される。そして、それぞれのコアはアクティベーションにしたがってAXPYを計算する。
図23は非構造のSparsityを利用して、どれだけスピードを上げられるかを示す図である。
重みストリーミングでクラスタレベルまでスケールできる。
WSE-2はTSMCの7nmプロセスで作られ、300mmウェハから1個採り。46255mm2のシリコン片で85万のAIコアと40GBのオンチップSRAMを搭載する。この贅沢とも言えるハードウェアで通常のAIアクセラレータではモデル分割などが必要な場合でも、WSE 1枚にモデルを収容し、効率的にモデルを実行する。
プログラム開発が容易と言うのを測定するマシンラーニングのベンチマークは無いが、実際の開発を考えれば大きなメリットであると思う。