Facebookの大メモリ学習プラットフォーム「Zion」
Facebookは次世代の学習用プラットフォームであるZionについて発表を行った。現用のBig Basinはメモリが小さく、リコメンデーションにはメモリ不足で、それを解消する必要があったようである。
Facebookでのマシンラーニングのパイプラインの使用率は2018年には30%であったが、2019年には50%に増えている。また、マシンラーニングのデータ量は1年で3倍に増えている。
この12ヵ月で、Facebookのランキングを担当するエンジニアは2倍に増え、学習を行ったワークフローは3倍、マシンラーニングの計算量も3倍に増加した。なお、増加が著しいのはリコメンデーションとのことである。ブラウザを使っていると、過去の購入履歴や訪問したWebサイトなどの情報から、興味のありそうな広告が次々と表示されてくるのを見ても、リコメンデーションがフル稼働していることが感じられる。
次の図は、学習の各ステージが、ストレージ、ネットワーク、計算とメモリのどの部分に負荷が大きいかを示す図である。この図のように、ストレージ、ネットワーク、メモリ、コンピュートのすべての部分にストレスが掛かる。
一方、マシンラーニングのエンジニアは開発効率や開発の柔軟性が改善されることを期待している。このため、学習用プラットフォームの開発にはソフトウェアとハードウェアのコデザインが必要となる。
Facebookでは、ランキングやリコメンデーションにAIを使っている。また、イメージの分類、オブジェクト識別、ビデオ理解にもAIを使っている。さらに言語の翻訳や言語理解にもAIを使っている。
ZionはCPUが8台、アクセラレータが8台というのが基本である。CPUの方は~100Wの消費電力であるが、アクセラレータは~200W程度を消費する。CPUメモリは大容量であるが、バンド幅の狭いDDR4が使われ、アクセラレータはメモリ量は小さいがバンド幅は大きいHBMが使われる。
そして、CPUとアクセラレータが使用するBFLOAT16のフォーマットを合わせておくことが重要である。
そして、ZionではCPU同士を接続するCPU Fabricとアクセラレータ同士を接続するAccelerator Fabricがある。CPUファブリックのトポロジはTwisted Hypercubeで、キャッシュコヒーレントな通信を行う。アクセラレータファブリックは、現在は統一されておらず、アクセラレータごとにさまざまなものが使われている。
しかし、All-ReduceとAll-to-All通信ができることは必須である。
そして、ZionではCPUにNICを接続し、ネットワーク接続でスケールアウトすることができる。
Zionの物理的な形状は次の図のようになっている。CPU側は1Uのマザーボードに2ソケットサーバを搭載し、それを4枚使用して8ソケットのシステムとしている。アクセラレータ側は、3U程度の箱に8個のOCPアクセラレータモジュールを搭載している。
次の図はZionシステムのブロック図である。8個のCPUはCPU Fabricで接続され、8個のアクセラレータはAccelerator Fabricで繋がれている。そして、2台のCPUからPCIeスイッチに接続され、1台のPCIeスイッチから2台のアクセラレータに繋がっている。それに加えて4台のPCIeスイッチはPCIe×16で結ばれている。
アクセラレータはOCP Accelerator Moduleの形で使用される。世の中には多種のアクセラレータがあり、それらすべてを使えるようにするには大きなエンジニアリングリソースが必要である。これを減らす為、FacebookではOCP Accelerator Moduleという形で、共通のフォームファクタになるようにしている。
なお、この図には、AMD、Habana、Intel、NVIDIAの名前があがっている。
NVIDIAのP100 GPUを使うBig Basinプラットフォームでは、アクセラレータとしてはNVIDIAのGPUしか使えず、インタコネクトもNVLINKによるHypercube meshに決まっていたが、Zionでは各種のインタコネクトが使える。そして、Big Basinでは10~100GB程度のメモリしか使えなかったが、Zionでは100GB~1000GBレベルのメモリを使うことができる。そして、CPU側はBig Basinでは1個のCPUであったが、ZionではマルチCPUを搭載し、いろいろな構成が可能である。
結論であるが、ZionはFacebookの次世代の柔軟性の高い学習用のプラットフォームである。このシステムは大量のメモリを必要とするリコメンデーションモデルの実行をターゲットにコデザインで作られたものである。
そして、OCPアクセラレータモジュールの形であれば、どこのベンダーのアクセラレータでも組み込める。このシステムはより大規模なシステムにスケールアウトすることができるビルディングブロックともなっている。
(次回は9月10日の掲載となります。)