Skip to content
Published on

AI向けGPUハードウェア完全ガイド:アーキテクチャから選定基準まで

Authors

はじめに

GPUはAIと深層学習の爆発的な成長を支える不可欠な原動力です。GPT-4、Llama 3、GeminiのようなLLMの学習には、何千ものGPUが数週間から数ヶ月稼働し続けます。GPUがなぜAIにとってこれほど重要なのでしょうか?そして、どのGPUを選ぶべきでしょうか?

このガイドでは、AIエンジニア、研究者、ML実践者向けにGPUハードウェアについて、アーキテクチャの基礎から最新のBlackwell GPU、クラウドサービスの比較、実践的な選定ガイダンスまで、あらゆることを網羅します。


1. GPU vs CPU:AI学習にGPUが必要な理由

並列コンピューティング:AIの本質

深層学習の中核演算は行列乗算です。ニューラルネットワークのフォワードパスとバックワードパスは、数十億回の乗算と加算で構成されます。これらの演算は互いに独立しているため、並列化に完全に適しています。

CPUは高性能なシリアル処理に最適化されています。典型的なサーバーCPUは64〜128コアを搭載し、各コアに複雑な制御ロジック、大容量キャッシュ、分岐予測を備えています。これはシーケンシャルなタスク、複雑な条件分岐、OSの管理に優れています。

一方でGPUは、数千から数万の小さなコアがSIMD(Single Instruction, Multiple Data)方式で同時に同じ演算を実行します。NVIDIA H100には驚異の16,896個のCUDAコアがあります。行列乗算のように同じ演算を繰り返すワークロードでは、GPUはCPUの数百倍のスループットを発揮できます。

FLOPS:計算性能の尺度

深層学習の性能議論で最も一般的に使われる単位はFLOPS(Floating Point Operations Per Second)です。

  • TFLOPS(テラフロップス):1秒間に1兆回の浮動小数点演算
  • PFLOPS(ペタフロップス):1秒間に1000兆回の浮動小数点演算

現代のAIワークロードは主に以下の精度を使用します:

  • FP32(単精度浮動小数点):学習時のマスター重みの保存
  • FP16(半精度浮動小数点):混合精度学習
  • BF16(Brain Float 16):FP16より安定した学習
  • TF32(TensorFloat-32):NVIDIA A100以降でサポート
  • FP8:HopperとBlackwellでサポート、推論と学習の両方に使用
  • FP4:Blackwellで新たにサポート、超高密度推論

NVIDIA H100のFP16 Tensor Core性能は驚異の989 TFLOPSに達します——ほぼ1 PFLOPSです。

メモリ帯域幅:真のボトルネック

多くのAIワークロードは計算ではなくメモリ帯域幅によって制限されます——これをメモリバウンドと呼びます。

LLM(大規模言語モデル)の推論を例に挙げると:トークンを生成するたびに、フルモデルの重みをメモリから読み取る必要があります。FP16でのLlama 3 70Bモデルは約140GBのメモリを消費します。毎秒数十トークンを生成するには、毎秒テラバイト単位でメモリから読み取る必要があります。

最新のGPUメモリ帯域幅:

  • NVIDIA A100 SXM:2,000 GB/s
  • NVIDIA H100 SXM:3,350 GB/s
  • NVIDIA H200 SXM:4,800 GB/s
  • NVIDIA B200:8,000 GB/s(予定)

これがデータセンターGPUでHBM(High Bandwidth Memory)が採用されている理由です。HBMは従来のGDDRメモリよりはるかに高い帯域幅を提供します。


2. NVIDIA GPUアーキテクチャの歴史

Pascalアーキテクチャ(2016年):AIルネサンスの幕開け

エンジニアのBlaise Pascalにちなんで名付けられたPascalアーキテクチャは2016年にリリースされました。GTX 1080(コンシューマー向け)とP100(データセンター向け)がこのアーキテクチャを採用しました。

P100の主要スペック:

  • CUDAコア数:3,584
  • FP32性能:9.3 TFLOPS
  • FP16性能:18.7 TFLOPS
  • メモリ:16GB HBM2、720 GB/s

P100はHBM2メモリを採用した最初のデータセンターGPUです。この時代にNVLink 1.0も導入されました。AlphaGoが李世乭を破った頃で、AIブームが本格的に始まりました。

Voltaアーキテクチャ(2017年):Tensor Coreの登場

VoltaアーキテクチャはGPUの歴史における転換点です。2017年にリリースされたV100は世界で初めてTensor Coreを導入しました。Tensor Coreは行列乗算を高速化する専用ハードウェアユニットです。

V100の主要スペック:

  • CUDAコア数:5,120
  • 第1世代Tensor Core:640
  • FP32性能:14 TFLOPS
  • FP16 Tensor Core性能:112 TFLOPS(8倍の向上!)
  • メモリ:32GB HBM2、900 GB/s
  • NVLink 2.0:300 GB/s

単一のTensor CoreはFP16の4x4行列乗算累積(D = A*B + C)を1サイクルで実行します。これによりFP16性能がFP32比で8倍に向上し、深層学習の学習速度に革命をもたらしました。

Turingアーキテクチャ(2018年):RT CoreとDLSS

Turingアーキテクチャはコンシューマー向けRTXシリーズで有名です。RT Core(専用レイトレーシングユニット)が初めて登場し、AIベースの画像アップスケーリングであるDLSSも導入されました。

RTX 2080 Tiの主要スペック:

  • CUDAコア数:4,352
  • Tensor Core:544(第2世代)
  • FP32性能:13.4 TFLOPS
  • FP16 Tensor Core:107 TFLOPS
  • メモリ:11GB GDDR6、616 GB/s

AI観点からのTuringの意義は、INT8量子化推論のサポートです。推論サーバーのモデルをINT8に量子化することで、FP16と比べて2倍高速な推論が実現しました。

Ampereアーキテクチャ(2020年):A100と第3世代Tensor Core

Ampereアーキテクチャはパラダイムを再び変えました。A100は現在も多くのデータセンターで主力GPUとして活躍しています。

A100 SXM4 80GBの主要スペック:

  • CUDAコア数:6,912
  • 第3世代Tensor Core:432
  • FP32性能:19.5 TFLOPS
  • FP16 Tensor Core:312 TFLOPS
  • TF32 Tensor Core:156 TFLOPS
  • BF16 Tensor Core:312 TFLOPS
  • INT8 Tensor Core:624 TOPS
  • メモリ:80GB HBM2e、2,000 GB/s
  • NVLink 3.0:600 GB/s

Ampereの主要なイノベーション:

TF32(TensorFloat-32):FP32とFP16のハイブリッド。指数部はFP32と同じ(8ビット)、仮数部はFP16と同じ(10ビット)。既存のFP32コードを変更することなくTensor Coreの速度を利用できます——数値的安定性と速度のバランスをとります。

スパース性サポート:A100はハードウェアで2:4構造化スパース性をサポートします。モデルパラメータの50%をゼロに設定する(プルーニング)と、Tensor Coreがこれを活用してさらに2倍の性能向上を得られます。INT8では理論上最大1,248 TOPSに達します。

Multi-Instance GPU(MIG):A100は最大7つの独立したGPUインスタンスに分割できます。推論サーバーで分離された環境で複数の小規模モデルを実行するのに便利です。

Hopperアーキテクチャ(2022年):Transformer Engine

Hopperアーキテクチャはトランスフォーマーモデルに特化したイノベーションをもたらしました。H100は現在最も広く普及している高性能AI学習GPUです。

H100 SXM5 80GBの主要スペック:

  • CUDAコア数:16,896
  • 第4世代Tensor Core:528
  • FP32性能:60 TFLOPS
  • FP16/BF16 Tensor Core:989 TFLOPS(約1 PFLOPS!)
  • FP8 Tensor Core:1,979 TFLOPS(約2 PFLOPS)
  • メモリ:80GB HBM3、3,350 GB/s
  • NVLink 4.0:900 GB/s
  • TDP:700W

Hopperの主要なイノベーション:

Transformer Engine:トランスフォーマーモデルのアテンションおよびMLPレイヤーに対するハードウェアレベルの最適化。レイヤーごとにFP8とFP16を自動で切り替えます。リリース時にA100比最大9倍のAI性能を実現。

FP8サポート:E4M3とE5M2のFP8フォーマットをサポート。FP16比でTensor Core性能が2倍。メモリ使用量は半分。

Thread Block Clusters:SM(Streaming Multiprocessor)同士が共有メモリのように通信できます。分散共有メモリが可能になります。

NVLink 4.0:900 GB/s、前世代比1.5倍の向上。最大8 GPUのフルメッシュ接続。

H200 SXM 141GBの主要スペック:

  • 計算性能:H100と同等
  • メモリ:141GB HBM3e(H100比76%増)
  • 帯域幅:4,800 GB/s(H100比43%増)
  • LLM推論のスループットがH100比最大2倍
  • 大規模モデル(70B以上のLLM)をシングルGPUに搭載可能

Blackwellアーキテクチャ(2024年):次世代AI加速

2024年に発表されたBlackwellアーキテクチャは、NVIDIAの最新世代です。

B200 SXMの主要スペック:

  • 計算性能:20 PFLOPS(FP4)
  • FP8性能:9 PFLOPS
  • メモリ:192GB HBM3e、8,000 GB/s
  • NVLink 5.0:1,800 GB/s

Blackwellの主要なイノベーション:

FP4サポート:4ビット浮動小数点のサポートにより超高密度推論が可能——FP8比で2倍以上のスループット。

第2世代Transformer Engine:FP4やFP6を含む新しい精度フォーマットを自動管理。

NVLink 5.0:1,800 GB/s、前世代比2倍の向上。

GB200 NVL72:36基のGrace CPUと72基のB200 GPUを単一のラックスケールシステムに統合。すべてのGPUがNVLinkで接続され、1台の巨大なGPUとして機能。1.4 ExaFLOPS(FP4)を達成。


3. Tensor Coreの深掘り

CUDAコア vs Tensor Core

CUDAコアは汎用の浮動小数点実行ユニットです。1クロックサイクルあたり1回のFP32 FMA(Fused Multiply-Add)演算を処理します。

Tensor Coreは専用の行列乗算ユニットです。第1世代のTensor Coreは1クロックサイクルで4x4 FP16行列乗算累積(D = A * B + C)を実行します。これはFP16の乗算64回とFP16の加算64回——1サイクルあたり128回のFP16演算に相当します。

世代別Tensor Coreの進化:

世代アーキテクチャサポート精度行列サイズ備考
第1世代VoltaFP164x4最初のTensor Core
第2世代TuringFP16、INT8、INT4-INTサポート追加
第3世代AmpereFP16、BF16、TF32、INT8、INT4-TF32、スパース性
第4世代HopperFP16、BF16、TF32、FP8、INT8-FP8、Transformer Engine
第5世代BlackwellFP16、BF16、TF32、FP8、FP4-FP4サポート

WMMA(Warp Matrix Multiply-Accumulate)

CUDAプログラミングでTensor Coreを直接使用するには、WMMA APIを使います:

#include <mma.h>
using namespace nvcuda::wmma;

// 16x16x16 FP16行列乗算
fragment<matrix_a, 16, 16, 16, half, row_major> a_frag;
fragment<matrix_b, 16, 16, 16, half, col_major> b_frag;
fragment<accumulator, 16, 16, 16, float> c_frag;

fill_fragment(c_frag, 0.0f);

// 行列のロード
load_matrix_sync(a_frag, a_ptr, 16);
load_matrix_sync(b_frag, b_ptr, 16);

// Tensor Core乗算の実行
mma_sync(c_frag, a_frag, b_frag, c_frag);

// 結果の保存
store_matrix_sync(c_ptr, c_frag, 16, mem_row_major);

実際にはcuBLASとPyTorchがこれを自動的に処理します。

混合精度学習

混合精度学習はFP32のマスター重みを維持しながら、フォワード/バックワードパスをFP16またはBF16で実行します。

# PyTorch AMP(Automatic Mixed Precision)
from torch.cuda.amp import autocast, GradScaler

scaler = GradScaler()

for batch in dataloader:
    with autocast(dtype=torch.bfloat16):
        output = model(batch)
        loss = criterion(output, target)

    scaler.scale(loss).backward()
    scaler.step(optimizer)
    scaler.update()

BF16はFP16より学習安定性が高いです。FP16の5ビット指数は範囲が狭くオーバーフローの可能性がありますが、BF16の8ビット指数(FP32と同じ)はずっと広い範囲を表現できます。

スパース性サポート

A100以降でサポートされる2:4構造化スパース性は、パラメータを4つのグループに分けて、そのうち正確に2つをゼロに設定します。

# PyTorch Sparse Tensor Core
from torch.nn.utils import prune

# 2:4構造化プルーニングの適用
prune.ln_structured(model.layer, name='weight', amount=0.5, n=2, dim=0)

50%プルーニング後、同じモデルの推論速度が理論上2倍になります。


4. GPUメモリ階層

GDDR vs HBM:ゲームチェンジャー

GDDR6(Graphics DDR6):コンシューマー向けGPUに使用。パッケージ外に別チップとして搭載。RTX 4090:24GB GDDR6X、1,008 GB/s。

HBM2e(High Bandwidth Memory 2e):データセンターGPUに使用。シリコンインターポーザーで接続し、2.5Dパッケージングでわずか。A100:80GB HBM2e、2,000 GB/s。

HBM3:H100に搭載。80GB、3,350 GB/s。

HBM3e:H200に搭載。141GB、4,800 GB/s。B200にも搭載:192GB、8,000 GB/s。

HBMがなぜ高速なのか?HBMは複数のDRAMダイを垂直に積層し、シリコンインターポーザー上に配置されたGPUダイとHBMスタックが超短距離で超広帯域幅通信を行います。

メモリ階層構造

レジスタ(Register File)
    └── 最高速;スレッドあたり数十〜数百個
L1キャッシュ / 共有メモリ
    └── SM(Streaming Multiprocessor)内で共有
    └── H100SMあたり228KB
L2キャッシュ
    └── 全SMで共有
    └── H100:50MB
HBM(メインメモリ)
    └── 全SMからアクセス可能
    └── H100:80GB

カーネル最適化の鍵は、データをできる限り長く共有メモリに保持して、低速なHBMアクセスを最小化することです。Flash Attentionはこの原則をアテンション計算に適用した好例です。

ECCメモリ

ECC(Error-Correcting Code)メモリはビットエラーを検出・訂正します。データセンターGPU(A100、H100など)はECCをサポートします。コンシューマーGPU(RTX 4090)はサポートしません。

長時間の学習中のメモリエラーは学習の発散やNaN値を引き起こす可能性があります。重要な学習ジョブにはECC対応GPUを推奨します。ECCを有効にすると使用可能なメモリ容量が約6.25%減少します。


5. マルチGPU接続:NVLinkとNVSwitch

PCIeのボトルネック

標準のPCIe 4.0 x16スロットは最大32 GB/s(双方向で64 GB/s)の帯域幅を提供します。マルチGPU学習では、勾配同期がこのインターフェースのボトルネックになります。

4つのGPUでAll-Reduceを考えてみましょう:各GPUは他の3つと勾配を交換する必要があります。10Bパラメータモデルは約40GBのFP32勾配を持ちます。PCIe経由でこれを交換すると数十秒かかる場合があります。

NVLinkの進化

バージョンアーキテクチャ単方向BW双方向BW
1.0Pascal20 GB/s40 GB/s
2.0Volta25 GB/s50 GB/s
3.0Ampere25 GB/s50 GB/s(合計600 GB/s)
4.0Hopper50 GB/s900 GB/s
5.0Blackwell100 GB/s1,800 GB/s

NVLink 4.0はGPUペア間で最大900 GB/sの双方向帯域幅を提供——PCIe 4.0 x16の14倍以上高速です。

NVSwitch:全対全接続

NVLinkはGPUのペアを直接接続しますが、8台以上のGPUを接続するにはNVSwitchが必要です。NVSwitchは専用のGPUインターコネクトスイッチチップで、接続されたすべてのGPUがフルNVLink帯域幅で直接通信できるようにします。

DGX H100システム構成:

  • H100 SXM5 GPUが8基
  • NVSwitch 4.0が4基
  • すべてのGPUペアが900 GB/sで直接接続
  • NVLink全対全合計帯域幅:7.2 TB/s

DGX A100 vs DGX H100

DGX A100

  • GPU:A100 80GBが8基
  • NVLink合計帯域幅:4.8 TB/s
  • GPUメモリ:640GB
  • AI性能:5 PFLOPS(FP16)

DGX H100

  • GPU:H100 80GBが8基
  • NVLink合計帯域幅:7.2 TB/s
  • GPUメモリ:640GB
  • AI性能:32 PFLOPS(FP8)
  • DGX A100比約6.4倍の性能

InfiniBand:ノード間接続

NVLinkはノード内接続を担いますが、複数のサーバーノードを接続するのはInfiniBand(IB)ネットワークです。NVIDIA ConnectX-7 NICとInfiniBand NDR(400 Gb/s)により、サーバー間通信のレイテンシを最小化します。

大規模LLMの学習には数千のGPUを接続する必要があります。MetaのLlama 3の学習では16,000基のH100が使用され、すべてが大規模なInfiniBandファブリックで接続されました。


6. AI GPU詳細比較

NVIDIA A100(80GB HBM2e)

2020年にリリースされたA100は、多くのAIワークロードの標準として現在も活躍しています。FP16 312 TFLOPS、BF16 312 TFLOPS、TF32 156 TFLOPSを提供します。

SXM4フォームファクターはNVLink 3.0で最大8 GPUをサポート;PCIe 4.0バージョンも存在します。MIG(Multi-Instance GPU)によりA100を最大7つの独立したインスタンスに分割できます。

クラウド時間単価の目安:AWS p4d.24xlarge(8x A100)で約$32.77/時。

NVIDIA H100(80GB HBM3)

2022年リリース。現在最も広く普及している高性能AI学習GPU。

SXM5バージョン:

  • FP16/BF16 Tensor Core:989 TFLOPS
  • FP8 Tensor Core:1,979 TFLOPS
  • メモリ:80GB HBM3、3,350 GB/s
  • TDP:700W
  • NVLink 4.0:900 GB/s

PCIeバージョン:

  • FP16/BF16 Tensor Core:756 TFLOPS
  • メモリ:80GB HBM3、2,000 GB/s
  • TDP:350W

H100 vs A100:

  • Tensor Core性能:3.2倍(FP16)
  • FP8 vs INT8:6倍
  • メモリ帯域幅:1.7倍(HBM3)
  • NVLink帯域幅:1.5倍

クラウド時間単価の目安:AWS p5.48xlarge(8x H100)で約$98.32/時。

NVIDIA H200(141GB HBM3e)

メモリを強化したH100。計算性能はH100と同一ですが、メモリ容量と帯域幅が大幅に向上しています。

  • メモリ:141GB HBM3e(H100比76%増)
  • 帯域幅:4,800 GB/s(H100比43%増)
  • LLM推論のスループットがH100比最大2倍
  • 大規模モデル(70B以上のLLM)をシングルGPUに搭載可能

NVIDIA B100 / B200(Blackwell)

2024年発表。まだ初期デプロイ段階。

B200 SXM:

  • FP4 Tensor Core:20 PFLOPS
  • FP8 Tensor Core:9 PFLOPS
  • FP16/BF16 Tensor Core:4.5 PFLOPS
  • メモリ:192GB HBM3e、8,000 GB/s
  • TDP:1,000W

B200 vs H100:

  • FP8性能:4.5倍
  • メモリ:2.4倍
  • 帯域幅:2.4倍

NVIDIA GB200 NVL72(ラックスケールAI)

GB200はGrace CPU(ARMベース)とB200 GPUを単一のスーパーチップパッケージに統合しています。GB200 NVL72は36基のGrace CPUと72基のB200 GPUを単一のラックシステムに統合します。

GB200 NVL72のスペック:

  • GPU:72基のB200
  • CPU:36基のGrace Hopperスーパーチップ
  • GPUメモリ:13.8TB HBM3e
  • NVLink 5.0全対全接続
  • AI性能:1.4 ExaFLOPS(FP4)、720 PFLOPS(FP8)
  • 総消費電力:120kW

これは事実上1台の巨大なGPUとして動作します。単一のラックでLlama 3 405Bのような大規模モデルを高スループットで処理できます。

GeForce RTX 4090(コンシューマー向け)

AIスタートアップや個人研究者向けの最良のコンシューマーGPU。

  • CUDAコア数:16,384
  • FP32性能:82.6 TFLOPS
  • FP16 Tensor Core:約330 TFLOPS(概算)
  • メモリ:24GB GDDR6X、1,008 GB/s
  • TDP:450W
  • 価格:約$1,599(希望小売価格)

H100 SXMとの比較:

  • Tensor Core:約1/3の性能
  • メモリ:24GB vs 80GB
  • 帯域幅:1,008 vs 3,350 GB/s
  • ECC:非サポート
  • NVLink:非サポート(PCIeのみ)
  • MIG:非サポート
  • 価格:約1/20(H100は3万ドル以上)

AMD MI300X

AMDのデータセンターAI GPU。

  • Compute Unit(CU)数:304
  • FP16性能:1,307 TFLOPS
  • BF16性能:1,307 TFLOPS
  • FP8性能:2,614 TOPS
  • メモリ:192GB HBM3、5,300 GB/s
  • TDP:750W

MI300XはH100に対してメモリ容量(192GB vs 80GB)と帯域幅(5,300 vs 3,350 GB/s)で顕著な優位性を持ちます。LLM推論に特に優れています。

GPU性能比較表

GPUFP16 TFLOPSメモリ帯域幅TDP
A100 SXM31280GB HBM2e2,000 GB/s400W2020
RTX 4090約33024GB GDDR6X1,008 GB/s450W2022
H100 SXM98980GB HBM33,350 GB/s700W2022
MI300X1,307192GB HBM35,300 GB/s750W2023
H200 SXM989141GB HBM3e4,800 GB/s700W2024
B200 SXM4,500192GB HBM3e8,000 GB/s1,000W2024

7. AI向けAMD GPU

ROCmエコシステム

AMDのAIソフトウェアスタックはROCm(Radeon Open Compute)です——CUDAと互換性のあるオープンソースプラットフォームです。PyTorchやTensorFlowなどの主要フレームワークとの互換性は近年大幅に向上しています。

ROCmのCUDA相当コンポーネント:

  • HIP(Heterogeneous-compute Interface for Portability):CUDA C++相当
  • rocBLAS:cuBLAS相当(行列演算)
  • MIOpen:cuDNN相当(深層学習プリミティブ)
  • rccl:NCCL相当(GPU通信)

ROCmサポート付きPyTorchのインストール:

# ROCmサポート付きPyTorchのインストール
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm6.0

MI300Xの主要特性

MI300XはAMDの現行フラグシップAI GPUです。GPUダイとHBMスタックを3Dで統合する先進パッケージング(MCM:Multi-Chip Module)を使用したCDNA 3アーキテクチャを採用しています。

MI300Xの192GB HBM3と5,300 GB/sの帯域幅は、一部のLLM推論シナリオ——特にメモリバウンドのワークロード(大バッチ、長シーケンス)——でH100を上回ることができます。

Microsoft Azure、Oracle CloudなどがすでにMI300Xインスタンスの提供を開始しています。MetaやMicrosoftを含む大手テック企業がAMD GPUを積極的に採用し始めています。

AMD vs NVIDIAのソフトウェアエコシステム

率直に言えば、現在AI分野ではNVIDIA CUDAのソフトウェアエコシステムが依然として圧倒的です。

  • NVIDIA独自ライブラリ:cuDNN、cuBLAS、TensorRT、NCCL、NVTXなど
  • FlashAttentionはもともとCUDA専用(後にROCmポートが登場)
  • 多くの研究コードがCUDAを前提としている
  • ROCmは急速に追いついているが完全な互換性にはまだ至っていない

本番環境でAMD GPUを選択すると、ソフトウェア互換性の問題に対処するために追加のエンジニアリング時間が必要になる場合があります。


8. クラウドGPUサービスの比較

AWS GPUインスタンス

p3シリーズ(V100)

  • p3.2xlarge:1基のV100、$3.06/時
  • p3.16xlarge:8基のV100、$24.48/時

p4dシリーズ(A100)

  • p4d.24xlarge:8基のA100、320GB HBM2、$32.77/時

p5シリーズ(H100)

  • p5.48xlarge:8基のH100、640GB HBM3、$98.32/時

AWS Trainium(Trn1)

  • AWS独自のAI学習チップ(Trainium 2)
  • Trn1.32xlarge:16基のTrainium、$21.50/時
  • LLM学習においてH100よりコストパフォーマンスが優秀

AWS Inferentia(Inf2)

  • 推論専用チップ
  • Inf2.48xlarge:12基のInferentia2、$12.98/時
  • Llama 2 70B推論に最適化

スポットインスタンスはオンデマンド比60〜90%の節約が可能。インスタンスが中断される可能性があるため、チェックポイントが不可欠です。

Google Cloud GPUインスタンス

A100インスタンス

  • a2-highgpu-1g:1基のA100(40GB)、$3.67/時
  • a2-megagpu-16g:16基のA100、$55.74/時

H100インスタンス

  • a3-highgpu-8g:8基のH100、約$19〜25/時(地域によって異なる)

Google TPU v4/v5

  • TPU v4:AI学習最適化ASIC、400 TFlops/チップ
  • TPU v5e:大規模推論に最適化
  • TPU v5p:最新の学習重視、459 TFlops/チップ
  • GoogleのJAXフレームワークとの互換性が最良

Azure GPUインスタンス

ND H100 v5

  • Standard_ND96isr_H100_v5:8基のH100
  • InfiniBand NDRによるノード間接続

NCas_T4_v3

  • T4ベースの推論インスタンス
  • Standard_NC64as_T4_v3:4基のT4、$4.35/時

Lambda Labs、CoreWeave、Vast.ai

クラウドスタートアップはAWS/GCP/Azureよりも安価にGPUを提供しています。

Lambda Labs

  • H100 SXM5 8基インスタンス:$26.80/時(AWS p5比73%安)
  • Lambda CloudはAI研究者向けに特化

CoreWeave

  • プロフェッショナルGPUクラウド
  • H100シングル:$2.89/時
  • 大規模クラスター構成が可能

Vast.ai

  • GPUマーケットプレイス(個人や企業がGPUを貸し出し)
  • H100が約$2〜3/時(市場価格)
  • セキュリティ感度が低い実験的学習に適している

クラウドGPUコスト試算

LLM学習コスト例(Llama 3 8B、8基のA100、1,000億トークン):

学習時間の見積もり:
- Chinchillaの法則:8Bパラメータ x 1,000億トークン
- 8基のA100クラスターで約710- p4d.24xlarge:$32.77/時 x 24時間 x 8= 約$6,291

コスト削減戦略:
1. スポットインスタンス:70%節約 -> 約$1,887
2. Lambda Labs:$11.60/時 x 24時間 x 8= 約$2,227
3. CoreWeave:さらに安価な可能性

9. GPU選定ガイド

学習 vs 推論

学習で重要な要素:

  • 高性能なTensor Core(BF16/FP8)
  • 十分なメモリ(バッチサイズ、勾配、オプティマイザ状態)
  • NVLink帯域幅(マルチGPU勾配同期)
  • ECCメモリ(安定性)

推論で重要な要素:

  • メモリ帯域幅(KVキャッシュの読み取り速度)
  • メモリ容量(モデル+KVキャッシュ)
  • INT8/FP8/FP4サポート
  • MIG(複数の小規模モデルの分離実行)

モデルサイズ別GPUの必要量

FP16での必要メモリ:

モデルサイズパラメータメモリ学習メモリ必要GPU数
7B14GB約56GBH100 1基(80GB)
13B26GB約104GBH100 2基
70B140GB約560GBH100 8基
405B810GB約3.2TBH100 40基以上
1T2TB約8TBH100 100基以上

学習メモリ = パラメータ x 4(FP16パラメータ、勾配、Adamの2つのモーメント)+アクティベーション

メモリ節約技術:

  • Gradient Checkpointing:アクティベーションメモリを大幅削減(20〜30%の速度トレードオフ)
  • FSDP/ZeRO:パラメータ、勾配、オプティマイザ状態をGPU間で分散
  • Flash Attention:アテンション計算のO(N²)→O(N)メモリ化
  • FP8学習:メモリ使用量を半減

予算別推奨

個人研究者(約20万円)

  • RTX 4090(24GB、約20万円):小規模モデルのファインチューニング、LoRA学習
  • 7Bモデルの QLoRA ファインチューニングが実現可能
  • FlashAttentionサポート(Ada Lovelaceアーキテクチャ)

スタートアップチーム(約100〜500万円)

  • RTX 4090を4〜8基:小規模LLM実験
  • または中古のA100 40GB/80GB x 1〜4基
  • ハイブリッドクラウド戦略を推奨

中規模AIチーム(1億円以上)

  • H100 8基(DGX H100レベル):3,200万円以上
  • またはLambda Labs/CoreWeaveクラウド
  • 1,000億パラメータ以上のモデルを学習可能

大規模研究機関/エンタープライズ

  • 数百〜数千基のH100/H200 GPU
  • GB200 NVL72ラックシステム
  • 専用InfiniBandネットワーク

コンシューマー vs データセンター

特性RTX 4090H100 SXM
メモリ24GB GDDR6X80GB HBM3
帯域幅1,008 GB/s3,350 GB/s
FP16性能約330 TFLOPS989 TFLOPS
ECC非サポートサポート
NVLink非サポートサポート
MIG非サポートサポート
TDP450W700W
価格約$1,600約$30,000以上
保証コンシューマー3年エンタープライズ

10. GPUのモニタリングと最適化

nvidia-smiの使用

nvidia-smiはNVIDIA GPUをモニタリングするための主要なCLIツールです。

# 基本的なGPUステータス
nvidia-smi

# リアルタイムモニタリング(1秒更新)
watch -n 1 nvidia-smi

# ログ記録のためのCSV出力
nvidia-smi --query-gpu=timestamp,name,pci.bus_id,driver_version,pstate,\
pcie.link.gen.max,pcie.link.gen.current,temperature.gpu,utilization.gpu,\
utilization.memory,memory.total,memory.free,memory.used \
--format=csv -l 1 > gpu_log.csv

# プロセスごとのGPUメモリ使用量
nvidia-smi pmon -s m

# GPUトポロジー(NVLink接続)
nvidia-smi topo -m

PyTorchのGPU使用率最適化

import torch

# GPUメモリ使用量の確認
print(f"Allocated memory: {torch.cuda.memory_allocated() / 1e9:.2f} GB")
print(f"Reserved memory: {torch.cuda.memory_reserved() / 1e9:.2f} GB")

# 詳細なメモリ解析
print(torch.cuda.memory_summary())

# DataLoaderの最適化
dataloader = DataLoader(
    dataset,
    batch_size=64,
    num_workers=4,           # CPUコア数に合わせて調整
    pin_memory=True,         # GPUへの転送を高速化するためCPU RAMをピン
    prefetch_factor=2,       # プリフェッチするバッチ数
    persistent_workers=True  # ワーカープロセスを再利用
)

# 演算のオーバーラップのためのCUDA Streams
stream1 = torch.cuda.Stream()
stream2 = torch.cuda.Stream()

with torch.cuda.stream(stream1):
    result1 = model_part1(data1)

with torch.cuda.stream(stream2):
    result2 = model_part2(data2)  # stream1と並列実行

torch.cuda.synchronize()

GPU使用率最適化チェックリスト

GPU使用率が低い(70%未満)一般的な原因と対処法:

  1. データローディングのボトルネックnum_workersを増やし、pin_memory=Trueを設定
  2. バッチサイズが小さすぎる:Gradient Accumulationを使用して実効バッチサイズを増やす
  3. Python GILのボトルネック:CUDA GraphsでCPUオーバーヘッドを最小化
  4. メモリフラグメンテーション:定期的にtorch.cuda.empty_cache()を呼び出す
# CPUオーバーヘッド最小化のためのCUDA Graphs
static_input = torch.randn(batch_size, input_size, device='cuda')
static_target = torch.randn(batch_size, output_size, device='cuda')

# ウォームアップ
for _ in range(3):
    output = model(static_input)
    loss = criterion(output, static_target)
    loss.backward()
    optimizer.step()
    optimizer.zero_grad()

# CUDA Graphのキャプチャ
g = torch.cuda.CUDAGraph()
with torch.cuda.graph(g):
    output = model(static_input)
    loss = criterion(output, static_target)
    loss.backward()
    optimizer.step()
    optimizer.zero_grad()

# 実データで実行
for real_input, real_target in dataloader:
    static_input.copy_(real_input)
    static_target.copy_(real_target)
    g.replay()  # CUDA Graphを再生(CPUオーバーヘッドほぼゼロ)

温度管理

データセンターGPUは数百ワットの熱を発生させます。温度管理は性能と寿命に直接影響します。

  • H100 SXM TDP:700W、最大温度:83°C
  • 超過した場合は自動的にサーマルスロットリングで性能を制限
  • DGXシステムは直接液冷をサポート
# リアルタイムGPU温度モニタリング
nvidia-smi dmon -s t

# ファン速度制御(コンシューマーGPU)
nvidia-settings -a "[gpu:0]/GPUFanControlState=1" \
                -a "[fan:0]/GPUTargetFanSpeed=80"

# 電力制限(性能を一部犠牲にして過熱を防ぐ)
sudo nvidia-smi -pl 300  # 電力を300Wに制限

マルチGPUセットアップ

4基以上のGPU構成では正しい設定が重要です。

# GPU接続トポロジーの確認
nvidia-smi topo -m
# NVLinkで接続されたGPUペアとPCIe接続が表示される

# NCCLデバッグログの有効化
export NCCL_DEBUG=INFO
export NCCL_DEBUG_SUBSYS=ALL

# NVLink P2Pの確認
nvidia-smi nvlink --status

# NUMA最適化(マルチソケットサーバー)
numactl --cpunodebind=0 --membind=0 python train.py  # GPU 0〜3と同じNUMAノード
# PyTorch分散学習の基礎
import torch.distributed as dist
import torch.multiprocessing as mp

def setup(rank, world_size):
    dist.init_process_group(
        backend='nccl',   # NVIDIA GPU: nccl; AMD: gloo or rccl
        init_method='env://',
        world_size=world_size,
        rank=rank
    )
    torch.cuda.set_device(rank)

def cleanup():
    dist.destroy_process_group()

# torchrunで起動:
# torchrun --nproc_per_node=8 --nnodes=2 --rdzv_id=100 \
#          --rdzv_backend=c10d --rdzv_endpoint=host:29400 train.py

まとめ:GPU選定の実践原則

GPU選定で最も重要なことは、自分自身のワークロードを正確に理解することです。

  1. メモリ容量が最優先:モデルとバッチがGPUメモリに収まらなければ、他は何も意味がありません。
  2. 帯域幅 vs 計算性能:学習は計算バウンドになりやすく、大規模モデルの推論はメモリバウンドになりやすいです。
  3. クラウドファースト戦略:不確かな場合は、まずクラウドで要件を把握してからオンプレミスハードウェアに投資してください。
  4. エコシステムが重要:NVIDIAのCUDAエコシステムは依然として圧倒的に成熟しています。AMD ROCmは急速に追いついています。
  5. 消費電力:オンプレミスGPUクラスターの電気代はハードウェアコストと同水準になります。

AIインフラは急速に進化しています。BlackwellによりFP4量子化が現実になり、GB200 NVL72のようなラックスケールシステムが大規模モデルの学習と推論を再定義しています。ハードウェアの発展を注視しながら、自分の要件に最適化された選択をしてください。


参考資料