「並列だから」で、なんだか納得してしまうけれど
AIってなんでGPUなの? と調べると、たいてい「並列計算が得意だから」という答えにたどり着いて、なんとなく納得して終わりがちです。 でも、よく考えると不思議なことがあります。 GPUはもともと、ゲームの絵を高速に描くための部品でした。 それを「これ、AIに使えるぞ」と最初に見抜いた人がいたから、いまのAIブームがある。 この「気づき」って、いったい何がそんなにすごかったんでしょうか。
以前、GPUが速いのは行列のかけ算が「独立」だからですという記事で、GPUがなぜ速いのかを書きました。 今回は同じGPUの話を、「なぜその転用が劇的に効いたのか」という別の角度から見てみます。
前回の「独立だから速い」という話を先に読んでおくと、今回のアムダールの法則の話がつながりやすいです。
並列にできる、は前提。問題はその先
「GPUは並列計算が得意」「AIの中身は行列のかけ算だらけで、それは並列にばらせる」。 このあたりは、もう聞いたことがある人も多いと思います。 独立した小さな掛け算と足し算を、たくさんの小さな計算機で同時に片づける。 だからGPUが向いている、というわけです。
でも、ここで一つ引っかかります。 並列にできる計算なんて、AIが登場するずっと前からありました。 計算機をたくさん並べて速くする、というアイデア自体も昔からある。 それなのに、なぜ「GPUをAIに使う」という組み合わせだけが、あれほど桁違いに効いたのか。 「並列だから」という一言では、その桁違いさまでは説明できていない気がします。
速くなり方には、天井がある
ここで、「並列にすればするほど無限に速くなるわけではない」という見方で捉えてみると、景色が変わります。
どんな作業にも、たいてい「みんなで手分けできる部分」と「どうしても順番にやるしかない部分」が混ざっています。 手分けできる部分は人を増やせば増やすほど速くなる。 でも、順番にやるしかない部分は、何人集まっても短くならない。 すると全体の速さは、この「順番にやるしかない部分」に足を引っ張られて、ある高さで頭打ちになります。
つまり本当に効いてくるのは、全体のうち「並列にできる部分」がどれだけの割合を占めているかなんです。 ここが低いと、計算機をいくら並べても頭打ちが早い。 逆にここがほぼ100%に近いと、並べた分だけ伸び続ける。 AIの主要な計算、特に大きな行列やベクトルの計算では、この割合がかなり高い。 GPU転用がすごかったのは、その「割合の高さ」に賭けられたから、と読めます。
景色が変わる
この見方は、AIに限らずいろいろな場面で顔を出します。 たとえば引っ越しの荷造り。 箱詰めは何人いても手分けできますが、最後にトラックへ積み込む順番はある程度決まっていて、そこは人を増やしても劇的には縮まりません。 料理も同じで、野菜を切る作業は分担できても、煮込む時間は鍋を増やさない限り短くならない。 「人を増やしたのに思ったほど速くならない」という、あの感覚の正体がこれです。
数式で正面から見てみる
この「頭打ち」を式で書いたものが、アムダールの法則です。 全体のうち並列にできる割合を $p$、並べた計算機の数を $N$ とすると、速度が何倍になるかは次のように書けます。
$$S(N) = \frac{1}{(1-p) + \dfrac{p}{N}}$$
記号をそのまま日常語に置き換えてみます。 $p$ は「手分けできる部分の割合」、$1-p$ は「順番にやるしかない部分の割合」、$N$ は「並べた計算機の数」。 分母の $p/N$ は「手分けできる部分を $N$ 台でやったときの短さ」です。 さきほどの例なら、引っ越しの箱詰めや料理で野菜を切る作業が $p$、トラックへの積み込みや煮込み時間が $1-p$ に当たります。
ここで $N$ をどんどん増やして無限大に近づけると、$p/N$ はゼロに近づくので、速度向上の天井はこうなります。
$$S_{\max} = \frac{1}{1-p}$$
この式は、「人(計算機)を増やしたとき、どこまで速くできるか」の天井を教えてくれます。 たとえば $p=0.9$ なら $S_{\max} = 1/(1-0.9) = 10$ 倍。 つまり、どれだけGPUを並べても10倍より速くはならない、という意味です。
この式が面白いのは、$p$ が1に近づくと天井が一気に跳ね上がるところです。 $p=0.5$ なら天井はたった2倍。 ところが $p=0.99$ で100倍、$p=0.999$ になると1000倍。 1に近いところでの、ほんのわずかな差が、天井を桁で変えてしまう。 AIの主要な計算では、この $p$ をかなり高くできました。 だからこそ、GPUという「並べる装置」に賭けた効果が、桁違いの速さとして返ってきたわけです。

持ち帰り
「AIにはGPUが足りない」というニュースを、これから何度も目にすると思います。 あの話が成り立っている大きな理由の一つは、AIの主要な計算で $p$ を高くしやすいことにあります。 裏を返すと、もし将来、$p$ が低い(順番にやるしかない部分が多い)計算がAIの主役になったら、そのときはGPUを何千個並べても天井が低くて効かない、という世界がやってくるのかもしれません。 次にGPUの話題を見たとき、「これ、$p$ がどれくらいの計算なんだろう?」と一度考えてみると、ニュースの見え方が少し変わってきたりしませんか?
あわせて読みたい関連記事。


