CPU・GPU・TPUの違いを、超ざっくりまとめようの回。
これを読む前:
GPUはAI向き、TPUはもっとAI向き???
CPUは安心安全のリーダー???
これを読んだ後:
CPU・GPU・TPUの設計思想がなんとなくわかる
※厳密なアーキテクチャは知りません...かなり概念的な説明なので全然嘘の可能性があります!!!よろしくお願いします!!!
🧠 CPU:判断+記憶+演算
CPUは判断・記憶・計算を全部できる。汎用的で、何かに特化しているわけではない。
イメージとしては、
大学教授1人
計算だけじゃなく、状況判断や複雑な処理もできる万能タイプ
ただし並列性はそこまで高くない。
🎮 GPU:記憶+演算
GPUは「並列演算のプロ」。
こっちは、
小学生100人
1人1人は簡単な計算しかできないけど、同時にやるとめちゃくちゃ速い
例えば、300個の掛け算があった場合...
①30人に10個ずつ配る
②各自が順番に掛け算
③結果をメモしながら足していく
④最後に30人分を合計する
ポイントは途中結果をメモリに保存しながら進める点。
GPUは大量並列だけど、大量のメモリI/Oが発生する。
🤖 TPU:演算
TPUは発想がちょっと違って、300個の掛け算を30人に分けないらしい。
①全員に300個全部渡す
②1人目が計算したら、結果をメモせず隣に渡す
③受け取った人が次の計算と足してまた隣へ
④最後まで流れて終わり
重要なのが、途中結果をほぼ保存しない点!
電気信号をどんどん隣へ流すだけなので、メモリI/Oが少ない。
なぜそれが強いのか?
電気は遅い。メモリにデータを取りに行く時間がもったいないので、TPUはメモリI/Oを極限まで減らすことで行列積専用機になっている!
その代わり、柔軟性はほぼなく、行列計算以外は苦手...
でもディープラーニングは 巨大な行列 × 巨大な行列 の繰り返しなので、AI用途では無双できる。
メモリはどうなってるの?
GPUとTPUでは設計思想がけっこう違う。
GPU
GPUは用途が幅広く、CPUと細かくデータをやり取りすることが多い。
従来のディスクリートGPUでは、CPU側のメインメモリとGPU側のVRAMが完全に別だった。
なので例えば画像処理をする場合、
①CPUメモリ → GPUメモリにコピー
②GPUで計算
③結果をまたCPUメモリにコピー
という大変なデータ転送が大量に発生...。
Unified Memory
Apple SiliconなどではCPU・GPUを1つのチップに統合し、Unified Memory(統合メモリ)として同じメモリ空間を共有している。
お互いが物理的にめちゃくちゃ近い位置にある&バスが太いので、やりとりが高速で低遅延。
CPUとGPUの連携がめちゃくちゃ効率化される。
これのデメリットはメモリ増設ができないこと。
TPU
TPUはCPUからタスクを受け取ったら、細かいやり取りはせず長時間まとめて行列計算を回すスタイルなので、CPUとメモリ統合する必要があまりない。
代わりにHBM(High Bandwidth Memory)という超高速メモリを積んで、一気に行列計算を流し込む設計になっているらしい...!
まとめ
CPU = 大学教授(万能)
GPU = 小学生100人(並列計算)
TPU = 行列積専用ベルトコンベア(保存しない)
AIは行列計算の世界なのでTPUが無双できる。
みんな違ってみんないい...
今後どうなっていくのかが気になる!
余談:電気が遅いからGoogleは光回路スイッチをつくったらしい。よくわからんけどすごそう。
参考