(Translated by https://www.hiragana.jp/)
Tensorコア - Wikipedia

Tensorコアえい: Tensor Cores)はNVIDIA開発かいはつする混合こんごう精度せいど行列ぎょうれつせきアクセラレータである[1]2017ねんデータセンターようGPUTesla V100」(Volta世代せだい)にはじめて搭載とうさいされた。GeforceQuadroにはRTXシリーズ(Turing世代せだい)ではじめて搭載とうさいされた。

概要がいよう

編集へんしゅう

たか並列へいれつ計算けいさん能力のうりょくをもったグラフィックス専用せんよう処理しょりユニットであるGPUは、その並列へいれつ計算けいさん特性とくせい着目ちゃくもくされ現在げんざいではHPCなど様々さまざま分野ぶんや並列へいれつ計算けいさんとして利用りようされている(GPGPU)。用途ようとひろがるにつれ、深層しんそう学習がくしゅうをはじめとする一部いちぶ計算けいさんではたか数値すうち計算けいさん精度せいどよりもたか演算えんざん速度そくどもとめられることがわかってきた。NVIDIA GeForceシリーズをはじめとした様々さまざまGPU手掛てがけるNVIDIAがこれにこたえるために開発かいはつした、行列ぎょうれつせきアクセラレータがTensorコアである[1][2]

Tensorコアは行列ぎょうれつ混合こんごう精度せいど融合ゆうごうせき演算えんざん(FMA)にとくした機能きのうゆうする。すなわち1命令めいれいてい精度せいど行列ぎょうれつせき + こう精度せいどアキュムレータ加算かさん実行じっこうする。たとえばFP32の行列ぎょうれつ  せき演算えんざんするさい行列ぎょうれつせき   をFP16でおこないこれをFP32の   へとアキュムレートする。

専用せんよう回路かいろ(Tensorコア)でこれを実行じっこうするため、1命令めいれい大量たいりょう演算えんざん処理しょりできる。行列ぎょうれつせきてい精度せいどであるため計算けいさん負荷ふかちいさく、こう精度せいどかつFMAであるため追加ついか誤差ごさしょうじさせない。たとえば NVIDIA A100 GPU では単純たんじゅんなFP32が 19.5 TLOPSであるのにたいし、FP16のてい精度せいどせきでTensorCoreを使つかった場合ばあいは 312 TFLOPS すなわち16ばい演算えんざん実行じっこうできる。このようにTensorコアは混合こんごう精度せいど行列ぎょうれつFMAのアクセラレータとして機能きのうする。

対応たいおう

編集へんしゅう

Tensorコアには世代せだいがあり、世代せだいごとに速度そくどおよびサポートする精度せいどことなる。

ひょう. Tensorコア世代せだいとサポート精度せいど
世代せだい (対応たいおうarch) multiply 精度せいど accum 精度せいど
FP64 TF32 FP16 BF16 FP8 INT8 INT4 INT1 FP64 FP32 FP16 INT32
1 (Volta) [3] - - - - - - - - -
2 (Turing) [4] - - - - -
3 (Ampere) [5] -
4 (Hopper) [6][7] - -

TensorFloat-32TF32)はTensorコアにおける混合こんごう精度せいどFMAモードの1つである[8][9]

Tensorコアはてい精度せいど行列ぎょうれつせき高速こうそく実行じっこうするアクセラレータであり、FP32 FMAをそのまま高速こうそく計算けいさんはできない。TF32モードではFP32入力にゅうりょく内部ないぶてきに19bitへキャスト、その行列ぎょうれつせきをTensorコアで高速こうそく計算けいさんし、最終さいしゅうてきにFP32のアキュムレータへ加算かさんする。すなわち、TensorFloat-32はFP32 FMAの内部ないぶてい精度せいど高速こうそくFMAモードである[10]

てい精度せいど行列ぎょうれつせきはある程度ていど計算けいさん誤差ごさ不可避ふかひである。従来じゅうらいもちいられていた16bit演算えんざん(FP16・BF16)は混合こんごう精度せいど計算けいさんによりその悪影響あくえいきょう最低限さいていげんおさえており、またフレームワークの自動じどう混同こんどう精度せいど(AMP)機能きのうにより最低限さいていげんのコード変更へんこう実行じっこう可能かのうにしていた。しかし計算けいさん誤差ごさ推論すいろん精度せいどおおきく影響えいきょうするケースが一部いちぶにはあり、また最低限さいていげんであれコードの変更へんこう必須ひっすであった。

TF32は 1bit の符号ふごう、8bit の指数しすう(= BF16の指数しすう)、10bit の仮数かすう(=FP16の仮数かすう)からなる19bitの表現ひょうげん利用りようしており、16bitにくらべて精度せいど低下ていかさら軽減けいげんしている。またTensorコア内部ないぶでキャストしFP32にアキュムレートしているため外部がいぶてきにはFP32 FMAをそのまま実行じっこうしているようにえ、コードの変更へんこう一切いっさい必要ひつようない。ゆえにTF32は最低限さいていげん精度せいど低下ていかかつコード変更へんこうなしですうばい演算えんざん効率こうりつられるモードになっている。あくまでコア内部ないぶ精度せいど変更へんこうであるため、データりょうれい: 使用しようGPUメモリりょう)の減少げんしょうとうはできない。またTensorコアが19bit表現ひょうげん高速こうそく処理しょりできるからこそ高速こうそくされるのであり、TF32はあくまでTensorコアがもつとく機能きのう/モードの一種いっしゅである[9]

関連かんれん項目こうもく

編集へんしゅう

脚注きゃくちゅう

編集へんしゅう
  1. ^ a b "Tensor Cores enable mixed-precision computing, dynamically adapting calculations to accelerate throughput while preserving accuracy." NVIDIA. NVIDIA Tensor Cores. 2023-05-16閲覧えつらん.
  2. ^ "Tensor Cores are specialized high-performance compute cores for matrix math operations that provide groundbreaking performance for AI and HPC applications. " NVIDIA. NVIDIA A100 Tensor Core GPU Architecture. 2023-05-16閲覧えつらん.
  3. ^ "FP16 precision introduced on the Volta Tensor Core ... Volta GPU ... Results are accumulated into FP32 for mixed precision training or FP16 for inference." NVIDIA. NVIDIA A100 Tensor Core GPU Architecture. 2023-05-16閲覧えつらん.
  4. ^ "the INT8, INT4 and binary 1-bit precisions added in the Turing Tensor Core" NVIDIA. NVIDIA A100 Tensor Core GPU Architecture. 2023-05-16閲覧えつらん.
  5. ^ "In addition to FP16 precision ... INT8, INT4 and binary 1-bit precisions ... the A100 Tensor Core adds support for TF32, BF16 and FP64 formats" NVIDIA. NVIDIA A100 Tensor Core GPU Architecture. 2023-05-16閲覧えつらん.
  6. ^ "NVIDIA H100 GPU ... New fourth-generation Tensor Cores" NVIDIA. NVIDIA H100 Tensor Core GPU Architecture. 2023-05-16閲覧えつらん.
  7. ^ "FP8, FP16, BF16, TF32, FP64, and INT8 MMA data types are supported." NVIDIA. NVIDIA H100 Tensor Core GPU Architecture. 2023-05-16閲覧えつらん.
  8. ^ "TF32 is a new compute mode added to Tensor Cores in the Ampere generation of GPU architecture." NVIDIA Developer. Accelerating AI Training with NVIDIA TF32 Tensor Cores. 2023-06-18閲覧えつらん.
  9. ^ a b "TF32 is only exposed as a Tensor Core operation mode, not a type." NVIDIA Developer. Accelerating AI Training with NVIDIA TF32 Tensor Cores. 2023-06-18閲覧えつらん.
  10. ^ "All storage in memory and other operations remain completely in FP32, only convolutions and matrix-multiplications convert their inputs to TF32 right before multiplication." NVIDIA Developer. Accelerating AI Training with NVIDIA TF32 Tensor Cores. 2023-06-18閲覧えつらん.