こんにちは。
今日は 自作 PC 上で Docker を入れて、 Ollama を動かしてみたので、その話です。
Ollama を Docker で動かす
PC 上で LLM を動かして遊ぶために Ollama を入れました。PC をなるべく汚したくないので、ホストマシン上に直接入れるのではなく Docker 上で動くようにしました。
公式の Docker image が提供されているので、それを利用しました。
https://hub.docker.com/r/ollama/ollama
PC には GTX 1660 SUPER が積んであるので、ゴールは GPU で推論するところですが、いきなりコンテナ上で NVIDIA の GPU を使うとうまくいかない可能性もあるので、とりあえず CPU only で動くかどうかを確認しました。
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
ここは難なく動きました。
次はコンテナ上で GPU を使って動かします。
上に貼った Ollama の Docker image のページにも書いてありますが、コンテナから NVIDIA の GPU を使うには NVIDIA Container Toolkit を入れておく必要があります。手順書通りに Apt 経由でツールをインストールしてセットアップすれば問題なく使えました。昔はもっと苦戦した気がしましたがスムーズにできてよかったです。
↓のコマンドでコンテナから GPU を使える状態にして ollama を起動します。
--gpus=all が増えただけですね。
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
動作確認
試しに LLM とやりとりをして、うまく GPU が使われているか確認しました。
LLM とのやりとりは、この記事では紹介しませんが Open WebUI を使っています。
GPUの使用率を確認するのは nvtop というツールを入れて CLI で確認しました。
下記は llama3.2:1b-instruct-fp16 を使って質問しているスクリーンショットです。
返答内容についてはかなりハルシネーションを起こしているようでした笑

下記は nvtop のスクリーンショットです。LLM とチャットしている間は GPU の使用率が上がっているのがわかります。

チャットのレスポンスに関してはかなり早かったです。
まとめ
今日は、Docker を入れてコンテナ上で GPU を使って Ollama を動かすところまで紹介しました。
コンテナからGPUを使うのも特に問題なく進められてよかったです。
次は、 Open WebUI で ChatGPT 風の UI でチャットできる環境を作ってみたので、その話をまとめようかと思います。