Habana LabsのGoyaとGaudi
Habana Labsも1億2000万ドルという多額のベンチャー資金を集めたスタートアップで、Inference用の「Goya」というチップとTraining用の「Gaudi」というチップを開発した。Goyaはすでに出荷を開始しており、Gaudiの方は6月に発表を行ったが、学会発表という点では、今回のHot Chipsが最初である。
次の表に示すように、学習と推論では要件が異なる。学習では所要時間が長いので、学習時間が短いことが重要である。一方、推論では、一定の時間にどれだけの推論をこなせるか、また、リアルタイムに推論結果を提示する必要がある場合は、推論にかかる時間が問題となる。学習では多くのメモリが必要であるが、推論の場合は、それほどのメモリは必要でない。
学習は計算量が多いのでスケールアウトで、数百台のアクセラレータを使うことも珍しくないが、推論ではスケールアウトはほとんど必要ない。そして、学習は浮動小数点(FP)演算を使うが、推論は整数演算と浮動小数点演算の両方が用いられる。
このように、学習と推論では要件が大きく異なるので、Habana Labsでは、推論用にはGoyaというアクセラレータを開発し、発売を行っている。そして、学習用には、Gaudiというアクセラレータを開発した。Gaudiは現在、サンプル提供中である。
Goyaは、テンソル演算(TPC)、行列積演算(GEMM)とDMAの3つのエンジンを持つヘテロジニアスな計算アーキテクチャとなっている。任意のアドレスストライドでメモリをアクセスする機能を持ち、テンソルのインデックスでアクセスすることもできる。メモリはDDR4が2チャネルで、40GB/sのバンド幅である。I/OはPCIe4.0のx16を備えている。
表に示すように、FP32でResNet-50を計算するとAccuracyは75.7%であった。GoyaでINT8で計算するとAccuracyは75.3%で、FP32の場合と比較すると0.4% Accuracyが低下しているが、この精度の低下は小さく無視できるものである。そして、GoyaでINT16で計算するとAccuracyは75.7%となり、INT16では精度の低下は発生しない。
Habana Labsのソフトウェアの構成とツールは次の図のようになっている。Habana LabsのSynapseAIはGraph コンパイラを含み、Habanaのライブラリとユーザ作成のライブラリを追加するオープンツールチェーンで構成されている。TensorFlowやPYTORCH、Caffe2などで記述されたモデルをコンパイルして実行モジュールを作成する。
次の図はResNet-50でのCPU(Intel Xeon 8180)、GPU(NVIDIA T4)とGoyaの推論性能を比較したものである。CPUは1,255イメージ/秒、T4 GPUは4,944イメージ/秒の処理性能であるが、Goyaは15,393イメージ/秒とCPUと比べると12倍、T4 GPUの3倍強のスループットであり、1.01msという短レーテンシで認識できている。
言語解析のBERTであるが、Goyaは、BERTで使われているすべてのオペレータをネーティブにサポートしている。特に、非線形の関数もハードウェアでサポートされている。
BERTの実行のうちの行列積の計算はint16で行い、層ごとの正規化などはFP32で行っている。この方法では、FP32 で学習したモデルと比較したロスは最大0.11%と非常に高い精度が得られた。
NVIDIA T4 GPUとGoyaのBERTでの推論性能の比較を次のグラフに示す。横軸は処理速度で、単位は文/秒である。Batch=12の場合、Goyaは毎秒1,273文/秒で処理したのに対して、T4は736文/秒と60%弱の性能である。また、Goyaのレーテンシは9.4msに対してT4は16.3ms掛かっている。
Batch=24では、Goyaの性能は20%程度向上しているがT4ではほとんど性能向上が無いので、GoyaとT4の性能の差が開いている。また、 Batch=24の場合はGoyaのレーテンシは1.7倍になったが、T4のレーテンシははぼ2倍であり、T4の方がレーテンシがより長くなっている。
(次回は9月20日に掲載します)