GPUが搭載されたEC2インスタンスのスペックと利用可能なAZを整理してみた

GPUが搭載されたEC2インスタンスのスペックと利用可能なAZを整理してみた

Clock Icon2025.01.18

こんちには。

データ事業本部 インテグレーション部 機械学習チームの中村( @nokomoro3 )です。

今回はAWSで使用可能なGPUインスタンス(g系とp系)についての情報を整理してみました。
インスタンスのスペック、価格(オンデマンド)、利用可能なAZなどを分かるようにしています。

インスタンスのスペック

GPUインスタンスとスペック表になります。
GPUを使う上では通常のvCPU数やメモリ意外に、GPU数、GPUメモリ合計、1GPUあたりのGPUメモリなども重要となります。
実際、分散トレーニングをする上では、並列数を決めたり、分散方式を決めるうえでGPU数や1GPUあたりのGPUメモリを確認する必要があります。

g4dn / g4ad

g4dnはNVIDIA T4 GPUを搭載、g4adはAMD Radeon Pro V520 GPUを搭載しています。

g4dnはカスタムIntel Cascade Lake CPUを搭載し、g4adは第2世代AMD EPYCプロセッサを搭載しています。

インスタンス CPU数 メモリ(GiB) GPU数 GPUメモリ(GiB) 1GPUあたりのGPUメモリ(GiB) GPU名
g4dn.xlarge 4 16 1 16 16 NVIDIA T4
g4dn.2xlarge 8 32 1 16 16 NVIDIA T4
g4dn.4xlarge 16 64 1 16 16 NVIDIA T4
g4dn.8xlarge 32 128 1 16 16 NVIDIA T4
g4dn.12xlarge 48 192 4 64 16 NVIDIA T4
g4dn.16xlarge 64 256 1 16 16 NVIDIA T4
g4dn.metal 96 384 8 128 16 NVIDIA T4
g4ad.xlarge 4 16 1 8 8 AMD Radeon Pro V520
g4ad.2xlarge 8 32 1 8 8 AMD Radeon Pro V520
g4ad.4xlarge 16 64 1 8 8 AMD Radeon Pro V520
g4ad.8xlarge 32 128 2 16 8 AMD Radeon Pro V520
g4ad.16xlarge 64 256 4 32 8 AMD Radeon Pro V520

g5 / g5g

g5はNVIDIA A10G Tensor Core GPUを搭載、g5gはNVIDIA T4G Tensor Core GPUを搭載しています。

g5は第2世代AMD EPYCプロセッサ、g5gはAWS Gravition2プロセッサが搭載されています。

インスタンス CPU数 メモリ(GiB) GPU数 GPUメモリ(GiB) 1GPUあたりのGPUメモリ(GiB) GPU名
g5.xlarge 4 16 1 24 24 NVIDIA A10G
g5.2xlarge 8 32 1 24 24 NVIDIA A10G
g5.4xlarge 16 64 1 24 24 NVIDIA A10G
g5.8xlarge 32 128 1 24 24 NVIDIA A10G
g5.12xlarge 48 192 4 96 24 NVIDIA A10G
g5.16xlarge 64 256 1 24 24 NVIDIA A10G
g5.24xlarge 96 384 4 96 24 NVIDIA A10G
g5.48xlarge 192 768 8 192 24 NVIDIA A10G
g5g.xlarge 4 8 1 16 16 NVIDIA T4G
g5g.2xlarge 8 16 1 16 16 NVIDIA T4G
g5g.4xlarge 16 32 1 16 16 NVIDIA T4G
g5g.8xlarge 32 64 1 16 16 NVIDIA T4G
g5g.16xlarge 64 128 2 32 16 NVIDIA T4G
g5g.metal 64 128 2 32 16 NVIDIA T4G

g6 / gr6 / g6e

g6とgr6はNVIDIA L4 Tensor Core GPUを搭載、g6eはNVIDIA L40S Tensor Core GPUを搭載しています。
g6eは1GPUあたりのGPUメモリがg系のインスタンスの中で最も大きい48GBとなっています。
gr6はg6に対して、CPUに対するメモリが多く搭載されたインスタンスです。

CPUは第3世代のAMD EPYCプロセッサを備えています。

インスタンス CPU数 メモリ(GiB) GPU数 GPUメモリ(GiB) 1GPUあたりのGPUメモリ(GiB) GPU名
g6.xlarge 4 16 1 24 24 NVIDIA L4
g6.2xlarge 8 32 1 24 24 NVIDIA L4
g6.4xlarge 16 64 1 24 24 NVIDIA L4
g6.8xlarge 32 128 1 24 24 NVIDIA L4
g6.12xlarge 48 192 4 96 24 NVIDIA L4
g6.16xlarge 64 256 1 24 24 NVIDIA L4
g6.24xlarge 96 384 4 96 24 NVIDIA L4
g6.48xlarge 192 768 8 192 24 NVIDIA L4
gr6.4xlarge 16 128 1 24 24 NVIDIA L4
gr6.8xlarge 32 256 1 24 24 NVIDIA L4
g6e.xlarge 4 32 1 48 48 NVIDIA L40S
g6e.2xlarge 8 64 1 48 48 NVIDIA L40S
g6e.4xlarge 16 128 1 48 48 NVIDIA L40S
g6e.8xlarge 32 256 1 48 48 NVIDIA L40S
g6e.16xlarge 64 512 1 48 48 NVIDIA L40S
g6e.12xlarge 48 384 4 192 48 NVIDIA L40S
g6e.24xlarge 96 768 4 192 48 NVIDIA L40S
g6e.48xlarge 192 1536 8 384 48 NVIDIA L40S

p2 / p3 / p3dn / p4d / p4de / p5 / p5e / p5en

p系のインスタンスは、ハイエンド向けのGPUが搭載されています。

インスタンス CPU数 メモリ(GiB) GPU数 GPUメモリ(GiB) 1GPUあたりのGPUメモリ(GiB) GPU名
p2.xlarge 4 61 1 12 12 NVIDIA K80
p2.8xlarge 32 488 8 96 12 NVIDIA K80
p2.16xlarge 64 732 16 192 12 NVIDIA K80
p3.2xlarge 8 61 1 16 16 NVIDIA V100
p3.8xlarge 32 244 4 64 16 NVIDIA V100
p3.16xlarge 64 488 8 128 16 NVIDIA V100
p3dn.24xlarge 96 768 8 256 32 NVIDIA V100
p4d.24xlarge 96 1152 8 320 40 NVIDIA A100
p4de.24xlarge 96 1152 8 640 80 NVIDIA A100
p5.48xlarge 192 2000 8 640 80 NVIDIA H100
p5e.48xlarge 192 2000 8 1128 141 NVIDIA H200
p5en.48xlarge 192 2000 8 1128 141 NVIDIA H200

インスタンスの価格

次に、各GPUインスタンスの価格になります。
オンデマンドで1時間あたりと1ヵ月あたりの価格を示しています。

なお基本的にはus-east-1の値を記載しています。
us-east1で使えない p5en.48xlarge は、us-west-2の値を記載しています。

インスタンス オンデマンド料金/hr オンデマンド料金/mo リージョン
g4dn.xlarge 0.526 15.78 us-east-1
g4dn.2xlarge 0.752 22.56 us-east-1
g4dn.4xlarge 1.204 36.12 us-east-1
g4dn.8xlarge 2.176 65.28 us-east-1
g4dn.12xlarge 3.912 117.36 us-east-1
g4dn.16xlarge 4.352 130.56 us-east-1
g4dn.metal 7.824 234.72 us-east-1
g4ad.xlarge 0.379 11.36 us-east-1
g4ad.2xlarge 0.541 16.24 us-east-1
g4ad.4xlarge 0.867 26.01 us-east-1
g4ad.8xlarge 1.734 52.02 us-east-1
g4ad.16xlarge 3.468 104.04 us-east-1
g5.xlarge 1.006 30.18 us-east-1
g5.2xlarge 1.212 36.36 us-east-1
g5.4xlarge 1.624 48.72 us-east-1
g5.8xlarge 2.448 73.44 us-east-1
g5.12xlarge 5.672 170.16 us-east-1
g5.16xlarge 4.096 122.88 us-east-1
g5.24xlarge 8.144 244.32 us-east-1
g5.48xlarge 16.288 488.64 us-east-1
g5g.xlarge 0.420 12.60 us-east-1
g5g.2xlarge 0.556 16.68 us-east-1
g5g.4xlarge 0.828 24.84 us-east-1
g5g.8xlarge 1.372 41.16 us-east-1
g5g.16xlarge 2.744 82.32 us-east-1
g5g.metal 2.744 82.32 us-east-1
g6.xlarge 0.805 24.14 us-east-1
g6.2xlarge 0.978 29.33 us-east-1
g6.4xlarge 1.323 39.70 us-east-1
g6.8xlarge 2.014 60.43 us-east-1
g6.12xlarge 4.602 138.05 us-east-1
g6.16xlarge 3.397 101.90 us-east-1
g6.24xlarge 6.675 200.26 us-east-1
g6.48xlarge 13.350 400.51 us-east-1
gr6.4xlarge 1.539 46.18 us-east-1
gr6.8xlarge 2.446 73.39 us-east-1
g6e.xlarge 1.861 55.83 us-east-1
g6e.2xlarge 2.242 67.26 us-east-1
g6e.4xlarge 3.004 90.13 us-east-1
g6e.8xlarge 4.529 135.86 us-east-1
g6e.16xlarge 10.493 314.78 us-east-1
g6e.12xlarge 7.577 227.32 us-east-1
g6e.24xlarge 15.066 451.97 us-east-1
g6e.48xlarge 30.131 903.94 us-east-1
p2.xlarge 0.900 27.00 us-east-1
p2.8xlarge 7.200 216.00 us-east-1
p2.16xlarge 14.400 432.00 us-east-1
p3.2xlarge 3.060 91.80 us-east-1
p3.8xlarge 12.240 367.20 us-east-1
p3.16xlarge 24.480 734.40 us-east-1
p3dn.24xlarge 31.212 936.36 us-east-1
p4d.24xlarge 32.773 983.18 us-east-1
p4de.24xlarge 40.966 1228.97 us-east-1
p5.48xlarge 98.320 2949.60 us-east-1
p5e.48xlarge - - -
p5en.48xlarge 84.800 2544.00 us-west-2

また p5e.48xlarge はEC2 Capacity Blocks for ML pricingを使う必要があるため、今回記載していません。
詳細はEC2 Capacity Blocks for ML pricingのページをご覧ください。

利用可能なAZ

以下の5つのリージョンでこちらは確認いたしました。またInstanceFamily内では異ならないため、InstanceFamilyごとに記載しています。

  • us-east-1(バージニア)
  • us-west-2(オレゴン)
  • us-east-2(オハイオ)
  • ap-northeast-1(東京)
  • ap-northeast-3(大阪)

us-east-1(バージニア)

us-east-1eとus-east-1fは使用できるインスタンスが限られているので注意が必要です。
p5はus-east-1fでのみ利用可能となっていますが、p5eとp5enはこのリージョンはまだ利用できないようです。

InstanceFamily us-east-1a us-east-1b us-east-1c us-east-1d us-east-1e us-east-1f
g4ad 1 1 1 1
g4dn 1 1 1 1 1
g5 1 1 1 1 1
g5g 1 1 1 1
g6 1 1 1 1
g6e 1 1 1 1
gr6 1 1 1 1
p2 1 1 1 1 1
p3 1 1 1 1
p3dn 1 1
p4d 1 1 1
p5 1
p5e
p5en

us-west-2(オレゴン)

us-west-2dは使用できるインスタンスが限られているので注意が必要です。
p5enはus-west-2bとus-west-2dでのみ利用可能となっていますが、p5eはまだ利用できないようです。

InstanceFamily us-west-1a us-west-1b us-west-2a us-west-2b us-west-2c us-west-2d
g4ad 1 1 1
g4dn 1 1 1 1 1
g5 1 1 1
g5g 1 1 1
g6 1 1 1
g6e 1 1 1 1
gr6 1 1 1
p2 1 1 1
p3 1 1 1
p3dn 1 1
p4d 1 1 1
p5 1 1 1 1 1
p5e
p5en 1 1

us-east-2(オハイオ)

p5、p5e、p5enともに利用できるAZがありますが、g5gとp3はこのリージョンでは利用できないようです。

InstanceFamily us-east-2a us-east-2b us-east-2c
g4ad 1 1 1
g4dn 1 1 1
g5 1 1 1
g5g
g6 1 1 1
g6e 1 1 1
gr6 1 1 1
p2 1 1 1
p3 1 1
p3dn
p4d 1 1
p5 1 1
p5e 1
p5en 1 1 1

ap-northeast-1(東京)

ap-northeast-1dは使用できるインスタンスが限られているので注意が必要です。
p5enはap-northeast-1aでのみ利用可能となっていますが、p5eはまだ利用できないようです。

InstanceFamily ap-northeast-1a ap-northeast-1c ap-northeast-1d
g4ad 1 1 1
g4dn 1 1 1
g5 1 1
g5g 1 1
g6 1 1
g6e 1 1
gr6 1 1
p2 1 1
p3 1 1
p3dn 1
p4d 1
p5 1 1
p5e
p5en 1

ap-northeast-3(大阪)

g4dnのみが利用可能となっており、対応AZもap-northeast-3bとap-northeast-3cのみとなっています。

InstanceFamily ap-northeast-3a ap-northeast-3b ap-northeast-3c
g4ad
g4dn 1 1
g5
g5g
g6
g6e
gr6
p2
p3
p3dn
p4d
p5
p5e
p5en

ご参考:使用したコード

import boto3
import polars as pl

# 使用するAWSプロファイル名
profile_name = "your_profile_name"

# 対象リージョンをリストで指定
regions = [
    "ap-northeast-1",
    "ap-northeast-3",
    "us-east-1",
    "us-east-2",
    "us-west-1",
    "us-west-2",
]

# プロファイルを指定してセッションを作成
session = boto3.Session(profile_name=profile_name)

data = []

# EC2クライアントを作成してデータを収集
for region in regions:
    ec2 = session.client("ec2", region_name=region)
    paginator = ec2.get_paginator("describe_instance_type_offerings")
    for page in paginator.paginate(LocationType="availability-zone"):
        for offering in page["InstanceTypeOfferings"]:
            offering["Region"] = region  # リージョン情報を追加
            data.append(offering)

# Polarsのデータフレームに変換
df = pl.DataFrame(data)

df\
    .sort(by="Location")\
    .with_columns(
        pl.col("InstanceType").str.split(".").list.first().alias("InstanceFamily")
        , pl.lit(1).alias("IsAvailable")
    ).select([
        pl.exclude(["LocationType", "Region", "InstanceType"])
    ])\
    .unique()\
    .sort(by=["Location"])\
    .pivot(on="Location", index="InstanceFamily")\
    .sort(by=["InstanceFamily"])\
    .filter(
            (pl.col("InstanceFamily").str.starts_with("g"))
            | (pl.col("InstanceFamily").str.starts_with("p"))
            | (pl.col("InstanceFamily").str.starts_with("inf"))
            | (pl.col("InstanceFamily").str.starts_with("trn"))
    )\
    .write_csv("available-instance-per-region.csv")

まとめ

いかがでしたでしょうか。

本記事がAWSでGPUインスタンスを使用される方のご参考になれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.