AIアクセラレータの設計様式 — GPU/NPU/TPUは何が違うのか
GPU・TPU・NPUは「汎用性をどこまで捨てて行列積に振るか」の答えが違う3つの流儀。シストリックアレイの仕組み、データフロー設計、量子化との共進化を、比喩→式→コードの順で前提知識ゼロから解説する。
In-Datacenter Performance Analysis of a Tensor Processing Unit
一次資料 — この記事の根拠
この解説の公開 2026-08-13
In-Datacenter Performance Analysis of a Tensor Processing UnitarXiv:1704.04760論文ページ·PDFなぜ「AI専用チップ」が生まれたのか
ChatGPTの応答も、スマホの顔認証も、中身で起きている計算はほとんど同じです——大きな行列の掛け算。ニューラルネットの推論は、層を通るたびに「重み行列×入力」を繰り返す作業で、計算時間の大半がここに集中します。
CPUは万能ナイフです。分岐だらけのプログラムもOSも何でもこなせるよう、シリコン面積の多くを命令の解釈・分岐予測・キャッシュといった「段取り」に使っています。ところが行列積は「同じ単純な計算を、途方もない回数」という真逆の性格の仕事です。しかも行列積の演算量は行列サイズのおよそ3乗で増えます。モデルが大型化するほど、段取り上手な万能選手では割に合わなくなっていきました。
そこで登場したのがアクセラレータ(加速装置)と呼ばれる専用チップ群です。GPU・TPU・NPUの違いは、一言でいえば「汎用性をどこまで捨てて、行列積にどこまで振り切るか」というトレードオフの取り方の違いです。
比喩: 天才シェフ・百人厨房・ベルトコンベア
- CPU は一人の天才シェフ。どんな注文にも応えられますが、一皿ずつしか作れません。
- GPU は同じレシピを数千人の調理人が一斉に作る巨大厨房。指示は全員への一斉放送で、各自が別々の食材(データ)に同じ手順を適用します。
- TPU は寿司工場のベルトコンベア。食材が一定のリズムで流れてきて、各持ち場は目の前に来たものに決まった一手を加えて隣へ送るだけ。誰も冷蔵庫(メモリ)へ食材を取りに戻らないのが肝です。
- NPU は屋台。メニューを数品に絞り込み、わずかなガス(電力)で回し続けます。
TPUの様式はシストリックアレイ(systolic array)と呼ばれます。systolicとは「心臓の拍動」のこと。データが鼓動のように一拍ずつチップの中を流れていく様子から名付けられました。
直感: すべては「掛けて足す」に帰着する
ニューラルネットの1つの出力は、こう計算されます。
つまり、入力の各値 に重み を掛けて、全部足し合わせたものが出力 。記号を外して言い直すと、入ってきた数の一つひとつが票を投じ、重みがその票の大きさを決め、出力はその集計値だ、ということです。この「掛けて、足す」を1セットにした演算を積和(MAC: Multiply-ACcumulate)と呼びます。行列積はMACの巨大な束にすぎません。
だからアクセラレータの設計は、突き詰めるとたった2つの問いになります。①MAC器を何個敷き詰めるか、②そこへデータをどう運ぶか。そして現代の主戦場は②です。半導体では、演算そのものよりデータを動かすほうがはるかに高くつくからです。
この2つの問いへの答え方こそが、3つの様式の分岐点です。GPUは「運び待ちを物量で隠す」、TPUは「運びそのものを配線で消す」、NPUは「運ぶ量を電力予算まで絞る」。同じ行列積を回すための、まったく違う3つの哲学です。ここからは、それぞれのチップの内側を順に開けていきます。
コメント
コメントにはログインが必要です