Ollamaとは?
Ollamaはローカル環境で大規模言語モデル(LLM)を簡単に実行できるツール。
自分のPCやサーバーでLLama 3やPhi 3、Gemmaなどのオープンソースモデルを試して遊ぶことができる。
GUIは無いので、CUIに慣れている人向け。
試した環境
- Apple Macbook Air
- CPU: Apple M2
- GPU: Apple M2
- Mem: 16 GB
- OS: Sonoma 14.5
- HP Victus 16
- CPU: AMD Ryzen 7 5800H with Radeon Graphics 3.20 GHz
- GPU: NVIDIA GeForce RTX 3060 Laptop GPU
- Mem: 16 GB
- OS: Windows 11 Home 23H2
インストール手順
macOSでもWindowsでも、公式サイトからダウンロードしてインストーラを実行するだけ。
または、Windowsならwinget
コマンドで、
PS C:\Users\nissy> winget install ollama
macOSでHomebrewをインストールしているならbrew
コマンドでインストール可能。
nissy@MacBook-Air ~ % brew install --cask ollama
Launchpadに追加しなくていいとか、Ollamaを起動したらシステムトレイに表示されなくていいなら--cask
は不要。
nissy@MacBook-Air ~ % brew install ollama
簡単な使い方
Windows版もmacOS版もCUI操作なので、どちらの場合でもターミナルからコマンド実行する。
以降、macOSとWindowsのプロンプトが混ざっているけど、どちらも同じコマンドなので気にしないでほしい。
ヘルプはこんな感じ。
nissy@MacBook-Air ~ % ollama -h
Large language model runner
Usage:
ollama [flags]
ollama [command]
Available Commands:
serve Start ollama
create Create a model from a Modelfile
show Show information for a model
run Run a model
pull Pull a model from a registry
push Push a model to a registry
list List models
ps List running models
cp Copy a model
rm Remove a model
help Help about any command
Flags:
-h, --help help for ollama
-v, --version Show version information
Use "ollama [command] --help" for more information about a command.
OllamaはDockerみたいな感じで、そのままコマンドを実行するとDockerデーモンが動いていない時みたいに、こんな風に怒られる。
nissy@MacBook-Air ~ % ollama list
Error: could not connect to ollama app, is it running?
※ --cask
を付けずにインストールしたmacOS版のみ怒られる。
--cask
付きやWindows版等、LaunchpadやスタートメニューにOllamaが登録されるインストールをした場合は、裏で自動的にollama serve
が実行され127.0.0.1:11434でリッスンを開始してくれるので、怒られずに応答がある。
なので、別のターミナルでollamaを起動する。
nissy@MacBook-Air ~ % ollama serve
さっきはErrorになったコマンドも怒られなくなる。
nissy@MacBook-Air ~ % ollama list
NAME ID SIZE MODIFIED
※ serve
を実行したターミナルではそのままOllamaのログが表示され続けるので、別ターミナルで実行する。
言語モデルのダウンロード
Ollamaで使える言語モデルの一覧は公式サイトにある。
例えばgemmaをダウンロードするにはこんな感じ。
PS C:\Users\nissy> ollama pull gemma
pulling manifest
pulling ef311de6af9d... 100% ▕████████████████████████████████████████████████████████▏ 5.0 GB
pulling 097a36493f71... 100% ▕████████████████████████████████████████████████████████▏ 8.4 KB
pulling 109037bec39c... 100% ▕████████████████████████████████████████████████████████▏ 136 B
pulling 65bb16cf5983... 100% ▕████████████████████████████████████████████████████████▏ 109 B
pulling 0c2a5137eb3c... 100% ▕████████████████████████████████████████████████████████▏ 483 B
verifying sha256 digest
writing manifest
removing any unused layers
success
PS C:\Users\nissy> ollama list
NAME ID SIZE MODIFIED
gemma:latest a72c7f4d0a15 5.0 GB 2 minutes ago
Ollamaとチャットしてみる
ollama run
でチャットを開始できる。
Dockerと同じように、モデルがpull
済みならそのまま実行できるし、
nissy@MacBook-Air ~ % ollama run gemma
>>> Send a message (/? for help)
pull
済みでなければダウンロードしてくれる。
PS C:\Users\nissy> ollama run llama3
pulling manifest
pulling 6a0746a1ec1a... 100% ▕████████████████████████████████████████████████████████▏ 4.7 GB
pulling 4fa551d4f938... 100% ▕████████████████████████████████████████████████████████▏ 12 KB
pulling 8ab4849b038c... 100% ▕████████████████████████████████████████████████████████▏ 254 B
pulling 577073ffcc6c... 100% ▕████████████████████████████████████████████████████████▏ 110 B
pulling 3f8eb4da87fa... 100% ▕████████████████████████████████████████████████████████▏ 485 B
verifying sha256 digest
writing manifest
removing any unused layers
success
>>> Send a message (/? for help)
ollama run
にモデル名を指定してLLama3とチャットしてみる。
終了するときは/bye
。
nissy@MacBook-Air ~ % ollama run llama3
>>> あなたの名前を教えてください。
😊 My name is LLaMA, which stands for "Large Language Model Application". I'm a computer program designed to
understand and generate human-like language. I don't have a personal name in the classical sense, but you can call
me LLaMA if you like! 🤖
>>> 日本語で回答してください。あなたの名前は?
😊 私の名前はLLaMAです。Large Language Model Applicationの略称で、コンピューター プログラムとして作成された人間の
うに言語を理解し、生成するためのシステムです。私にはクラシック的な名前はありませんが、好きならLLaMAと呼ぶことがで
ます! 🤖
>>> /?
Available Commands:
/set Set session variables
/show Show model information
/load <model> Load a session or model
/save <model> Save your current session
/clear Clear session context
/bye Exit
/?, /help Help for a command
/? shortcuts Help for keyboard shortcuts
Use """ to begin a multi-line message.
>>> /bye
nissy@MacBook-Air ~ %
リッスンアドレスを変更する
Ollamaはそのまま起動すると127.0.0.1:11434でリッスンする。
nissy@MacBook-Air ~ % netstat -an | grep 11434
tcp4 0 0 127.0.0.1.11434 *.* LISTEN
LAN内の別PCからOllamaのAPIを叩きたい場合はOLLAMA_HOSTで指定すればlocalhost以外でリッスンできる。
※ 192.168.100.100は自分のPCのIPアドレスに置き換える
nissy@MacBook-Air ~ % OLLAMA_HOST=192.168.100.100:11434 ollama serve
nissy@MacBook-Air ~ % netstat -an | grep 11434
tcp4 0 0 192.168.100.100.11434 *.* LISTEN
WindowsのPowerShellで環境変数を指定しつつコマンド実行するならこんな感じ。
PS C:\Users\nissy> $env:OLLAMA_HOST="192.168.100.201:11434"; ollama serve
Windowsはgrep
が無いので、代わりにfindstr
かWhere-Object
を使う。
PS C:\Users\nissy> netstat -an | findstr 11434
TCP 192.168.100.201:11434 0.0.0.0:0 LISTENING
PS C:\Users\nissy> netstat -an | Where-Object { $_ -match "11434" }
TCP 192.168.100.201:11434 0.0.0.0:0 LISTENING
macOSからWindowsのOllamaを叩くと返事があった。
nissy@MacBook-Air ~ % curl 192.168.100.201:11434
Ollama is running%
この先の遊び方
Open InterpreterやDifyと組み合わせるとより面白いけど、それは別の記事にしてみる。
Ollamaの公式サイトでは用意されていないFugaku-LLMやELYZAを試してみるのも面白そう。