Skip to content
Published on

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

Authors

はじめに

GPUはAIと深層学習の爆発的な成長を支える中心的な存在です。GPT-4、Llama 3、GeminiのようなLLMのトレーニングには、数千台のGPUを数週間から数ヶ月間稼働させる必要があります。なぜGPUがAIにとってそれほど重要なのか?どのGPUを選べばいいのか?

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


1. GPUと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兆回の浮動小数点演算
  • PFLOPS(ペタフロップス):毎秒1000兆回の浮動小数点演算

最新のAIワークロードは主にこれらの精度を使用します:

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

NVIDIA H100のFP16テンソルコア性能は驚異の989TFLOPSに達します — 約1 PFLOPSです。

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

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

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

最新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(予定)

このためHBM(高帯域幅メモリ)がデータセンターGPUに採用されています。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年):テンソルコアの登場

VoltaアーキテクチャはGPU史における転換点を画します。2017年にリリースされたV100は、テンソルコアを世界に初めて紹介しました。テンソルコアは行列乗算を高速化する専用ハードウェアユニットです。

V100の主要スペック:

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

1つのテンソルコアは、1サイクルで4x4行列積累算(D = A*B + C)を実行します。これによりFP16性能がFP32の8倍となり、深層学習トレーニングの速度を革命的に向上させました。

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

Turingアーキテクチャはコンシューマー向けRTXシリーズで有名です。RTコア(専用レイトレーシングユニット)とDLSS(AI画像アップスケーリング)がここで登場しました。

RTX 2080 Tiの主要スペック:

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

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

Ampereアーキテクチャ(2020年):A100と第3世代テンソルコア

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

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

  • CUDAコア:6,912
  • 第3世代テンソルコア:432
  • FP32性能:19.5 TFLOPS
  • FP16テンソルコア:312 TFLOPS
  • TF32テンソルコア:156 TFLOPS
  • BF16テンソルコア:312 TFLOPS
  • INT8テンソルコア: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コードを変更せずにテンソルコアの速度を活用でき、数値的安定性と速度のバランスを取ります。

スパース性サポート:A100はハードウェアで2:4構造的スパース性をサポートします。モデルパラメータの50%をゼロにする(プルーニング)ことで、テンソルコアがこれを活用して追加で2倍の性能向上を実現。INT8では理論上1,248 TOPSに達します。

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

Hopperアーキテクチャ(2022年):トランスフォーマーエンジン

Hopperアーキテクチャはトランスフォーマーモデルに特化した革新をもたらしました。H100は現在最も広く展開されているトップクラスのAIトレーニングGPUです。

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

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

Hopperの主要な革新:

トランスフォーマーエンジン:トランスフォーマーモデルのアテンションレイヤーとMLPレイヤーのハードウェアレベル最適化。レイヤーごとにFP8とFP16を自動的に切り替え。リリース時にA100比最大9倍のAI性能。

FP8サポート:E4M3とE5M2のFP8フォーマットをサポート。FP16比でテンソルコアの性能が2倍。メモリ使用量が半分。

スレッドブロッククラスター:SM(ストリーミングマルチプロセッサ)が共有メモリのように互いに通信できます。分散共有メモリが可能になります。

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

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

  • 計算性能:H100と同じ
  • メモリ:141GB HBM3e(H100より76%多い)
  • 帯域幅:4,800 GB/s(H100より43%多い)
  • LLM推論スループット最大2倍
  • 単一GPUで大規模モデル(70B以上のLLM)を搭載可能

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世代トランスフォーマーエンジン:FP4とFP6を含む新しい精度フォーマットを自動管理。

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

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


3. テンソルコアの詳細

CUDAコアとテンソルコア

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

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

世代別テンソルコアの進化:

世代アーキテクチャサポート精度行列サイズ注記
第1世代VoltaFP164x4最初のテンソルコア
第2世代TuringFP16, INT8, INT4-INTサポート追加
第3世代AmpereFP16, BF16, TF32, INT8, INT4-TF32、スパース性
第4世代HopperFP16, BF16, TF32, FP8, INT8-FP8、トランスフォーマーエンジン
第5世代BlackwellFP16, BF16, TF32, FP8, FP4-FP4サポート

WMMA(Warp Matrix Multiply-Accumulate)

CUDAプログラミングでテンソルコアを直接使用するには、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);

// テンソルコア乗算の実行
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(自動混合精度)
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 スパーステンソルコア
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とHBM:ゲームチェンジャー

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

HBM2e(High Bandwidth Memory 2e):データセンターGPUに使用。2.5Dパッケージングでシリコンインターポーザーを介してGPUダイの隣に積層。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ダイを縦に積層し、シリコン貫通ビア(TSV)数千本で接続しています。GPUダイとHBMスタックが同じシリコンインターポーザー上に並んで設置され、極めて短い距離で超広帯域幅を実現します。

メモリ階層の構造

レジスタ(レジスタファイル)
    └── 最高速;スレッドあたり数十〜数百個
L1キャッシュ / 共有メモリ
    └── SM(ストリーミングマルチプロセッサ)内で共有
    └── H100SMあたり228KB
L2キャッシュ
    └── 全SM共有
    └── H100:50MB
HBM(メインメモリ)
    └── 全SMからアクセス可能
    └── H100:80GB

カーネル最適化の鍵は、遅いHBMアクセスを最小限にするためにデータを可能な限り共有メモリに保持することです。フラッシュアテンションはこの原則をアテンション計算に適用した典型例です。

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トレーニングでは、このインターフェースを通じた勾配同期がボトルネックになります。

4GPUでのAll-Reduceを考えてみましょう:各GPUは他の3つのGPUと勾配を交換する必要があります。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が必要です — 専用GPUインターコネクトスイッチチップで、接続された全GPUが完全なNVLink帯域幅で直接通信できます。

DGX H100システム構成:

  • 8台のH100 SXM5 GPU
  • 4台のNVSwitch 4.0
  • 全GPUペアが900 GB/sで直接接続
  • NVLink All-to-All総帯域幅:7.2 TB/s

DGX A100とDGX H100の比較

DGX A100

  • GPU:8台のA100 80GB
  • NVLink総帯域幅:4.8 TB/s
  • GPUメモリ:640GB
  • AI性能:5 PFLOPS(FP16)

DGX H100

  • GPU:8台のH100 80GB
  • 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トレーニングは、巨大なInfiniBandファブリックで相互接続された16,000台のH100を使用しました。


6. AI GPU詳細比較

NVIDIA A100(80GB HBM2e)

2020年リリース。多くのAIワークロードの標準として今でも活躍しています。FP16 312 TFLOPS、BF16 312 TFLOPS、TF32 156 TFLOPSを提供します。

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

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

NVIDIA H100(80GB HBM3)

2022年リリース。現在最も広く展開されているハイエンドAIトレーニングGPU。

SXM5バージョン:

  • FP16/BF16テンソルコア:989 TFLOPS
  • FP8テンソルコア:1,979 TFLOPS
  • メモリ:80GB HBM3、3,350 GB/s
  • TDP:700W
  • NVLink 4.0:900 GB/s

PCIeバージョン:

  • FP16/BF16テンソルコア:756 TFLOPS
  • メモリ:80GB HBM3、2,000 GB/s
  • TDP:350W

H100とA100の比較:

  • テンソルコア性能:3.2倍(FP16)
  • FP8対INT8:6倍
  • メモリ帯域幅:1.7倍(HBM3)
  • NVLink帯域幅:1.5倍

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

NVIDIA H200(141GB HBM3e)

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

  • メモリ:141GB HBM3e(H100より76%多い)
  • 帯域幅:4,800 GB/s(H100より43%多い)
  • LLM推論でH100比最大2倍のスループット
  • 単一GPUで大規模モデル(70B以上のLLM)を搭載可能

NVIDIA B100 / B200(Blackwell)

2024年発表。まだ初期展開段階。

B200 SXM:

  • FP4テンソルコア:20 PFLOPS
  • FP8テンソルコア:9 PFLOPS
  • FP16/BF16テンソルコア:4.5 PFLOPS
  • メモリ:192GB HBM3e、8,000 GB/s
  • TDP:1,000W

B200と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 All-to-All接続
  • AI性能:1.4 ExaFLOPS(FP4)、720 PFLOPS(FP8)
  • 総消費電力:120kW

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

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

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

  • CUDAコア:16,384
  • FP32性能:82.6 TFLOPS
  • FP16テンソルコア:約330 TFLOPS(目安)
  • メモリ:24GB GDDR6X、1,008 GB/s
  • TDP:450W
  • 価格:約159,900円(MSRP)

H100 SXMとの比較:

  • テンソルコア:約1/3の性能
  • メモリ:24GB対80GB
  • 帯域幅:1,008対3,350 GB/s
  • ECC:非対応
  • NVLink:非対応(PCIeのみ)
  • 価格:約1/20(H100は300万円以上)

AMD MI300X

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

  • コンピュートユニット(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対80GB)と帯域幅(5,300対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です。CDNA 3アーキテクチャを採用し、GPUダイとHBMスタックを3Dに統合した高度なパッケージング(MCM:マルチチップモジュール)を使用しています。

MI300Xの192GB HBM3と5,300 GB/sの帯域幅により、一部のLLM推論シナリオでH100を凌ぐ性能を発揮できます — 特にメモリバウンドなワークロード(大バッチ、長シーケンス)で。

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

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

正直に言えば、NVIDIA CUDAのソフトウェアエコシステムは今日のAIでまだ圧倒的に成熟しています。

  • 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、1000億トークン):

トレーニング時間の試算:
- Chinchilla法則: 8Bパラメータ x 1000億トークン
- 8A100クラスターで約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選定ガイド

トレーニングと推論

トレーニングで重要なこと:

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

推論で重要なこと:

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

モデルサイズ別のGPU要件

FP16でのメモリ要件:

モデルサイズパラメータメモリトレーニングメモリ必要GPU数
7B14GB~56GB1台のH100(80GB)
13B26GB~104GB2台のH100
70B140GB~560GB8台のH100
405B810GB~3.2TB40台以上のH100
1T2TB~8TB100台以上のH100

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

メモリ節約テクニック:

  • 勾配チェックポイント:アクティベーションメモリを大幅削減(速度20〜30%のトレードオフ)
  • FSDP/ZeRO:パラメータ、勾配、オプティマイザ状態をGPU間で分散
  • フラッシュアテンション:アテンション計算のメモリをO(N²)からO(N)に
  • FP8トレーニング:メモリ使用量を半減

予算別推奨

個人研究者(約20万円)

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

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

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

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

  • 8台のH100(DGX H100レベル):3,200万円以上
  • またはLambda Labs/CoreWeaveクラウド
  • 1000億パラメータ以上のモデルをトレーニング可能

大規模研究機関/企業

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

コンシューマーとデータセンターの比較

機能RTX 4090H100 SXM
メモリ24GB GDDR6X80GB HBM3
帯域幅1,008 GB/s3,350 GB/s
FP16性能~330 TFLOPS989 TFLOPS
ECC非対応対応
NVLink非対応対応
MIG非対応対応
TDP450W700W
価格約16万円約300万円以上
保証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"割り当てメモリ: {torch.cuda.memory_allocated() / 1e9:.2f} GB")
print(f"予約メモリ: {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ストリーム
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. バッチサイズが小さすぎる:勾配累積を使って実効バッチサイズを増やす
  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 または 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. 帯域幅対計算性能:トレーニングは計算バウンドになる傾向がある;大規模モデルの推論はメモリバウンドになる傾向がある。
  3. クラウドファーストの戦略:不確かな場合は、オンプレミスハードウェアに投資する前にクラウドから始めて要件を理解する。
  4. エコシステムが重要:NVIDIAのCUDAエコシステムは圧倒的に成熟しています。AMD ROCmは急速に追いついています。
  5. 消費電力:オンプレミスGPUクラスターの電気代はハードウェアコストと同等です。

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


参考文献