GPUとは
Graphics Processing Unit / グラフィックス処理装置
大量の演算を並列処理できる専用プロセッサで、深層学習の学習・推論を支える計算基盤
ひとことで言うと
大量の計算を同時にこなせる部品。AIの学習や実行を速くするために使われる。
概要
GPU(Graphics Processing Unit)は、元々3Dグラフィックスのレンダリング用に設計された、数千個の小さな演算コアを持つプロセッサ。 CPUが少数の高性能コアで逐次処理を得意とするのに対し、GPUは多数のコアで同じ演算を大量のデータに並列適用するのを得意とする。 ニューラルネットワークの学習・推論は行列演算(積和演算)の繰り返しであり、この特性がGPUの並列処理能力と非常に相性が良いため、深層学習の実用化を支える計算基盤として不可欠な存在になっている。 NVIDIAのCUDAのようなGPU向け並列計算プラットフォームの普及も、機械学習フレームワークの発展を後押しした。 近年ではLLMの学習・推論に特化したTensorコアの搭載や、複数GPUを束ねた大規模クラスタ構成も一般的になっている。
背景
ニューラルネットワークの学習は膨大な行列積・畳み込み演算を伴い、CPUのみでは現実的な時間で処理できない規模になった。 もともと画像処理向けに並列演算性能を追求してきたGPUが、この行列演算のニーズと合致し、汎用計算(GPGPU)への転用が進んだ。
歴史
1999年: NVIDIAが発表したGeForce 256は、単体でジオメトリ変換・ライティング処理を行う専用チップとして「GPU」という呼称の起点となった。 2006年: NVIDIAがGPU上で汎用計算するためのCUDAを発表。 2012年: AlexNetがGPUを用いてImageNetコンペで圧勝し、深層学習とGPUの組み合わせが注目される契機に。 2016年以降: NVIDIAが深層学習向けTensorコアを搭載したGPU(Volta世代以降)を展開し、大規模モデルの学習を加速。 2020年代: LLMの学習・推論需要の急増によりGPUの供給がAI開発のボトルネックとなる場面も発生。
アーキテクチャ
少数のコアで複雑な逐次処理を行うCPUと異なり、GPUは多数の単純な演算コア(ストリーミングマルチプロセッサ)を持ち、同一の命令を大量のデータに同時適用するSIMD/SIMT方式で並列演算を行う。 深層学習向けGPUには、行列積演算に特化したTensorコアが搭載されることも多い。
ワークフロー
モデルとデータをGPUメモリに転送 → 行列演算(順伝播・逆伝播)をGPU上で並列実行 → 勾配を用いてパラメータを更新 → 複数GPUで学習する場合は勾配や重みをGPU間で同期(分散学習)。
コード例
PyTorchでGPUを使う基本例
import torch
device = "cuda" if torch.cuda.is_available() else "cpu"
model = model.to(device)
inputs = inputs.to(device)利点
欠点
- 高性能GPUは高価で、大規模学習には多数のGPUを要するため導入・運用コストが高い
- 消費電力・発熱が大きく、データセンターの電力コストや冷却負荷が課題になる
- 需要急増時にはGPUの供給不足が発生し、入手性がボトルネックになることがある
比較
- ニューラルネットワーク — GPUの並列演算能力がニューラルネットワークの大規模な行列演算の学習を実用的にした
- LLM — LLMの大規模な事前学習は、多数のGPUを用いた分散学習によって支えられている
- CUDA — CUDAはNVIDIA製GPU上で汎用計算するための標準的なプラットフォームであり、GPGPU活用の基盤となっている
- TPU — GPUは元々グラフィックス処理向けの汎用チップを機械学習に転用したものであるのに対し、TPUは機械学習向けに専用設計されたチップ
- NPU — GPUが大規模な並列計算を汎用的に行うのに対し、NPUはエッジデバイス上での低消費電力な推論に特化している
- ROCm — ROCmは、AMD製GPUを汎用計算に活用するためのソフトウェア基盤
関連用語
よくある質問
GPUとTPUの違いは?
GPUは元々グラフィックス処理向けの汎用並列プロセッサ。 TPU(Tensor Processing Unit)はGoogleが機械学習の行列演算に特化して設計した専用チップで、特定の演算パターンにおいてGPUより高い効率を発揮する場合がある。
参考文献
- Official WebsiteNVIDIA CUDA
- DocumentationPyTorch: CUDA Semantics