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さんよ!イメージの中に入れておいてくれよ!)