LoginSignup
226
175

NVIDIA GPUスペック(機械学習用)

Last updated at Posted at 2015-11-13

NVIDIAのサーバー用(旧NVIDIA Tesla)

単位はTFLOPS(全て行列積)。メモリ帯域の単位はGB/s。

2019年よりTeslaという名称は消えました。NVIDIA Tesla V100 → NVIDIA V100。

Rubin

Blackwell の後継。2年ごとに新商品を出していたのを、1年ごとに変えるらしいです。

Blackwell

GB200 B200 B100
FP4 10,000*2 9,000 7,000
FP6
FP8
INT8
5,000*2 4,500 3,500
FP16
BF16
2,500*2 2,250 1,750
TF32 1,250*2 1,125 875
FP32 45*2 40 30
FP64 45*2 40 30
メモリ 192GB*2 192GB 192GB
メモリ帯域 8TB/s*2 8TB/s 8TB/s
発表日 2024年3月 2024年3月 2024年3月

新たに FP4 と FP6 に対応。疎行列は密行列の倍の性能で動作します。

GB200 は GPU B200 2つと CPU 1つ搭載。

B200の対応クラウド

  • EC2
  • Google
  • Azure
  • Oracle Cloud Infrastructure
  • Applied Digital
  • CoreWeave
  • Crusoe
  • IBM Cloud
  • Lambda

出典

Ada Lovelace

L40S L40 L4 GeForce
RTX
4090
INT8
FP8
733 362 243 660.6
FP16
BF16
362.05 181.05 121 165.2
TF32 183 90.5 60 82.6
FP32 91.6 90.5 30.3 82.6
メモリ 48GB 48GB 24GB 24GB
メモリ帯域 864GB/s 864GB/s 300GB/s 1008GB/s
発表日 2023年8月 2022年10月 2023年3月 2022年9月

L40Sの対応クラウド

  • EC2 g6e
  • Oracle Cloud Infrastructure
  • Vultr

L4の対応クラウド

  • EC2 g6
  • Google g2
  • ConoHa VPS

廉価なGPUの系列はT4→A10→L4になっています。

出典

Hopper

H200
SXM
H100
SXM
H100
PCIe
INT8
FP8
1,979 1,979 1,513
FP16
BF16
989 989 756
TF32 495 495 378
FP32 67 67 51
FP64 67 67 51
メモリ 141GB 80GB 80GB
メモリ帯域 4.8TB/s 3.35TB/s 2TB/s
発売日 2024年Q2 2022年Q3 2022年Q3

新たに FP8 に対応。E5M2(指数部5ビット、仮数部2ビット)、E4M3(指数部4ビット、仮数部3ビット)に対応。Ampere 同様、疎行列は密行列の倍の性能で動作します。

A100→H100が2年半で3倍の性能向上なので、10年で100倍のムーアの法則は2022年でも健在ですね。

GH200の対応クラウド

  • Lambda Labs
  • Vultr

H200の対応クラウド

  • EC2 p5e
  • Google
  • Azure
  • CoreWeave
  • Lambda Labs
  • Vultr

H100の対応クラウド

  • EC2 p5
  • Google A3
  • Azure ND H100 v5
  • Oracle Cloud Infrastructure
  • CoreWeave
  • Lambda Labs
  • Vultr
  • さくらのクラウド
  • ConoHa VPS

Google が1台に16GPU、AWS と Azure ND が1台に8GPU。マシン間の通信回線帯域は AWS と Azure ND が 3.2 Tbps、Google が 0.2 Tbpsで、AWS と Azure ND は低遅延回線。各社ともマシン内の GPU 間通信は NVLink 。

また、Grace CPU と Hopper GPU を一体化した Grace Hopper も発売。CPU と GPU 間の通信速度が900GB/sになり、PCIe Gen5x16 より7倍高速。CPU は ARM Neoverse V2 を72コア。

Ampere

MHz INT8 FP16
BF16
TF32 FP32 FP64 メモリ
帯域
発表年
A100 1410 624 312 156 19.5 19.5 1555 2020/5
A40 1740 299.3 149.7 74.8 37.4 696 2020/10
A30 1440 330 165 82 10.3 10.3 933 2021/4
A16 1695 35.9 * 4 17.9 * 4 9 * 4 4.5 * 4 200 * 4 2021/4
A10 1695 250 125 62.5 31.2 600 2021/4
A2 1770 36 18 9 4.5 200 2021/11
GeForce
RTX
3090
1695 285 142 71 36 1.1 936 2020/9

TF32という19ビットで表現する浮動小数点数を新設。指数部はFP32やbfloat16と同じ8ビットで、仮数部はFP16と同じ10ビット。https://blogs.nvidia.com/blog/2020/05/14/tensorfloat-32-precision-format/ 。bfloat16もサポート。INT4もINT8の倍の性能で対応。疎行列の高速化にも対応し、密行列の倍の性能で動作します。

Qiita の横幅が狭くなったので、コア数を分離しました。

CUDA
コア数
Tensor
コア数
A100 6912 432
A40 10752 336
A30 3584 224
A16 1280 * 4 40 * 4
A10 9216 288
A2 1280 40
GeForce
RTX
3090
10496 328

A100の対応クラウド

  • EC2 p4d
  • Google A2
  • Azure NC A100 v4
  • Azure ND A100 v4
  • Azure NDm A100 v4
  • Oracle Cloud Infrastructure
  • CoreWeave
  • Lambda Labs
  • Vultr
  • Alibaba gn7
  • Alibaba gn7e
  • GPUSOROBAN(代理店のWebARENA IndigoGPUやraytrek cloudなど)

クラウドは Google が1台に16GPU、AWS と Azure ND が1台に8GPU。マシン間の通信回線帯域は AWS が 0.4 Tbps、Google が 0.1 Tbps、Azure ND が 1.6 Tbps で、AWS と Azure ND は低遅延回線。各社ともマシン内の GPU 間通信は NVLink 。

A40の対応クラウド

  • CoreWeave
  • Vultr

A30の対応クラウド

  • Alibaba gn7s

A16の対応クラウド

  • Vultr

A10の対応クラウド

  • EC2 g5
  • Azure NCads A10 v4
  • Azure NVads A10 v5
  • Oracle Cloud Infrastructure
  • Lambda Labs
  • Alibaba gn7i
  • Alibaba vgn7i-vws
  • Alibaba sgn7i-vws

Turing

CUDA
コア数
Tensor
コア数
MHz INT8 FP16 FP32 メモリ
帯域
発表年
T4 2560 320 1582 130 65 8.1 320 2018/9
GeForce
RTX
2080 Ti
4352 544 1350 215 108 11.8 616 2018/8

INT4もINT8の倍の性能で対応。

T4 の対応クラウド

  • EC2 g4dn
  • Google T4
  • Azure NCasT4 v3
  • Alibaba gn6i
  • Alibaba vgn6i

Volta

コア数 MHz INT32 FP16 FP32 FP64 メモリ
帯域
発表年
V100
(NVLink)
5120 1455 14.90 119.19 14.90 7.45 900 2017/5
V100
(PCIe)
5120 1370 14.02 112.23 14.02 7.01 900 2017/7

Tensor Core を搭載し、入力FP16・出力FP32の4行4列の行列積が出来るようになり、かつ、高速化。INT32対応。

V100 (NVLink) の対応クラウド

  • EC2 p3
  • Google V100
  • Azure NCv3
  • Azure NDv2
  • Oracle Cloud Infrastructure
  • CoreWeave
  • Lambda Labs
  • Alibaba gn6v
  • Alibaba gn6e
  • さくらのクラウド

Pascal

コア数 MHz INT8 FP16 FP32 FP64 メモリ
帯域
発表年
P100
(NVLink)
3584 1480 x 21.205 10.609 5.304 720 2016/4
P100
(PCIe)
3584 1300 x 18.636 9.318 4.659 720 2016/4
P40 3840 1531 47.032 x 11.758 0.367 345.6 2016/9
P4 2560 1063 21.770 x 5.443 0.170 192 2016/9
GeForce
GTX
1080 Ti
3584 1582 x 0.177 11.340 0.354 484 2017/3

一部 INT8 対応。

P100 (PCIe) の対応クラウド

  • Google P100
  • Azure NCv2
  • Oracle Cloud Infrastructure
  • Alibaba gn5
  • さくらのクラウド

P40 の対応クラウド

  • Azure ND
  • さくらのクラウド

P4 の対応クラウド

  • Google P4
  • Alibaba gn5i

Maxwell

コア数 MHz FP16 FP32 FP64 メモリ
帯域
発表年
M60 2048 * 2 1180 9.667 * 2 4.833 * 2 0.156 * 2 160 * 2 2015/8
M40 3072 1114 13.689 6.844 0.219 288 2015/11
M10 640 * 4 1033 2.644 * 4 1.322 * 4 0.041 * 4 83 * 4 2016/5
M6 1536 1051 6.457 3.229 0.100 147.2 2015/8
M4 1024 1072 4.391 2.195 0.069 88 2015/11
GeForce
GTX
980 Ti
2816 1076 x 6.060 0.189 336 2015/6

FP16 対応。

M60 対応クラウド

  • EC2 g3
  • Azure NV

M40 対応クラウド

  • Alibaba gn4

Kepler

コア数 MHz FP32 FP64 メモリ帯域 発表年
K80 2496 * 2 875 4.368 * 2 1.456 * 2 240 * 2 2014/11
K40 2880 875 5.040 1.680 288 2013/10
GRID K520 1536 * 2 800 2.458 * 2 0.096 * 2 160 * 2 2013/7
GRID K340 384 * 4 950 0.730 * 4 28.8 * 4 2013/7
K20 2496 706 3.524 1.175 208 2012/11
K10 1536 * 2 745 2.289 * 2 0.763 * 2 160 * 2 2012/5

K80 対応クラウド

  • EC2 p2
  • Azure NC
  • Google K80
  • Oracle OCSG

GRID K520 対応クラウド

  • EC2 g2

Fermi

コア数 MHz FP32 FP64 発表年
M2090 512 1300 1.331 0.665 2011/5
M2070
M2050
448 1150 1.030 0.515 2011/5

M2050 対応クラウド

  • EC2 cg1

FP32 : FP64

  • Ampere(CUDAコア) = 2 : 1
  • Volta = 2 : 1
  • Pascal(P100) = 2 : 1
  • Pascal(P100以外) = 16 : 1
  • Maxwell = 32 : 1
  • Kepler = 3 : 1
  • Fermi = 2 : 1

NVIDIA Jetson

NVIDIA Jetson は組み込み用です。

Jetson Orin

コア数 MHz INT8 FP16
BF16
FP32 メモリ
帯域
電源
(W)
Jetson AGX
Orin 64GB
GPU
NVDLA
2048+64
2
1300
1600
170
105
85
53
5.3
x
204 15-60
Jetson AGX
Orin 32GB
GPU
NVDLA
1792+56
2
930
1400
107
93
53
47
3.3
x
204 15-40
Jetson Orin
NX 16GB
GPU
NVDLA
1024+32
2
918
614
60
40
30
20
1.9
x
102 10-25
Jetson Orin
NX 8GB
GPU
NVDLA
1024+32
1
765
614
50
20
25
10
1.6
x
102 10-20
Jetson Orin
Nano 8GB
GPU 1024+32 625 40 20 1.3 68 7-15
Jetson Orin
Nano 4GB
GPU 512+16 625 20 10 0.6 34 7-10

Jetson Orin は Ampere マイクロアーキテクチャ。Jetson AGX Orin 開発者キットは2022年3月販売開始。Jetson Orin Nano 開発者キットは2023年4月販売開始。

Jetson Xavier

コア数 MHz INT8 FP16 FP32 メモリ
帯域
発表年
Jetson AGX
Xavier
GPU
NVDLA
512+64
2
1377
?
22
10
11
5
1.4
x
137 2018/6
Jetson Xavier
NX
GPU
NVDLA
384+48
1
1100
?
12
9
6
5
0.8
x
51 2019/11

Jetson Xavier は Volta マイクロアーキテクチャ。NVDLA は NVIDIA Deep Learning Accelerator の略。

Jetson AGX Xavier は Tesla V100 の 1/10 サイズの GPU。Tensor Core は FP16 に加えて INT8 も対応。NVDLA を搭載。今までは Tegra は Tesla のムーアの法則7年遅れだったが30Wにして6年遅れにターゲット変更。組み込みレベルからノートパソコンレベルへ変更。ただし10Wや15Wモードも搭載。NVIDIA Jetson AGX Xavier Delivers 32 TeraOps for New Era of AI in Robotics | NVIDIA Technical Blog

Jetson Xavier NX は 10W と 15W があり、上記は15W版。NVIDIA Jetson Xavier NX Developer Kit では Raspberry Pi 用のカメラが2つ接続できる。M.2 NVMe SSD が搭載可能。10W の方はファンレスで動きそう(推測)。Introducing Jetson Xavier NX, the World’s Smallest AI Supercomputer | NVIDIA Technical Blog

Pascal

NVIDIA Drive PX 2 AutoCruise には NVIDIA Tegra X2 に加えて 1.25 TFLOPS / 2 GB (GDDR5, 80 GB/s) の外部 GPU も2つ搭載。ノートパソコン向け GeForce 10 シリーズのローエンドレベル。

古い世代

コア数 MHz INT8 FP16 FP32 メモリ
帯域
発表年
Jetson TX2 GPU 256 1302 x 1.333 0.666 58.3 2016/8
Jetson TX1 GPU 256 998 x 1.022 0.511 25.6 2015/1
Jetson Nano GPU 128 921 x 0.472 0.236 25.6 2019/3
Jetson TK1 GPU 192 950 x x 0.365 14.9 2014/1

Jetson Nano は Jetson TX と同じ Maxwell マイクロアーキテクチャ。NVIDIA はリアルタイム画像認識が出来る最低ラインだとしています。Jetson Nano Brings AI Computing to Everyone | NVIDIA Technical Blog

Jetson TK1 は Kepler マイクロアーキテクチャ。

Intel

Intel Xeon

型番 アーキ
テクチャ
コア
GHz INT8 BF16 FP32 メモリ
帯域
Xeon Platinum
8490H
Sapphire
Rapids
60 2.9 356 178 11.136 307 2023
Xeon Platinum
9282
Cascade
Lake
56 x 262 2019
Xeon Platinum
8180
Skylake 28 3.2 23 x 5.734 119 2017
E7-8890
v4
Broadwell 24 3.4 21 x 2.611 85 2016
E7-8890
v3
Haswell 18 3.3 15 x 1.901 85 2015
E7-8890
v2
Ivy
Bridge
15 3.4 2 x 0.816 85 2014
E5-2687W Sandy
Bridge
8 3.8 1 x 0.486 51 2012

すいません。クロック周波数は「全てのコアを使用するが AVX を使用しない場合」のクロック周波数で、AVX を使う場合は、もっとクロックが下がるそうです。Xeon Platinum 8180 は 3.2 → 2.3 GHz で、本当は 4.122 TFLOPS。

1コア・1クロックあたりの演算数(BF16)

  • AMX-BF16: 第4世代Xeon SP = 1024
  • AVX-512 BF16: Cooper Lake = 128

Intel AMX-BF16 は NVIDIA の Tensor Core に対応するものです。AMX-INT8 もあります。INT8は性能2倍。例えば、4コアの3GHzで25TOPS。

出典: https://www.intel.com/content/dam/www/central-libraries/us/en/documents/2022-12/accelerate-ai-with-amx-sb.pdf

1コア・1クロックあたりの演算数(FP32)

  • AVX-512: Skylake, Cascade Lake = 64
  • AVX2: Haswell, Broadwell = 32
  • AVX1: Sandy Bridge, Ivy Bridge = 16

パソコン用CPU

2023年発表の第1世代Core Ultraからディープラーニング用の Neural Processing Unit (NPU) が載りました。Intel AMX-INT8 を載せるのではなく、Movidius が載ります。Movidius 側は Versatile Processing Unit (VPU) と呼んでいたのですが、パソコン用は NPU という呼称になりました。

近年は2021年発表の第12世代インテルCoreから、かつては対応していたAVX-512が非対応になるなど混沌とした状況になっています。第12世代からPコアとEコアに分かれ、EコアでAVX-512対応が難しいという理由からAVX-512非対応になったそうです。内部事情は分かりませんが、なぜ難しい?低速でもEコアで対応させることは難しい?

INT8
CPU
INT8
GPU
INT8
NPU
発表年
第2世代 Core Ultra 合算→ 55以上 45 2024
Core Ultra 7 165H 5 18 11 2023/12

CPU, GPU, NPU は INT8, BF16, FP16, FP32 対応なのですが、NPU だけ BF16 非対応です。

第1世代Core UltraはNPUとして第3世代Movidius(Keem Bay)を2つ搭載。

出典

Intel Data Center GPU

型番 INT8 FP16
BF16
TF32 FP32 FP64 メモリ
帯域
発売日
Intel Data Center GPU
Max 1550
1664 832 419 52 52 3277 2023/1
Intel Data Center GPU
Max 1100
704 352 176 22 22 1229 2023Q2

出典

Habana Labs (Intel)

用途 INT8 FP8 BF16 FP32 発表年
Gaudi 3 x 1835 2024/04
Gaudi 2 x 2022/05
Gaudi HL-2000 学習 x 2019
Goya HL-100 推論 x x 2018

Gaudi 2 までの TFLOPS の形での性能は非公開。

Gaudi 2 対応クラウド

  • Intel Developer Cloud

Gaudi HL-2000 対応クラウド

  • EC2 DL1

出典

Intel Nervana

コア数 flex16+5 発表年
NNP-L1000 120 2019
Lake Crest 12 39 2017

Lake Crest の性能は理論性能の96.4%が38TOPSという事から逆算。 Intel、深層学習を高速化する「Nervana NNP-L1000」を2019年末までに出荷 ~2020年の東京オリンピックのAIプラットフォームパートナーに就任 - PC Watch

2020年2月に Nervana は終了。Habana Labs に注力。

Intel Xeon Phi

コア数 MHz FP32 発表年
7295 72 1500 14 2017/12

Intel Movidius

コア数 MHz INT8 FP16 発表年
Gen 3 Intel Movidius VPU
Keem Bay
500~700 3.0~7.1 x 2021
Myriad X MA2485 16 1 ? 2017/8
Myriad 2 MA2450 12 600 0.2? 0.1? 2014/9

Gen 3 Intel Movidius VPU 搭載デバイスは色々ありますが、面白い商品としては Luxonis の Robotics Vision Core 3 があります。以下、出典。

Intel Neural Compute Stick 2 は Myriad X を搭載。

Myriad 2 MA2450 は、おそらく 128bit / 16bit * 2 * 12コア * 0.6GHz / 1000 = 0.1152 TFLOPS (FP16) だと思われます。性能は曖昧な形で発表しています。上記とは別にHoGやガンマ補正など各種画像処理の専用回路も多数搭載。メモリもLPDDR2ですし、速度的にはRaspberry Piレベルのチップと釣り合うレベル。LPDDR4のIntel AtomだとCPUの方が速くてバランスが悪いです。

MobileEye (Intel)

自動運転用のチップ。Intel の子会社。

情報源

以下、TOPS は INT8。

EyeQ6
CPU
コア数
INT8 BF16? GPU 発売年
EyeQ Ultra 12 176 4.20 0.256 2025
EyeQ6 High 8 34 1.00 0.064 2024
EyeQ6 Lite 2 5 0.72 2023/Q2

PMA, VMP, MPC, XNN という4種類のアクセラレーターを CPU や GPU とは別に搭載。XNN はニューラルネットワーク用。CPU は EyeQ Ultra は RISC-V で EyeQ6 High と Lite は MIPS64 。プロセスルールは EyeQ Ultra が5nmで、それ以外は7nm。

なお、MobileEye のホームページ内で EyeQ6 Lite という表記と Light という表記が混在していて、どちらが正式名称か不明ですが、おそらく Lite の表記が正解。

EyeQ5

2021年発売予定。プロセスルール7nm。

種別 コア数
CPU 8
Computer Vision Processors 18
  • 7 TOPS @ 7.5W
  • 12 TOPS @ 17 W
  • 24 TOPS @ 34 W
EyeQ4

2018年出荷。下記4種類を1つにまとめた物。プロセスルールは28nm。

種別 コア数 MHz MAC/コア TOPS
CPU 4 1000 32? 0.256?
VMP (Vector Microcode Processors) 6 1000 76 0.912
PMA (Programmable Macro Array) 2 750 372 1.116
MPC (Multithreaded Processing Clusters) 2 1000 32 0.128
  • 1.1 TOPS @ 4.5W
  • 2.2 TOPS @ 6.5 W
EyeQ3

2014年出荷。テスラモーターズ等に採用。TDP 2.5W。プロセスルールは40nm。

コア数 MHz MAC/コア TOPS
4 500 64 0.256
EyeQ2

2010年出荷。TDP 2.5W。プロセスルールは90nm。0.026 TOPS。

EyeQ1

2008年出荷。TDP 2.5W。プロセスルールは180nm。4.4 GOPS。

AMD

サーバー

INT8 FP16 BF16 FP32 FP64 メモリ
帯域
発表年
Instinct MI300X 2600 1300 1300 163.4 163.4 5300 2023/12
Instinct MI300A 1960 980.6 980.6 122.6 122.6 5300 2023/12
Instinct MI250X 383 383 383 95.7 95.7 3200 2021/11
Instinct MI100 184.6 184.6 92.3 46.1 11.5 1200 2020/11
Instinct MI25 24.6 12.3 0.8 484 2017/6

MI300AはCPUとGPUが一体型。NVIDIAのGrace Hopperに対応する商品。

Instinct MI300X 対応クラウド

  • Azure ND MI300X v5

Instinct MI25 対応クラウド

  • Azure NVv4

出典

パソコン

INT8 BF16 発表年
Strix Point 45~50 2024
Ryzen 8000G
Ryzen 8040
16 ? 2024/01
2023/12
Ryzen PRO 7040 10 ? 2023/06

2023年12月にNPU対応のAMD Ryzen AI Softwareをリリース。ONNX Runtimeとして動作。

Ryzen PRO 7040 は AI アクセラレーターを搭載。Intel よりも先に AI アクセラレーターを載せました。

組み込み

INT4 MXFP6 INT8 BF16 発表年
Versal AI Edge Gen2 x 61~370 31~185 15~92 2024/04
Versal AI Edge Gen1 13~431 x 7~228 ? 2023/09

Versal AI Edge Gen2 の対応データ型は INT8, INT16, FP8, FP16, BF16, MXFP6, MXFP9 。疎行列にも倍の性能で対応。MXFP6, MXFP9 とは32個で8ビットのスケールを共有する浮動小数点数。https://arxiv.org/abs/2310.10537 に説明があります。

出典

Google

Tensor Processing Unit

MAC数 MHz INT8 BF16 メモリ帯域 開発年 クラウド
v5p 918 459 2765 2023 Google TPU v5p
v5e 393 197 820 2023 Google TPU v5e
v4 x 275 1228 2020 Google TPU v4
v3 x 123 900 2018 Google TPU v3
v2 32768 700 x 45 600 2017 Google TPU v2
v1 65536 700 92 x 2015

v2は1つのTPU Chipに2コア。1コアにつき128 * 128 = 16384個の積和算回路。TPU Chipに2 * 8 = 16GBのメモリ。上記はTPU Chipの情報。1つのTPUボードに4つのTPU Chip搭載。メモリは合計4 * 16GB/TPUボード。TPU Podは64TPUボード。コア→TPU Chip→TPUボード→TPU Podという階層構造。単にTPUと呼んだ場合は1枚のTPUボードの事をさす。bfloat16を採用。符号部1ビット、指数部8ビット、仮数部7ビット。仮数部以外はfp32と同じ。

v1も発表は2017年。

出典

Edge TPU

MAC数 MHz INT8 開発年
Edge TPU 4096 480 4 2018

何種類かシングルボードコンピュータあり。https://coral.ai/products/

Amazon

サーバー

用途 INT8 FP16
BF16
FP32 クラウド
AWS Trainium2 学習 2023 EC2 trn2
AWS Inferentia2 推論 380 190 47.5 2022 EC2 inf2
AWS Trainium 学習 420 210 52.5 2022 EC2 trn1
AWS Inferentia 推論 128 64 x 2019 EC2 inf1
Amazon Elastic Inference 推論 x 8 1 2018 EC2 eia1, eia2

Inferentia2 および Trainium は共に NeuronCore-v2 を2コア使用。1台のマシンに Inferentia2 は12枚、Trainium は16枚搭載。Inferentia2 は NeuronLink-v1 でつながっているのに対して、Trainium はより高速な NeuronLink-v2 で16枚を接続。取り扱えるデータ型は cFP8, FP16, BF16, TF32, FP32, INT8, INT16, INT32 。

  • ScalarEngine が 1,600 FLOP/cycle per core
  • VectorEngine が 2,500 FLOP/cycle per core
  • TensorEngine が 100 TFLOPS/core (BF16)

AWS Inferentia と Amazon Elastic Inference はディープラーニングの推論用であり、学習は GPU を使ってください、という方針。学習はバッチ処理により複数のデータをまとめて処理するが、推論は1つのデータしか扱わないため、処理の向き不向きが異なるため、推論用に作られたチップ。

出典

組み込み

INT8 発表年
AZ2 2021/9
AZ1 0.1程度 2020/9

性能の詳細は非公開です。AZ2はAZ1の22倍TOPSが多い、AZ2は数TOPSとだけ公開されています。Amazon Echoシリーズなどに使用されています。

出典

Microsoft

発表年
Azure Maia 100 2023/11

Apple

Apple Neural Engine

INT8 発表年
A17 Pro 35 2023/9
M3 18 2023/10
A16 Bionic 17 2022/9
M2
A15 Bionic
15.8 2022/6
2021/9
M1
A14 Bionic
11 2020/11
2020/9
A13 Bionic 6 2019/9
A12 Bionic 5 2018/9
A11 Bionic 0.6 2017/9

Apple 内蔵GPU (ARM)

FP16 FP32 FP64 発表年
M2 7.10 3.55 0.89 2022/6
M1 Max
32コア
20.8 10.4 2021/10
M1 5.22 2.61 0.65 2020/11

ARM

ARMv8.6-A および ARMv9.1-A より bfloat16 および行列積の命令が追加になります。さらに、ARMv9.2-A より、ARM Scalable Matrix Extension (SME) が追加になります。Intel Advanced Matrix Extensions (AMX) に対応するものです。ARMv9.4-A より SME2 が追加。

出典

INT8 発表年
Ethos-N78 1~10 2020/5
Ethos-N77 4 2019/5

Ethos は Arm Compute Library を経由して利用可能です(当然、その上に上位ライブラリを経由して利用する前提です)。

Qualcomm Snapdragon

INT8 発表年
Snapdragon X Elite 45(NPU)
30(CPU+GPU)
2023/10
Hexagon 780 26 2020/12
Hexagon 698 15 2019/12
Hexagon 690 7 2018/12
Hexagon 685 3 2017/12

Snapdragon X Elite はパソコン用。第1世代Core Ultra 7との比較動画が https://www.youtube.com/watch?v=47WRzE8c7e8 にあります。

(2018年頃の話)Google Pixel 4 は Snapdragon 855 (Hexagon 690) ですが、実測のベンチマーク結果が https://www.tensorflow.org/lite/performance/measurement#android_performance_benchmarks にあります。ベンチマーク結果を見て思ったのですが、専用回路を止めて GPU で INT8 を扱った方が良いのではないでしょうか?

(2014~2016年の話)ハイエンドの GPU は NVIDIA Tegra とほぼ同じ性能です。Snapdragon には Hexagon DSP が搭載されていて、8/16/32bitの固定小数点が扱えます。GPU の半分の性能で設計されていますが、8bitが扱えることが特徴です。

出典

Huawei

Ascend

INT8 FP16 発表年
Ascend 910 512 256 2019/8
Ascend 310 16 8 2019/8

Kirin NPU

NPU数 FP16 発表年
Kirin 990 5G 2 5? * 2 2019/9
Kirin 980 2 2.1? * 2 2018/9
Kirin 970 1 1.92 2017/9

Kirin 990 5G は 980 から2.5倍の高速化だそうですが詳細不明。INT8 も対応。

Kirin 980 の NPU の詳細は非公開ですが、NPU が1つから2つに増え、合計して2.2倍高速になったと書いてあったので、そこから逆算して10%高速になったと推測しました。

Kirin 970 の NPU は3行3列の行列積。HiKey 970 などのファンレスシングルボードコンピュータあり。TensorFlow や Caffe が利用可能。

PowerVR

INT8 発表年
AX2185 4.1 2018/6
AX2145 1.0 2018/6

AX2185, AX2145 は Android Neural Networks API 経由で利用可能。

Rockchip

INT8 発表年
RK3588 6 2021/7
RK3566
RK3568
0.8 2020/12
RK1808 3 2018/11
RK3399Pro 2.4 2018/1

RK3588 は INT4, INT8, INT16, FP16, BF16, TF32 に対応。

Amlogic

INT8
A311D 5
C305X 2
C308X 4
S905D3 1.2
S928X 3.2
T982 2.6
V901D 1

全てを網羅できないほどたくさんあります。

Hailo

INT8 電力 発表年
Hailo-10H 40 3.5W 2024/4
Hailo-15H 20 2023/3
Hailo-15M 11 2023/3
Hailo-15L 7 2023/3
Hailo-8 26 8.25W 2019/5
Hailo-8L
Hailo-8R
13 2023/8

Hailo-8 の 8.25W はヒートシンクだけで動くギリギリに設定されていますが、ケースファンもしくは金属ケースで NPU とケースを金属で結合させる必要があります。

ルネサス

INT8 FP16 電力 発売年
RZ/V2xx 15 x 2024
RZ/V2H 8
(80@枝刈り)
x 8W 2024/2
RZ/V2MA
RZ/V2M
x 0.7 1W 2022/9
2020/6
RZ/V2L x 0.5 1W 2021/5

RZ/V2H はモデルの枝刈り(スパース化)することで10倍性能を上げることが出来るそうです。

出典:

デンソー(NSITEXE)

INT8 電力
ML041 5.08 0.42W 2022

Preferred Networks

型番 FP16 FP32 FP64 稼働開始年
MN-Core2 2024
MN-Core 131 32.75 8.19 2020

MN-Core には1つのパッケージには4つのダイがあり、パッケージの性能で発表しているのですが、上記は4で割ったダイの性能です。2020年稼働で当初は社内利用専用、2023年よりPFNのパートナー企業向けにも提供。

出典

自動車メーカーのTesla

型番 INT8 FP16 FP32
Dojo D1 362 22.6 2021/8
? 36 0.6 ? 2019

Dojo D1 はサーバー用。

2019年のは車載用で、NNプロセッサ+GPU+CPUの組合せ。NNプロセッサがINT8、GPUが浮動小数を扱える。

Meta

INT8 FP16
MITA v1 102.4 51.2 2020

理由は良く分からないのですが、なぜか2020年に設計した MITA v1 を2023年に発表。試作品?組み込み向けの Jetson Orin NX 16GB 相当。

出典:MTIA v1: Meta’s first-generation AI inference accelerator

Cerebras

型番 INT8?
FP8?
発表年
WSE-3 125,000 2024/03
WSE-2 2021
WSE-1 2019

WSE-3 はチップサイズが 46,225 mm² という、NVIDIA H100 の57倍という巨大チップ。値段は1億円くらいでしょうか?性能もNVIDIA H100の63倍です。SRAMも44GBと大量に載せています。

出典:https://www.cerebras.net/product-chip/

Graphcore

型番 MHz FP16 FP32 発表年 クラウド
Colossus MK2 GC200 1325 250 62.5 2020/7 Azure NDv3

GPUではなくIPUと呼んでいます。MK2は1IPUに1472タイルあり、1タイルに624KBのSRAMを搭載。それぞれのタイルが異なる計算を並列に実行可能。よって、小さなバッチサイズでも動作するそうです。Azureでは1台に16IPU。

Xilinx Virtex

型番 DSP INT8 クラウド
UltraScale+ VU9P 6840 21.3 EC2 f1
Alibaba f3

情報源 https://www.xilinx.com/support/documentation/selection-guides/ultrascale-plus-fpga-product-selection-guide.pdf

クラウドのコスト比較

会社 種別 マシン名 CPU
コア数
BF16 FP32 価格 コスパ
BF16
コスパ
FP32
Amazon CPU c7i.48xlarge 96 294 18.4 2.2266 132.0 8.26
Amazon GPU g5.xlarge 2 125 31.2 0.3455 361.7 90.30
Amazon GPU p4d.24xlarge 48 2496 156 4.2042 593.6 37.10
Amazon inf2.xlarge 2 190 47.5 0.0989 1921.1 480.28
Amazon trn1.2xlarge 4 210 52.5 0.2485 845.0 211.26
Google CPU c3-highcpu
-176
88 270 16.8 3.0331 89.0 5.54
Google GPU g2-standard
-4
2 121 30.3 0.2267 533.6 133.63
Google GPU a2-highgpu
-1g
6 312 19.5 1.4693 212.3 13.27
Google TPU TPU v4 275 x 0.6086 451.8 x
Google TPU TPU v5e 197 x 0.6000 328.3 x
Azure CPU F72s v2 36 x 6.9 0.3045 x 22.66
Azure GPU NC16ads
A10 v4
8 125 31.2 0.5500 227.2 56.72
Azure GPU NC24ads
A100 v4
12 312 19.5 0.7636 408.5 25.53

全てスポットインスタンスです。価格は2023年11月10日の米国インスタンスの価格。価格の単位はドル/時。コスパの単位は TFLOPS・時/ドル 。CPU のクロックは全て 3.0 GHz (ブースト) として計算(やや不正確です)。

$10/h ルール

クラウドで金銭的に暴走しない自主規制ルールとして$10/h(1500円/時)というルールがあります。月720時間使っても108万円です。個人の裁量としてここまでは自由に使って良いという会社さんもあるようです。

Google Cloud の $10/h ルールの場合の上限(スポット)

種別 個数
n2-highcpu 1240 vCPU
(620コア)
c3-highcpu 580 vCPU
(290コア)
NVIDIA L4 44 GPU
NVIDIA A100 6 GPU
TPU v4 16 TPU

マシンの台数は数百台を限度にしないと面倒なことになるので、CPUの場合は n2-highcpu-8 を155台が上限になります。クラウドの傾向として、多くのマシンは負荷を限界まで使っていないため、どうも、1つ1つのvCPUを少なめにして、多くのマシンにばらけさせた方が、発熱の制限が余っていたり、L3キャッシュやメモリ帯域は共有なので、1つ1つの処理速度を上げられて高速に動作します。あとは台数の数の制限で、現在は、n2-highcpu-8 がちょうどだと思います。(もちろん計算する内容次第で highmem だったり色々です)

Google Cloud のリソースの割り当てを増やすのにかかる日数

昔は違ったのですが、2021年12月現在は、Google の窓口で聞いたところ、

  1. 請求先アカウント別のリソース quota (利用者からは見られない)
  2. プロジェクト別のリソース quota (利用者から見られる)

の2つがあるそうです。https://cloud.google.com/compute/quotas には執筆時現在はプロジェクト別のリソース quota の方しか記載がありません。プロジェクト別 ≦ 請求先アカウント別 の制限があるそうです。プロジェクト別のリソース quota の方は48時間以内に対応するとなっているのですが、$10/h 程度の規模感の場合、請求先アカウント別のリソース quota の引き上げも必要です。

その際は、

  1. https://console.cloud.google.com/iam-admin/quotas から申請する
  2. アメリカ本社から日本のセールスに再度申請して欲しいと言われる
  3. セールスの窓口に申請すると、担当者を割り振るというメールをいただく
  4. 担当者が割り振られ、リソースの割り当てが完了する

という手順をたどります。1ステップ1週間程度かかり、合計1か月程度かかりました。最悪3か月程度はかかることを見越して早めに申請されることをお勧めします。

分散化の方法

1つだけスポットではない落ちないサーバー(親ノード)を立て、ここに NFS サーバーも立てます。Google Cloud の場合、インスタンステンプレートを作り、そこからインスタンスグループを立ち上げるとインスタンス(子ノード)を一気に立ち上げられます。インスタンステンプレートのメタデータで startup-script と shutdown-script で起動時と終了時に実行するスクリプトを指定できます。

処理の流れはこうなります。

  1. 落ちない親ノードにキューとそのサーバーソケットを開いて、子ノードを待ちます。通信がボトルネックにならない粒度で問題を細かく分割してキューに詰めます。
  2. インスタンスグループで子ノードを立ち上げます。
  3. 子ノードは startup-script で rsync して親ノードからソースコードをダウンロードし、プログラムを開始します。
  4. 子ノードは親ノードのサーバーソケットから、(分割された問題に不変な)計算全体に必要なデータをダウンロードします。Cloud Storage や S3 からダウンロードしても良いです。マシンイメージに大量のデータを入れるのは起動が遅くなるので止めた方が良いです。
  5. 子ノードは親ノードのキューから1つ取りだし、問題を解き、計算結果を親ノードにソケットで返したり、親ノードの NFS にファイルとして返します。
  6. スポットインスタンスが強制終了する際に shutdown-script が走るので、親ノードに離脱する旨をソケットで返します。計算が完了しなかった旨を親ノードに通知して、キューに詰め直し、別の子ノードに振り分けます。
    なお Google Cloud のドキュメントによると「まれに」、ちゃんと計測はしていませんが5%位の確率で shutdown-script が実行されずにインスタンスが突然終了します。なので、インスタンスが生きているかどうか定期的にポーリングして死活監視する必要があります。Java ならば InetAddress.isReachable() で死活監視できます。

普通の LAN ではなく NVLink や高速な通信回線を使用する場合は、当然、方法は変わります。

(親ノードではなく)子ノードから計算したい内容をキューに詰めて、子ノードで計算結果を受け取るのは、子ノードのインスタンスが強制終了させられる状況では、継続渡しスタイルが必要になると思うのですが、多くのケースで厄介だと思います。

Java の場合の Tips

Java の場合は、ラムダ式をシリアライゼーションして送信してしまうと便利ですが、問題点はラムダ式から親スコープの変数にアクセスしている場合、それらを含んでシリアライゼーションするのですが、一体、何を送信するのかが分かりにくいです。自明な場合以外は XStream の toXML() を使って XML にしてシリアライゼーション内容を確認すると便利でした。Java の static フィールドや Scala の object のフィールドはラムダ式からアクセスしてもシリアライゼーション対象外なので、大規模データは static フィールドなどに置くと便利です。

更に、Scala の場合は、def distributedMap[A, B](childrenCount: Int, machineType: String, nvcpu: Int)(tasks: Seq[A])(fn: A => B): Seq[B] こんな感じの分散化マップを自作すると良いです。distributedMap 内からクラウドのインスタンスグループを作成してしまいます(distributedMap が2回目に呼ばれる際は共有して利用)。タスク非依存のデータはサイズが小さい場合(1KB以下など)はラムダ式 fn の親スコープの変数に置き、fn をシリアライゼーションする際に自動的についてくるので、fn を送信する際にまとめて送ってしまいます。distributedMap を実行する度に fn を送信するので、サイズが大きいデータは object のフィールドに置きます。

Scala の並列コレクションと共存させるには、並列コレクションは「CPUを使用しない長時間処理は blocking {} で包むこと」というルールがあるので、distributedMap の中の子ノードからの計算結果待ちの所を blocking で包めば、並列コレクションの .par.map() の所を distributedMap() に置き換えることが出来ます。多重ループを綺麗に並列化かつ分散化処理として記述することが出来ます。

ムーアの法則

5年で10倍速くなるムーアの法則は健在。(モバイルの通信速度も5年で10倍速くなっています)

226
175
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
226
175