この記事では、vLLMをDocker環境で実行する際に発生するGPUメモリ不足(OOM)エラーについて、海外コミュニティでの解決策を要約して解説します。
1. どんな問題(エラー)が発生したか?
- 発生した環境やツール: vLLM(Docker)、NVIDIA GPU
- エラーメッセージ:
torch.OutOfMemoryError: CUDA out of memory. Tried to allocate XXX MiB - 症状: モデルのロード中またはリクエスト処理中にOOMで停止する
2. 結論(解決策)
--gpu-memory-utilizationパラメータの調整、量子化モデルの使用、およびテンソル並列処理の活用でメモリ使用量を最適化できます。
3. 具体的な手順
- gpu-memory-utilizationを下げる
vllm serve meta-llama/Llama-3-8B-Instruct \ --gpu-memory-utilization 0.85 \ --max-model-len 4096デフォルトは0.9ですが、他のプロセスもGPUを使用している場合は0.8〜0.85に下げます。
- max-model-lenを制限する
vllm serve model_name --max-model-len 2048コンテキスト長を短くするとKVキャッシュのメモリ消費が大幅に削減されます。
- 量子化モデルを使用
AWQ/GPTQ量子化モデルはFP16の約半分のVRAMで動作します。vllm serve TheBloke/Llama-3-8B-AWQ --quantization awq - 複数GPUでテンソル並列
vllm serve large-model --tensor-parallel-size 2
4. 補足・注意点
Docker実行時は--shm-size=4GB以上を指定してください。共有メモリが不足するとNCCL通信エラーの原因になります。また、--enforce-eagerを追加するとCUDA Graphのメモリオーバーヘッドを回避できます。
5.
👉 【RunPod】1時間数十円から使える高性能クラウドGPU
参考元
本記事は海外コミュニティの複数のディスカッションを要約・再構成したものです。
Source: vLLM Documentation
💡 この問題を根本的に解決するには
ローカル環境のGPUトラブルが頻発する場合、ハードウェアの見直しも検討してみてください:
- VRAM不足なら → RTX 4070 Ti Super(16GB VRAM)
- メモリ不足なら → DDR5 64GBメモリ
- AI開発を体系的に学ぶなら → AI・機械学習の実践書籍