Tensor Coreとは? AIの行列計算を高速化する専用演算器

GPU内で一般的な演算を担う多数の演算器と行列の積和演算を担う専用演算器が共存し、入力行列から結果行列を作る様子 AI半導体・GPU
Tensor CoreはGPU全体の別名ではありません。GPU内でCUDA Coreなどと共存し、条件が合う行列演算を担当する専用演算器です。
学習レベル 初級

第29話で、CUDAはGPUを汎用計算へ使いやすくするソフトウェア基盤だと学びました。今回は、そのGPUの中で行列計算を効率よく進めるTensor Coreを見ます。数式を追わなくても読めます。

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

GPU内で一般的な演算を担う多数の演算器と行列の積和演算を担う専用演算器が共存し、入力行列から結果行列を作る様子
Tensor CoreはGPU全体の別名ではありません。GPU内でCUDA Coreなどと共存し、条件が合う行列演算を担当する専用演算器です。

先に3つの誤解をほどく

GPUそのものではない対応GPUの内部に組み込まれた演算器の一種です。
AI専用とは限らないAIで多用されますが、行列計算を使う科学技術計算などにも利用できます。
CUDA Coreの代替ではない一般的な処理と専用の行列処理を、それぞれ得意な演算器が分担します。

Tensor Coreは何を高速化する?

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

一方の行列の行ともう一方の行列の列から対応する値を掛け、複数の積を合計して既存値へ加え、結果行列の一要素を作る積和演算
行と列の組み合わせごとに「掛けて足す」を繰り返し、結果行列を作ります。Tensor Coreは、このまとまった行列の積和演算を高い処理量で進める設計です。

ただし、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があっても不要にはならない
CUDAGPUの演算器やメモリをソフトウェアから利用する基盤演算器そのものではない

GPUの仕事には、行列積和へきれいにまとめられる部分と、そうでない部分があります。Tensor CoreとCUDA Coreは競争相手というより、GPU内部で異なる仕事を分担する関係です。前回説明したCUDAがGPUを汎用計算へ開いた仕組みの上で、対応する行列演算を専用経路へ流せるようになった、と捉えるとつながります。

ハードウェアがあれば自動で速くなる?

Tensor Coreを使うには、計算が対応する演算とデータ型で表現され、ソフトウェアが利用経路を選ぶ必要があります。開発者はcuBLASやcuDNNなどのライブラリ、深層学習フレームワーク、またはWMMA APIなどを通じて利用します。対応ライブラリは、条件が合う計算をTensor Coreへ振り分けられます。

AIフレームワークの処理がライブラリ層を通り、対応する行列演算はGPU内のTensor Coreへ、その他の処理はCUDA Coreなどへ振り分けられる流れ
フレームワークやライブラリが計算を整理し、対応する行列演算だけをTensor Coreへ送ります。ハードウェア、データ型、計算形状、ソフトウェアの組み合わせが重要です。
計算の形十分な大きさの行列や、効率よく分割できる寸法ほど演算器を埋めやすい。
データの供給演算器へ入力を届ける速度が足りなければ、待ち時間が増える。
処理全体の構成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を使わない処理の割合によって効果は変わります。

まとめ

  1. Tensor Coreは対応GPU内にある行列積和向けの専用演算器
  2. GPUそのものでも、AIだけの万能回路でも、CUDA Coreの代替でもない
  3. 混合精度は軽い入力形式と精度が必要な累積などを組み合わせる考え方
  4. ライブラリやフレームワークが対応計算を専用経路へ載せて初めて活用できる
  5. 性能には計算形状だけでなく、データを届けるメモリ帯域も影響する

参考資料

↑ 先頭
タイトルとURLをコピーしました