gpu-server-management について
gpu-server-managementは、推論やトレーニング向けのNVIDIA GPUサーバーを構築、設定、監視するスキルです。ドライバーとCUDAの導入、コンテナ設定、MIG分割、診断、GPUメトリクスを扱います。
主な機能
- 01NVIDIAドライバーとCUDAツールキットの導入
- 02GPUワークロード向けのDocker設定
- 03GPUの状態とメトリクスの監視
- 04MIGによるA100・H100 GPUの分割
- 05マルチGPU構成の確認とエラー調査
活用シーン
- 01モデル推論用GPUサーバーの準備
- 02モデル学習用ホストの設定
- 03マルチテナント環境向けのGPU容量分離
- 04ドライバー、温度、ハードウェア問題の診断
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ bagelhole/ devops-security-agent-skills --skill gpu-server-managementインストール後、Claude Code で/gpu-server-managementを入力して読み込まれたか確認します。
詳細
GPU サーバー管理
AI 推論およびトレーニングのワークロード向けに、NVIDIA GPU サーバーをプロビジョニング、設定、監視します。
このスキルを使用する場面
次の場合にこのスキルを使用します。
- LLM 推論またはモデルのトレーニング用に、新しい GPU サーバーをセットアップするとき
- NVIDIA ドライバーや CUDA Toolkit をインストールまたはアップグレードするとき
- GPU ワークロード向けに NVIDIA Container Toolkit を使って Docker を設定するとき
- マルチテナントのワークロード向けに MIG で A100/H100 GPU を分割するとき
- GPU エラー、ドライバーの問題、またはサーマルスロットリングをトラブルシューティングするとき
前提条件
- Ubuntu 22.04 LTS(推奨)または RHEL 8/9
- NVIDIA GPU(A10G、A100、H100、RTX 4090、または L40S を推奨)
- root または sudo アクセス
- パッケージのダウンロードに必要なインターネット接続
ドライバーのインストール(Ubuntu)
# Remove old drivers
sudo apt purge -y 'nvidia*' 'cuda*' 'libcuda*'
sudo apt autoremove -y
# Add NVIDIA package repository
distribution=$(. /etc/os-release; echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt update
# Install latest driver (560.x as of 2025)
sudo apt install -y nvidia-driver-560 cuda-toolkit-12-6
# Install NVIDIA Container Toolkit (Docker GPU support)
sudo apt install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# Verify
nvidia-smi
nvcc --version
docker run --rm --gpus all nvidia/cuda:12.6.0-base-ubuntu22.04 nvidia-smi
インストール後の設定
# Enable persistence mode (reduces driver initialization latency)
sudo nvidia-smi -pm 1
# Set power limit (reduce heat/noise on inference servers)
sudo nvidia-smi -pl 350 # watts; check TDP for your GPU model
# Disable ECC on inference servers (frees ~6% VRAM, less safe)
sudo nvidia-smi --ecc-config=0 # requires reboot
# Enable P2P for multi-GPU NVLink training
sudo nvidia-smi topo -m # check NVLink topology
GPU の健全性監視
# Real-time monitoring (like htop for GPUs)
watch -n 1 nvidia-smi
# Detailed stats
nvidia-smi --query-gpu=index,name,temperature.gpu,utilization.gpu,\
utilization.memory,memory.used,memory.free,power.draw,clocks.current.graphics \
--format=csv --loop=1
# DCGM — production monitoring daemon (for clusters)
sudo apt install -y datacenter-gpu-manager
sudo systemctl start dcgm
dcgmi discovery -l # list GPUs
dcgmi diag -r 1 # quick health check
dcgmi diag -r 3 # full diagnostic (takes ~20 min)
# Check GPU errors (XID errors — important for stability)
sudo dmesg | grep -i "NVRM\|nvidia\|XID"
nvidia-smi --query-gpu=ecc.errors.corrected.volatile.total \
--format=csv,noheader
Prometheus GPU メトリクス(DCGM Exporter)
# Deploy DCGM Exporter for Prometheus scraping
docker run -d \
--name dcgm-exporter \
--gpus all \
--cap-add SYS_ADMIN \
-p 9400:9400 \
--restart unless-stopped \
nvcr.io/nvidia/k8s/dcgm-exporter:latest
# Key metrics exposed:
# DCGM_FI_DEV_GPU_UTIL - GPU utilization %
# DCGM_FI_DEV_MEM_COPY_UTIL - Memory bandwidth utilization
# DCGM_FI_DEV_FB_USED - Framebuffer memory used (MB)
# DCGM_FI_DEV_SM_CLOCK - SM clock speed (MHz)
# DCGM_FI_DEV_GPU_TEMP - Temperature (°C)
# DCGM_FI_DEV_POWER_USAGE - Power draw (W)
# DCGM_FI_DEV_XID_ERRORS - XID error count (0 = healthy)
MIG による分割(A100/H100)
MIG(Multi-Instance GPU)を使用すると、1 つの GPU を分離された複数の小型 GPU に分割できます。
# Enable MIG mode (requires reboot or restart of all processes)
sudo nvidia-smi -mig 1
sudo systemctl restart nvidia-persistenced
# List available MIG profiles (A100 80GB example)
nvidia-smi mig -lgip
# 1g.10gb — 1 slice, 10GB (max 7 instances)
# 2g.20gb — 2 slices, 20GB (max 3 instances)
# 3g.40gb — 3 slices, 40GB (max 2 instances)
# 7g.80gb — full GPU, 80GB (max 1 instance)
# Create MIG instances (e.g., 3× 2g.20gb + 1× 2g.20gb = multi-tenant)
sudo nvidia-smi mig -cgi 2g.20gb,2g.20gb,2g.20gb,2g.20gb -C
# List created instances
nvidia-smi mig -lgi
nvidia-smi mig -lcgi
# Use in Docker
docker run --gpus '"device=MIG-GPU-xxx/0/0"' ...
# Disable MIG
sudo nvidia-smi mig -i 0 -dci
sudo nvidia-smi mig -i 0 -dgi
sudo nvidia-smi -mig 0
GPU サーバー向けのカーネルと OS のチューニング
# Increase file descriptor limits
echo '* soft nofile 1048576' | sudo tee -a /etc/security/limits.conf
echo '* hard nofile 1048576' | sudo tee -a /etc/security/limits.conf
# Disable transparent huge pages (reduces latency jitter)
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/defrag
# Persist via rc.local or systemd unit:
cat <<'EOF' | sudo tee /etc/rc.local
#!/bin/bash
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
nvidia-smi -pm 1
exit 0
EOF
sudo chmod +x /etc/rc.local
# PCIe performance mode
sudo nvidia-smi --auto-boost-default=0
sudo nvidia-smi --auto-boost-permission=0
マルチ GPU トポロジーの確認
# Check NVLink and PCIe topology
nvidia-smi topo -m
# Output shows interconnect type:
# NV4 = NVLink 4.0 (H100 SXM)
# NV2 = NVLink 2.0 (A100 SXM)
# PHB = PCIe bus (slower; avoid for tensor parallel training)
# PIX = same PCIe switch (fast)
# Bandwidth test between GPUs
/usr/local/cuda/samples/bin/x86_64/linux/release/p2pBandwidthLatencyTest
よくある問題
| 問題 | 原因 | 解決方法 |
|---|---|---|
nvidia-smi: command not found | ドライバーがインストールされていない | 上記のドライバーのインストール手順に従ってください |
| ドライバーのバージョン不一致 | CUDA とドライバーの非互換性 | developer.nvidia.com の互換性マトリックスを確認してください |
| GPU の温度が 85°C を超える | エアフロー不足またはファンの故障 | nvidia-smi -q -d TEMPERATURE を確認し、クーラーを取り付け直してください |
| XID 79 エラー | GPU のハードウェアエラー | dcgmi diag -r 3 を実行してください。GPU の交換が必要な場合があります |
コンテナー内で failed to open device が発生する | コンテナーツールキットが設定されていない | nvidia-ctk runtime configure --runtime=docker を実行してください |
| PCIe 帯域幅が低い | スロットの選択ミスまたは電力制限 | `nvidia-smi -q |
ベストプラクティス
- 常に永続化モード(
nvidia-smi -pm 1)を有効にします。初回リクエストのレイテンシーを低減できます。 - XID エラーを監視します。XID 79/94 が継続する場合は、ハードウェア障害を示しています。
- トレーニングには NVLink 接続の GPU を使用します。推論には通常 PCIe で十分です。
- 温度が 80°C を超えた場合や、消費電力が TDP に近づいた場合に通知する DCGM アラートを設定します。
- マルチテナント推論では MIG を使用して、モデル間で GPU を分離します。
関連スキル
- vllm-server - GPU 上での LLM 推論
- llm-fine-tuning - GPU トレーニングのセットアップ
- linux-hardening - ホスト OS のセキュリティ強化
- prometheus-grafana - メトリクスダッシュボード
コメント
Markdown 対応