Skip to content
Published on

[仮想化] 05. AWS EC2とNitroシステム: クラウド仮想化の進化

Authors

はじめに

AWS EC2(Elastic Compute Cloud)は世界最大のクラウド仮想化プラットフォームです。その中核にはAWSが自社開発したNitroシステムがあります。Nitroは従来のハイパーバイザーの限界を克服し、I/O処理を専用ハードウェアにオフロードすることで、ほぼすべてのホストリソースをインスタンスに提供します。

AWS Nitroシステムアーキテクチャ

従来の仮想化 vs Nitro

[従来の仮想化]                       [AWS Nitro]

+------------------+                 +------------------+
|    VM 1 | VM 2   |                 |    VM 1 | VM 2   |
+------------------+                 +------------------+
| Hypervisor       |                 | Nitro Hypervisor |
| - CPU/Mem管理    |                 | (軽量、CPU/Memのみ)|
| - ネットワーク処理|                 +------------------+
| - ストレージ処理  |                 | Nitro Cards      |
| - セキュリティ/管理|                | (専用HWが処理)   |
+------------------+                 +--+--+--+---------+
|   Hardware       |                 |NIC|EBS|Mgmt|Security
+------------------+                 +--+--+--+---------+
                                     |   Hardware       |
ホストCPUの30%を                     +------------------+
ハイパーバイザーが消費               ホストCPUほぼ100%を
                                     インスタンスに提供

Nitroシステムコンポーネント

+----------------------------------------------------------+
|                    AWS Nitro System                        |
+----------------------------------------------------------+
|                                                            |
|  +------------------+  +------------------------------+   |
|  | Nitro Hypervisor |  |       Nitro Cards            |   |
|  | - 軽量KVMベース   |  | +--------+ +--------+       |   |
|  | - CPU/メモリ      |  | | VPC    | | EBS    |       |   |
|  |   分離のみ担当    |  | | Card   | | Card   |       |   |
|  +------------------+  | +--------+ +--------+       |   |
|                         | +--------+ +--------+       |   |
|  +------------------+  | | NVMe   | | Mgmt   |       |   |
|  | Nitro Security   |  | | Card   | | Card   |       |   |
|  | Chip             |  | +--------+ +--------+       |   |
|  | - HW Root of Trust|  +------------------------------+   |
|  | - ファームウェア保護|                                    |
|  +------------------+  +------------------------------+   |
|                         | Nitro Enclaves               |   |
|                         | - 隔離されたコンピュート環境  |   |
|                         | - 機密データ処理              |   |
|                         +------------------------------+   |
+----------------------------------------------------------+

1. Nitro Hypervisor

  • 軽量KVMベース: CPUとメモリの分離のみ担当
  • ネットワーク、ストレージ、管理機能はすべてNitro Cardsにオフロード
  • ホストCPU/メモリのほぼ100%をインスタンスに提供
  • ソフトウェア攻撃面(attack surface)を最小化

2. Nitro Cards

専用ASICで製造されたハードウェアカードです。

Nitro Card役割
VPC Card仮想ネットワーク処理(VPC、SG、NACL、EFA)
EBS CardEBSボリュームI/O処理、暗号化、NVMeプロトコル
Local NVMe CardインスタンスストアNVMe SSD管理
Management Cardインスタンスモニタリング、ブート、セキュリティ管理

3. Nitro Security Chip

[Nitro Security Chain]

サーバーブート
    |
    v
Nitro Security Chip (HW Root of Trust)
    |
    v  ファームウェア整合性検証
    |
Nitro Hypervisorロード
    |
    v  ハイパーバイザー整合性検証
    |
EC2インスタンス起動
    |
    v  ランタイムモニタリング(継続)
  • ハードウェアベースのRoot of Trust
  • サーバーファームウェアの整合性をブート毎に検証
  • AWS社員でもインスタンスメモリにアクセス不可
  • NitroTPMでインスタンスレベルTPM 2.0を提供

4. Nitro Enclaves

隔離されたコンピュート環境で、機密データを処理します。

+-------------------------------------+
|           EC2 Instance              |
|  +-------------+  +-------------+  |
|  | Application |  | Nitro       |  |
|  | (一般処理)  |  | Enclave     |  |
|  |             |  | (隔離環境)  |  |
|  |             |  | - 独自カーネル|  |
|  |             |  | - ネットワークX|  |
|  |             |  | - ストレージX |  |
|  |             |  | - vsock通信  |  |
|  +-------------+  +-------------+  |
+-------------------------------------+
  • 親インスタンスからもEnclaveメモリにアクセス不可
  • ネットワーク、ストレージアクセスなし(vsockのみで通信)
  • 暗号化証明(Attestation)で整合性を検証
  • 用途:暗号化キー管理、金融データ、医療情報処理

GPUインスタンスタイプ

P-シリーズ(Training/HPC)

インスタンスGPUGPU数GPUメモリvCPUメモリネットワーク
p5.48xlargeH1008640GB HBM31922TB3,200 Gbps EFA
p5e.48xlargeH20081,128GB HBM3e1922TB3,200 Gbps EFA
p5en.48xlargeH20081,128GB HBM3e1922TB3,200 Gbps EFAv2
p4d.24xlargeA1008320GB HBM2e961.1TB400 Gbps EFA
p4de.24xlargeA100 80G8640GB HBM2e961.1TB400 Gbps EFA

G-シリーズ(Inference/Graphics)

インスタンスGPUGPU数GPUメモリvCPUメモリネットワーク
g6.xlarge-48xlL41-824-192GB4-19216-768GB最大100 Gbps
g6e.xlarge-48xlL40S1-848-384GB4-19216-768GB最大100 Gbps
g5.xlarge-48xlA10G1-824-192GB4-19216-768GB最大100 Gbps

GPUプロビジョニング方式

AWSはNitroシステムを通じてGPUをパススルーモードで提供します。

[AWS GPU Passthrough via Nitro]

+------------------+
|   EC2 Instance   |
|  (GPU Driver)    |
+------------------+
|  Nitro Hypervisor|
|  (CPU/Mem分離)   |
+------------------+
|  Nitro VPC Card  |  Nitro EBS Card  |  Nitro Mgmt Card
+------------------+------------------+-----------------+
|                Physical Server                         |
|  CPU | RAM | GPU (Direct Passthrough) | NVMe           |
+-------------------------------------------------------+
  • GPUはインスタンスに直接割当(vGPUではない)
  • ベアメタルと同等のGPU性能
  • CUDA、cuDNN、NCCLなどネイティブGPUスタック全体が利用可能
  • MIGはユーザーがインスタンス内で直接設定可能(A100/H100)

EC2ネットワーキング

EFA (Elastic Fabric Adapter)

[EFAアーキテクチャ]

+----------+  +----------+  +----------+  +----------+
| Instance |  | Instance |  | Instance |  | Instance |
| GPU x8   |  | GPU x8   |  | GPU x8   |  | GPU x8   |
+----+-----+  +----+-----+  +----+-----+  +----+-----+
     |              |              |              |
+----+--------------+--------------+--------------+----+
|              EFA Network (RDMA-like)                  |
|         (OS bypass, low-latency, high-bandwidth)      |
+------------------------------------------------------+
機能説明
OS Bypassカーネルをバイパスした直接NICアクセス
帯域幅P5: 3,200 Gbps、P4d: 400 Gbps
NCCLサポートGPU間直接通信(All-reduceなど)
GDR (GPUDirect RDMA)GPUメモリから直接ネットワーク転送
SRDプロトコルScalable Reliable Datagram
[GPUDirect RDMAパス]

通常パス:          GPU -> CPU Memory -> NIC -> Network
GPUDirect RDMA:   GPU -> NIC -> Network  (CPUバイパス)

Placement Groups

GPUクラスタのネットワーク性能を最適化します。

[Cluster Placement Group]

+---------------------------------------------------+
|  Same AZ, Same Rack (or Adjacent Racks)           |
|                                                    |
|  +--------+  +--------+  +--------+  +--------+  |
|  | p5.48xl|  | p5.48xl|  | p5.48xl|  | p5.48xl|  |
|  | 8xH100 |  | 8xH100 |  | 8xH100 |  | 8xH100 |  |
|  +--------+  +--------+  +--------+  +--------+  |
|                                                    |
|  --> 最小ネットワーク遅延、最大帯域幅             |
|  --> 大規模分散学習に必須                         |
+---------------------------------------------------+
Placement Groupタイプ説明用途
Cluster同じAZに密集配置分散GPU学習、HPC
Spread異なるラックに分散高可用性
Partitionパーティション別に別ラック大規模分散システム

Elastic Graphics (Deprecated)

Elastic Graphicsは EC2インスタンスにリモートGPUをネットワーク経由で接続するサービスでした。

  • 2024年に公式廃止(deprecated)
  • 限定的なOpenGLサポートのみ提供
  • 代替手段:G-シリーズインスタンスまたはNICE DCVプロトコル

オンプレミスGPU仮想化との比較

項目AWS EC2 (Nitro)オンプレミス (ESXi/KVM)
GPU割当方式パススルー(Nitro)パススルー、vGPU、MIG選択可
GPU共有インスタンス単位独占vGPUで複数VM共有可能
ネットワークEFA(最大3,200 Gbps)InfiniBand(最大400 Gbps/ポート)
GPU種類変更インスタンスタイプ変更で即時物理GPU交換が必要
スケーラビリティ数百GPUを分単位でプロビジョニング週〜月単位の調達
コストモデル使った分だけ(秒単位)CAPEX + メンテナンス
MIGサポートユーザーがインスタンス内で直接設定ハイパーバイザーレベルで管理
マルチテナンシーNitro HWによるインスタンス間分離vGPU/MIGで論理的分離

EC2インスタンス選択ガイド

[GPUインスタンス選択フローチャート]

用途は何ですか?
  |
  +-- AI/ML学習 --> モデルサイズは?
  |                   |
  |                   +-- 大規模LLM --> P5 (H100/H200)
  |                   |                8 GPU、EFA 3200Gbps
  |                   |
  |                   +-- 中規模 --> P4d (A100)
  |                                   8 GPU、EFA 400Gbps
  |
  +-- 推論(Inference) --> スループットは?
  |                          |
  |                          +-- 高スループット --> G6e (L40S)
  |                          |                    最大8 GPU
  |                          |
  |                          +-- コスト効率 --> G6 (L4)
  |                                              最大8 GPU
  |
  +-- グラフィックス/レンダリング --> G5 (A10G)
  |                                   3Dレンダリング、映像処理
  |
  +-- 開発/プロトタイプ --> G6.xlarge (L4 x1)
                            最も安価なGPUオプション

実践: EC2 GPUインスタンスセットアップ

# AWS CLIでGPUインスタンスを起動
aws ec2 run-instances \
  --instance-type p4d.24xlarge \
  --image-id ami-0abcdef1234567890 \
  --key-name my-key \
  --security-group-ids sg-12345678 \
  --subnet-id subnet-12345678 \
  --placement "GroupName=my-gpu-cluster,Tenancy=default" \
  --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=gpu-training}]'

# EFAネットワークインターフェースの追加
aws ec2 create-network-interface \
  --subnet-id subnet-12345678 \
  --interface-type efa \
  --groups sg-12345678

# GPU状態確認(インスタンス内)
nvidia-smi

# MIG有効化(A100/H100インスタンスで)
sudo nvidia-smi -i 0 --mig 1
# 再起動後
sudo nvidia-smi mig -cgi 9,9 -C

# NCCLテスト(マルチノード)
# All-reduceベンチマークでGPU間通信を測定
mpirun -np 16 --hostfile hosts \
  -x NCCL_DEBUG=INFO \
  -x FI_PROVIDER=efa \
  -x FI_EFA_USE_DEVICE_RDMA=1 \
  all_reduce_perf -b 8 -e 1G -f 2 -g 8

Nitroシステムの革新ポイント

[革新の核心: I/Oオフローディング]

Before Nitro:
  Host CPU:  [==VM==][==VM==][===Hypervisor I/O===]
                                    ~30%消費

After Nitro:
  Host CPU:  [========VM========][========VM========]
  Nitro HW:  [Net][EBS][NVMe][Mgmt][Security]
                  ~100% VMに提供
  1. I/Oハードウェアオフロード: ネットワーク、ストレージ、管理を専用チップで処理
  2. セキュリティ分離: ハードウェアレベルのRoot of Trustとメモリ分離
  3. ベアメタル性能: 仮想化オーバーヘッドほぼゼロ
  4. 一貫した性能: I/O処理がCPUと独立しているため「ノイジーネイバー」問題を最小化
  5. 迅速なイノベーション: ハードウェアコンポーネントを独立してアップデート可能

クイズ: AWS EC2/Nitro理解度チェック

Q1. Nitroシステムが従来のハイパーバイザーに対して持つ核心的な利点は?

ネットワーク、ストレージ、管理機能を専用Nitro Cards(ASIC)にオフロードし、ホストCPU/メモリのほぼ100%をインスタンスに提供します。従来のハイパーバイザーはこれらをソフトウェアで処理し、ホストリソースの約30%を消費していました。

Q2. AWS EC2でGPUを割り当てる方式は?

パススルー方式です。Nitroシステムにより物理GPUをインスタンスに直接割り当てるため、ベアメタルと同等の性能を提供します。vGPU方式の共有は使用しません。

Q3. EFA(Elastic Fabric Adapter)が通常のネットワークと異なる点は?

EFAはOSバイパスによりカーネルを迂回してNICに直接アクセスします。RDMAに似た低遅延・高帯域幅通信を提供し、GPUDirect RDMAでGPUメモリから直接ネットワーク転送が可能です。

Q4. Nitro Enclavesのセキュリティモデルは?

親インスタンスからもEnclaveのメモリにアクセスできません。ネットワークとストレージへのアクセスがなく、vsockを通じてのみ通信します。暗号化証明(Attestation)でEnclaveの整合性を検証できます。

Q5. Cluster Placement Groupが分散GPU学習に重要な理由は?

同じAZの隣接ラックにインスタンスを密集配置してネットワーク遅延を最小化し帯域幅を最大化します。分散学習ではGPU間通信(All-reduceなど)が頻繁に行われるため、ネットワーク性能が学習速度に直接影響します。