2019の24日目の記事です。遅くなったことをお詫びいたします。(TPU’s)のTPUに関する部分のまとめです。v2/v3の違いを知りたくてまとめてみました。v1/v2/v3の比較がまとめられています(以下、全てのスライドはYouTubeからの引用)。講演の内容について(注)講演は以下の3つの話題を扱っていますが、このまとめでは最初のTPU、についてだけ触れます。TPUXLAコンパイラベンチマークこの講演は、以下の2つのpaperが元になっています(2つ目はまだ出版されていないので、初めて聞く話もあるだろう、と話しています)。Ownership(TCO)を10倍減らすことを目的にして、カスタムハードウェアを作ることにしました。非常に短い期間でTPUv1は開発されました。具体的には、2014年に始めて、15ヶ月後にデータセンターで使われていました。アーキテクチャ開発、ハードウェアデザイン、コンパイラ開発、テスト、デプロイ、全てをこの間に行いました。activationメモリ、を持ちます。bufferとMACは、性能に大きく関わる部分で、チップ面積の半分を占めます。通常のプロセッサやGPUでは、MACでSRAMやレジスタにアクセスすることによって電力消費が発生します。executionといわれる実行方法をとりました。性能/電力比は、対CPU(Haswell)で83倍、対GPU(K80)で29倍、改善されました。TPUv1の改善可能だった点もしも、もっと開発時間があったとしたらどんなことをするべきだったか、というシミュレーションをしてみました。MXUを大きくする、クロックを上げる、速いメモリを使う、など。TPUv1ではメモリは標準のものを使ったので、それほど速くないです。DRAMからGDDR5に変えることができたら(TPU’)、メモリ帯域は34GB/sから180GB/sになります。すると、性能/電力比は、対CPU(Haswell)で196倍、対GPU(K80)で68倍、改善されるであろうという見込みがえられました。以下の4つだと思います。1次元ではなく、大きな2次元のMACユニットを用意したこと。integerを採用したこと。arrayを採用したこと。キャッシュ、分岐予測といった、汎用CPU/GPUが持つ機能を採用しなかったこと。TPUv2について2014年に訓練(training)用として開発がはじまって、2017年にデータセンターにデプロイされました。訓練はなぜ難しい?以下の5つだと思います。計算が必要であること。メモリが必要であること。プログラム可能であること。桁数の多い数値を扱うこと。並列化が易しくないこと。computerを作る必要があります。そのためには、ネットワークが重要です。interconnection(ICI)を4つ内蔵しています。両方向で500Gbit/sの転送速度。2Dトーラスを構成します。TPUv2チップを、wireを介して、ラック間であっても直接接続できます。ICIはTPUv2ダイの13%しか使っていません。一般のデータセンターに比べて、5倍のバンド幅を、1/10のコストで実現しました。permuteするユニット(TRP)32の2Dベクタレジスタと、2Dベクタメモリ(16Mib)を持つベクタユニット(VPU)。性能はMXUの1/10程度です。stackを32本の64-bitバスで繋ぎました(*1)(トータルでTPUv1の20倍のバンド幅を確保しました。TPUv1でメモリバンド幅が足りなかった、という教訓を反映させました)。フロアプランを見ると、TPUv1と違いTPUv2ではMXUはそれほど大きな部分を占めてはいません。networkの精度を改善して、訓練時間を1/14まで短縮しました。TPUv2では、ソフトとハードで対応しました。square-rootを行います。ベクタユニットのスループットを、最初のデザインより8倍にしました。root用のハードを追加しました。architecture(ISA)8演算まで同時実行可能な、322-bitのVLIW命令からなります。2つのスカラarithmetic演算2つのベクタarithmetic演算1つのベクタロード1つのベクタストア2つのMXUとTRPユニットとのやり取りのためのキューメモリ・レジスタは以下のようなものがあります。ベクタメモリTPUv3についてTPUv3は、TPUv2と同じテクノロジを使っています。HBMバンド幅、1.35倍に増加1チップで、コアあたりのMXUを1から2に増加ダイの大きさは6%しか増えていない結果、消費電力1.6倍になったので、液冷を使用HBMのメモリ容量を2倍にして、コアあたり16GiBにシステム全体では、256から1024チップに増加TPUv1/v2/v3の比較表は、この記事の最初にあります。(*1)Twitterで@Vengineerさんからご指摘を頂き修正しました。