クラウド型のLLMサービスを使わずに、自前のVPSでLLMを動かしたい——そういうニーズが最近急に増えてきた。プライバシー面の懸念を避けたい、APIコストを削りたい、レスポンスを制御したい、理由はさまざまだが、Ollamaを使えばわりと手軽にローカルLLMを動かせる。この記事ではさくらのVPS(メモリ8GB以上推奨)を使った実際の手順をまとめる。
前提環境
- OS: Debian 12(Bookworm)またはUbuntu 22.04 LTS
- メモリ: 8GB以上(Llama 3 8Bを動かすなら最低8GB。余裕を見て16GB推奨)
- ディスク: 20GB以上の空き(モデルファイルが大きい)
- GPU: 今回はCPU推論で動かす前提。GPUがあればCUDA対応で高速化できる
Ollamaのインストール
公式の install スクリプトを使うのが一番早い。
curl -fsSL https://ollama.com/install.sh | sh
インストールが完了すると、ollama コマンドが使えるようになり、サービスとして起動される。
systemctl status ollama
Active: active (running) になっていればOK。
モデルを取得して動かす
Ollamaはモデルのダウンロード〜起動を ollama pull と ollama run で完結できる。
# Llama 3 8B(約4.7GB)
ollama pull llama3
# Google Gemma 2 2B(軽量、約1.6GB)
ollama pull gemma2:2b
# 対話モードで動かす
ollama run llama3
初回は数分かかるがダウンロードが終われば即起動する。
REST API経由で叩く
Ollamaはデフォルトで http://localhost:11434 にAPIサーバーを立てる。curlで簡単に確認できる。
curl http://localhost:11434/api/generate
-d '{"model":"llama3","prompt":"Linuxのinodeとは何か","stream":false}'
レスポンスはJSON形式で返ってくる。responseフィールドに生成テキストが入っている。
外部からアクセスする場合の注意
デフォルトはlocalhostバインドなので外部からはアクセスできない。外部公開したい場合は環境変数 OLLAMA_HOST=0.0.0.0 を設定する。ただし認証機構がないのでnginxでリバースプロキシしてBasic認証をかけるか、VPN/SSH tunnelで絞るのが安全。
# /etc/systemd/system/ollama.service の [Service] セクションに追記
Environment="OLLAMA_HOST=0.0.0.0:11434"
systemctl daemon-reload && systemctl restart ollama
まとめ
OllamaはインストールからAPIまでの敷居が低く、さくらVPSでも普通に動く。メモリ8GBのプランでLlama 3 8BをCPU推論で動かすとレスポンスは遅め(数十秒/回)だが、バッチ処理や試作ツールには十分使える。本格的なスループットが必要ならGPU付きのインスタンスか、別途専用サーバーを検討したい。
