the KodeLab

Ollama 入門ガイド|Windows・Linux・macOS でローカル LLM を動かす

8,007 文字 21 分で読めます
Ollama 入門ガイド|Windows・Linux・macOS でローカル LLM を動かす

ほとんどの人が大規模言語モデル(LLM)に触れる手段は、ChatGPT・Gemini・Claude・Grok・DeepSeek などのクラウド API です。便利ではあるものの、トークン単位の課金、利用制限、ネットワーク遅延、データを他社サーバーに送る必要があるといった問題がつきまといます。Ollama はこれらをまとめて解決してくれるツールで、オープンソースの LLM を自分のコンピュータ上で完全オフラインで動かせます。さらに後から AI Agent、MCP サーバー、AnythingLLM や Open WebUI といった UI と組み合わせるのも簡単です。

本記事では Windows・Linux・macOS で Ollama をインストールし、最初のモデルを動かし、自分のハードウェアに合ったモデルサイズを選び、Python や任意の REST クライアントから Ollama を呼び出すまでを順を追って解説します。

Ollama とは

**Ollama はローカルで動く LLM ランタイムです。**インストールすれば、ターミナル、内蔵の REST API、または Python・JavaScript・Java・C#・Go などのライブラリから操作できます。AI Agent、AnythingLLM、Open WebUI といった主要ツールが標準でバックエンドとして話しかける相手でもあります。

Ollama とモデルの関係

Ollama はメディアプレーヤー、LLM は動画ファイルだと考えるとわかりやすいです。プレーヤー自体に映画は入っていません。選んだものをダウンロードして、ロードして、再生するだけです。Ollama はダウンロード・メモリ・実行を管理するランタイムで、実際の知識は Llama 3Phi-3QwenMistralGemma といったモデルの重みファイル(通常は GGUF 形式)に格納されています。

Ollama と LLaMA

名前が似ているので混同されがちですが、LLaMA は Meta が公開しているオープンウェイトのモデルファミリで、Ollama はそれを動かすためのランタイムです。両者は別プロジェクトで、たまたま Ollama が LLaMA をうまく実行できるというだけです。Ollama はもちろん他にも多数のモデルファミリに対応しています。

インストール

Windows

Windows では winget 経由でインストールするか、公式ダウンロードページからインストーラを直接取得します。

winget install --id=Ollama.Ollama -e

インストール後、PowerShell を開いて ollama と打ち、動作することを確認しましょう。

Linux

Linux 向けには公式が用意しているワンライナーのインストールスクリプト ollama.com/install.sh があります。systemd サービスも自動的にセットアップしてくれます。

# Ollama のインストール
curl -fsSL https://ollama.com/install.sh | sh

# サービス状態の確認
systemctl status ollama

# サービスの起動・停止
systemctl start ollama
systemctl stop ollama

# 起動時に自動起動(デフォルトで有効)
systemctl enable ollama

systemd を操作するため、これらのコマンドはほぼ sudo を付けて実行する必要があります。

macOS

macOS で最もすっきりしているのは Homebrew でのインストールです。GUI インストーラを使いたい場合は ollama.com/download/mac から .dmg を取得することもできます。Homebrew についてもっと知りたい場合は macOS Homebrew 入門ガイドも参考にしてください。

# Homebrew でインストール
brew install ollama

# 現在のターミナルで Ollama を起動
ollama serve

# またはバックグラウンドサービスとして起動
brew services start ollama

# バックグラウンドサービスを停止
brew services stop ollama

ollama serve で起動すると、そのターミナルが占有されます。停止するには Control + C を押してください。

最初のモデルを動かす

サービスとして起動していない場合は、ターミナルを 1 枚開いて ollama serve を実行し、別のターミナルで以下のコマンドを叩きます。systemd や brew services でサービス起動済みなら、この手順はスキップできます。

# Ollama ライブラリから Google Gemma 3 4B モデルをダウンロード
ollama pull gemma3:4b

# 実行
ollama run gemma3:4b

ロードが終わると以下のプロンプトが表示されます。

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

そのまま入力するだけで対話できます。/? で内蔵コマンド一覧、/bye で対話セッションを終了します。実際のやり取りの例を示します。

>>> 東京スカイツリーの高さは?
東京スカイツリーの高さは **634 メートル(2,080 フィート)** です。

世界で最も高い自立式の電波塔として、2012 年に開業しました。

詳しくは公式サイトをご覧ください:

*   **東京スカイツリー公式サイト:** [https://www.tokyo-skytree.jp/](https://www.tokyo-skytree.jp/)

お役に立てれば幸いです!

ここで気づくことが 2 つあります。1 つ目は、出力に **bold**[link text](url) のような Markdown 記法が混じっている点です。これは LLM がそのように回答をフォーマットするよう訓練されているためです。Ollama のターミナル UI ではそのまま表示されますが、GUI フロントエンドではきれいにレンダリングされます。2 つ目は、思考能力を持つモデルでは出力の冒頭に <think>...</think> ブロックが入ることがあります。ターミナルではそのまま見えますが、多くの GUI フロントエンドでは「思考過程を表示」のようなトグルの裏に隠されます。

REST API から使う

Ollama には http://localhost:11434 で待ち受ける REST API が組み込まれており、どんな言語・ツールからでも叩けます。よく使うエンドポイントは次の 2 つです。

  • POST /api/generate — 単発の生成
  • POST /api/chat — マルチターン対話
curl http://localhost:11434/api/generate \
  -H "Content-Type: application/json" \
  -d '{"model":"llama3.2","prompt":"Hello"}'

モデルの管理

よく使うコマンド

# モデルのダウンロード/更新
ollama pull <モデル>           # ollama pull gpt-oss
ollama pull <モデル>:<>    # ollama pull gpt-oss:20b

# インストール済みモデルの一覧
ollama list

# 対話モードで起動
ollama run <モデル>            # ollama run gemma3
ollama run <モデル>:<>     # ollama run gemma3:4b

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

# 実行中のモデルを停止
ollama stop <id>

# モデルの削除
ollama rm <モデル>
ollama rm <モデル>:<>

コロンの後ろのタグはパラメータサイズを表します。省略すると、そのモデルファミリのデフォルトである latest タグが使われます。たとえば gemma3 は通常 gemma3:latest と等価で、現時点では gemma3:4b を指します。

Ollama がサポートするすべてのモデルは ollama.com/search で確認できます。各モデルのページには利用可能なサイズと、latest がどのバリエーションを指すかが書かれています。たとえば Gemma 3 のページでは 1B / 4B / 12B / 27B が並びます。

パラメータと量子化

パラメータはモデルが持つ重みの数です。8B なら 80 億の重みです。一般にパラメータが多いほど推論や生成の品質は上がりますが、ダウンロードサイズが大きくなり、必要な RAM / VRAM も増えます。

量子化は浮動小数点の重みをより少ないビット幅に圧縮する処理です(q4_K_Mq8_0 など)。ファイルが小さくなりロードも速くなりますが、品質はわずかに落ちます。ローカルで使う場合は、まず q4 系から始めるのがほぼ正解です。

別のクラスとして Mixture of Experts (MoE) モデルもあります。代表例は Mixtral 8x7B で、名前のとおり 7B のエキスパートサブモデルが 8 つパッケージされており、合計でおおむね 56B 相当のパラメータを持ちます。ただし推論時にはトークンごとに 1〜2 個のエキスパートしか起動しないため、大規模モデル並みの知識量を、はるかに少ない計算コストで利用できます。

モデルサイズとハードウェアの目安

冒頭の例で 4B を選んだのは、ダウンロードが速くほぼどんなノート PC でも動くからです。残りのサイズの大まかな目安は次の通りです。

モデルサイズパラメータ最低 RAM / VRAM の目安想定マシン
3B30 億4 GB RAM / 2 GB VRAMウルトラブック — 簡単な対話、軽いツール呼び出し
8B80 億8 GB RAM / 4–6 GB VRAM多くのノート PC のスイートスポット — 日常的なアシスタント、軽いコーディング補助
13B130 億16 GB RAM / 8–10 GB VRAMミドルレンジ GPU 搭載のノート/デスクトップ — より安定した回答、長い文脈
30B300 億32 GB RAM / 16 GB+ VRAMワークステーション — RAG や難易度の高いタスク
70B700 億64 GB RAM / 48 GB+ VRAMサーバー級のハードウェア

私が使っている M2 Pro 搭載・16 GB ユニファイドメモリの MacBook Pro では gemma3:4b は非常に軽快に動き、gemma3:12b も応答は速いものの、システムメモリのほとんどを食いつぶします。それより大きいサイズはきびしく、deepseek-r1:14b はかろうじて使える程度、gpt-oss:20b は 1 文字出るのに数秒かかり実用的とはいえません。

Gemma 3 には gemma3:270m という超小型モデル(2.7 億パラメータ)もあります。爆速で動きますが、出力品質は実用には遠く、テスト目的くらいにしか使えません。

よく使われるオープンソースモデル

Ollama ライブラリには数百のモデルがあります。最初に押さえておくと便利な代表的なファミリを紹介します。

モデルファミリチーム得意分野
Llama 3.1 / 3.2llama3.1llama3.2Meta汎用、多言語対応が強い。チャット・Q&A・コーディングに広く使われる。8B はローカルで快適、70B は本格的なハードかクラウドが必要。
Gemma 2 / Gemma 3gemma3:4bgemma3:12bGoogle軽量で研究向き。小さいサイズは起動が速い。12B 以上は実用にも耐える。
GPT-OSSgpt-oss:20bgpt-oss:120bOpenAIOpenAI が GPT-2 以来久しぶりに公開したオープンウェイトモデル。思考連鎖を内蔵するが、20B と 120B のみ。
Phi-3phi3:3.8bphi3:7bMicrosoft「小さくて切れる」設計。サイズの割にコードや推論で強い。リソースが限られたマシンに向く。
Mistral / Mixtral 8x7BMistral AIMistral 7B は効率と品質のバランスが良い。Mixtral 8x7B は MoE で推論能力が高いがメモリは食う。
Qwen 2 / 2.5qwen2:7bqwen2:14bAlibaba中国語が特に強く、多言語も全般に堅実。知識 Q&A や文書処理にも向く。
DeepSeekdeepseek-r1:7bdeepseek-coderDeepSeekコード生成と数学的推論に特化。deepseek-coder はローカル開発のコーディングアシスタントとして優秀。
LLaVAllava:7bコミュニティ(UC Berkeley + Microsoft 発)マルチモーダル対応、画像とテキストを同時に受け付ける。画像キャプション、ビジュアル Q&A、画面理解などに使われる。Llama や Mistral がベース。

「オープンソース」と「オープンウェイト」

少し用語の話を挟みます。普段「オープンソース」というとき、Linux や Python のように、ソースコードが完全公開されており、誰でも読み・修正・再配布でき、ライセンスによっては商用フォークも認められる、というのを指すことが多いです。

LLM ではこの定義がやや崩れます。「オープンソースモデル」と呼ばれているものの多くは、実際にはオープンウェイトモデルです。チームが学習済みの重みファイルを公開し、誰でもダウンロードしてローカルで動かせる一方、学習コード・データセット・学習レシピは非公開のままであることがほとんどです。モデルを使うことはできますが、どうやって作られたのかを完全に再現することはできません。

ライセンスや出自を評価するときには頭の片隅に置いておくと役に立ちます。

Python から Ollama を呼ぶ

サンプルを 2 つ紹介します。1 つ目は REST API を直接叩く方式なので、どの言語からでも、curl 一発でも実行できます。2 つ目は Ollama 公式の Python クライアントを使う方式です。

requests を使う方法

HTTP クライアントを持つどんな言語でも同じ要領で Ollama を呼べます。リクエストを送る前に Ollama が起動していることだけ確認してください。事前に ollama run gemma3 などを叩く必要はありません。ランタイムが必要に応じてモデルをロードします。

import requests

def main():
    url = "http://localhost:11434/api/chat"
    payload = {
        "model": "gemma3:4b",
        "messages": [
            {"role": "system", "content": "あなたは SEO アナリストです。日本語で答えてください。"},
            {"role": "user", "content": "開発者ブログを運営しています。SEO のヒントをいくつか教えてください。"},
        ],
        "stream": False,
    }
    resp = requests.post(url, json=payload)
    print(resp.json())

if __name__ == "__main__":
    main()

リクエスト中、および直後の少しの間、別のターミナルで ollama ps を叩くとモデルがメモリにロードされている様子を確認できます。返ってくる JSON の主要フィールドは以下の通りです。

フィールド意味
modelstring今回使ったモデル名とタグ。例:gemma3:4b
created_atstring (ISO 8601, UTC)リクエストのタイムスタンプ。
messageobjectモデルの返答。rolesystem / user / assistant)と content を含む。
doneboolean応答が完了したかどうか。ストリーミングモードでは最後のチャンクだけ true
done_reasonstring停止理由:stop(停止トークン到達)、length(最大トークン到達)、error
total_durationinteger (ns)リクエスト全体の所要時間(ナノ秒)。
load_durationinteger (ns)モデルのロード所要時間(コールドスタート時に長い)。
prompt_eval_countinteger入力プロンプトのトークン数。
prompt_eval_durationinteger (ns)プロンプトの処理所要時間。
eval_countinteger生成された出力トークン数。
eval_durationinteger (ns)出力生成の所要時間。

公式 ollama パッケージを使う方法

型付きクライアントを使いたい場合は pip install ollama でインストールし、JSON の取り回しを省略できます。

import ollama

def main():
    messages = [
        {"role": "system", "content": "あなたは親切なアシスタントです。日本語で答えてください。"},
        {"role": "user", "content": "太陽系について簡単に説明してください。"},
    ]
    response = ollama.chat(model="gemma3:4b", messages=messages)
    print(response["message"]["content"])

if __name__ == "__main__":
    main()

これだけで始められます。Ollama は本当によくできていて、自分のマシンが快適に扱えるサイズを選び、ツールを http://localhost:11434 に向けるだけで、チャット UI、AI エージェント、検索パイプラインなど、何にでも使える完全ローカルな LLM バックエンドが手に入ります。