なぜAIにGPUが使われるの? 大量の掛け算を同時にこなすしくみ
AIの計算の大部分は、大量の数を「掛けて足す」ことのくり返しで、たくさんに分けて同時に進められます。GPUは単純な計算回路を数千個以上も並べた部品で、この形の仕事をまとめてこなすのが得意です。計算に使う大量の数を速く運べるメモリを持つことも、AIに使われる大きな理由です。
この記事でわかること
- AIが実際にしている計算(「掛けて足す」のくり返し=行列の計算)
- CPUとGPUの作りの違いと、GPUがAIに向いている理由
- 計算の速さと同じくらい大事な「数を運ぶ速さ」と、HBMというメモリ
- 数を短くして計算を増やす工夫と、TPU・NPUなどほかのAI用チップ
前提知識: CPUが「プログラムの命令を1つずつ実行する部品」だと知っていると読みやすくなります。「CPUとは?」で説明しています。
身近なところでは
チャットで質問すると、AIが文章で答えを返してくれます。スマホの写真アプリで「犬」と検索すると、犬が写った写真が見つかります。こうした機能の裏では、膨大な量の計算が行われています。
ニュースでは、AIを作るためにGPUを何千個、何万個も使うという話がよく出てきます。例えばMetaは、文章のAI「Llama 3」の最大のものを、約1万6千個のGPUで学習させました(2024年の論文)。でも、GPUはもともと、ゲームなどの画面の絵を描くための部品です。なぜ絵を描く部品が、AIに使われるのでしょうか。
AIの計算の中身は「掛けて足す」
今のAIの多くは、「ニューラルネットワーク」という計算の手順でできています。名前は脳の神経細胞から来ていますが、中身は数の計算です。入力された数に、それぞれ決まった数を掛けて、足し合わせます。この「掛けて足す」を、何段にも重ねてくり返します。
小さな例で見てみましょう。テストの点(国語80、数学60、英語70)から、「理系向けの点」と「文系向けの点」を出すとします。理系向けは、国語を0.2倍、数学を0.5倍、英語を0.3倍して足します。文系向けは、それぞれ0.4倍、0.2倍、0.4倍して足します。
このように、掛ける数を縦横に並べた表を「行列」と呼びます。そして、図のような計算を「行列の掛け算」と呼びます。式を使わなくても、「表の各行について、入力と掛けて足す」と考えれば十分です。
AIの中では、入力は文字や画像を数に直したものです。掛ける数は「重み」と呼ばれ、どの入力をどれだけ重く見るかを表します。実際のAIでは、縦横が数千を超える表を、何十段も重ねて使います。Googleは2017年の解説で、AIを動かす計算で最も重い部分は、たいてい行列の掛け算だと説明しています。なお、ここでは話を簡単にするため、掛けて足した後に行う小さな処理は省きました。
学習と推論: 計算の量はけた違い
AIを使えるようにするには、まず「学習」をします。たくさんの例を見せながら、答えが正解に近づくように、重みを少しずつ直していく作業です。重みは人が決めるのではなく、この学習で決まります。
学習が済んだら、決まった重みを使って、新しい入力に答えを出します。こちらを推論と呼びます。チャットのAIが返事を書くのも、スマホが写真の中の犬を見つけるのも、推論です。
計算の量は膨大です。2020年に発表された文章のAI「GPT-3」は、重みが1,750億個ありました。こうしたAIは、1語(正確にはトークンという単位)を作るたびに、ほぼすべての重みを1回ずつ使います。重み1個につき掛け算と足し算が1回ずつなので、1語ごとに合わせて約3,500億回の計算が要ります(大まかな目安です)。
学習では、1語あたりこの約3倍、約1兆回の計算をします。答えを出す計算に加えて、重みをどう直すかを求める計算があるからです。この「約3倍」は、Kaplanらの研究(2020年)などで使われる目安です。GPT-3の学習には、約3,000億トークンぶんの文章が使われました。人が電卓で追いつける量ではなく、計算の速い機械が必要になります。
CPUとGPU: 少数の器用なコアと、大勢の単純な計算回路
「CPUとは?」で見たように、CPUはプログラムの命令を1つずつ取り出して実行する部品です。命令を実行するひとそろいの回路を「コア」と呼びます。パソコンやスマホのCPUのコアは、ふつう数個から20個あまりです。1つ1つのコアは、分かれ道の多い複雑な仕事を、素早く片付けるための工夫をたくさん持っています。
一方、GPUは、単純な計算回路を数千個も並べています。1つ1つは、CPUのコアほど器用ではありません。そのかわり、同じ計算を、違うデータに対していっせいに行えます。チップの面積の多くを、分かれ道の工夫ではなく、計算回路そのものに使っているのです。
行列の掛け算は、この作りにぴったりです。先ほどの例で、理系の点と文系の点は、互いの結果を待たずに別々に計算できました。大きな表でも同じで、答えの1つ1つを、別々の計算回路に任せられます。何千もの答えを同時に計算できるので、GPUはCPUよりずっと速く終えられます。CPUとGPUの違いは「CPUとGPUの違い」で表にまとめています。
GPUはもともと絵を描く部品だった
画面の絵は、小さな点の集まりです。この点を「画素」と呼びます。フルHDの画面には、1920×1080で約207万個の画素があります。多くのゲームでは、1秒に60回ほど、すべての画素の色を計算し直します。どの画素も同じ手順で色を決めるので、計算回路を大勢並べて同時に進めるのが効率的です。
NVIDIAは1999年、GeForce 256という製品を「GPU」と名づけて売り出しました。その後、GPUの計算回路は、絵以外の計算にも使えるように作り変えられていきます。2006年には、NVIDIAがGPUで一般の計算をするためのしくみCUDAを発表しました。
AIにとっての転機は2012年です。トロント大学のチームが、画像を見分けるAI「AlexNet」を、市販のゲーム用のGPU2枚で学習させました。このAIは画像認識の大会で、2位に大差をつけて優勝しました。答えの候補を5つ挙げて、その中に正解がない割合は約15%で、2位は約26%でした。これをきっかけに、AIの研究でGPUが広く使われるようになりました。絵を描くための「同じ計算を大勢で同時に」という作りが、AIの行列の計算にもそのまま合っていたのです。
もう1つの壁: 数を運ぶ速さ
計算回路がいくら速くても、計算に使う数が届かなければ、回路は待つしかありません。数を置いておく場所がメモリで、そこから1秒間に運べるデータの量を「メモリ帯域」と呼びます。AIでは、この帯域が計算の速さと同じくらい大事です。
文章のAIで考えてみます。先ほど見たように、1語を作るたびに、ほぼすべての重みをメモリから読み出します。GPT-3の1,750億個の重みを、1個16ビット(0と1を16個並べたもの)で表すとします。8ビットを1バイトと数えるので1個2バイト、全部で約350GB(ギガバイト)です。1語ごとにこれだけの数を運ぶので、計算よりも運ぶほうが追いつかないことがよくあります。
そこでAI用のGPUは、HBMという特別なメモリを使います。HBMは、メモリのチップを何枚も積み重ね、GPUのすぐ隣に置いたものです。データの通り道をとても多く並べて、一度にたくさんの数を運びます。2022年に規格が決まったHBM3では、通り道は1つの積み重ねあたり1,024本です。
2022年に発表されたNVIDIAのH100というGPUは、1秒間に約3.35TBを運べます。TB(テラバイト)は1,000GBです。比べるために、パソコン用のDDR5-4800というメモリを2枚並べて使う場合を計算します。規格の数字(1秒に4,800回、1回に8バイト)から、1枚で1秒に38.4GB、2枚で76.8GBです。H100は、その40倍以上を運べます。
それでも、計算の速さには追いつきません。H100は、16ビットの数の行列なら、1秒に約1,000兆回の計算ができます(掛け算と足し算を別々に数えた値)。運べる量と比べると、1バイト届くごとに約300回計算できるほどの差です。Gholamiらの研究(2024年)は、過去20年の変化を調べています。サーバー用の部品の計算の速さ(最高値)は、2年ごとに約3倍になりました。一方、メモリの帯域は2年ごとに約1.6倍でした。数を運ぶ速さが計算に追いつかないこの問題を、メモリウォール(メモリの壁)と呼びます。
そのため、AIを動かすときは、一度運んだ数をできるだけ使い回します。例えばチャットのAIのサービスでは、多くの人の質問をまとめて処理します。一度読み出した重みを、何人分もの計算に使えるからです。
数を短くして、たくさん計算する
AIの計算では、数の細かさを少し落としても、答えがほとんど変わらないことが多くあります。そこで、1つの数を表す0と1の個数(ビット数)を減らす工夫が、広く使われています。ビット数が少ないほど、表せる数の細かさは粗くなります。
よく使われる数の形式には、名前がついています。計算の基準としてよく使われる32ビットの小数がFP32です。AIではその半分の16ビットのFP16やBF16、8ビットの整数のINT8などがよく使われます。それぞれの違いは「FP32・FP16・BF16・INT8の違い」で表にまとめています。
数を短くすると、得なことが3つあります。運ぶデータが減るので、同じメモリ帯域でより多くの数を運べます。メモリに入る重みの数も増えます。さらに、掛け算の回路が小さくなり、同じ面積と電力で、より多くの計算回路を並べられます。
今のGPUは、短い数どうしの行列の掛け算をまとめて行う専用の回路を持っています。NVIDIAではこれをテンソルコアと呼びます。H100の仕様では、32ビットの普通の計算は1秒に約67兆回です。テンソルコアで16ビットの行列を計算すると、その約15倍の約1,000兆回になります。ただし、細かさを落としすぎると答えがずれるので、どこまで短くできるかは用途ごとに確かめます。
GPUだけではない: TPUとNPU
行列の掛け算に絞って作った、AI専用のチップもあります。代表が、GoogleのTPUです。Googleは2015年からTPUを自社のデータセンターで使い、2016年に公表しました。初代のTPUは、8ビットの整数を掛けて足す回路を、256×256=65,536個、碁盤の目のように並べています。数を隣の回路へ受け渡しながら、行列の掛け算を進めます。この方式をシストリックアレイと呼びます。
スマホやパソコンの中にも、AI専用の回路が入っています。これをNPUと呼びます。例えばAppleは2017年、A11 Bionicというチップに、同社で初めてNPUを入れました。iPhone 8やiPhone Xに使われたチップです。Appleの発表では、1秒に最大6,000億回の計算ができ、顔で画面のロックを解除する機能などに使われます。NPUは推論に絞り、少ない電力で動くように作られているので、電池で動く機器に向いています。
GPUは、絵もAIも科学技術の計算もこなせる、使い道の広い部品です。TPUやNPUのような専用のチップは、得意な計算では電力あたりの性能が高いかわりに、使い道が限られます。3つの違いは「CPU・GPU・NPUの違い」で表にまとめています。
よくある誤解
誤解: GPUはゲーム用の部品
実際は、GPUの始まりはゲームなどの画面の絵を描くことでしたが、今はAIや科学技術の計算にも広く使われています。H100のようなデータセンター用のGPUは、画面に絵を出すためではなく、計算のために使われます。絵を描く仕事もAIの計算も、「同じ計算を大量のデータに」という形をしています。そのため、同じ作りが両方に役立つのです。
誤解: GPUはCPUを速くしたもの
実際は、GPUとCPUは得意な仕事の形が違います。GPUの計算回路1つ1つは、CPUのコアより単純です。分かれ道が多く、前の結果を待たないと進めない仕事では、GPUはCPUにかないません。OSのような、コンピュータ全体を管理するソフトを動かすのもCPUです。
誤解: AIはGPUだけで動いている
実際は、CPUとメモリも欠かせません。データの準備や、GPUへの仕事の割り振りはCPUが受け持ちます。NVIDIAのGPU向けのプログラムの手引きでも、CPU側のプログラムがGPUに計算を頼む形で説明されています。また、大きなAIは1つのGPUのメモリに入りきりません。そこで何台ものGPUに分けて置き、GPUどうしを速い通信でつなぎます。AIの速さは、GPUの計算の速さだけでなく、メモリと通信の速さでも決まります。
数字で見る
| 項目 | 数字 | くらべると |
|---|---|---|
| GPT-3(2020年)の重み | 約1,750億個 | 16ビットで表すと約350GB |
| 1語を作る計算(推論) | 約3,500億回 | 掛け算と足し算が約1,750億回ずつ |
| H100(2022年発表)の計算 | 1秒に約1,000兆回(16ビット) | 32ビットの普通の計算の約15倍 |
| H100のメモリ帯域 | 1秒に約3.35TB | パソコンのメモリ(DDR5-4800を2枚)の40倍以上 |
| H100のメモリの量 | 80GB | GPT-3の重みは1台に入りきらない |
| 初代TPU(2015年から使用) | 掛けて足す回路 65,536個 | 8ビットの整数で計算 |
| A11 BionicのNPU(2017年) | 1秒に最大6,000億回 | スマホの中のAI専用回路 |
H100の数字は、H100のうちSXMという形の製品の、NVIDIAの仕様です。16ビットの値は、テンソルコアを使い、0の多い表を省く工夫を使わない場合の値です。仕様表にある約2,000兆回は、この工夫を使った場合の値です。
運ぶ速さの影響を、ざっと見積もってみます。350GBの重みを、H100と同じ1秒に3.35TBの速さで読むと、約0.1秒かかります。計算が一瞬で終わるとしても、1語ごとに約0.1秒は読み出しを待つことになります。実際は350GBは1台(80GB)に入らないので、5台以上に分けて置き、並行して読みます。さらに何人分もまとめて処理して、1人あたりの待ち時間を減らしています。
もっと詳しく学ぶ
- 違いを表で見る: DDR・LPDDR・GDDR・HBMの違い(GPUに使うメモリの種類)
- 数字で試す: メモリ帯域幅の計算(HBMやDDR5の帯域を計算できます)
- 次の一歩の用語: 演算強度、Rooflineモデル(計算の速さと運ぶ速さの関係)、混合精度、データ並列(AIの計算を速くする考え方)
- メモリについて読む: 「メモリとストレージの違い」
- 土台から読む: 「トランジスタとは?」(計算回路は小さなスイッチの集まりです)