第29話で、CUDAはGPUを汎用計算へ使いやすくするソフトウェア基盤だと学びました。今回は、そのGPUの中で行列計算を効率よく進めるTensor Coreを見ます。数式を追わなくても読めます。
Tensor Core(テンソルコア)は、対応するNVIDIA GPUの中にある行列の積和演算を効率よく実行する専用演算器です。GPUそのものではなく、AIだけに使う万能回路でも、CUDA Coreを単純に置き換える回路でもありません。対応する計算とデータ型を、ライブラリやフレームワークが適切な経路へ載せたときに強みを発揮します。

先に3つの誤解をほどく
Tensor Coreは何を高速化する?
中心となる仕事は、複数の数を掛け合わせて足し、その結果を既存の値へ加える行列の積和演算です。NVIDIAの資料では、行列AとBを掛け、その結果を行列Cへ足して行列Dを得る処理として説明されています。機械学習の学習や推論では、ニューラルネットワークの各層でこのような計算を大量に繰り返します。

ただし、AIの処理がすべて行列積だけでできているわけではありません。データの準備、条件分岐、メモリアクセス、活性化関数など、別の演算やデータ移動も含まれます。Tensor Coreが速くても、処理全体が同じ倍率で速くなるとは限りません。
Tensor Coreが直接速くするのは、対応する形式の行列積和など。アプリ全体を無条件に速くする回路ではありません。
混合精度とは? 速さと計算の確かさを両立する考え方
数値をコンピューターで表す細かさを精度と呼びます。一般に、細かさを抑えた形式は一度に多く扱いやすく、メモリ量や転送量も減らせます。一方、すべてを低い精度にすると、丸め誤差や値が表現範囲を外れる問題が起こりやすくなります。
混合精度は、入力や大量の演算には比較的軽い形式を使い、積み上げる結果や精度が重要な部分にはより広い形式を使う考え方です。初期のTensor Coreでは、たとえばFP16の入力を掛け、FP32で累積する使い方が代表例でした。現在使える形式はGPUの世代とソフトウェアによって異なり、FP16、BF16、TF32、INT8などに対応する製品があります。後の世代にはFP64を扱うものもあります。

データ型は世代ごとに確認する
「Tensor Coreなら、すべてのデータ型が同じ速度で使える」とは言えません。対応形式、演算性能、入力サイズの条件はGPUアーキテクチャやライブラリの版で変わります。製品選定や性能見積もりでは、対象GPUの公式仕様を確認します。
CUDA Coreとどう分担する?
| 項目 | 主な役割 | 初心者が押さえる点 |
|---|---|---|
| Tensor Core | 対応する行列の積和などを高い処理量で実行 | 専用演算器。条件に合う計算だけを担当する |
| CUDA Core | より一般的な数値演算や各種処理を実行 | Tensor Coreがあっても不要にはならない |
| CUDA | GPUの演算器やメモリをソフトウェアから利用する基盤 | 演算器そのものではない |
GPUの仕事には、行列積和へきれいにまとめられる部分と、そうでない部分があります。Tensor CoreとCUDA Coreは競争相手というより、GPU内部で異なる仕事を分担する関係です。前回説明したCUDAがGPUを汎用計算へ開いた仕組みの上で、対応する行列演算を専用経路へ流せるようになった、と捉えるとつながります。
ハードウェアがあれば自動で速くなる?
Tensor Coreを使うには、計算が対応する演算とデータ型で表現され、ソフトウェアが利用経路を選ぶ必要があります。開発者はcuBLASやcuDNNなどのライブラリ、深層学習フレームワーク、またはWMMA APIなどを通じて利用します。対応ライブラリは、条件が合う計算をTensor Coreへ振り分けられます。

なぜ次はHBMとメモリ帯域なのか
演算器が一度に処理できる量が増えるほど、入力データを絶えず届け、結果を受け取る必要があります。計算量に対してデータ移動が多い処理では、Tensor Coreの待ち時間が増え、メモリ側が性能の上限になることがあります。
そこで重要になるのが、GPUの近くで大量データを広い経路から供給するHBMとメモリ帯域の仕組みです。次回は「演算器を速くするだけでは足りない」という視点から、AI向けGPUでHBMが注目される理由を見ます。
Tensor Coreに関わる仕事
Tensor Coreの性能は、回路設計だけで決まりません。GPUアーキテクチャ、数値計算ライブラリ、AIフレームワーク、コンパイラ、パッケージ、HBM、基板、冷却、データセンター運用まで、多くの仕事がつながっています。
自分に近い半導体の仕事を探す
ハードウェア、ソフトウェア、製造、装置、品質など、どこから学ぶか迷う場合は、匿名・回答非保存の10問仕事ナビで興味の方向を整理できます。診断結果は適性を断定するものではなく、次の学習テーマを選ぶ目安です。
Tensor Coreについてよくある質問
Tensor CoreはAI専用ですか?
いいえ。AIで行列演算を大量に使うため重要ですが、対応する行列計算を使う科学技術計算などにも利用できます。
Tensor CoreがあればCUDA Coreは不要ですか?
不要にはなりません。Tensor Coreは対応する行列演算を担当し、それ以外の多くの処理はCUDA Coreなどが担います。
混合精度は計算を不正確にする方法ですか?
単純にすべての精度を下げる方法ではありません。軽い形式を使える部分と、より高い精度が必要な部分を分け、速度と数値の安定性を両立させる考え方です。用途に応じた検証は必要です。
Tensor Core搭載GPUなら、どのAIも同じだけ速くなりますか?
いいえ。対応データ型、行列の大きさや形、ソフトウェア、メモリ帯域、Tensor Coreを使わない処理の割合によって効果は変わります。
まとめ
- Tensor Coreは対応GPU内にある行列積和向けの専用演算器
- GPUそのものでも、AIだけの万能回路でも、CUDA Coreの代替でもない
- 混合精度は軽い入力形式と精度が必要な累積などを組み合わせる考え方
- ライブラリやフレームワークが対応計算を専用経路へ載せて初めて活用できる
- 性能には計算形状だけでなく、データを届けるメモリ帯域も影響する
さらに基礎へ戻る
動画の順番で学ぶ
参考資料
- NVIDIA Technical Blog: Tensor Cores and Mixed-Precision Scientific Computing
- NVIDIA Deep Learning Performance Guide: Mixed Precision
- NVIDIA Technical Blog: Programming Tensor Cores in CUDA 9
- NVIDIA Deep Learning Performance Guide: Matrix Multiplication
- NVIDIA cuBLAS Library Documentation

