実践チュートリアル:Windows、macOS、LinuxでのOllama

Windows、macOS、LinuxでのOllama実践チュートリアル:インストール、ローカルモデル、REST API、Pythonとの統合、embeddings、RAG。2026年版ステップバイステップガイド。

Sincrum

Ollama に関するモジュールへようこそ。

これまで多くの人工知能プロジェクトは、OpenAI、Anthropic、Google、その他のプロバイダーが提供するクラウド上のモデルAPIを利用して構築されてきました。このアプローチは非常に強力ですが、唯一の方法というわけではありません。

このチュートリアルでは別のシナリオに取り組みます:自分のコンピュータ上で直接、言語モデルを実行する という方法です。

これは次のような理由から重要です:

  1. ローカルでのプライバシー: ローカルにダウンロードして実行するモデルを利用すれば、プロンプトと応答がマシンの外に出る必要がありません。
  2. 推論コスト: ローカルでモデルを実行する場合、トークン単価のコストはかかりません。ただし、ハードウェア、電力、ストレージといった間接的なコストは存在します。
  3. 技術的な学習: モデルがどのようにダウンロード、ロード、実行、公開されるのかを理解することで、実際のAIシステムへの理解が深まります。
  4. 迅速なプロトタイピング: 常に外部APIに依存せずに実験することができます。
  5. 統合: OllamaはローカルHTTP APIを公開しており、Python、Node.js、.NET、Webアプリケーション、RAGツール、エージェントから利用できます。

このチュートリアルは、Windows、macOS、Linux の混在チームを想定して設計されています。まず共通の概念を見てから、各オペレーティングシステム特有の違いを確認していきます。


目次

  1. Ollamaとは
  2. ローカルモデルを使うべき場面
  3. システム要件
  4. オペレーティングシステム別のインストール
  5. インストールの確認
  6. Ollamaの再起動方法
  7. 初めてのローカルモデル
  8. CLIの基本コマンド
  9. モデルの保存場所
  10. オペレーティングシステム別の環境変数
  11. OllamaのREST API
  12. Pythonとの統合
  13. RAG向けのEmbeddings
  14. CPUとGPUのどちらを使っているかを確認する方法
  15. Context length
  16. OpenAI APIとの互換性
  17. ベストプラクティス
  18. オペレーティングシステム別のよくあるエラー
  19. 演習課題
  20. まとめ

1. Ollamaとは {#section-1}

Ollama は、言語モデルをローカルにダウンロード、管理、実行するためのツールです。

シンプルに理解する一つの方法は、OllamaをAIモデルの実行環境として捉えることです。ユーザーがモデルを名前で指定すると、Ollamaは利用できなければそれをダウンロードし、メモリにロードして、以下から利用できるようにします:

  • コマンドライン;
  • ローカルHTTP API;
  • PythonやJavaScriptなどのライブラリ;
  • OpenAIスタイルのAPIと互換性のある統合。

デフォルトでは、Ollamaのローカルサーバーは次のアドレスで利用可能になります:

http://localhost:11434

そしてAPIのベースURLは次のとおりです:

http://localhost:11434/api

主要コンポーネント

コンポーネント説明
Ollamaサーバーモデルを実行し、ローカルリクエストに応答するプロセス。
ollama CLIモデルのダウンロード、実行、一覧表示、管理を行うコマンド。
REST APIアプリケーションにモデルを統合するためのローカルHTTP API。
モデルモデルの重みを含む、ローカルにダウンロードされたファイル。

2. ローカルモデルを使うべき場面 {#section-2}

Ollamaは特に次のような場面で役立ちます:

  • ローカルでモデルがどのように動作するかを学ぶ;
  • トークンコストを気にせずプロンプトを試す;
  • プライベートなプロトタイプを構築する;
  • 開発マシンでRAGのテストを行う;
  • インターネット常時接続なしでモデルを実行する;
  • 社内ツールにAIを組み込む;
  • より強力なクラウドモデルを使う前に小さなモデルを比較する。

簡単な比較

観点ローカルOllamaクラウドAPI
プライバシーモデルをローカルで実行すれば高いプロバイダーに依存
トークンコストトークンあたりの直接コストなし利用に応じてコスト発生
最大品質ハードウェアとローカルモデルに依存フロンティアモデルを利用可能
速度ローカルCPU/GPUに依存ネットワークとプロバイダーに依存
オフラインモデルをダウンロード後はYesNo
メンテナンスユーザー負担プロバイダー負担

実用的なルール: 学習、プロトタイピング、ローカルソリューションの構築にはOllamaを使い、最大品質、マネージドなスケーラビリティ、フロンティアモデルが必要なときはクラウドAPIを使いましょう。


3. システム要件 {#section-3}

要件は実行したいモデルによって異なります。

一般的な要件

  • 小さなモデル向けには最低8 GBのRAM。
  • より快適に作業するには16 GB以上のRAM。
  • SSDを推奨。
  • 十分な空き容量:モデルは数GBから数十GB、場合によっては数百GBを占めることがあります。
  • パフォーマンスを高めるためにGPUを推奨。ただし多くの小さなモデルはCPUでも動作します。

Windows

代表的な要件:

  • Windows 10 22H2以降、もしくはWindows 11。
  • NVIDIA GPUを使う場合は最新のNVIDIAドライバ。
  • AMD Radeon GPUを使う場合は最新のAMD Radeonドライバ。

macOS

代表的な要件:

  • macOS Sonoma 14以降。
  • CPU/GPUサポート付きのApple Silicon Mシリーズ。
  • Intel/x86のMacではCPU実行を想定。

Linux

代表的な要件:

  • 最新のLinuxディストリビューション。
  • 標準インストールのようにOllamaをサービスとして使う場合は systemd
  • GPUを使う場合は、NVIDIAまたはAMD/ROCmドライバが正しくインストールされていること。
  • システムのサービスやバイナリをインストールする権限。

モデルサイズの実用的なルール

4ビット量子化されたモデルに対するおおまかなルール:

N B パラメータのモデル(B は十億単位)≈ N × 0.6 GB の RAM/VRAM

このコンテキストでは、7B は約70億パラメータを意味します。

おおよその例:

モデルおおよそのメモリコメント
3B2〜3 GB控えめなマシンに適する
7B / 8B4〜6 GBよい入門ポイント
13B / 14B8〜10 GBより多くのメモリが必要
32B18〜24 GB大きなGPUか潤沢なRAMが推奨
70B40 GB以上上級者向け

これらの数値は目安です。実際の消費量は、量子化、コンテキスト長、GPU、オフロード、モデルの設定によって変わります。


4. オペレーティングシステム別のインストール {#section-4}


4.1 Windows

オプションA: グラフィカルインストーラ

  1. Ollama公式ダウンロードページにアクセスします。
  2. OllamaSetup.exe をダウンロードします。
  3. インストーラを実行します。
  4. 新しいPowerShellまたはCMDのターミナルを開きます。
  5. 確認します:
ollama --version

Windowsでは、Ollamaはバックグラウンドで動き続け、ollama コマンドはPowerShell、CMD、お好みのターミナルから利用できます。

オプションB: winget

winget を使う場合は、次のようにインストールできます:

winget install Ollama.Ollama

サーバーの応答を確認

curl.exe http://localhost:11434

期待されるレスポンスは次のようなものです:

Ollama is running

従来の Windows PowerShell では、curl がエイリアスとして解決されるため挙動が異なることがあります。問題を避けるために、curl.exe または Invoke-WebRequest を使ってください。


4.2 macOS

推奨オプション: 公式アプリケーション

  1. Ollama公式ページから .dmg ファイルをダウンロードします。
  2. .dmg をマウントします。
  3. Ollama.appApplications にドラッグします。
  4. Ollamaを起動します。
  5. アプリが ollama コマンドをPATHにインストールする許可を求めてきたら、許可します。

ターミナルから確認します:

ollama --version

サーバーの応答を確認します:

curl http://localhost:11434

Homebrewを使う代替方法

開発環境によってはHomebrewが好まれる場合があります:

brew install --cask ollama-app

その後、Ollamaアプリを起動して確認します:

ollama --version

4.3 Linux

公式スクリプトでのインストール

curl -fsSL https://ollama.com/install.sh | sh

その後、サービスを起動して確認します:

sudo systemctl start ollama
sudo systemctl status ollama

APIを確認します:

curl http://localhost:11434

期待されるレスポンス:

Ollama is running

セキュリティに関する注意

企業環境や本番環境では、リモートスクリプトを実行する前に必ず内容を確認するのがよい習慣です。

代替案として、ダウンロードして内容を確認してから実行することができます:

curl -fsSL https://ollama.com/install.sh -o install-ollama.sh
less install-ollama.sh
sh install-ollama.sh

5. インストールの確認 {#section-5}

基本コマンドは3つのシステムで同じです。

Windows

ollama --version
curl.exe http://localhost:11434

macOS

ollama --version
curl http://localhost:11434

Linux

ollama --version
curl http://localhost:11434
sudo systemctl status ollama

すべてが正しければ、ollama --version がインストールされたバージョンを表示し、curl http://localhost:11434 がOllamaが動作中である旨のレスポンスを返します。


6. Ollamaの再起動方法 {#section-6}

このチュートリアルの様々な箇所で「Ollamaを再起動する」という表現が登場します。それぞれのオペレーティングシステムで何を意味するのかを明確にしておきましょう。

Windows

  1. システムトレイのOllamaアイコンを探します。
  2. 右クリックします。
  3. Quit または 終了 を選びます。
  4. スタートメニューからOllamaを再度開きます。

その後、確認します:

curl.exe http://localhost:11434

macOS

  1. メニューバーのOllamaアイコンをクリックします。
  2. Quit Ollama を選びます。
  3. Applications から Ollama.app を再度開きます。

その後、確認します:

curl http://localhost:11434

Linux

Ollamaが systemd サービスとしてインストールされている場合:

sudo systemctl restart ollama
sudo systemctl status ollama

再起動後にログを確認するには:

journalctl -e -u ollama

7. 初めてのローカルモデル {#section-7}

まずは軽量なモデルを実行してみましょう。

ollama run llama3.2

初回はOllamaがモデルをダウンロードします。その後、対話セッションが開始されます:

>>> Send a message (/? for help)

試してみてください:

教師あり学習とは何かを一文で説明してください。

セッションを終了するには:

/bye

または:

Ctrl+D

裏で何が起きたか

次のコマンドを実行したとき:

ollama run llama3.2

Ollamaは次のことを行います:

  1. モデルが既にダウンロードされているかを確認します。
  2. ダウンロードされていなければ、モデルレジストリから取得します。
  3. モデルをRAMまたはVRAMにロードします。
  4. 対話セッションを開きます。
  5. 各クエリで再ロードしないように、しばらくモデルをメモリに保持します。

デフォルトでは、Ollamaは最後の利用から 5分間 モデルをロードしたままにします。これがクエリ終了直後にRAMやVRAMが必ずしも下がらない理由です。

メモリを手動で解放するには:

ollama stop llama3.2

OLLAMA_KEEP_ALIVE やAPIの keep_alive パラメータでも制御できます。


8. CLIの基本コマンド {#section-8}

これらのコマンドはWindows、macOS、Linuxで同じように動作します。

# ダウンロード済みモデルの一覧を表示
ollama list

# モデルを実行せずにダウンロードのみ行う
ollama pull llama3.2

# モデルを実行する
ollama run llama3.2

# 現在メモリにロードされているモデルを確認する
ollama ps

# ロードされているモデルを停止する
ollama stop llama3.2

# ディスクからモデルを削除する
ollama rm llama3.2

# モデルの情報を確認する
ollama show llama3.2

# サーバーを手動で起動する
ollama serve

入門におすすめのモデル

サイズは目安です。正確なタグ、量子化、公開バージョンによって変わる可能性があります。大きなモデルをダウンロードする前に、Ollamaライブラリでモデルカードを確認するのがよい習慣です。

用途おすすめモデルおおよそのサイズコメント
軽量チャットllama3.2約2 GB控えめなマシンに最適
一般チャットgemma3約3 GB〜約17 GBタグにより異なる。小さなバリアントから始めるのが無難
一般チャット / 推論qwen3約3 GB〜約5 GB様々なシナリオで良好なパフォーマンス
コードqwen2.5-coder約5 GBプログラミング特化
Embeddingsembeddinggemma1 GB未満embeddings用に推奨
軽量Embeddingsall-minilm1 GB未満高速で軽量

VRAMが少ない(例えば4 GB)マシンの場合は、軽量モデルから始めて、ollama ps で完全にGPUに収まるかを確認するのがよいでしょう。

特定のバリアントをダウンロードするには:

ollama pull モデル名:タグ

例:

ollama pull llama3.1:8b

9. モデルの保存場所 {#section-9}

正確な場所はオペレーティングシステムやインストール方法によって異なります。

システム代表的な場所
Windows%USERPROFILE%\.ollama または %HOMEPATH%\.ollama
macOS~/.ollama
Linux通常はOllamaのユーザー/サービス配下。インストール方法により異なる

Windows

モデルと設定のフォルダを開く:

explorer %USERPROFILE%\.ollama

ログを開く:

explorer %LOCALAPPDATA%\Ollama

macOS

モデルと設定:

ls ~/.ollama

ログ:

ls ~/.ollama/logs
cat ~/.ollama/logs/server.log

Linux

サービスのログを表示:

journalctl -e -u ollama

または追跡モード:

journalctl -u ollama --no-pager --follow --pager-end

10. オペレーティングシステム別の環境変数 {#section-10}

Ollamaは環境変数で設定します。

主な変数:

変数用途
OLLAMA_HOSTOllamaがリッスンするアドレスとポート。
OLLAMA_MODELSモデルが保存されるフォルダ。
OLLAMA_KEEP_ALIVEモデルがロードされたままの時間。デフォルトは5分。
OLLAMA_NUM_PARALLEL並列リクエスト数の制御。
OLLAMA_ORIGINSCORSで許可するオリジン。
OLLAMA_CONTEXT_LENGTH適用される場合の、モデルのデフォルト実効コンテキスト長。
OLLAMA_FLASH_ATTENTIONハードウェアが対応している場合にFlash Attentionを有効化できる。

10.1 Windows

WindowsではOllamaがユーザーまたはシステムの環境変数を継承します。

手順:

  1. システムトレイからOllamaを終了します。
  2. 設定またはコントロールパネルを開きます。
  3. 「環境変数」を検索します。
  4. ユーザー環境変数を編集します。
  5. OLLAMA_MODELSOLLAMA_HOSTOLLAMA_KEEP_ALIVE などの変数を作成または編集します。
  6. 保存します。
  7. スタートメニューからOllamaを再度開きます。

例:

OLLAMA_MODELS=D:\OllamaModels
OLLAMA_HOST=127.0.0.1:11434
OLLAMA_KEEP_ALIVE=5m

10.2 macOS

OllamaがmacOSアプリとして動作している場合は、launchctl で変数を設定します。

例:

launchctl setenv OLLAMA_HOST "127.0.0.1:11434"
launchctl setenv OLLAMA_MODELS "$HOME/OllamaModels"
launchctl setenv OLLAMA_KEEP_ALIVE "5m"

その後、Ollama.appを終了して再度開きます。

変数を確認するには:

launchctl getenv OLLAMA_HOST

10.3 Linux

Ollamaが systemd サービスとして動作している場合は、サービスを編集します:

sudo systemctl edit ollama.service

以下を追加します:

[Service]
Environment="OLLAMA_HOST=127.0.0.1:11434"
Environment="OLLAMA_MODELS=/mnt/models/ollama"
Environment="OLLAMA_KEEP_ALIVE=5m"

変更を適用します:

sudo systemctl daemon-reload
sudo systemctl restart ollama
sudo systemctl status ollama

サービスに適用された変数を確認します:

systemctl show ollama | grep Environment

ログを確認します:

journalctl -e -u ollama

10.4 ローカルネットワーク内の他のマシンからのアクセス

デフォルトでは、Ollamaは 127.0.0.1:11434 でリッスンしており、同じマシンからの接続のみを受け入れます。

ローカルネットワーク内の他のマシンからの接続を受け入れるには、次を使用できます:

OLLAMA_HOST=0.0.0.0:11434

その後、オペレーティングシステムに応じてOllamaを再起動する必要があります。

設定後、ネットワーク上の別のマシンから次のように呼び出せます:

curl http://マシンのIP:11434

セキュリティに関する警告: Ollamaを直接インターネットに公開しないでください。ローカルのOllamaには公開向けに設計されたネイティブな認証がありません。リモートアクセスが必要な場合は、ファイアウォール、VPN、認証付きリバースプロキシ、制限的なネットワークルールを使ってください。


11. OllamaのREST API {#section-11}

OllamaのローカルAPIは次のURLで利用可能になります:

http://localhost:11434/api

11.1 /api/generate エンドポイント

このエンドポイントはプロンプトからテキストを生成します。

Windows PowerShell

(Invoke-WebRequest `
  -Method POST `
  -Uri http://localhost:11434/api/generate `
  -ContentType "application/json" `
  -Body '{
    "model": "llama3.2",
    "prompt": "ロジスティック回帰とは何かを説明してください。",
    "stream": false
  }'
).Content | ConvertFrom-Json

macOS / Linux

curl http://localhost:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.2",
    "prompt": "ロジスティック回帰とは何かを説明してください。",
    "stream": false
  }'

11.2 /api/chat エンドポイント

このエンドポイントでは、メッセージとロールを使った対話が可能です。

Windows PowerShell

(Invoke-WebRequest `
  -Method POST `
  -Uri http://localhost:11434/api/chat `
  -ContentType "application/json" `
  -Body '{
    "model": "llama3.2",
    "messages": [
      {
        "role": "system",
        "content": "あなたは統計学の専門アシスタントです。"
      },
      {
        "role": "user",
        "content": "分散と標準偏差の違いを説明してください。"
      }
    ],
    "stream": false
  }'
).Content | ConvertFrom-Json

macOS / Linux

curl http://localhost:11434/api/chat \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.2",
    "messages": [
      {
        "role": "system",
        "content": "あなたは統計学の専門アシスタントです。"
      },
      {
        "role": "user",
        "content": "分散と標準偏差の違いを説明してください。"
      }
    ],
    "stream": false
  }'

11.3 APIの keep_alive

デフォルトでは、Ollamaはクエリの後、約5分間モデルをメモリにロードしたままにします。これにより、連続したクエリの応答が高速化されます。

応答後にモデルを即座にアンロードするには:

curl http://localhost:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.2",
    "prompt": "簡潔に答えてください:Ollamaとは何ですか?",
    "stream": false,
    "keep_alive": 0
  }'

サーバーが動作している間、ロードしたままにするには:

curl http://localhost:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.2",
    "prompt": "モデルをプリロードしてください。",
    "stream": false,
    "keep_alive": -1
  }'

CLIから手動で解放することもできます:

ollama stop llama3.2

12. Pythonとの統合 {#section-12}

公式クライアントをインストールします:

pip install ollama

基本的なチャット

import ollama

respuesta = ollama.chat(
    model="llama3.2",
    messages=[
        {
            "role": "user",
            "content": "過学習を回避するテクニックを3つ挙げてください。"
        }
    ]
)

print(respuesta["message"]["content"])

ストリーミング

import ollama

stream = ollama.chat(
    model="llama3.2",
    messages=[
        {
            "role": "user",
            "content": "AIに関する短い物語を聞かせてください。"
        }
    ],
    stream=True
)

for chunk in stream:
    print(chunk["message"]["content"], end="", flush=True)

システムプロンプト付きチャット

import ollama

respuesta = ollama.chat(
    model="llama3.2",
    messages=[
        {
            "role": "system",
            "content": "常にわかりやすい日本語で、シンプルな例を交えて答えてください。"
        },
        {
            "role": "user",
            "content": "ニューラルネットワークとは何ですか?"
        }
    ]
)

print(respuesta["message"]["content"])

13. RAG向けのEmbeddings {#section-13}

embeddingsはテキストを数値ベクトルに変換します。これは意味検索やRAGシステムを構築するための基本要素です。

embeddingsモデルをダウンロードする

ollama pull embeddinggemma

次のようなモデルも検討できます:

ollama pull all-minilm

/api/embed エンドポイント

Windows PowerShell

(Invoke-WebRequest `
  -Method POST `
  -Uri http://localhost:11434/api/embed `
  -ContentType "application/json" `
  -Body '{
    "model": "embeddinggemma",
    "input": "猫がカーペットの上に座った。"
  }'
).Content | ConvertFrom-Json

macOS / Linux

curl http://localhost:11434/api/embed \
  -H "Content-Type: application/json" \
  -d '{
    "model": "embeddinggemma",
    "input": "猫がカーペットの上に座った。"
  }'

Pythonでのembeddings

import ollama

resp = ollama.embed(
    model="embeddinggemma",
    input="猫がカーペットの上に座った。"
)

vector = resp["embeddings"][0]
print(len(vector))
print(vector[:5])

Pythonでのミニ意味検索

import ollama
import numpy as np

textos = [
    "パーセプトロンは線形の分類モデルです。",
    "畳み込みニューラルネットワークは画像に有用です。",
    "Transformerはアテンション機構を使用します。",
    "過学習は、モデルが訓練データを過剰に記憶してしまうときに発生します。"
]

resp = ollama.embed(
    model="embeddinggemma",
    input=textos
)

vectores = np.array(resp["embeddings"])

consulta = "アテンションを使用するアーキテクチャは何ですか?"
resp_consulta = ollama.embed(
    model="embeddinggemma",
    input=consulta
)

v_consulta = np.array(resp_consulta["embeddings"][0])

similitudes = vectores @ v_consulta / (
    np.linalg.norm(vectores, axis=1) * np.linalg.norm(v_consulta)
)

idx = similitudes.argmax()

print("最も関連性の高いテキスト:")
print(textos[idx])
print("類似度:", similitudes[idx])

14. CPUとGPUのどちらを使っているかを確認する方法 {#section-14}

Ollamaを使うときによくある疑問の一つは、モデルが本当にGPUを使っているのかどうか、です。

OSのグラフィカルなチャートだけに頼るのは推奨されません。Windowsのタスクマネージャー、macOSのアクティビティモニタ、その他のグラフィカルツールが示す情報は部分的だったり解釈が難しかったりします。

Ollamaから直接確認する最もシンプルな方法は次のとおりです:

ollama ps

重要な列は PROCESSOR です。

概念的な例:

NAME        ID              SIZE      PROCESSOR    CONTEXT    UNTIL
llama3.2    abc123          2.0 GB    100% GPU     4096       4 minutes from now

CONTEXT 列は、そのモデルにロードされている実効コンテキストを示します。次のセクション(context length)で詳しく見ます。

意味
100% GPUモデルが完全にGPUにロードされている。
100% CPUモデルがシステムメモリにロードされ、CPUで動作している。
48%/52% CPU/GPUモデルの一部がCPU/RAM、別の一部がGPU/VRAMにある。

モデルがCPUとGPUに分割されている場合、動作はしますが、通常は完全にVRAMに収まる場合より低速になります。

100% GPU と表示されてもCPUが使われる理由

ollama ps100% GPU と表示していても、CPUの使用がいくらか見られるのは正常です。CPUは引き続き次のようなタスクに参加します:

  • トークナイゼーション;
  • 実行のコーディネーション;
  • 入出力;
  • サンプリング;
  • ローカルサーバーとの通信。

そのため、「CPU使用率」を「GPUを使っていない」ことの自動的な同義として解釈すべきではありません。

Windows: タスクマネージャーには注意

Windowsではタスクマネージャーが紛らわしいことがあります。3D グラフは必ずしもCUDA計算やモデルの実際の使用量を表していません。

NVIDIAの場合は、別のターミナルを開いて以下を実行するのがおすすめです:

nvidia-smi

また、次も実行します:

ollama ps

モデルが応答している最中に。

ollama ps100% GPU と示しているなら、たとえタスクマネージャーの 3D グラフが動いていないように見えても、モデルは完全にGPUに入っています。

NVIDIAでのLinux

nvidia-smi
ollama ps

nvidia-smi は使用中のVRAM、アクティブなプロセス、GPU負荷を確認できます。

AMDでのLinux

確認方法はAMD/ROCmのインストールやディストリビューションによって変わります。それでも ollama ps は、OllamaがCPU、GPU、またはその両方にモデルをロードしたかを確認するための最初の実用的な診断手段であり続けます。

macOS

Apple SiliconではOllamaはMetal経由でアクセラレーションを使用できます。実用的な診断のために:

ollama ps

アクティビティモニタで全体的な消費を確認することもできますが、Ollamaに最も役立つ解釈は通常 PROCESSOR 列です。

客観的な指標: tokens per second

実際のパフォーマンスを比較するには、CPU/GPUのチャートを見るだけでは不十分です。最も役立つ指標は生成速度です。

CLIから簡単に確認する方法は、verboseモードでモデルを実行することです:

ollama run llama3.2 --verbose

--verbose フラグはWindows、macOS、Linuxで同じように動作します。PowerShell、ターミナル、Bashシェルで使用できます。

応答が完了すると、Ollamaは次のような指標を表示します:

prompt eval rate:  1200.00 tokens/s
eval rate:           45.00 tokens/s

eval rate 指標は、モデルが1秒あたりに生成するおおよそのトークン数を示します。値が大きいほど生成が速くなります。

APIから取得する応答にも、最終的な応答に eval_counteval_duration といった指標が含まれます。おおよその速度は次のように計算できます:

tokens_per_second = eval_count / eval_duration * 1_000_000_000

eval_duration はナノ秒単位だからです。

モデルが遅いときの素早い診断

  1. ollama ps を実行する。
  2. PROCESSOR100% GPU100% CPU、それとも混在を示しているか確認する。
  3. CPU/GPUの混在がある場合は、より小さなモデルや小さなコンテキストを試す。
  4. --verbose で計測する。
  5. モデル間で eval rate を比較する。
  6. NVIDIAを使っている場合は nvidia-smi でVRAMを確認する。
  7. タスクマネージャーがモデルの計算アクティビティのすべてを反映していると思い込まないようにする。

15. Context length {#section-15}

context length は、モデルが1回のクエリで考慮できるトークンの最大数です。

これは特に次の場面で重要です:

  • RAG;
  • 長文ドキュメントの分析;
  • エージェント;
  • コードアシスタント;
  • 長い対話。

最大コンテキスト vs 実効コンテキスト

2つの概念を区別する必要があります:

概念意味
モデルの最大コンテキストアーキテクチャや構成上、モデルがサポートし得る量。
実効コンテキストOllamaが具体的な実行で実際に使う量。

実効コンテキストはAPIの num_ctx または同等の設定で制御します。指定しない場合、Ollamaはモデルがサポートする最大コンテキストよりも小さい場合があるデフォルト値を適用します。

これは、利用可能なすべてのコンテキストが自動的に使われていると思い込みがちなクラウドAPI出身の利用者を驚かせがちです。

コンテキストとオフロードを確認する

実行:

ollama ps

最近のバージョンでは、出力に PROCESSOR に加えて CONTEXT 列が含まれることがあります。

概念的な例:

NAME             ID              SIZE      PROCESSOR    CONTEXT    UNTIL
gemma3:latest    a2af6cc3eb7f    6.6 GB    100% GPU     65536      2 minutes from now

これにより同時に2つのことを確認できます:

  • どのくらいのコンテキストが使われているか;
  • モデルが完全にGPUに入ったか、CPU/GPUに分かれているか。

APIでコンテキストを設定する

/api/chat での使用例:

curl http://localhost:11434/api/chat \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.2",
    "messages": [
      {
        "role": "user",
        "content": "この長いテキストを要約してください..."
      }
    ],
    "stream": false,
    "options": {
      "num_ctx": 8192
    }
  }'

コンテキストは大きければよいというものではない

コンテキストを増やせば長いテキストを扱えるようになりますが、同時に次のような副作用もあります:

  • RAMやVRAMをより多く消費する;
  • モデルの一部がCPUにオフロードされる;
  • tokens per secondが下がる;
  • 応答時間が増える。

ローカルモデルでは計測することが大切です。多くの単純なタスクでは、より小さなコンテキストの方が速く、十分な場合もあります。

グローバル設定

環境変数で設定することもできます:

OLLAMA_CONTEXT_LENGTH=8192

変更後はOllamaを再起動してください。


16. OpenAI APIとの互換性 {#section-16}

OllamaはOpenAIスタイルのエンドポイントとの互換性も提供します。

これにより、ベースURLを変更するだけで既存コードの一部を再利用できます。

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama"
)

respuesta = client.chat.completions.create(
    model="llama3.2",
    messages=[
        {
            "role": "user",
            "content": "こんにちは、Ollamaとは何かを説明してください。"
        }
    ]
)

print(respuesta.choices[0].message.content)

ローカルサーバーを使う場合、APIキーは任意の文字列で構いません。クラウドプロバイダーのようにOllamaのローカルサーバーがAPIキーを検証することはないからです。


17. ベストプラクティス {#section-17}

1. 基準なしにモデルをダウンロードしない

各モデルは数GBを占めることがあります。ダウンロード前に、サイズ、用途、要件を確認しましょう。

ollama show llama3.2

2. 再現性が重要なときは明示的なタグを使う

実プロジェクトでは、曖昧なエイリアスへの依存を避けましょう。

良い例:

ollama run llama3.1:8b

汎用的なエイリアスに常に依存するのではなく。

3. 生成モデルとembeddingsモデルを分ける

RAGシステムでは、次の使い分けが一般的です:

  • 高速なembeddingsモデル;
  • より高品質なチャット/生成モデル。

例:

Embeddings: embeddinggemma
生成: llama3.2、gemma3、qwen3、その他のチャットモデル

4. Ollamaを直接インターネットに公開しない

次のように設定すると:

OLLAMA_HOST=0.0.0.0:11434

Ollamaは他のマシンからの接続を受け付けるようになります。

ローカルネットワークでは便利ですが、認証、ファイアウォール、セキュアなリバースプロキシなしに直接インターネットに公開してはいけません。

5. パフォーマンスを計測する

モデル比較のために:

  • ロード時間を計測する;
  • tokens per secondを計測する;
  • RAM/VRAMの消費量を計測する;
  • ollama ps でCPUかGPUかを確認する。

6. CORSに注意

ローカルWebアプリからOllamaを利用する場合は、OLLAMA_ORIGINS の設定が必要になることがあります。

開発時には広めの設定でも構いませんが、本番では制限する必要があります。


18. オペレーティングシステム別のよくあるエラー {#section-18}


18.1 Windows

ollama がコマンドとして認識されない

ターミナルを閉じて新しいものを開いてください。

それでも失敗する場合は、Ollamaがインストールされていること、ユーザーのPATHが更新されていることを確認してください。

curl が期待どおりに動作しない

従来のPowerShellでは次を使ってください:

curl.exe http://localhost:11434

または:

Invoke-WebRequest http://localhost:11434

プログレスバーに変な文字が出る

Windows 10で古いフォントを使っていると発生することがあります。ターミナルのフォントをCascadia Codeなどに変更するか、Windows Terminalを使用してください。

Cドライブの容量が少ない

設定する:

OLLAMA_MODELS=D:\OllamaModels

その後Ollamaを再起動します。

GPUを使わない

確認:

ollama ps

NVIDIA/AMDドライバとタスクマネージャーでのGPU使用率も確認してください。


18.2 macOS

CLIが見当たらない

Ollama.app を開き、要求されたらCLIリンクの作成を許可してください。

次でも確認できます:

which ollama

環境変数が反映されない

launchctl setenv を使い、Ollama.appを再起動してください。

例:

launchctl setenv OLLAMA_HOST "127.0.0.1:11434"

Intel Macでのパフォーマンスが低い

Intel/x86のMacではCPU実行を想定してください。ローカルでより良いパフォーマンスを得るには、Apple Silicon Mシリーズの方が適しています。

ログを確認する

cat ~/.ollama/logs/server.log

18.3 Linux

サービスが起動しない

sudo systemctl status ollama

ログを確認する

journalctl -e -u ollama

または:

journalctl -u ollama --no-pager --follow --pager-end

変数を変更したのに反映されない

サービスを編集した後は:

sudo systemctl daemon-reload
sudo systemctl restart ollama

NVIDIA GPUが検出されない

確認:

nvidia-smi

動作しない場合は、NVIDIAドライバのインストールを確認してください。

AMD GPUが検出されない

ディストリビューションとハードウェアに応じて、AMD/ROCmドライバを確認してください。


19. 演習課題 {#section-19}

演習1 — インストールと確認

自分のオペレーティングシステムにOllamaをインストールし、次の出力を提出してください:

ollama --version
ollama list

その後、次を実行してください:

curl http://localhost:11434

Windowsでは次を使えます:

curl.exe http://localhost:11434

演習2 — 初めてのモデル

ダウンロードして実行してください:

ollama run llama3.2

プロンプト:

教師あり学習を一文で説明し、その後に実用的な例を一つ示してください。

応答を保存してください。


演習3 — モデルの比較

例えば次の2つのモデルを比較してください:

ollama run llama3.2
ollama run gemma3

同じプロンプトを使用します:

ベイズの定理を医療の例で説明してください。

比較する項目:

  • 応答の品質;
  • 体感速度;
  • RAM/VRAMの消費;
  • ollama ps でのCPU/GPU使用状況。

演習4 — REST API

該当のオペレーティングシステムから /api/chat を呼び出してください。

Windows

(Invoke-WebRequest `
  -Method POST `
  -Uri http://localhost:11434/api/chat `
  -ContentType "application/json" `
  -Body '{
    "model": "llama3.2",
    "messages": [
      {
        "role": "user",
        "content": "ローカルAIで作れる簡単なプロジェクトのアイデアを5つください。"
      }
    ],
    "stream": false
  }'
).Content | ConvertFrom-Json

macOS / Linux

curl http://localhost:11434/api/chat \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama3.2",
    "messages": [
      {
        "role": "user",
        "content": "ローカルAIで作れる簡単なプロジェクトのアイデアを5つください。"
      }
    ],
    "stream": false
  }'

演習5 — Pythonクライアント

次を行うスクリプトを作成してください:

  1. preguntas.txt というファイルから質問を読み込む。
  2. ollama.chat で各質問をモデルに送信する。
  3. タイムスタンプ付きでJSONファイルに応答を保存する。

ベース例:

import json
from datetime import datetime
import ollama

with open("preguntas.txt", "r", encoding="utf-8") as f:
    preguntas = [line.strip() for line in f if line.strip()]

resultados = []

for pregunta in preguntas:
    respuesta = ollama.chat(
        model="llama3.2",
        messages=[
            {
                "role": "user",
                "content": pregunta
            }
        ]
    )

    resultados.append({
        "pregunta": pregunta,
        "respuesta": respuesta["message"]["content"],
        "timestamp": datetime.now().isoformat()
    })

with open("respuestas.json", "w", encoding="utf-8") as f:
    json.dump(resultados, f, ensure_ascii=False, indent=2)

演習6 — 完全なミニRAG

embeddingsのセクションでは、最も類似する段落を探す方法をすでに見ました。この演習ではRAGフローを完成させます:

  1. 人工知能に関する10個の段落を用意する。
  2. embeddinggemma でembeddingsを生成する。
  3. ベクトルをメモリに保存する。
  4. 質問が与えられたら、最も類似する段落を検索する。
  5. その段落をコンテキストとしてチャットモデルに渡す。
  6. そのコンテキストのみを使って 答えるようにモデルに指示する。
  7. コンテキストが不足する場合、モデルは「コンテキストに十分な情報がありません」と答える必要がある。

生成のための推奨プロンプト:

提供されたコンテキストのみを使って質問に答えてください。

コンテキストに十分な情報がない場合は、次のように答えてください:
「コンテキストに十分な情報がありません」。

コンテキスト:
{{contexto}}

質問:
{{pregunta}}

演習7 — パフォーマンス分析

同じプロンプトを2つの異なるモデルで実行し、次を記録してください:

  • ロード時間;
  • 合計時間;
  • CPU/GPUの使用率;
  • 体感品質;
  • モデルのサイズ。

使用:

ollama ps

20. まとめ {#section-20}

このチュートリアルにより、Windows、macOS、Linux でOllamaをインストールして使用し、ローカルモデルを実行し、REST APIを利用し、Pythonと統合し、RAGシステム向けのembeddingsを生成できるようになりました。

Ollamaは、応用AIを学ぶ、ローカルモデルで実験する、プライベートなプロトタイプを構築するために非常に役立つツールです。常にもっとも先進的なクラウドモデルを置き換えるわけではありませんが、現代の人工知能ソリューションのアーキテクチャをより深く理解するうえで役立ちます。

次のモジュールでは、以下に進むことができます:

  • 完全なRAGシステム;
  • ベクトルデータベースとの統合;
  • エージェント;
  • 企業向け社内ツール;
  • コードアシスタント;
  • 制御されたローカルデプロイメント。

公式の参考資料