Clicky

【Ollama】自分のPCでLLMを動かし、モデル作成まで試してみる

生成AI(エーアイ)
生成AI(エーアイ)
この記事は約13分で読めます。

※記事中に広告情報を含みます。

スキルを手に入れた時、人は強くなれる。
Youtubeでスキルアップを始める 電子書籍でスキルアップを始める

はじめに

最近はChatGPTのようなクラウド上のLLMを使う機会が増えましたが、LLMは自分のPC上でも動かすことができます。

ローカルでLLMを動かすと、次のようなメリットがあります。

  • インターネット接続がなくても使える
  • 入力した内容を外部サービスへ送らずに済む
  • モデルやパラメータを自分で調整できる
  • APIサーバーとして使い、自作アプリから呼び出せる

そのために便利なのが Ollama です。

Ollamaは、ローカル環境でLLMを簡単に扱うためのツールです。
モデルのダウンロード、実行、API経由での利用、独自モデルの作成などを、かなり少ないコマンドで行えます。

この記事では、Ollamaを初めて触る人向けに、インストールからモデル実行、API利用、さらにGGUFモデルを使った独自モデル作成までを順番に説明します。


Ollamaとは

Ollamaは、LLMをローカルPCで動かすための実行環境です。

イメージとしては、Dockerがコンテナを扱うように、OllamaはLLMのモデルを扱います。

たとえば、モデルを取得する場合は次のようにします。

ollama pull gemma3:4b

実行する場合は次のようにします。

ollama run gemma3:4b

モデル名を指定するだけで、必要なファイルの取得や実行をOllamaが面倒を見てくれます。


Ollamaをインストールする

Ollamaは次のOSで利用できます。

  • Windows
  • macOS
  • Linux

まずは公式サイトからインストーラーをダウンロードします。

Ollama公式サイト

インストール後、ターミナルまたはPowerShellで次のコマンドを実行してみます。

ollama --version

バージョン情報が表示されれば準備完了です。

Windowsの場合は、インストール後にOllamaがバックグラウンドで起動していることがあります。
うまく動かない場合は、一度PCを再起動するか、Ollamaアプリを起動してから再度コマンドを試してください。


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

Ollamaでは、モデルを次の形式で指定します。

モデル名:タグ

たとえば、Gemma 3の4Bモデルを使う場合は次のようになります。

gemma3:4b

4b は、おおよそ40億パラメータ規模のモデルであることを表しています。

モデルをダウンロードするには、次のコマンドを使います。

ollama pull gemma3:4b

初回はモデル本体をダウンロードするため、回線速度やモデルサイズによって時間がかかります。

モデル一覧はOllamaのライブラリページから確認できます。

Ollama Models


モデル名とタグについて

Ollamaのモデルにはタグがあります。

たとえば次のような形式です。

gemma3:4b qwen3:0.6b llama3.2:3b

タグを省略した場合、多くのモデルでは latest が使われます。

つまり、次のコマンドは、

ollama pull gemma3

実質的には次のような意味になります。

ollama pull gemma3:latest

ただし、latest は将来的に中身が変わる可能性があります。
再現性を重視する場合は、できるだけ明示的にタグを指定したほうが安心です。


モデルを実行する

モデルをダウンロードしたら、次のコマンドでチャットを開始できます。

ollama run gemma3:4b

実行すると、ターミナル上でプロンプト入力ができるようになります。

たとえば次のように入力できます。

日本語で、Ollamaとは何かを初心者向けに説明してください。

終了したい場合は、通常は次のように入力します。

/bye

または Ctrl + D で終了できる環境もあります。

もしまだダウンロードしていないモデルを ollama run した場合、Ollamaは自動的にモデルを取得してから起動します。


ローカルLLMをAPIとして使う

Ollamaの便利な点は、コマンドラインだけでなくAPIからも使えることです。

Ollamaには大きく分けて2種類のAPIがあります。

  • Ollama独自API
  • OpenAI API互換API

Ollama独自API

Ollama本来のAPIを使うと、チャット生成、通常のテキスト生成、モデル一覧取得などができます。

Ollamaが起動している状態で、通常は次のURLでAPIサーバーが動いています。

http://localhost:11434

たとえば、チャット形式で問い合わせる場合は次のようにできます。

curl http://localhost:11434/api/chat -d '{ "model": "gemma3:4b", "messages": [ { "role": "user", "content": "Ollamaについて短く説明してください" } ] }'

Windows PowerShellの場合、引用符の扱いが少し面倒なので、うまくいかない場合はPythonやJavaScriptのライブラリを使うほうが楽です。

Pythonから使う場合は、Ollama公式のPythonパッケージを使えます。

pip install ollama

簡単な例は次の通りです。

import ollama response = ollama.chat( model="gemma3:4b", messages=[ { "role": "user", "content": "ローカルLLMのメリットを3つ教えてください" } ] ) print(response["message"]["content"])

OpenAI API互換API

OllamaはOpenAI APIと似た形式のAPIにも対応しています。

そのため、OpenAI API向けに作られたツールやライブラリの一部を、Ollamaに向けて使える場合があります。

エンドポイントは次のようになります。

http://localhost:11434/v1

PythonのOpenAI SDKを使う例です。

pip install openai
from openai import OpenAI client = OpenAI( base_url="http://localhost:11434/v1", api_key="ollama" ) response = client.chat.completions.create( model="gemma3:4b", messages=[ { "role": "user", "content": "Ollamaを使う利点を初心者向けに説明してください" } ] ) print(response.choices[0].message.content)

api_key はOllamaでは実際には認証に使われませんが、OpenAI SDK側で必須になるため適当な文字列を入れています。

注意点として、OpenAI互換APIではOllama独自の細かい設定をすべて扱えるわけではありません。
コンテキスト長などを細かく指定したい場合は、Ollama APIやModelfileを使うほうが扱いやすいです。


Ollamaの内部では何が動いているのか

Ollamaの裏側では、主に llama.cpp が使われています。

llama.cppはC++で書かれた軽量なLLM推論エンジンです。
GPUがない環境でもCPUで動かせることがあり、ローカルLLM界隈では非常によく使われています。

Ollama自体はGoで書かれていますが、実際の推論処理ではllama.cppを活用しています。


GGUFとは

ローカルLLMを調べていると、よく GGUF という形式を見かけます。

GGUFは、llama.cppで使われるモデルファイル形式です。

Hugging Faceで配布されているモデルは、重み、トークナイザー、設定ファイルなどが複数ファイルに分かれていることが多いです。

一方、GGUFではそれらの情報を1つのファイルにまとめて扱えます。

そのため、ローカルでモデルを配布したり、Ollamaに読み込ませたりする際に便利です。


量子化とは

LLMはサイズが大きいため、そのままではメモリを大量に使います。

そこでよく使われるのが 量子化 です。

量子化とは、モデルの重みをより軽い形式に変換して、ファイルサイズやメモリ使用量を減らす技術です。

たとえば、BF16のモデルをQ4_K_Mのような形式に変換すると、精度をある程度保ちながら軽量化できます。

ざっくり言うと、次のようなイメージです。

  • BF16: 高精度だが重い
  • Q8系: 比較的高品質でやや軽い
  • Q4系: かなり軽く、実用性も高い
  • Q2/Q3系: とても軽いが品質低下が目立つ場合がある

初心者が最初に試すなら、Q4_K_M あたりが扱いやすいです。


Ollama用の独自モデルを作る

ここからは少し発展編です。

Hugging Face上のモデルをGGUFに変換し、それをOllamaで使えるモデルとして登録してみます。

今回は軽量なモデルとして、Qwen系の小さなモデルを例にします。

作業の流れは次の通りです。

  1. 作業ディレクトリを作る
  2. llama.cppを取得する
  3. Python仮想環境を作る
  4. 必要なPythonパッケージを入れる
  5. Hugging FaceモデルをGGUFに変換する
  6. 必要に応じて量子化する
  7. Modelfileを書く
  8. ollama create でモデルを登録する
  9. ollama run で実行する

作業ディレクトリを作る

まず、作業用フォルダを作ります。

mkdir work cd work

Windows PowerShellでも同じコマンドで問題ありません。


llama.cppを取得する

次に、llama.cppのリポジトリをcloneします。

git clone https://github.com/ggml-org/llama.cpp.git

Gitが入っていない場合は、先にGitをインストールしてください。

git --version

でバージョンが表示されればGitは利用できます。


Python仮想環境を作る

Pythonの依存関係を作業用に分けるため、仮想環境を作ります。

macOSやLinuxの場合は次のようにします。

python3 -m venv venv source venv/bin/activate

Windows PowerShellの場合は次のようにします。

python -m venv venv .\venv\Scripts\Activate.ps1

もしPowerShellで実行ポリシーのエラーが出た場合は、次のように一時的に許可します。

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass .\venv\Scripts\Activate.ps1

仮想環境が有効になると、プロンプトの先頭に次のような表示が出ることがあります。

(venv)

llama.cppの依存パッケージを入れる

次に、llama.cppに含まれるPythonスクリプト用の依存関係をインストールします。

pip install -r llama.cpp/requirements.txt

ここでエラーが出る場合は、Pythonやpipのバージョンが古い可能性があります。

確認コマンドは次の通りです。

python --version pip --version


Hugging FaceモデルをGGUFに変換する

llama.cppには、Hugging Face形式のモデルをGGUFに変換するスクリプトが含まれています。

使うスクリプトは次のファイルです。

llama.cpp/convert_hf_to_gguf.py

たとえば、Qwen/Qwen3-0.6BをGGUFに変換する場合は次のようにします。

python llama.cpp/convert_hf_to_gguf.py \ --remote \ --outtype bf16 \ --outfile qwen3-0.6b-bf16.gguf \ Qwen/Qwen3-0.6B

Windows PowerShellでは、改行の書き方が違います。
1行で書くなら次のようになります。

python llama.cpp/convert_hf_to_gguf.py --remote --outtype bf16 --outfile qwen3-0.6b-bf16.gguf Qwen/Qwen3-0.6B

–remote を付けると、Hugging Faceからモデルを取得しながら変換できます。

主なオプションの意味は次の通りです。

--remote Hugging Faceからモデルを取得する --outtype bf16 出力形式をBF16にする --outfile qwen3-0.6b-bf16.gguf 出力ファイル名を指定する Qwen/Qwen3-0.6B 変換したいHugging Face上のモデルID

変換が完了すると、次のようなファイルが作られます。

qwen3-0.6b-bf16.gguf

モデルを量子化する

BF16のままだとファイルサイズやメモリ使用量が大きめです。
軽く使いたい場合は量子化します。

量子化にはllama.cppの llama-quantize を使います。

llama.cppを自分でビルドしてもよいですが、初心者の場合はリリースページからビルド済みファイルをダウンロードするほうが簡単です。

llama.cpp Releases

OSに合ったzipファイルをダウンロードし、展開します。
展開したフォルダに llama-quantize または llama-quantize.exe が含まれていることを確認します。

量子化コマンドは次のようになります。

llama-quantize qwen3-0.6b-bf16.gguf qwen3-0.6b-Q4_K_M.gguf Q4_K_M

Windowsでカレントディレクトリに llama-quantize.exe がある場合は、次のように実行します。

.\llama-quantize.exe qwen3-0.6b-bf16.gguf qwen3-0.6b-Q4_K_M.gguf Q4_K_M

成功すると、量子化済みのGGUFファイルが作られます。

qwen3-0.6b-Q4_K_M.gguf


Modelfileを作る

Ollamaで独自モデルを作るには、Modelfile という設定ファイルを使います。

Dockerでいう Dockerfile のようなものです。

作業ディレクトリに Modelfile という名前のファイルを作成します。

内容は次のようにします。

FROM ./qwen3-0.6b-Q4_K_M.gguf PARAMETER num_ctx 32768 PARAMETER temperature 1

それぞれの意味は次の通りです。

FROM 元にするモデルファイルを指定する PARAMETER num_ctx コンテキスト長を指定する PARAMETER temperature 出力のランダム性を指定する

temperature は値が高いほど出力が多様になり、低いほど安定した返答になりやすいです。


Ollamaにモデルを登録する

Modelfile ができたら、Ollamaにモデルとして登録します。

ollama create my/qwen3:0.6b

このコマンドは、カレントディレクトリにある Modelfile を自動的に読み込みます。

もしファイル名を変えている場合は、-f オプションで指定します。

ollama create my/qwen3:0.6b -f ./MyModelfile

登録できたか確認するには、次のコマンドを使います。

ollama list

一覧に my/qwen3:0.6b が表示されれば成功です。


作成したモデルを実行する

登録したモデルは、通常のOllamaモデルと同じように実行できます。

ollama run my/qwen3:0.6b

たとえば次のように聞いてみます。

あなたは日本語で回答するアシスタントです。Ollamaについて簡単に説明してください。

問題なく返答が返ってくれば、自作Modelfileによるモデル作成は成功です。


よくあるつまずき

メモリ不足になる

大きいモデルを使うと、PCのメモリやVRAMが足りないことがあります。

その場合は、より小さいモデルを使うか、量子化済みモデルを選びます。

初心者はまず、0.5Bから4B程度のモデルで試すのがおすすめです。


ダウンロードが遅い

モデルファイルは数GBになることがあります。

回線が遅い場合は時間がかかるため、安定したネットワークで実行してください。


ollama コマンドが見つからない

インストール後にターミナルを開き直してください。

それでも見つからない場合は、OllamaがPATHに追加されていない可能性があります。

Windowsでは、再起動すると解決することがあります。


GGUF変換でエラーが出る

よくある原因は次の通りです。

  • Pythonのバージョンが古い
  • pip install -r requirements.txt が失敗している
  • Hugging FaceのモデルIDが間違っている
  • ディスク容量が足りない
  • 対象モデルが変換スクリプトに対応していない

まずはエラーメッセージを確認し、依存関係とモデルIDを見直すとよいです。


ライセンスには注意する

ローカルLLMは手軽に使えますが、モデルごとにライセンスが異なります。

特に次のような用途では、必ずモデルカードやライセンスを確認してください。

  • 商用サービスで使う
  • 社内ツールに組み込む
  • モデルを再配布する
  • 生成結果を業務利用する

「ローカルで動く」ことと「自由に使ってよい」ことは別です。

個人の学習や検証では問題ない場合が多いですが、業務利用ではライセンス確認が必須です。


まとめ

Ollamaを使うと、ローカル環境でLLMをかなり簡単に扱えます。

基本的な流れはとてもシンプルです。

ollama pull モデル名 ollama run モデル名

さらにAPIを使えば、自作アプリからローカルLLMを呼び出すこともできます。

また、GGUFファイルとModelfileを使えば、自分で用意したモデルをOllamaに登録して実行できます。

最初は既存モデルを動かすだけで十分です。
慣れてきたら、量子化、Modelfile、API連携と少しずつ試していくと、ローカルLLMの仕組みがかなり見えてくるはずです。

ホーム
掲載依頼
WordPress
スキルアップ
記事カテゴリ
お問い合わせ
Youtube