AWSが主要クラウドとしては初めてArm系のGPUインスタンスG5gを提供開始 #reinvent

2021.11.30

re:invent 2018でArmベースのEC2 A1が発表され、翌年2019年には Graviton 2 が発表されました。 Graviton 2の大きな特徴の一つは、同性能の他社プロセッサーに比べるとコスパが非常に優れていることです。 現在では、EC2/Lambda/Fargate/RDSなど様々なサービスで利用できます。

Graviton2 の登場から2年経過し、今度は主要クラウドとして初めてとなる Arm ベースの GPU インスタンス G5G が登場しました。

NVIDIAと協力して開発され、NVIDIA T4G Tensor Core GPUを搭載し、NVENC, NVDEC, nvJPEG, OpenGL, Vulkan, CUDA, CuDNN, CuBLAS, TensorRTなど各種ライブラリを利用できます。

  • Androidゲームのストリーミング
  • 機械学習の推論
  • 自動運転シミュレーション

などに向いています。

EC2 G5g インスタンスは東京を含む以下のリージョンで利用可能です。

  • 東京
  • ソウル
  • バージニア北部
  • オレゴン

現時点では見当たりませんでしたが、 AWS Deep Learning AMI でも提供されるそうです。

最小スペックは GPUを1基搭載した g5g.xlargeで、 最大スペックは、GPUを2基搭載した g5g.16xlarge とベアメタルのg5g.metal です。

Instance Size GPU vCPU Memory (GiB) Instance Storage Network Bandwidth (Gbps) EBS Bandwidth (Gbps)
g5g.xlarge 1 4 16 EBS-Only Up to 10 Up to 3.5
g5g.2xlarge 1 8 16 EBS-Only Up to 10 Up to 3.5
g5g.4xlarge 1 16 16 EBS-Only Up to 10 Up to 3.5
g5g.8xlarge 1 32 16 EBS-Only 12 9
g5g.16xlarge 2 64 32 EBS-Only 25 19
g5g.metal 2 64 32 EBS-Only 25 19

GPUが異なるので単純な比較はできませんが、バージニア北部でNVIDIA A10を搭載したG5(今月リリースされたばかり)と今回のT4Gを搭載したG5Gのxlargeタイプのオンデマンド単価を比較すると

  • g5.xlarge : $1.006
  • g5g.xlarge : $0.42

と6割も安いです。

Androidゲームストリーミングの例では、30%までコストを抑えられたそうです。

 These instances provide up to 30 percent lower cost per stream per hour for Android game streaming than x86-based GPU instances.

https://aws.amazon.com/blogs/aws/new-amazon-ec2-g5g-instances-powered-by-aws-graviton2-processors-and-nvidia-t4g-tensor-core-gpus/

Ubuntu 18.04 に CUDA をインストールしてみる

Ubuntu 18.04 で最小サイズの G5g.xlarge インスタンスを起動し、公式ドキュメント に従って、CUDA Toolkit 11.5 をインストールしてみます。

$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/sbsa/cuda-ubuntu1804.pin
$ sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/11.5.1/local_installers/cuda-repo-ubuntu1804-11-5-local_11.5.1-495.29.05-1_arm64.deb
$ sudo dpkg -i cuda-repo-ubuntu1804-11-5-local_11.5.1-495.29.05-1_arm64.deb
$ sudo apt-key add /var/cuda-repo-ubuntu1804-11-5-local/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get -y install cuda

ツールキットは /usr/local/{cuda,cuda11,cuda11.5} 以下にインストールされます。

GPU プロセッサに「NVIDIA T4G」の文字を確認できますね。

$ uname -p
aarch64
$ nvidia-smi
Mon Nov 29 20:20:48 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 495.29.05    Driver Version: 495.29.05    CUDA Version: 11.5     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA T4G          On   | 00000000:00:1F.0 Off |                    0 |
| N/A   43C    P8     9W /  70W |      0MiB / 15109MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
$ ls /usr/local/
bin  cuda  cuda-11  cuda-11.5  etc  games  include  lib  man  sbin  share  src

CPU はもちろん Gravition 2 です。

$ lscpu
Architecture:                    aarch64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
CPU(s):                          4
On-line CPU(s) list:             0-3
Thread(s) per core:              1
Core(s) per socket:              4
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       ARM
Model:                           1
Model name:                      Neoverse-N1
Stepping:                        r3p1
BogoMIPS:                        243.75
L1d cache:                       256 KiB
L1i cache:                       256 KiB
L2 cache:                        4 MiB
L3 cache:                        32 MiB
NUMA node0 CPU(s):               0-3
Vulnerability Itlb multihit:     Not affected
Vulnerability L1tf:              Not affected
Vulnerability Mds:               Not affected
Vulnerability Meltdown:          Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:        Mitigation; __user pointer sanitization
Vulnerability Spectre v2:        Not affected
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Not affected
Flags:                           fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp ssbs

最後に

最近は機械学習の広まりにより、AWS利用費に高額なGPU系インスタンスの占める割合が増えています。

コスト削減のためには、スポットインスタンスだけでなく、今後はArmベースのGPUインスタンスの活用も肝になってきそうです。

それでは。

参考