GPU使用率100%でもAI推論が遅い問題の解決法
問題の概要
nvidia-smiでGPU使用率が100%と表示されているにもかかわらず、LLMの推論速度やStable Diffusionの画像生成速度が期待値を大幅に下回るケースがあります。この問題はGPUのボトルネックが演算能力ではなくメモリ帯域やPCIeスループットにある場合に発生します。
原因1: VRAMスワッピングの発生
モデルサイズがVRAM容量を超えると、GPUはシステムRAMとの間でデータをスワップします。nvidia-smi上ではGPU使用率100%と表示されますが、実際にはメモリ転送の待ち時間が支配的です。
確認方法:
# VRAMの実使用量を確認
nvidia-smi --query-gpu=memory.used,memory.total,utilization.gpu,utilization.memory --format=csv
# Memory Utilization(メモリ帯域使用率)が90%以上なら帯域ボトルネック
解決法:
# モデルの量子化でVRAM使用量を削減
# 例: llama.cppでQ4_K_M量子化を使用
./llama-cli -m model-q4_k_m.gguf -ngl 99
# PyTorchの場合、bitsandbytesで4bit量子化
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
quantization_config = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_compute_dtype=torch.float16)
model = AutoModelForCausalLM.from_pretrained("model_name", quantization_config=quantization_config)
原因2: PCIe帯域の制限
GPUがPCIe x16スロットにx8モードで接続されていたり、PCIe Gen3スロットにGen4のGPUを挿している場合、データ転送がボトルネックになります。
確認方法:
# PCIeリンク速度を確認
nvidia-smi -q | grep -A 5 "PCI"
# またはlspciで確認
sudo lspci -vvv -s $(lspci | grep NVIDIA | cut -d' ' -f1) | grep -i "lnksta"
原因3: 電力制限(Power Throttling)
GPUが発熱や電力供給の制約により、クロック周波数を下げている可能性があります。
# 現在のクロック速度と電力を確認
nvidia-smi --query-gpu=clocks.current.graphics,clocks.max.graphics,power.draw,power.limit --format=csv
# 電力制限を確認(制限に達していたら要対処)
nvidia-smi -q -d PERFORMANCE
解決法:
# 電力制限を引き上げ(例: RTX 4090の場合)
sudo nvidia-smi -pl 450
# ファンスピードを手動設定(温度低下で間接的にスロットリング回避)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUTargetFanSpeed=80"
原因4: バッチサイズの最適化不足
バッチサイズが小さすぎるとGPUのSMコアが十分に活用されず、GPU使用率100%でもスループットが低くなります。
# vLLMの場合、バッチサイズを増加
python -m vllm.entrypoints.openai.api_server --model meta-llama/Llama-3.1-8B-Instruct --max-num-batched-tokens 8192 --max-num-seqs 256
# Ollamaの場合、並列処理を有効化
OLLAMA_NUM_PARALLEL=4 ollama serve
診断のための包括的チェックリスト
問題を特定するために、以下の順で確認してください。
まずnvidia-smiの継続監視(nvidia-smi -l 1)でMemory UtilizationとGPU Utilizationの両方を観察します。Memory Utilizationが常に高い場合はVRAMボトルネック、GPU Utilizationが間欠的に下がる場合はデータ供給の問題です。次にGPU温度が85℃以上でないか確認し、高温ならサーマルスロットリングの可能性があります。
まとめ
GPU使用率100%は必ずしも最適な状態を意味しません。VRAMスワッピング、PCIe帯域制限、電力スロットリング、バッチサイズ不足が主な原因です。nvidia-smiの詳細オプションで原因を特定し、モデル量子化やハードウェア設定の見直しで解決してください。
この記事はAIトラブル解決に特化した技術メディア「EffiAI」が提供しています。
☁️ ローカルGPUが足りない?クラウドGPUという選択肢
高性能GPUを今すぐ使いたい方には、クラウドGPUサービスがおすすめです:
🔧 AI開発におすすめのGPU・パーツ
本記事の手順を快適に進めるための推奨スペック:
- GPU: NVIDIA RTX 4070 Ti Super(AI開発コスパ最強)
- メモリ: DDR5 64GB(LLM推論に必須)
- SSD: NVMe SSD 2TB(大規模モデル保存用)
⚡ GPU環境をすぐに使いたいなら
ハードウェアの購入・セットアップなしで、すぐにGPU環境を使えるクラウドサービスがおすすめです。
- RunPod — RTX 4090/A100/H100を即座に利用可能
- Vast.ai — 最安のGPUクラウド、オークション方式で低コスト
- RTX 5090をAmazonで見る — 自宅GPU環境を構築するなら