こんにちは。くろこんです。TPU のニュースを見かけたので、改めて GPU との違いを確認して、そのメモを残したいと思います。
(Opsというにはずいぶん上流過ぎますが、せっかく書くのでアドベントカレンダーに登録しました)
見かけたニュース
NVIDIAの一強支配が崩れる日:GPU対TPU、計算インフラ覇権戦争の深層
GPU と TPU の違い
GPU
GPU は Graphics Processing Unit の略で、画像処理を担当する計算機です。
パソコンでは CPU(Central Processing Unit)により様々な計算をして機能を実現しますが、画像処理では画素ごとに簡単な計算を大量に処理することが多く、様々な計算はできなくとも大量の並列処理ができるような装置を画像用に準備しよう、という考えで作られたのが GPU です。
なぜ AI の処理に GPU が用いられるのかというと、簡単な計算を大量に処理できるなら AI の学習に便利なのでは? と考えて本来画像の用途であった GPU を AI の学習に使う人が現れたことがきっかけです。徐々に AI に利用することを意識した GPU なども作られて、現在まで AI の学習に用いられています。
GPU のメーカーでは NVIDIA と AMD の2社が大部分を提供していて、AI 向けでは特に NVIDIA から CuDNN などの最適化された環境が提供されています。
TPU
TPU は Tensor Processing Unit の略で、テンソル計算処理を担当する計算機です。テンソル計算は AI の内部処理の大部分に相当し、AI のために作られた計算装置と言えます。
TPU のメーカーは Google で、HPC(High Performance Computing)の機能として提供されています。個人が TPU そのものを買えるように提供はされていません。
GPU と TPU の違い
大まかな違いは以下のようになります。
- GPU も TPU もどちらも計算機能を強化するもので、グラフィック用途でも AI 用途でも、並列処理を強化する点は同じ
- GPU は画像処理を強化するため、PC 上の画像関連の機能が強化されるが、TPU では強化されない
- TPU は Google 独自のサービスで、個人で TPU そのものを買ったりはできない
作られた経緯から、単純には TPU のほうが AI 専用装置のため、AI に関しては機能が高そうです。ただ、NVIDIA も AI 向け GPU などを提供していて、一概に作られた経緯だけでどちらが優秀とは言えない状況になっています。
実際の利用例
TPU は大規模な AI の学習に利用されます。下記の文献の例などがあります。
Figure 8. では、AI についてそのサイズと最適化方法に関して、文献の著者の実行環境での実行可能性が示されています。
width layers などは大きさに関する単位で、大きいほどサイズの大きい AI となります。(heads は画像の分割の仕方なので、きりのいい数字だとメモリ効率が良くなったりするため、一概にサイズの大小は決まりません)
例えば、オレンジの AI はオレンジが対応する width layers の設定で学習を実行可能で、それ以外は大きすぎて学習できないということです。緑や青の AI はオレンジよりゆるい条件で学習できる方法で、より大きい width layers の設定で学習を実行可能です。
この文献では、特に AI のサイズが大きいほうが、良い結果を出すのに有効であることが示唆されています(同文献内の Table 1. など)。
実際の利用例からの推測
先ほどの文献の内容、TPU もしくは GPU に要求されるのは、計算速度以外にも大きいメモリサイズをうまく扱えることも重要になってきます。
大きいメモリサイズとの親和性がロードマップなどから確認できる方が、今後の展開としては期待できる計算装置ということになります。
もう一つは、計算速度を使い切る学習アルゴリズムを開発者が扱えるかです。
例えば、課題に対して1日の学習なら A アルゴリズムで性能 xx 、1週間なら B アルゴリズムで性能 yy 、1か月なら C アルゴリズムで性能 zz のようなものです。多くの場合、時間ごとにアルゴリズムを切り替えたりはできず、同じアルゴリズムに関して学習状況を判断する程度となります。
従って、表現を変えるなら flops (浮動小数点演算の回数)を性能にうまく変換できるか、ということになります。
アルゴリズム側が flops を性能に変換できるようになるなら、例え学習対象が小さい AI でも大きい AI でも、単純に速度が高いほうが AI に対して高い性能であるということであって、より顕著に性能として評価されるようになります。
先ほどの文献では、あまりにメモリサイズが影響が大きい問題設定であるため、将来出てくるであろう flops の性能への変換効率などは現れにくい状況であったということになります。
まとめ
今回の記事では、TPU と GPU の違いに触れ、TPU の実利用例から計算装置として要求される項目について述べました。
- GPU と TPU は似ていて違う
- GPU も TPU もどちらも並列計算を強化する
- GPU は画像処理を強化するが、TPU では強化されない
- TPU は Google 独自のサービスで、個人で TPU そのものを買ったりはできない
- GPU と TPU に対する要求
- 扱えるメモリサイズと並列処理との親和性は要求が高い
- flops を性能に変換するアルゴリズムや技術者は要求が高い
おまけ GPU と TPU を扱うことの市場価値に対して主観
- GPU と TPU に対する要求
- 扱えるメモリサイズと並列処理との親和性は要求が高い
- flops を性能に変換するアルゴリズムや技術者は要求が高い
上の項目を考慮するのは普通の AI 技術者で、日本での技術者としての待遇と大差はないと思います(とはいっても、少しは優遇したほうがいい気はしますが)。
一方で、下の項目までも考慮して AI システムを考えてくれる技術者はほとんど存在せず、非常に希少価値が高いと思います。何かうまい方法を考えて、汎用性を持たせるだけでも大きい成果になると思います。年収 1000 万で雇えたら超ラッキーなはずです。(雇う側の観察眼も必要という、非常に厳しい条件です)
もう一つの視点として、上の項目は性能の限界を目指すどちらかというと欧米型の発想となります。最近の AI の進歩は、様々な角度から性能向上するアルゴリズムが存在し、それらを競って鍛えてきた先人たちの成果ですが、ほとんどは海外産です。
下の項目は異常に余っているリソースを小さいものに異常に込めるような品質の要求も含まれ、日本の製品にある発想に近いです。ただ、余らせるのは AI のリソースだけでなく、数学と計算機科学のリソースも余らせないといけないので、まだちょっと現実からは遠いのかなという印象です。
