OllamaをマルチGPU環境で最適化!環境変数を活用したGPU管理方法

1. はじめに

AIモデルのローカル実行を簡単にするOllamaは、マルチGPU環境でもそのまま動作するように設計されています。特別な設定をしなくても、複数のGPUを自動的に活用するため、手間なく高い計算能力を発揮できます。

しかし、以下のようなケースでは、GPUの使用を制御する必要があります。

  • 特定のGPUのみを使用したい
  • 使用するGPUを制限して他のタスクにリソースを確保したい
  • マルチGPUの割り当てを最適化したい

本記事では、環境変数を活用してOllamaのGPU使用を管理する方法を詳しく解説します。

※ 本記事は筆者のアイデアを元に生成AIが自動作成したものです。必要に応じて追加の確認や調査を推奨します。


2. OllamaのマルチGPU動作の基本

Ollamaは、NVIDIAのCUDAを利用してGPUによる計算を実行します。マルチGPU環境では、デフォルトで複数のGPUを自動的に活用しますが、明示的に使用するGPUを制御することも可能です。

主な方法として、CUDA_VISIBLE_DEVICES 環境変数を設定することで、特定のGPUのみを使用するように制限できます。


3. 特定のGPUを指定する方法

3.1 CUDA_VISIBLE_DEVICES の設定

CUDA_VISIBLE_DEVICES を設定することで、OllamaがどのGPUを使用するかを制御できます。

Linux/macOSの場合

ターミナルで以下のコマンドを実行します。

export CUDA_VISIBLE_DEVICES=0 # GPU 0 を使用する場合
export CUDA_VISIBLE_DEVICES=1 # GPU 1 を使用する場合
export CUDA_VISIBLE_DEVICES=0,1 # GPU 0 と GPU 1 を使用する場合

Windowsの場合

  1. システム環境変数の設定画面を開く
  2. 「新しいシステム変数」として CUDA_VISIBLE_DEVICES を作成
  3. 値に使用したいGPUの番号を設定(例: 0 ならGPU 0を使用)

3.2 Ollamaの再起動

環境変数を設定した後、Ollamaを再起動することで変更が適用されます。

ollama serve restart

この設定により、Ollamaが指定したGPUのみを使用するようになります。


4. マルチGPUを活用するための追加設定

4.1 OLLAMA_CUDA_DEVICE でOllamaの優先GPUを決定

Ollamaには専用の環境変数 OLLAMA_CUDA_DEVICE があります。これを設定することで、特定のGPUを優先的に使用できます。

export OLLAMA_CUDA_DEVICE=1 # GPU 1 を優先使用

この方法は CUDA_VISIBLE_DEVICES と併用することで、より柔軟にGPUを管理できます。

4.2 VRAMの使用量を制限する

大規模モデルを実行する際にVRAMを制限するには、以下の設定を追加します。

export PYTORCH_CUDA_ALLOC_CONF="max_split_size_mb:512"

これにより、VRAMのメモリ割り当てが調整され、安定した動作が可能になります。


5. Docker環境でOllamaをマルチGPU対応にする

Dockerを利用してOllamaを実行する場合は、以下のオプションを追加することで、GPUを適切に利用できます。

5.1 Dockerの起動オプション

Docker上でOllamaをすべてのGPUで動作させる場合:

docker run --gpus all --rm -it ollama/ollama

特定のGPUのみを使用したい場合:

docker run --gpus '"device=0,1"' --rm -it ollama/ollama

この設定では、GPU 0とGPU 1のみを使用します。

5.2 NVIDIA Container Toolkitの確認

Docker環境でGPUを使うには、NVIDIA Container Toolkitが必要です。以下のコマンドで確認できます。

docker run --rm --gpus all nvidia/cuda:12.0-base nvidia-smi

エラーが出た場合は、ドライバの更新やToolkitの再インストールを検討してください。


6. GPUの最適な設定を見つける方法

実際の運用では、以下の方法で最適な設定を見つけることをおすすめします。

nvidia-smi で現在のGPU使用状況を確認

これにより、使用中のGPUとVRAMの状態を把握できます。

環境変数を変更しながらベンチマークを実施 例えば、CUDA_VISIBLE_DEVICES=0,1 で試した後、OLLAMA_CUDA_DEVICE=1 に変更して、推論速度やVRAM使用量の違いを比較しましょう。

Docker環境では --gpus の設定を適宜変更 GPUのリソースを最大限活用するには、実際に負荷をかけながら調整するのがベストです。


7. まとめと次のステップ

Ollamaは、デフォルトでマルチGPU環境をサポートしていますが、環境変数を設定することで、より柔軟にGPUの管理が可能になります。

重要なポイント:

  • CUDA_VISIBLE_DEVICES を設定 することで、使用するGPUを指定可能
  • OLLAMA_CUDA_DEVICE で優先GPUを設定 し、負荷を最適化
  • Docker環境では --gpus オプションを活用
  • nvidia-smi でGPUの動作状況をチェック
  • VRAMの使用量を調整するための PYTORCH_CUDA_ALLOC_CONF 設定

次のステップ:

  1. 自身の環境に合わせて CUDA_VISIBLE_DEVICES を設定
  2. Ollamaの推論速度を計測し、どの設定が最適かテスト
  3. 必要に応じて OLLAMA_CUDA_DEVICE や VRAM管理の設定を調整

これらの手順を実践することで、OllamaをマルチGPU環境で最大限活用し、高速なAI推論を実現できます。

参考URL

https://github.com/ollama/ollama/blob/main/docs/faq.md

page top