【エンジニアの視点】「結局、CPUとGPUって何が違うの?」を深掘りしてみた
最近、AIの話題で必ず耳にする「GPU」という言葉。
なんとなく「AIにはGPUが必要らしい」「CPUより速いらしい」とは分かっていても、その本質的な違いって意外と説明しにくい。
ふと気になったので、コンピューターの回路構造から、なぜこれほどまでに役割が違うのかを調べてみた。
CPUは「こだわり派のパティシエ」、GPUは「工場の人間チーム」
この違いを一番分かりやすく表すなら、**「1人で完璧なケーキを作るパティシエ」と「工場で流れ作業をするバイトさんたち」**の比較かもしれない。
CPU:熟練のパティシエ
CPU(司令官)は、言わば天才パティシエだ。
お客さんが来て、
「イチゴを多めにしてほしい」
「チョコレートケーキに変更してほしい」
「生クリームは少なめで」
「やっぱりメッセージプレートも付けて」
と言っても、その場で柔軟に対応できる。
材料を変え、手順を変え、ときには工程そのものを組み替える。
状況を見ながら次に何をするかを判断する能力に優れている。
回路レベルで見ると、CPUの大部分は「次に何をすべきか」を判断するための制御ロジックやキャッシュメモリで構成されている。
一つの仕事を丁寧に仕上げる能力は抜群だが、1人で何千個ものケーキを同時に作るのは苦手だ。
GPU:工場のベルトコンベア軍団
一方、GPUは数千人規模のアルバイト軍団である。
彼らはCPUほど賢くない。
「このケーキだけイチゴを増やして」
「このお客さんだけチョコに変更して」
「この列だけ作業手順を変えて」
と言われると途端に困ってしまう。
しかし、
「全員、このスポンジにクリームを塗ってください」
「次は全員、この位置にイチゴを3個乗せてください」
という単純な作業なら圧倒的な速度を発揮する。
数千人が一斉に同じ作業を行うため、処理能力はとてつもない。
回路構造もCPUとは対照的で、複雑な判断回路を減らし、その分を大量の演算器(ALU)に振り切っている。
つまり、賢さより筋肉だ。
なぜAIにはGPUが必要なのか?
ここで、
「じゃあパティシエ(CPU)の方が優秀なら全部CPUでやればいいのでは?」
という疑問が出てくる。
しかしAIの学習や推論の大部分は、巨大な行列の掛け算だ。
要するに、
「この数字とこの数字を掛ける」
「次の数字も掛ける」
「さらに次も掛ける」
という単純作業を何億回、何兆回と繰り返している。
これはまさに工場作業である。
CPUは、
「本当にこの手順でいいのか?」
「次はどうしようか?」
と考えながら進める。
GPUは、
「考えるのは後でいいから全員で計算しろ!」
というスタイルだ。
AIに必要だったのは後者だった。
だからGPUが主役になったのである。
GPUは万能ではない
調べてみて分かったのは、GPUは決して万能ではないということだ。
- CPUは複雑な分岐やOS制御が得意
- GPUは大量の同じ計算を並列実行するのが得意
たとえるなら、
CPUはオーダーメイド専門店。
GPUは巨大な量産工場。
どちらが優れているという話ではなく、向いている仕事が違うだけである。
まとめ
もしGPUしかいない世界だったらどうなるだろう。
「イチゴを増やしてください」
「できません」
「チョコレートケーキにしてください」
「できません」
「誕生日なのでメッセージを入れてください」
「できません」
ただし、
「同じイチゴケーキを1万個作れ」
と言われた瞬間だけ異常なやる気を見せる。
それがGPUである。
普段私たちはAIを見て、「賢い」「人間のように考えている」と感じている。
だが、その裏側で起きていることは、実は数千、数万の演算器がひたすら同じ計算を繰り返しているだけだ。
まるで哲学者や小説家のような受け答えをするAIの正体が、実は恐ろしくマッチョな計算軍団だったと思うと、なんだか少し笑えてしまう。
最先端技術というのは、案外そんなものなのかもしれない。
おまけ:ついでにTPUも調べてみた
GPUについて調べているうちに、もう一つ気になったものがある。
Googleが開発したTPU、Tensor Processing Unitである。
これはGPUよりもさらにAIに寄せた半導体らしい。
ここでGPUとの違いが重要になる。
GPUはもともと、ゲームの3Dグラフィックスを高速に描画するための半導体だった。大量のピクセルやポリゴンに対して、似たような計算を一気に行うのが得意だったのである。
その性質が、AIの行列計算と相性が良かった。
つまりGPUは、ゲーム用の工場だったものを、AI用の巨大計算工場としてレシピ変更して使っているイメージに近い。
CPUほど自由ではないが、それでもGPUはまだ「人間のチーム」ではある。
用途変更できる余地が残っている。
一方、TPUは最初からAIの行列計算に狙いを絞って作られている。
さっきのケーキ工場のたとえで言うなら、TPUは工場の中に並べられた **「スポンジにクリームを塗ることだけを専門にした、超高速ロボット群」**のようなものだ。
GPUの工場はまだ万能性がある。
生地をこねることもできるし、クリームを塗ることもできるし、梱包作業もできる。多少のレシピ変更にも対応できる。
しかし、その分だけ無駄もある。
一方、TPUは割り切りが激しい。
AIで大量に使われる「行列演算」に狙いを絞り、余計な回路を削ぎ落としている。
ケーキをいちいちコンベアから降ろして作業するのではなく、流れてくる途中でクリームを塗り、そのまま次の工程に渡す。
TPUには「シストリック・アレイ」という仕組みがあり、データを規則正しく流しながら演算器同士で次々に計算を渡していく。
この構造によって、行列計算のような決まりきった大量処理では、GPUすら上回る効率を出せる。
ただし、専門家すぎる弱点もある。
TPUはロボットなので、レシピ外の複雑な作業は苦手だ。
CPUのように状況判断するわけでもないし、GPUのように似たような用途へ転用できるわけでもない。
AIの学習や推論の中心部分である行列計算に全振りしている。
だから、AI以外の処理や複雑な制御はCPUやGPUに任せ、TPUは得意な計算だけをひたすら担当する。
GPUが「ゲーム用に作られた工場をAI向けにレシピ変更したもの」だとすると、TPUは「最初からAIの行列計算だけをやるために設計された専用工場」という表現になるかと思う。