CPU・GPU・NPUの違い:設計思想・演算器・データ型・電力効率を比較

CPUは何でも実行できる汎用のプロセッサで、少数の複雑なコアで1つの処理を速く終わらせます。GPUは多数の演算器で大量のデータを並列に処理し、グラフィックスやAIの学習など幅広い並列計算に使われます。NPUは、ニューラルネットワークの計算の大部分を占める行列の積和演算に特化した専用回路で、INT8などの低い精度の演算器を多数並べ、データをチップ内のメモリで使い回すことで、推論を非常に高い電力効率で行います。そのかわり、対応している演算以外は苦手です。

項目CPUGPUNPU
設計思想汎用・低遅延。1つの処理をできるだけ速く終わらせる高スループット。大量の並列な計算をまとめてこなすニューラルネットワークの演算(主に推論)に特化し、電力あたりの性能を高める
演算器の構成複雑なコアが数個〜数百個。各コアにSIMDの演算器単純な演算器が数千個。行列演算ユニットを持つものも多い積和演算器の大きな配列(シストリックアレイなど)と、活性化関数などのためのベクトル演算器
制御のしかた命令ごとに分岐予測や投機実行(アウトオブオーダー)を行う多数のスレッドを切り替えてメモリの待ち時間を隠す多くは、コンパイラが事前に決めたデータの流れに沿って動き、命令ごとの制御は少ない
得意な処理分岐の多い処理、OS、アプリケーションのロジックグラフィックス、AIの学習と推論、科学技術計算畳み込みや行列の積を中心とするAIの推論
メモリ大きなキャッシュとDDRなどのメインメモリGDDRやHBMなどの高い帯域のメモリチップ内のSRAMのバッファで重みや中間データを使い回す。SoC内蔵ではCPUとメインメモリを共有
主なデータ型FP64・FP32と整数を中心に、ほぼ何でもFP32・FP16・BF16が中心。学習向けにFP8などもINT8・INT4やFP16などの低い精度が中心
性能の表し方クロック周波数、コア数、IPCFLOPS(TFLOPSなど)TOPS(多くはINT8で数えた理論上の最大値)
AIの推論での電力効率低い高い最も高い。CPUより1桁以上高いことがある
柔軟性最も高い。どんなプログラムも動く高い。並列化できる処理なら幅広く使える低い。対応していない演算はCPUやGPUに戻して実行する
プログラミング一般のプログラミング言語とコンパイラGPU向けの並列プログラミングモデルでカーネルを書く学習済みのモデルを、AIコンパイラや推論ランタイムで変換して実行する。直接プログラムすることは少ない
置かれる場所あらゆるコンピュータ単体のカード、またはSoCに内蔵スマートフォンやパソコンのSoCに内蔵されることが多い。データセンター向けの専用チップもある

数値は代表的な目安で、世代や製品によって異なります。

どんなときに使うか

CPU
分岐が多く逐次的な処理や、システム全体の制御。小さなモデルや、NPUが対応していない演算の実行にも使います。
GPU
AIの学習や大きなモデルの推論、グラフィックス、科学技術計算など、精度の選択肢と柔軟性が必要な大規模な並列計算。
NPU
スマートフォンやパソコンで、写真の補正、音声認識、翻訳などの推論を、電池を減らさずに常に動かしたいとき。モデルを量子化して、NPUが得意なINT8などで実行します。

よくある質問

NPUとGPUは、何が違うのですか?

GPUは、多数の演算器をプログラムで柔軟に使える汎用の並列プロセッサで、グラフィックスや学習にも使えます。NPUは、ニューラルネットワークの推論の積和演算に絞り、低い精度の演算器とチップ内のメモリを中心に作られているので、対応する処理では電力効率が高い一方、それ以外の処理は苦手です。

NPUの電力効率が高いのはなぜですか?

CPUは命令ごとに分岐予測や命令の並べ替えなど多くの回路を動かしますが、NPUはその多くを省き、INT8などの小さな積和演算器を多数並べているからです。さらに、重みや中間データをチップ内のSRAMで使い回し、エネルギーを多く使う外部メモリへのアクセスを減らしています。

NPUで学習もできますか?

スマートフォンやパソコンのNPUは、主に推論向けに作られています。学習には、勾配の計算や高い精度が必要で、GPUや、データセンター向けの学習用アクセラレータが使われるのが一般的です。

TOPSの数字が大きいNPUほど速いですか?

そうとは限りません。TOPSは多くの場合、INT8などで数えた理論上の最大値で、疎なデータを前提にした値のこともあります。実際の速さは、メモリ帯域、演算器の利用率、モデルの演算がNPUに対応しているかどうかで大きく変わります。

理解度チェック

スマートフォンのSoCに載るNPUが、AIの推論でCPUより電力の効率が高い主な理由はどれか。

  1. ANPUは電気を使わずに光で計算するから
  2. BINT8などの低い精度の積和の演算器を多数並べ、AIの計算に必要のない汎用の回路を省いているから
  3. CNPUはCPUより必ず高いクロックで動くから
答えと解説を見る

正解:B. INT8などの低い精度の積和の演算器を多数並べ、AIの計算に必要のない汎用の回路を省いているから

CPUは何でも実行できるよう、分岐予測や命令の並べ替えなど、命令ごとに多くの回路を動かします。NPUは行列の積和に特化し、低い精度の演算器を多数並べて、データをチップの中で使い回すように作られているので、1回の演算にかかるエネルギーが桁違いに小さくなります。その分、AI以外の処理や、対応していない演算には向きません。

AIの推論処理を高速かつ低い消費電力で行うために、スマートフォン用のSoCなどに搭載される専用回路はどれか。

  1. APLL(位相同期回路)
  2. BADコンバータ
  3. CNPU(ニューラルプロセッシングユニット)
答えと解説を見る

正解:C. NPU(ニューラルプロセッシングユニット)

NPUは、ニューラルネットワークの計算の大部分を占める積和演算を、8ビット以下の整数など低い精度で大量に並列処理する専用回路です。汎用CPUより電力あたりの性能が1桁以上高く、写真の補正、音声認識、翻訳などをスマートフォンの中で処理できます。性能はTOPS(1秒あたりの兆回の演算)で表され、パソコン向けのSoCにも搭載が広がっています。

AI向けのアクセラレータなどで、多数の積和演算器を格子状に並べ、データを隣の演算器へ順に流しながら行列の積を計算する構成はどれか。

  1. Aシストリックアレイ
  2. Bクロスバースイッチ
  3. Cリングバッファ
答えと解説を見る

正解:A. シストリックアレイ

シストリックアレイは、積和演算器(MAC)を2次元に並べ、データを隣の演算器へ規則的に送りながら計算する構成で、血液を送り出す心臓の収縮(シストール)になぞらえた名前です。一度読み込んだデータを多くの演算器で再利用できるため、メモリへのアクセスを減らして行列演算を効率よく行えます。GoogleのTPUは128×128などの大きなアレイを備えています。

  1. AI向けのアクセラレータで使われるシストリックアレイが、行列の積を効率よく計算できる主な理由はどれか。
  2. AIの推論で、重みをFP32からINT8に変換(量子化)する主な利点はどれか。
  3. AIのアクセラレータの性能として示される「○○ TOPS」という値について注意すべき点として正しいものはどれか。

AIハードウェアとソフトウェアスタックの練習問題へ

関連する用語の解説

NPU(ニューラルプロセッシングユニット)
AIのニューラルネットワークの推論処理を、高速かつ低い消費電力で行うための専用回路。スマートフォンやパソコンのSoCに搭載されている。
GPU
Graphics Processing Unit の略。単純な演算器を多数もち、大量のデータを並列に処理するプロセッサ。画像処理のほか、AIの学習や推論に広く使われている。
シストリックアレイ
多数の積和演算器を格子状に並べ、データを隣の演算器へ順に流しながら行列の積を計算する構成。AI向けのアクセラレータで使われる。
INT8
8ビットの符号付き整数(−128〜127)。AIの推論で、重みや活性化の値をスケールを掛けてINT8に変換(量子化)すると、計算とメモリが大きく減り、整数の小さな回路で高速に処理できる。
TOPS
1秒あたりの演算の回数を兆(テラ)の単位で表したAIのアクセラレータの性能の指標。多くは低い精度で数えた理論上の最大値。

関連する比較