Ollama の概要
Ollama は、Go 言語で構築されたオープンソースのフレームワークであり、ユーザーが自身のマシン上で大規模言語模型(LLM)を容易に実行できるように設計されています。Windows、Linux、macOS といった主要なオペレーティングシステムに対応しており、シンプルなコマンド操作だけでモデルのデプロイから推論までが可能です。また、モデルの量子化(quantization)機能をサポートしているため、ハードウェアのリソース要件を抑えつつ、高性能な推論をローカル環境で実現できます。
主要な开源モデルが幅広くサポートされており、ハードウェアスペックや用途に応じて最適なモデルを選択できます。
- DeepSeek-R1: 中国の深度求索による模型
- Qwen 2.5: 阿里巴巴(アリババ)グループの模型
- Llama 3.3: Meta 社による模型
- Phi 4: Microsoft 社の模型
- Mistral: 仏 Mistral AI 社の模型
- Gemma 2: Google 社の模型
- LLaVA: 画像認識も可能なマルチモーダル模型
インストール手順
Windows 環境
公式ウェブサイトからインストーラー(OllamaSetup.exe)を取得し、実行してください。ウィザードに従ってインストールを完了させます。インストール先ディレクトリを変更したい場合は、コマンドラインから以下のように実行します。
OllamaSetup.exe /DIR="e:\tools\ollama"
Linux 環境
スクリプトを利用した自動インストールが推奨されます。
# 標準インストール
curl -fsSL https://ollama.com/install.sh | sh
# 特定バージョンの指定
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.5.7 sh
あるいは、バイナリを直接ダウンロードして展開する方法もあります。
curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama.tar.gz
sudo tar -C /usr -xzf ollama.tar.gz
動作確認と基本コマンド
インストール後、ターミナルでバージョン情報を表示させて正常動作を確認します。
ollama --version
Ollama の CLI は Docker の操作感に似ており、以下のサブコマンドでモデルを管理します。
ollama run <model>: モデルを起動し対話開始ollama list(またはls): ローカルにあるモデル一覧ollama ps: 現在ロード中のモデル確認ollama stop <model>: 実行中のモデルを停止ollama serve(またはstart): サーバープロセスの起動ollama pull <model>: リポジトリからモデルをダウンロードollama rm <model>: モデルの削除ollama create <name>: Modelfile からモデルを構築ollama cp: モデルのコピーollama show: モデルの詳細情報表示ollama push: リモートリポジトリへアップロード
サーバー動作は環境変数で細かく制御可能です。主な設定項目は以下の通りです。
OLLAMA_HOST # リスニングアドレス (默认 127.0.0.1:11434)
OLLAMA_DEBUG # デバッグログ出力 (1 で有効)
OLLAMA_MODELS # モデルファイルの保存パス
OLLAMA_KEEP_ALIVE # メモリ保持時間 (默认 5m)
OLLAMA_ORIGINS # CORS 許可オリジン (* で全許可)
OLLAMA_NUM_PARALLEL # 並列リクエスト数
モデルの実行と対話
ollama run コマンドを実行すると、指定されたモデルがローカルに存在しない場合、自動的にダウンロード(pull)された後に起動します。
ollama run llama3.2:1b
ollama run qwen2.5:0.5b
ollama run deepseek-r1:1.5b
対話モード中は、以下の特殊コマンドが利用できます。
/show info: 現在のモデル設定を確認/bye: 対話セッションを終了""": 複数行の入力モードへ切り替え
API による連携
Ollama は HTTP ベースの REST API を提供しており、デフォルトでは http://localhost:11434 でリクエストを受け付けます。
Python (requests ライブラリ)
チャット完了 API を利用した例です。
import requests
model_name = "llama3.2:latest"
conversation = [
{
"role": "user",
"content": "日本の首都について教えてください。",
},
]
endpoint = "http://127.0.0.1:11434/api/chat"
result = requests.post(endpoint,
json={
"model": model_name,
"messages": conversation,
"stream": False
}
)
print(result.json())
API エンドポイント仕様
主に 2 つの生成エンドポイントが用意されています。
1. 単純生成 (POST /api/generate)
コンテキストを考慮しないテキスト生成に適しています。
{
"model": "mistral",
"prompt": "太陽系について簡潔に説明して",
"stream": false,
"options": {
"temperature": 0.5,
"max_tokens": 200
}
}
2. チャット生成 (POST /api/chat)
会話履歴を維持した対話型生成に適しています。
{
"model": "mistral",
"messages": [
{
"role": "user",
"content": "こんにちは"
}
],
"stream": false
}
OpenAI 互換 SDK (Python)
OpenAI 用のクライアントライブラリを流用して接続することも可能です。
# pip install openai
from openai import OpenAI
llm_client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama-local",
)
completion = llm_client.chat.completions.create(
model="deepseek-r1:1.5b",
messages=[
{"role": "user", "content": "自己紹介をしてください"}
],
)
print(completion.choices[0].message.content)
Go 言語 SDK
公式提供の Go クライアントを利用した実装例です。
package main
import (
"context"
"fmt"
"log"
"github.com/ollama/ollama/api"
)
func main() {
conversation := []api.Message{
{
Role: "user",
Content: "元気ですか?",
},
}
payload := api.ChatRequest{
Model: "llama3.2",
Messages: conversation,
}
callback := func(resp api.ChatResponse) error {
fmt.Print(resp.Message.Content)
return nil
}
client, err := api.ClientFromEnvironment()
if err != nil {
log.Fatal(err)
}
if err := client.Chat(context.Background(), &payload, callback); err != nil {
log.Fatal(err)
}
}
グラフィカルインターフェース
CUI だけでなく、GUI を通じてモデルを利用するためのツールも多数存在します。
- Open WebUI: Web ブラウザで動作する包括的な管理画面。Docker 等を通じて起動可能。
- Page Assist: Chrome 拡張機能としてブラウザに統合。
- Chatbox: クロスプラットフォーム対応のデスクトップアプリケーション。
- Cherry Studio: 複数のモデルプロバイダーを管理可能なデスクトップクライアント。
Modelfile によるモデル定制
Ollama では、Dockerfile に似た構文を持つ「Modelfile」を使用することで、ベースモデルに独自の設定やプロンプトを付与したカスタムモデルを作成できます。
構文の基本
# コメント行
INSTRUCTION 引数
指令は大文字小文字を区別しませんが、可読性のため大文字表記が一般的です。記述順序は自由ですが、FROM を先頭に配置するのが慣例です。
主要な指令
FROM: ベースとなる模型またはファイルパス(必須)PARAMETER: 温度、コンテキスト長などの実行パラメータTEMPLATE: プロンプトのテンプレート構造(Go テンプレート構文)SYSTEM: システムロールの初期メッセージADAPTER: LoRA などのアダプターファイルLICENSE: ライセンス情報の記載MESSAGE: 事前定義された会話履歴
設定例
FROM mistral:latest
PARAMETER temperature 0.8
PARAMETER top_k 40
TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
"""
SYSTEM """あなたは有用な日本語アシスタントです。常に丁寧な口調で答えてください。"""
LICENSE """
MIT License
"""
MESSAGE user "こんにちは"
MESSAGE assistant "こんにちは!何かお手伝いしましょうか?"