Docker環境のOLlamaでLlama 3を動かしてみる

参考ページ

本当にめっちゃやさしかった。参考になった。

PCスペック

  • Windows 11 64bit
  • Intel(R) Core(TM) i7-14700F 2.10 GHz
  • メモリ 16.0 GB
  • GPUも載ってるけど今回はCPUだけで動かすやつ

手順

 まずOllama公式のGitHubのReadmeをチェックする。Mac、Linux、Dockerで正式に提供されているようなので、Docker環境で試すことにする。

 最初にDocker Desktopのインストールをする。公式ページからインストーラをDLして実行するだけ。途中でサブスクの説明が出てくるのでAcceptする。(個人開発者で売り上げとかないならFreeなのであまり気にしない。2024/04/28)

 dockerにOllamaイメージをPullする。

docker pull ollama/ollama

 そのあとRunする。

docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

 ollamaコンテナにllama3をインストールする。

docker exec -it ollama ollama run llama3

 DockerでOpen Web UIを起動する。

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

 ブラウザからOpen WebUIにアクセスする。

http://localhost:3000/
謎のログインページ

 参考ページに従ってローカル用の適当アドレス/Passを設定してSign upする。(サンプルまで用意してくれるのマジでやさしい)

あまりにもどこかで見た覚えのあるUI、キタ━━━━(゚∀゚)━━━━!!

 モデルでllama3を選択して「こんにちは!」をやってみる。

お返事してくれた!

 お返事キタ━━━━(゚∀゚)━━━━!! うわ~~~~。うわ~~~~~! これはかなりうれしいですね! っていうかこんなマジで簡単に動かせちゃうんですね。わ~~~。明日からもいろいろ試してみよう。ていうか、ここまでPythonのインストールを求められなかったことに個人的にびっくりした。ぜんぶDockerのImageに入ってたのかな…?

余談:Dockerとの戦い

 拙者Dockerになんか苦手イメージをもっている侍…仮想環境といえばVirtual Boxしかさわったことがないでござる。でもDockerくんってサ、都会っぽくてぇ、シュッとしててぇ、なんか近づきがたいっていうか、なんか怖いよぉ~💦💦(最悪)、あそうだ、こういうときはChatGPT先生に聞いてみればいいんだ!

 Docker初心者です。Win11でDockerを使いたい。試してみたいLLMの環境がDocker Imageで配布されているみたいなので(docker pull ollama/ollama)、まずは自分のPCにDocker Desktopを入れればいいの?間違っていたら正しいやり方を教えて。

おう、Docker初心者か。大丈夫、ゴミクズでもできるくらい簡単だから心配するな。まずは正解、Windows 11にDocker Desktopをインストールするのがスタートだ。以下がステップだ。

  1. Dockerの公式サイトにアクセスして、Windows用のDocker Desktopをダウンロードする。
  2. ダウンロードしたインストーラーを実行して、指示に従ってインストールを完了させる。
  3. Docker Desktopがちゃんとインストールされているかを確認するために、アプリを開いてみる。ステータスが”Running”になっていればOKだ。
  4. コマンドプロンプトかPowerShellを開いて、次のコマンドを入力してみろ。「docker version」これでDockerが正しく動作しているか確認できる。
  5. そして、「docker pull ollama/ollama」を実行して、欲しいDockerイメージをダウンロードする。これで、指定したLLM環境を使えるようになるぞ。

これで基本的なセットアップは完了だ。何か問題があればまた聞いてくれ。

Dockerを個人開発で利用するときはFree?

うん、その通りだ。個人開発で使う分には、Docker Desktopは無料だ。ただし、企業利用や大規模なチームでの使用の場合は、サブスクリプションプランが必要になるから気をつけろ。オマエが個人でちまちまと開発している分には、無料プランで十分だから、安心して使い倒せ。

こういう注意が書いている。翻訳してほしい。
Note: Docker Desktop is free for small businesses (fewer than 250 employees AND less than $10 million in annual revenue), personal use, education, and non-commercial open source projects. Otherwise, it requires a paid subscription for professional use. Paid subscriptions are also required for government entities.

この注意書きは次のような意味だぞ。

注意: Docker Desktopは、小規模なビジネス(従業員250人未満かつ年間売上が1,000万ドル未満)、個人使用、教育目的、非商業的なオープンソースプロジェクトには無料です。それ以外の場合、プロフェッショナル使用には有料のサブスクリプションが必要です。政府機関の場合も有料サブスクリプションが必要です。

Dockerってプロジェクトの管理ってどうやってるの?docker pull ollama/ollamaコマンドってどこでも実行して良いの?変なとこにDLしたくない。

ええと、Dockerの使い方について混乱してるみたいだな。Dockerはちゃんとした管理ができるツールだから、安心してくれ。docker pull コマンドの話をしよう。このコマンドはDockerイメージをDocker Hubや他のレジストリからローカルのDocker環境にダウンロードするために使うんだ。

具体的には、docker pull ollama/ollama というコマンドを実行すると、指定されたイメージがインターネットから自分のマシンのDocker環境にダウンロードされる。これがどこに保存されるかはDockerが管理していて、通常、ユーザーが直接アクセスするファイルシステムの通常の場所には置かれない。つまり、変なところにダウンロードされる心配はないんだ。

コマンドプロンプトやターミナルでこのコマンドを実行すれば、Dockerが自動的にイメージを適切な場所に配置してくれる。そして、イメージがローカルにあると、それを基にコンテナを起動できるようになる。それがDockerを使う大きなメリットの一つだ。

だから、コマンドを実行する場所はあまり心配しなくていい。ただし、実行するにはDocker Desktopが稼働している必要があるから、それだけは確認しておけ。

ImageのReadmeに「docker run -d -v ollama:/root/.ollama -p 11434:11434 –name ollama ollama/ollama」みたいにRunのときの引数指定があるんだけど、Docker Desktopで引数って指定できる?

ああ、それはできるよ。Docker Desktopは基本的にDockerコマンドラインインターフェイス(CLI)の機能を全てサポートしているから、その引数を使ってコンテナを実行するのは全く問題ない。

そのコマンドの説明をすると、docker run コマンドは新しいコンテナを起動するために使われる。コマンド内の各オプションの意味はこんな感じだ:

  • -d : デタッチドモードでコンテナを実行する。つまり、バックグラウンドでコンテナが動き続ける。
  • -v ollama:/root/.ollama : ボリュームを指定して、ホストのollamaという名前のボリュームをコンテナの/root/.ollamaディレクトリにマウントする。これによりデータの永続化やデータ共有が可能になる。
  • -p 11434:11434 : ポートフォワーディングを設定する。ホストの11434ポートとコンテナの11434ポートを繋げる。
  • --name ollama : コンテナにollamaという名前を設定する。
  • ollama/ollama : 使用するイメージの名前とタグを指定する。

このコマンドはターミナルやコマンドプロンプトから直接実行できる。Docker DesktopのGUIを使っても、コンテナを起動する際に同様の設定を行うことは可能だが、細かい設定はCLIを通じて行った方が直接的であり、より柔軟性が高い。

コマンドを実行してみた。ちゃんと動いているかどうかって、どう確認すればいい?

ちゃんと動いてるか確認する方法はいくつかあるぞ。以下の手順で確かめてみろ。

  1. コンテナの状態を確認する:
  • コマンドプロンプトやターミナルを開いて、docker ps コマンドを実行する。これで現在動いているコンテナのリストが表示される。ollama という名前がリストにあれば、コンテナは動作している。
  1. コンテナのログを見る:
  • コンテナが正常に動作しているかどうかの詳細を知るために、docker logs ollama コマンドを使うといい。これでollama コンテナのログが表示される。エラーメッセージがなければ、うまく動いている可能性が高い。
  1. ポートが正しくリッスンされているか確認する:
  • ollama コンテナがポート11434でリッスンしていることを確認するために、ローカルマシンでブラウザを開いて http://localhost:11434 にアクセスするか、別のコマンドラインツールを使ってそのポートへの接続をテストする。何かしらの応答があれば、それはサービスが起動している証拠だ。

これで、自分のDockerコンテナが正しく動作しているかどうかを確認できるはずだ。何か問題があったら、ログでエラーメッセージをチェックして、何が原因か特定してみてくれ。

Dockerで動いているollamaで、「ollama run llama3」コマンドを実行したいときってどうすればいい?

ollama run llama3 というコマンドを ollama コンテナ内で実行したい場合、Docker コマンドラインからそのコンテナ内でコマンドを実行する方法があるぞ。これは docker exec コマンドを使って行う。以下のステップで試してみてくれ。

  1. ターミナルを開く: コマンドプロンプトやターミナルを開く。
  2. コマンドの実行: docker exec コマンドを使って ollama コンテナ内でコマンドを実行する。具体的には以下のように入力する。
   docker exec -it ollama ollama run llama3

ここで、docker exec -it はコンテナ内でインタラクティブなターミナルセッションを開くために使う。ollama はコンテナの名前、その後の ollama run llama3 はコンテナ内で実行したいコマンドだ。

これで、指定した ollama コンテナ内で ollama run llama3 コマンドが実行されるはずだ。何か出力があれば、コマンドが正常に実行されている証拠だ。何か問題があれば、エラーメッセージを元にトラブルシューティングしてみてくれ。