次の図は、HPCの世界ではよく使われるルーフ(屋根)ラインモデルをニューラルネット向きに改造したもので、縦軸はTOps/s性能で、横軸はOps/Weight Byteで表わした演算強度である。演算強度は、メモリからの1バイトの読み込みで何演算できるかという値で、演算強度が高い領域では、縦軸方向はプロセサのピーク演算性能で屋根の高さが制限される。一方、演算強度が小さい領域ではメモリバンド幅が律速になり、屋根は、演算強度に比例した右上がりの直線となる。

そして、マークがついているのが、6種のアプリケーションの位置である。CNN0とCNN1は演算強度が大きく、プロセサの演算性能ネックの領域にあるが、それ以外のアプリケーションは演算強度が小さく、メモリバンド幅ネックの領域に入る。

そして、CNN1以外は、プロセサの演算性能とメモリバンド幅制限とほぼ一致した性能が得られている。CNN1の性能が屋根より低いのは、重みの値の到着が遅く、半分程度の行列演算器が重みの到着待ちで演算を開始できない時間が発生しているからであるという。

TPUのルーフラインモデル。縦軸はTOps/s性能で、横軸はOps/Weight Byteで表わした演算強度

処理のレーテンシは、次の表のようにInference/s性能に影響する。Haswell CPUシステムでは21.3msのレスポンス時間を許容すれば13,194推論/秒の最大性能を出せるが、7ms以内に99%のレスポンスという条件では最大性能の42%の性能しか得られない。

また、K80 GPUシステムでは8.3msのレスポンスタイムを許容すれば36,461推論/秒の最大性能を出せるが、7ms以内に99%のレスポンスという条件では37%の性能しか出せない。

これはキャッシュやOut-of-Order実行など条件が良ければ短時間で処理ができる機構を導入したり、GPUのように多数スレッドの並列実行でレーテンシよりもスループットを優先する機構を使っていると、平均的な性能は高くても、キャッシュミスやGPUメモリアクセスのリプレイの発生などで処理時間が遅くなってしまうことがあるからである。

一方、TPUは複雑な加速機構は使わず、単純な制御を行っているので、10㎳の最大性能の280,000推論/秒に対して、7msのレスポンスという条件でも80%の225,000推論/秒の性能が得られている。

各システムの99%のレスポンスが収まる処理時間とその時の推論/秒性能とピーク性能に対する比率

なお、7ms以内に99%のレスポンスという応答時間の基準は、応答時間が長くなるにつれてサービスの利用度が下がることから、Googleが自主的に決めたものである。

次の図はHaswellのルーフラインである。Haswellは、演算性能に比べてメモリバンド幅が大きく、13以上の演算強度があれば演算性能ネックになるが、多くのアプリケーションが屋根よりもかなり低い値に留まっているのと、ピーク演算性能の屋根自体が低いことから、LSTM0で1.1TOps/sになっている以外のアプリケーションでは1TOps/sに届いていない。また、屋根よりも値が低いのは処理のレーテンシが長く、レスポンスが遅いことが影響している。

Haswellのルーフライン

また、次の図はK80 GPUのルーフラインである。Haswellの図と同様に、多くのアプリケーションで、屋根よりもかなり低い値しか出ていない。

K80 GPUのルーフライン

次の図は性能のまとめで、他のシステムに対する性能比率を棒グラフで表わしている。6本の棒グラフからなるグループが4グループあるが、各グループはGPU/CPU、TPU/CPU、TPU/GPU、TPU'/CPU、TPU'/GPUの性能比を表している。ここでTPU'は性能改善効果が最も大きい重みDRAMを、K80 GPUと同じGDDR5 DRAM化したという想定のTPUである。

左側の2つのグループのグラフは制御用のXeon CPUの消費電力を含んだTotal Perf/Wattで、右側の2つのグループはサーバ本体の電力は含まず、アクセラレータだけのIncremental Perf/Wattである。

GMと書かれたグループは、6種のアプリケーションの幾何平均、WMと書かれた右側のグループは、最初に示したGoogleでの使用頻度を考慮した幾何平均である。

この結果から、アクセラレータ単体の比較では、TPUはCPUの83倍の性能/電力、GPUの29倍の性能/電力を持つことが分かる。また、重みメモリをGDDR5に替えると、性能比は196倍と68倍とおおよそ倍増する。

CPUの購入価格は機密情報で開示できないが、データセンターの建設、運営を含めたTCO(Total Cost of Ownership)は、おおよそ、消費電力に比例することが知られており、Perf/WはPerf/$に比例する。ということは、K80 GPUを使う場合と比べて、TPUを使えば1/29の費用で同じサービスを提供できることになり、TPUの開発費を考えても、トータルでは得になるというのは理解できる。

CPU、GPU、TPUシステムの性能比較。Total Perf/Wattはサーバ電力を含むが、Incremental Perf/Wattはアクセラレータだけの電力で比較している。また、GMは6種のアプリケーションの幾何平均。WMはGoogleでも使用率を考慮した平均となっている

なお、この性能比較は、Googleのデータセンターのニューラルネットアプリケーションとその実行比率に基づいており、例えば、CNNが主要なアプリケーションである場合は、トレードオフが変わってくる可能性がある。

また、TPUは密行列の積を想定しており、MLPでは良いが、疎行列のCNNではムダな0を掛けるという計算を多く実行してしまっている。疎行列の扱いをどうするかは、次世代のTPUの開発で考えるべき項目であるという。また、メモリバンド幅リミットになっているケースも多く、GDDR5 DRAMやHBM2の採用なども視野に入っていると考えられる。