WSL2とDockerでWindows上にOllamaを構築する
はじめに
近年、自然言語処理や機械学習の分野で大規模言語モデル(Large Language Model, LLM)が注目を集めています。LLMは膨大なテキストデータを学習することで、人間のような自然な文章生成や高度な言語理解を可能にします。しかし、LLMを自分のPCで動かすのは、環境構築の複雑さやハードウェア要件の高さから、初心者にとってハードルが高いのが実情でした。
Ollamaの概要と特徴
そんな中、オープンソースのLLMプラットフォーム「Ollama」が登場しました。Ollamaは、GPTシリーズなどの最先端LLMを誰でも手軽に利用できることを目指しています。WindowsやmacOS、Linuxに対応しており、シンプルなコマンドラインインターフェースとわかりやすいWebUIを備えているのが特徴です。
ただ、Windows環境では従来Ollamaの構築に手間取ることがありました。そこで本記事では、Windows Subsystem for Linux 2(WSL2)とDockerを活用する方法を紹介します。
※公式サイトで、Windows (preview)インストーラがダウンロードできますが、4/10時点で私のPCではインストール後に起動ができない症状がありました。
コマンドプロントで動作させるようでした。
WSL2とDockerを使うメリット
WSL2は、Windows上でネイティブにLinuxを動作させる仮想化技術です。Linuxのコマンドやツールがそのまま使えるため、Ollamaの実行環境を簡単に整えられます。さらにDockerを組み合わせることで、GPUの活用もスムーズです。
Dockerは、アプリケーションを配布・実行するためのオープンソースプラットフォームです。Linuxカーネルの機能を利用して、アプリケーションを「コンテナ」と呼ばれる独立した環境で動作させます。Ollamaの実行に必要なパッケージやライブラリがすべてコンテナにまとめられているため、環境構築の手間が大幅に削減できるのです。
WSL2とDockerを使えば、WindowsユーザーでもOllamaを気軽に試せます。しかも、Dockerイメージを入れ替えるだけで様々なモデルが利用可能。自然言語処理の実験や学習に最適な環境が、お手元のPCで実現するのです。
本記事を読み進めることで、WSL2とDockerを使ったOllamaのセットアップ方法が理解できるはずです。それでは、早速見ていきましょう。
前提条件
Ollamaを動かすためには、いくつかの準備が必要です。ここではWSL2、Docker、NVIDIA Container Toolkitのインストールと設定方法を簡単に説明します。
WSL2のインストールと設定
- Windowsの設定から「Windows Subsystem for Linux」を有効化します。
- Microsoft StoreからUbuntuなどのLinuxディストリビューションをインストールします。
- インストールしたLinuxディストリビューションを起動し、初期設定を行います。
Dockerのインストールと設定
- Docker Desktop for Windowsをダウンロードしてインストールします。
- Docker Desktopを起動し、設定からWSL2との統合を有効化します。
- WSL2上のLinuxディストリビューションからDockerが利用できることを確認します。
GPUを使う場合のNVIDIA Container Toolkitの設定
CPUのみ使用する場合は、省略できます。
- NVIDIA GPUドライバーが最新バージョンであることを確認します。
- NVIDIA Container Toolkitをダウンロードしてインストールします。
- WSL2上のLinuxディストリビューションからNVIDIA GPUが認識されていることを確認します。
Ollamaのインストール手順
- Dockerイメージのpull
まず、Ollamaの公式Dockerイメージを取得します。WSL2のUbuntuを起動し、以下のコマンドを実行してください。
docker pull ollama/ollama
このコマンドは、DockerHub上にあるollama/ollamaイメージの最新版をダウンロードします。イメージには、Ollamaを動かすために必要なファイルがすべて含まれています。
- Dockerコンテナの起動
次に、ダウンロードしたイメージからDockerコンテナを起動します。
CPUのみの場合
GPUを使わない場合は、以下のコマンドを実行します。
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
- -d: コンテナをバックグラウンドで実行します。
- -v ollama:/root/.ollama: ホストマシンのollamaフォルダをコンテナ内の/root/.ollamaにマウントします。
- -p 11434:11434: ホストマシンのポート11434をコンテナのポート11434に転送します。
- --name ollama: コンテナにollamaという名前を付けます。
GPUを使う場合
NVIDIA GPUを使う場合は、以下のコマンドを実行します。
NVIDEA Geforce GTX 1070(8GB)でも動作しました。
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
- --gpus=all: コンテナにすべてのGPUデバイスを割り当てます。
以上で、OllamaのDockerコンテナが起動します。
モデルの実行
Dockerコンテナが起動したら、docker execコマンドを使ってモデルを実行できます。
docker exec -it ollama ollama run <model_name>
- -it: インタラクティブモードでコンテナを実行します。
- ollama: コンテナ名を指定します。
- ollama run <model_name>: ollama runコマンドでモデルを実行します。<model_name>には実行したいモデルの名前を入れます。
モデルの初回実行時は、モデルファイルのダウンロードが行われます。ダウンロードが完了すると、モデルが起動します。
たとえば、llama2モデルを実行するには、以下のコマンドを入力します。
docker exec -it ollama ollama run llama2
Command Rモデルを実行する場合は、以下のコマンドを入力します。
docker exec -it ollama ollama run command-r
対応モデルは以下のURLから確認できます。
モデルの導入が完了すると、コマンドライン上に以下のような表示がされます。メッセージを送るとモデルとの対話ができます。
>>> Send a message (/? for help)
llama2 で試してみました。
>>>Tell me the most famaous Japanese manga by Japanese.
「最も有名な日本の漫画は、日本人によってillustratedされたものです。一つ目が
PIECE」です!空海漫画家の作品で、世界中で大人気を博しています。」
私の拙い英語を理解して、なんとか日本語で説明してくれました。
メッセージに、/?
を入力してEnterを押すと、利用可能なコマンドが表示されます。
会話したい場合は、/bye
を入力します。
>>> /?
Available Commands:
/set Set session variables
/show Show model information
/load <model> Load a session or model
/save <model> Save your current session
/bye Exit
/?, /help Help for a command
/? shortcuts Help for keyboard shortcuts
Use """ to begin a multi-line message.
(参考)
Webインターフェースへのアクセス方法
モデルの実行が開始されると、ブラウザからOllamaのWebインターフェースにアクセスできるようですが、私の環境ではコマンドライン上でしかやり取りできませんでした。以下は参考です。
- ブラウザを開きます。
- アドレスバーに
http://localhost:11434
と入力します。 - Enterキーを押すと、OllamaのWebインターフェースが表示されます。
モデルの切り替えと追加
現在実行中のモデルを停止し、別のモデルに切り替えるには、以下のコマンドを実行します。
docker exec -it ollama ollama run <new_model_name>
<new_model_name>
には、切り替え先のモデル名を指定します。例えば、llama2からgemmaに切り替えるには、以下のようにします。
docker exec -it ollama ollama run gemma
利用可能なモデルの確認方法
このコマンドを実行すると、Ollamaに導入したモデルの一覧が表示されます。
Ollamaで利用可能なモデルは、以下のコマンドで確認できます。
docker exec -it ollama ollama list
まとめ
本記事では、WSL2とDockerを使ってWindows上でOllamaを動かす方法を紹介しました。
Ollamaは、最先端の言語モデルを手軽に利用できるプラットフォームです。WSL2とDockerを活用することで、Windows環境でも簡単にOllamaを構築できます。
GPUを搭載したマシンでは、--gpus=allオプションを付けてDockerコンテナを起動することで、GPUを活用できます。これにより、モデルの実行が高速化され、より快適な環境が整います。
また、Ollamaでは様々なモデルが利用可能です。docker execコマンドを使えば、簡単にモデルを切り替えられます。それぞれのモデルには個性があり、用途に応じて使い分けることで、自然言語処理の可能性が広がります。
ぜひ、WSL2とDockerを使ってOllamaを構築し、大規模言語モデルの世界を体験してみてください。
Discussion