「ChatGPTのようなAIモデルを自分たちのサーバーで動かしたい」——最近、このような相談が急増しています。しかしGPT-4クラスのモデルを動かすには、単純にGPUがあればいいというわけではなく、GPU間の通信帯域、分散学習の仕組み、バッチ処理の最適化など、専門的なインフラ知識が必要です。今回はAIワークロードのインフラ設計の基本を解説します。
AIインフラをたとえで説明すると「高速道路の工場ライン」のようなものです。GPUは工員(処理担当)、VRAM(ビデオメモリ)は作業台の広さ、NVLink/InfiniBandはベルトコンベア(GPU間通信)です。作業台が狭い(VRAM不足)とモデルが乗り切らず、ベルトコンベアが遅い(通信帯域が細い)と工員が待ちぼうけになります。
MLエンジニアO:「モデルの学習が遅すぎて困ってます。GPU使用率見たら30%しか使えてなくて…」
インフラエンジニアP:「典型的なデータローディングのボトルネックだね。GPUが速すぎて、データが追いついてない状態。PyTorchのDataLoaderのworker数を増やしてみよう」
O:「そんな設定があるんですね」
P:「あと、混合精度演算(AMP)を有効にすれば学習速度が2倍近くになることもある」
まず、GPUの利用状況を確認するコマンドです。
# NVIDIA GPUの状態確認
nvidia-smi
# リアルタイム監視(1秒おきに更新)
watch -n 1 nvidia-smi
# GPU使用率・メモリ・温度を整形して表示
nvidia-smi --query-gpu=name,utilization.gpu,memory.used,memory.total,temperature.gpu \
--format=csv,noheader
PyTorchで混合精度演算(AMP)を有効にする例です。
import torch
from torch.cuda.amp import autocast, GradScaler
scaler = GradScaler()
for batch in dataloader:
optimizer.zero_grad()
# AMPスコープ内でフォワードパス
with autocast():
output = model(batch)
loss = criterion(output, target)
# スケーラーでバックプロパゲーション
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
Kubernetesでの推論サービングには、NVIDIA Triton Inference ServerやvLLMを使うのが現在のベストプラクティスです。vLLMはPagedAttentionという技術でVRAMの効率を大幅に改善し、LLMの推論スループットを数倍に向上させます。AIワークロードのインフラ設計は「GPUを積めば解決」ではありません。データパイプライン・通信帯域・スケジューリング・推論最適化——これらを組み合わせて初めて、GPUへの投資を最大化できます。
コメントを残す