【vLLM】Docker環境でのOOMエラー解決法|gpu-memory-utilizationの調整

この記事では、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. 具体的な手順

  1. 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に下げます。

  2. max-model-lenを制限する
    vllm serve model_name --max-model-len 2048

    コンテキスト長を短くするとKVキャッシュのメモリ消費が大幅に削減されます。

  3. 量子化モデルを使用
    AWQ/GPTQ量子化モデルはFP16の約半分のVRAMで動作します。

    vllm serve TheBloke/Llama-3-8B-AWQ --quantization awq
  4. 複数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トラブルが頻発する場合、ハードウェアの見直しも検討してみてください:

💡 この問題を根本的に解決するには

ローカル環境でGPUトラブルが頻発する場合、クラウドGPUサービスの利用も検討してみてください。環境構築の手間なく、すぐにAI開発を始められます。

  • RunPod — RTX 4090が$0.44/h〜、ワンクリックでJupyter環境が起動
  • Vast.ai — コミュニティGPUマーケットプレイス、最安値でGPUレンタル
この記事は役に立ちましたか?