Closed2

Google TPU

Google TPUがすごい。

TPUってなに?

TPUは、Googleが開発した機械学習のプロセッサです。

TPUを使うと、ディープラーニングを高速化できます。
Google自身もGoogle PhotosなどでTPUを使っています。
私たちもGCP(Google Cloud Platform)で、TPUを使った機械学習をすることができます。

TPUはTensor Processing Unitの略です。CPU、GPUと同じ流れです。
CPU:Central Processing Unit
GPU:Graphics Processing Unit
TPU:Tensor Processing Unit

TPUの種類

2015年に、第1世代モデル「TPU v1」を発表、
2017年に、第2世代モデル「TPU v2」を発表、
2018年に、第3世代モデル「TPU v3」を発表、
2021年5月18日、第4世代モデル「TPU v4」を発表しました。
年々バージョンアップしています。

どれくらいすごいのか

プロセッサの計算能力は、FLOPS(フロップス)という単位で比べられることが多いです。
FLOPSとは、「1秒間に浮動小数点の演算が何回できるか」を示す指標です。
数字が大きいほどすげえってことです。

また、TPU を何個か組み合わせると、ポッドと呼ばれます。
TPU1個でもやばいですが、たくさんのTPUを連動させるともっとやばいです。
基本的に、TPUの性能はポッド単位で測られることが多いです。

TPU v2のポッド(64台構成)は、11.5PFLOPS
TPU v3のポッド(64台構成)は、100PFLOPS

K(キロ)M(メガ)G(ギガ)T(テラ)P(ペタ)E(エクサ)Z(ゼタ)Y(ヨタ)

最新版のTPU v4のポッド(4096台構成)は、1exaFLOPSの演算ができます。
これは、TPU v3のポッド(4096台構成)と比較すると2倍以上らしいです。
ノートPC用プロセッサ1000万台に相当するそうです。
よく分からないくらい凄いです。

CPUとTPUの違い

CPU、GPUのような汎用プロセッサと異なり、TPUはディープラーニングに特化しています。
大きく違う点は2つです。

ポイント①

32ビットでなく、8ビット/16ビットの演算器をベースとしている点。

CPUなどの汎用プロセッサでは32ビットの演算が主流です。
ビット数が大きくなるほど、計算精度は良くなっていきます。
しかし、ディープラーニングの計算は、それほどの精度を求められません。
機械学習の推論では、8ビットが最適と言われています。

このため、TPU v1では8ビットの演算器を6万5536個搭載した構成にしました。
消費電力も1ユニット40Wに抑えられた。
(「Tesla K80」というGPUは、32ビット演算器が2496個)
この時点では機械学習の推論フェーズに特化していた。

TPU v2では、学習フェーズでも使えるようにするため、16ビットの演算器を3万2768個搭載したプロセッサを、1ユニットに4個搭載した。
1ユニットで180TFLOPSの演算能力を発揮できます。
学習(トレーニング)には16ビットが必要であり、16ビットにすることで、TPU v2では学習と推論の両方にメリットをもたらすようになりました。

ポイント②

大規模な行列演算パイプラインがある点。

汎用プロセッサでは、演算の間にメモリへの読み書きを行います。
これに結構時間がかかってしまいます。
TPUでは、演算の結果を、演算回路内で直接渡すようにしている。シストリックアレイというそうです。
これにより、メモリへの読み書きを大幅に減らす&集約度を高め、電力消費を抑えることができます。
AppleのM1チップが高速になったのと同じような考え方ですね。

TPUすごい。僕にも使える?

TPUはGCP(Google Cloud Platform)で使うことができます。
サービスの名前はCloud TPUです。
Cloud TPUを使用すると、私たちも爆速で機械学習ができて便利です。

現在(2021/11)は、TPU v2とTPUv3が使えます。
2021年後半には、TPU v4も利用可能になる予定らしいです。

GCPでは、TPU単体とTPUポッドを選ぶことができます。
TPU単体はお手頃価格で、TPUポッドはより高性能な演算ができます。

料金は以下の通りです。(2021/11時点)


TPU単体の料金


TPUポッド(TPUたくさん)の料金

オンデマンド料金って欄が、かかる料金です。
TPU v2は1時間4.5ドル~、TPUv3は1時間8.0ドル~ 使えるみたいです。
ポッドを使おうとするともっと高いです。

プリエンプティブルっていうのを選べます。
Googleが勝手に接続を切る可能性がありますが、そのぶん安く使用できます。
お試しなどならこっちで良さそうです。

  1. TPU単体かTPUポッドか選ぶ
  2. TPUタイプ(v2かv3か)を選ぶ
  3. オンデマンド料金かプリエンプティブ料金かを選ぶ

て流れだと思います。

参考文献

https://9to5google.com/2021/05/18/google-unveils-4th-generation-tensor-processing-unit/
https://venturebeat.com/2021/05/18/google-details-new-ai-accelerator-chips/
https://atmarkit.itmedia.co.jp/ait/articles/1807/06/news108.html
https://cloud.google.com/tpu/pricing
https://cloud.google.com/tpu

TPU システム

1コア基準で考えると分かりやすい

4チップでTPU1つ分
1チップに2コア
つまり、単体TPUには8コアある

1コアにスカラーユニット、ベクトルユニット、マトリックスユニット(MXU)、高帯域幅メモリ(HBM)があるMXUで演算をする
MXUには、128x128個の行列型に配置された16ビット演算器アレイが入っている

MXU(Matrix Unit)
HBM(High Bandwidth Memory)

v2
1コアに、1つのMXU、1つのHBM(8GB)

v3
1コアに、2つのMXU、1つのHBM(16GB)

bfloat16

各 MXU により、サイクルごとに 16,000 の乗累算演算を bfloat16 の精度で実行できます。bfloat16 は、IEEE の半精度表現よりも優れた精度のトレーニングとモデルを提供する、16 ビットの浮動小数点表現です。

bfloat16では、浮動小数点の精度を示す「仮数部」に7ビットを、数値の幅を示す「指数部」に8ビットを割り当てる。仮数部が23ビット、指数部が8ビットのFP32(単精度浮動小数点)に比べて精度は下がるものの、指数部は8ビットで扱える数値の幅(ダイナミックレンジ)は同じにしてデータサイズを抑えたことが特徴である。このため、ディープラーニング(深層学習)を用いた学習処理に向くとされる。

https://cloud.google.com/tpu/docs/system-architecture?hl=ja
https://xtech.nikkei.com/atcl/nxt/event/18/00087/00005/
このスクラップは2ヶ月前にクローズされました
ログインするとコメントできます