後藤弘茂のWeekly海外ニュース

Facebookが次世代深層学習システム「Zion」の概要を発表

大容量メモリ学習に最適化したZionプラットフォーム

Facebookのリコメンデーションシステムの学習モデル

 Facebookは同社の次世代のAI学習プラットフォームである「Zion(ザイオン)」プロジェクトの概要を明らかにした。最大のポイントは、CPUとディープラーニング(深層学習)アクセラレータをそれぞれモジュール化することで、フレキシブルなシステム構成やモジュールの交換を可能にすること。

 業界標準化したモジュールによって、プロセッサベンダーへの依存を下げて、より自由なベンダー選択を実現する。ただしモジュールには自由度を持たせ、アクセラレータそれぞれのインタコネクトでアクセラレータ同士を相互接続可能にする。

 FacebookでTechnical Leadを勤めるMisha Smelyanskiy氏は、8月に米スタンフォードで開催されたチップカンファレンス「Hot Chips 31」で、ソフトウェア側とハードウェア側のパートナーベンダーとの密接な共同作業で、同社にとって大きな変革となるZionシステムを開発したと説明した。

 SNSとしてのFacebookではリコメンデーションシステムが重要なポイントとなっているが、Zionではコンピュートだけでなく、メモリ容量と帯域も必要とされるリコメンデーションモデルに対応できるトレーニング(学習)システムを作り上げた。

埋め込みテーブルも大きくなる
all-reduceとall-to-allの2つの通信パターンをサポート

 Facebookのニーズでの大きなポイントは、大容量メモリが必要となる点。メモリ容量とメモリ帯域は、現在のDRAMアーキテクチャでは相対するが、FacebookのZionでは、CPUに大容量DDRメモリ、アクセラレータに広帯域HBM(High Bandwidth Memory)を組み合わることで両立させる。「メモリはCPUに低帯域だが大容量のDDRをテラバイト単位で、アクセラレータに広帯域だが低容量のメモリで、メモリの容量と帯域を同時に満たすことを可能にした」とSmelyanskiy氏は語る。

bfloat16浮動小数点フォーマットを全面採用したZion

 Zionハードウェアでは、データ数値フォーマットとして「bfloat16(Brain Floating Point 16)」をCPUとアクセラレータの両方でサポートするという。bfloat16は、ニューラルネットワーク用途を前提として提案された新しい浮動小数点数のフォーマットだ。

 従来のIEEE 754の浮動小数点は、FP32(32-bit 単精度浮動小数点数)が、符号部(Sign) 1-bit、指数部(Exponent) 8-bit、仮数部(Mantissa) 23-bitで構成されている。また、FP16(16-bit 半精度浮動小数点数)は、符号部 1-bit、指数部 5-bit、仮数部 10-bitとなっている。

 それに対して、bfloat16では符号部 1-bit、指数部 8-bit、仮数部 7-bitとなっている。つまり、FP32と同じ指数部を備える。

 ちなみに、各浮動小数点フォーマットの仮数部は明示的には上記のビット数だが、実際には黙示的に1ビット分の精度が加えられる。たとえば、bfloat16なら明示的に7-bitだが、実質8-bit精度となる。

bfloat16と従来のIEEE FP32とFP16の比較

 浮動小数点数で、指数部では基数の乗数を示すため、指数部が大きければ表すことができる数値のダイナミックレンジが広くなる。ニューラルネットワークでは、データ精度は低くてもいいが、ダイナミックレンジが必要となる。そのため、指数部を拡張した新しい数値フォーマットが提案された。bfloat16では、FP32と同じダイナミックレンジ(1e-38~3e38)のなかで、7-bit(実際は8-bit相当精度)の小さな仮数が上下するイメージだ。

浮動小数点フォーマットと表すことができる数値のダイナミックレンジの概念図

 bfloat16はGoogleがTPUで採用をはじめて話題となったが、Facebookも全面的に採用の方向にある。Facebook Zionのポイントは、CPUとアクセラレータの両方でbfloat16をサポートする互換性にある。Facebookは、CPUと学習アクセラレータはチップベンダーの製品を採用する。FacebookがZionで示している条件に、2020年前半までに間に合うのは、IntelのサーバーCPU「Cooper Lake」あたりとなる。

 Intelは、Facebookのモジュール規格に適合させる深層学習アクセラレータ「NNP T (Spring Crest)」も発表しており、こちらもbfloat16をサポートする。そのため、FacebookのZionは、Cooper LakeとSpring Crestの組み合わせである可能性が高い。しかし、Facebookは具体的なプロセッサ名は明らかにしなかった。FacebookのZionでは、メモリはCPUに大容量DDR、アクセラレータに広帯域HBMを組み合わせるが、これもCooper LakeとSpring Crestの組み合わせに当てはまる。

年に3倍ずつ増える機械学習のワークロード量

 Facebookによると、マシンラーニング(機械学習)のデータ量と学習のコンピュート量が年に3倍ずつ増えており、機械学習パイプラインの強化を速いペースで行ない続ける必要があるという。Facebookでのおもな機械学習の用途は、ランキングとユーザーへの推奨、画像やビデオの認識処理、翻訳やコンテンツ理解など。

Facebookでの機械学習のワークロードの増大率
機械学習の学習パイプラインでのハードウェアのチャレンジ
Facebookでの機械学習の適用分野

 Facebookの現在の機械学習パイプラインは、ストレージサーバーに「Bryce Canyon」、学習にNVIDIAのTesla P100/V100を8個搭載する「Big Basin」とIntel Skylake 2ソケットサーバーの「Tioga Pass」、インファレンス(推論)にIntelのXeon D-2100サーバー「Twin Lakes」と、アクセラレータカードモジュール「Glacier Point」を組み合わせた「Yosemite V2」となっている。コードネームは、すべて国立公園や自然名所の名前から取っている。

 下のスライドは、Facebookが昨年(2018年)3月のOCP(Open Compute Project) Summitで示したものだ。

Facebookの従来の機械学習ハードウェア
NVIDIAベースの現在のBig Basin
学習部の2ソケットサーバーCPUのTioga Pass
モジュールを組み合わせる推論システムのYosemite V2
Yosemiteに組み込むTwin Lakes

CPUとアクセラレータをモジュラー化したZion

 Facebookの次世代システムでは、学習側は性能を大幅に高めた8CPUと8アクセラレータの組み合わせのZionとなる。Hot Chipsでは、学習システムZionの全体像が説明された。Zionでは、CPUとアクセラレータのチップ個数が同数になるだけでなく、CPU側もすでにふれたようにbfloat16のサポートで学習性能を大幅に高める。

Zionのコンセプト。8CPUと8アクセラレータで埋め込み層とMLP(多重パーセプトロン)層をカバーする
FacebookのZionプラットフォームの全体構成

 CPU側はデュアルソケットのマザーボードモジュールを4枚で構成される。CPUマザーボード同士はCPUファブリックで接続されており、8ソケットシステムとなっている。アクセラレータ側は1アクセラレータ毎にモジュールになっており、8アクセラレータでシステムとなる。モジュールは、Facebookが推進するOCP(Open Compute Project)のモジュール規格である「OCP Accelerator Module (OAM)」。

OCP Accelerator Module(OAM)
CPU側はデュアルソケットマザーボード4枚を相互接続して8ソケットシステム。アクセラレータ側はOCP Accelerator Module (OAM)を8個相互接続して8モジュールシステム
CPUとアクセラレータはそれぞれファブリックで相互連結される
CPUとアクセラレータの間はPCI Express x16で、CPUはNICを経由してネットワークに接続される

 アクセラレータシステムは、4個のPCI Expressスイッチチップを搭載しており、それぞれのスイッチに2つのOAMモジュールがPCIe x16で接続される。PCI Expressスイッチは、それぞれ2枚のCPUマザーボードともPCIe x16で接続する。さらに、PCI Expressスイッチ同士もPCIe x16で相互接続される。また、アクセラレータ同士は、アクセラレータの採用するファブリックで相互接続する。そのため、アクセラレータ各社でトポロジが異なる点がアクセラレータシステムの課題となる。

Zionプラットフォームの相互接続
アクセラレータモジュール同士の相互接続

推論側も新アクセラレータに

 Zionシステムの使い方としては、CPUだけですべてを処理する方法、CPUで埋め込み層までの処理を行ない、コンピューティングがヘビーなそれ以降をアクセラレータで処理する方法、アクセラレータでほとんどを処理する方法がある。

 ハードウェア的には、8ソケットのCPUのうち、2ソケットのモジュールごとにオン/オフができる。2ソケットから8ソケットまで、負荷に応じてフレキシブルな組み合わせが可能となる。

Zionのソフトウェアフレキシビリティ
8CPUを使ったフル構成
Zionで2cpuだけを使う構成。使わない6CPUはオフにする

 ちなみに、Hot Chipsでは語られなかったが、Facebookは推論側もZionに合わせてアップグレードする。推論は専用アクセラレータを使っているが、新しいASIC(Application Specific Integrated Circuit : 特定用途向けIC)を使う「King's Canyon」となる。推論アクセラレータは「M.2」フォームファクタへと流れが向いているが、FacebookもM.2を継続する。

新しいKing's CanyonアクセラレータをYosemiteに搭載する

GPUから離れて深層学習アクセラレータに向かうFacebook

 FacebookのZionは、大規模データセンターでのAIシステムの新しい潮流を示している。それは、学習への専用アクセラレータの浸透だ。

 Facebookの学習システムの中核となるアクセラレータについては、同社は2016年にNVIDIAのTeslaベースの「Big sur」を導入。2017年に現在のNVLinkでGPUを相互接続するBig Basinを導入した。2018年には、Big BasinのCPUをテンサーコアで備えたVoltaアーキテクチャGPUの第2世代に置き換えた。しかし、次世代のZionでは、今度はニューラルネットワーク専用のアクセラレータチップベースのシステムに置き換える見込みだ。

Facebookの現在の学習システムBig Basinと、次世代のZionの比較

 データセンターがGPUを採用するのは、GPUが汎用の並列プロセッサであるためだ。グラフィックス専用のASICだったGPUは、プログラマブルシェーダプロセッサの搭載以降、汎用化の道を進み、現在では、CPUに続く汎用プロセッサの位置を占めるようになった。GPUは、並列化に適した深層学習、とくに学習では強味を発揮して、これまで学習のワークロードは、おもにGPUが担ってきた。アルゴリズムの変化に柔軟に対応できる汎用性がGPUの強味だ。

 しかし、深層学習のワークロード自体が急増しているため、より深層学習の性能効率の高いプロセッサを求める勢いが増している。FacebookのZionでの、深層学習アクセラレータ採用は、こうした潮流を代表している。もちろん、GPU側もこうした流れに対応してくるはずだ。

 また、FacebookがアクセラレータをOCP Accelerator Module (OAM)で標準化しようとしているのは、そうしたハードウェア側の変化に柔軟に対応できるようにするためでもある。Facebookは、OAMフォームファクタになった次世代GPUにZionを置き換えることもできる。