Nvidia製のGPUを搭載したPC(Ubuntu)でOllamaをDockerで動かす方法について書いていきます。 これらを実行することで最近話題のCommand-Rとかを動かせます。
DockerでOllamaを動かす方法
Dockerfileを作成する
| |
compose.ymlファイルを作成する
| |
実行する
※一応言っておきますが、ビルドにすごい時間がかかります。もしかするとDockerfile内に不必要なパッケージがあるかもしれません。その際はお知らせいただくと嬉しいです。
| |
Ollamaを起動する
| |
以上です。
注意点
- CUDA等のバージョンの不一致によりエラーが発生する場合があります。コンテナ内部でGPUは使える状態になっていることは
nvidia-smiコマンドで確認できます。ですが、ollama serveコマンドを実行した際にログにGPU関連のエラーが発生している場合があります。その場合は、DockerfileのFROMのバージョンを変更するか、Ollamaのバージョンを変更することで解決できる場合があります。
GPU使ってくれない問題
ここからは詰まった時のメモです。(今も詰まってる)
どうもGPUの使用率が上がらないし、GPUを使ってるプロセスが無い(nvidia-smiで確認)ので、GPUを使ってくれてないっぽいです。
どうしてかと考えた末にDockerのコンテナ内のCUDAのバージョンとOllamaで使ってるバージョンが違ってるから使ってくれなさそうだとollama serveのログを見て気づきました。
解決策としてDockerfileのFROM句のバージョンをnvidia/cuda:11.3.1-runtime-ubuntu20.04に変えました。すると!ついにollama serve実行時に使ってくれるようになりました。ですが、ollama run $MODEL_NAMEを実行すると、ollamaが落ちてしまいました。
この原因としてDockerのコンテナのCUDAのバージョンとUbuntu(本体)のバージョンが違うためではないかと探り、以下を実施しました。
- とりあえずCUDAのバージョンを確認する
| |
- CUDAのバージョンを下げるためにCUDAをアンインストール
| |
結論:必要なパッケージが無かった
nvidiaのcudaのDockerイメージ内にCUDA関連の必要なパッケージが無かった…!(Nvidiaさんよ!イメージの中に入れておいてくれよ!)