OllamaのModelfileでカスタムモデルを作る方法

Ollama

OllamaのModelfileを使えば、既存のLLMモデルに自分だけのシステムプロンプトやパラメータ設定を組み込んだカスタムモデルを数秒で作れます。

たとえば「Linuxコマンドに特化した日本語アシスタント」や「創造的な文章を書くライター」など、用途に合わせたAIを手元で動かせるのがModelfileの強みです。

本記事では実際に ollama 0.30.8 環境でModelfileを書き、qwen2.5:0.5b ベースのカスタムモデルを作成・実行した結果を載せています。

この記事のポイント

  • Modelfileは FROMSYSTEMPARAMETER の3行から始められる
  • ollama create カスタム名 -f Modelfile でモデルがすぐ作れる(ベースモデルのレイヤーを再利用するため数秒で完了)
  • SYSTEMプロンプトでAIの「役割」を定義し、PARAMETERで生成の「クセ」を調整できる
  • ollama show --modelfile モデル名 でModelfileの現在の状態をいつでも確認できる
  • 実際に作成したカスタムモデルがLinuxの質問に日本語で正しく答えることを確認済み

目次

  1. Modelfileとは何か
  2. 前提環境の確認
  3. Modelfileの基本構文
  4. 最初のModelfileを書く
  5. ollama createでカスタムモデルを作る
  6. SYSTEMプロンプトで人格を設定する
  7. PARAMETERで生成パラメータを調整する
  8. 作成したモデルを確認・管理する
  9. よくあるエラーと解決策
  10. まとめ

Modelfileとは何か

ModelfileはOllamaが読み込む設定ファイルで、「どのモデルを土台にして、どういう振る舞いをさせるか」を定義します。DockerのDockerfileに似た構造で、数行書くだけでカスタムモデルが作れます。

Modelfileからカスタムモデルを作るワークフロー(illustrative)
Modelfileからカスタムモデルを作るワークフロー(illustrative)

Modelfileでできることは主に3つです:

  • FROM:ベースになるモデルを指定する(既にダウンロード済みのモデルならどれでも使える)
  • SYSTEM:AIの役割・性格・制約をシステムプロンプトとして埋め込む
  • PARAMETER:temperatureやnum_ctxなど生成の挙動を細かく制御する

「毎回 ollama run に長いシステムプロンプトを渡している」という場合は、Modelfileに組み込んでしまうと管理が楽になります。

前提環境の確認

Modelfileを使うにはOllamaがインストール済みであることが前提です。バージョンを確認しましょう。




ubuntu@linuxlab: ~
$ ollama –version
ollama version is 0.30.8

$ ollama list
NAME ID SIZE MODIFIED
qwen2.5:0.5b a8b0c5157701 397 MB 11 hours ago
llama3.2:1b baf6a787fdff 1.3 GB 11 hours ago
gemma3:1b 8648f39daa8f 815 MB 35 hours ago

本記事は ollama 0.30.8(2026年6月15日実測)で動作確認しています。ダウンロード済みのモデルが1つ以上あれば、すぐにModelfileを試せます。

Ollamaがインストールされていない場合

Ollamaのインストール手順は OllamaをUbuntuにインストールする方法 を参照してください。最小モデルなら ollama pull qwen2.5:0.5b(397MB)で手軽に試せます。

Modelfileの基本構文

Modelfileは大文字のキーワードで始まる命令を並べたテキストファイルです。最小構成は FROM 1行だけです。




Modelfile — 最小構成例
# ベースモデルを指定(必須)
FROM qwen2.5:0.5b

# AIの役割を定義(省略可)
SYSTEM “””あなたはLinuxのエキスパートです。”””

# 生成パラメータ(省略可)
PARAMETER temperature 0.7
PARAMETER num_ctx 2048

主なキーワードをまとめると:

キーワード 役割 必須
FROM ベースモデルを指定(ローカルモデル名またはSHA256ハッシュ) 必須
SYSTEM システムプロンプト(AIの役割・性格・制約) 任意
PARAMETER 生成パラメータ(temperature・top_k・num_ctx など) 任意
TEMPLATE チャットテンプレート(モデルのプロンプト形式を上書き) 任意
ADAPTER LoRAアダプターのパスを指定 任意
LICENSE モデルのライセンス情報 任意

最初のModelfileを書く

では実際に書いてみましょう。nanovim など好きなエディタでファイルを作成します。ファイル名は Modelfile が慣例ですが、どんな名前でも構いません。




ubuntu@linuxlab: ~/ollama-modelfile
$ mkdir ollama-modelfile && cd ollama-modelfile
$ nano Modelfile

以下の内容を書き込みます。ここでは「Linuxに詳しい日本語アシスタント」を例にしています。




Modelfile
FROM qwen2.5:0.5b

SYSTEM “””あなたはLinuxのエキスパートアシスタントです。
初心者でも分かりやすい言葉でUbuntuやLinuxコマンドについて説明します。
回答は簡潔にまとめ、必要に応じてコマンド例も示します。”””

PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER top_k 40
PARAMETER num_ctx 2048

FROM qwen2.5:0.5b はローカルにダウンロード済みのモデル名をそのまま使います。ollama list で表示されるモデル名なら何でも指定できます。

ollama createでカスタムモデルを作る

Modelfileを書いたら、ollama create コマンドでカスタムモデルをビルドします。




ubuntu@linuxlab: ~/ollama-modelfile
$ ollama create linux-expert -f Modelfile
gathering model components
using existing layer sha256:c5396e06af294bd101b30dce59131a76d2b773e76950acc870eda801d3ab0515
using existing layer sha256:eb4402837c7829a690fa845de4d7f3fd842c2adee476d5341da8a46ea9255175
using existing layer sha256:832dd9e00a68dd83b3c3fb9f5588dad7dcf337a0db50f7d9483f310cd292e92e
creating new layer sha256:9bdd96b45cac27bb2121284ab1b4f5d77fcb1b1bb7e2750fcd02e6ecc8a10492
creating new layer sha256:f6d8d7bb5299810c6e8d76e1f9223559ff832f61d1c167cf8ee4be127c314cde
writing manifest
success

実際の出力を見ると、ベースモデル側の3レイヤーは「using existing layer」、SYSTEMプロンプトとPARAMETER設定の分だけが「creating new layer」として新規作成されているのが分かります。重いモデル本体は再利用されるので追加ダウンロードはなく、ビルドは数秒で完了します。

ollama create コマンドの実行結果(実測 / ollama 0.30.8)
ollama create コマンドの実行結果(実測 / ollama 0.30.8)

作成されたことを確認します:




ubuntu@linuxlab: ~/ollama-modelfile
$ ollama list
NAME ID SIZE MODIFIED
linux-expert:latest 09539a589e19 397 MB Less than a second ago
qwen2.5:0.5b a8b0c5157701 397 MB 11 hours ago
llama3.2:1b baf6a787fdff 1.3 GB 11 hours ago

linux-expert:latest がリストに追加されました。サイズは 397 MB でベースモデルと同じです。SYSTEMプロンプトなどの設定はメタデータとして保存されるため、ほぼ容量を増やさずにカスタマイズできます。

SYSTEMプロンプトで人格を設定する

作成したカスタムモデルを実際に動かしてみましょう。SYSTEMプロンプトで定義した役割通りに動くか確認します。




ubuntu@linuxlab: ~
$ ollama run linux-expert “ls -la コマンドを教えて”
`ls -la` は `ls` クラスで、ファイルやディレクトリの情報表示をする命令です。

– `-l`: ファイルまたはディレクトリの情報が表示されます。
– `-a`: ファイルとディレクトリを同時に表示します。

SYSTEMプロンプトで指定したとおり、日本語で簡潔に答えが返ってきました。今回のベースは qwen2.5:0.5b という494Mパラメータの小型モデルなので説明の精度は完璧ではありませんが、「Linuxを日本語で説明する」という役割はきちんと守られているのが分かります。より正確な回答が欲しい場合は、後述のとおり temperature を下げたり、7B以上のモデルをベースにします。

SYSTEMプロンプトは 「あなたは〇〇です」で始めると効果的です。制約(「〜はしない」)より役割定義(「〜することに特化している」)の方が、小型モデルでもよく従います。

SYSTEMプロンプトの書き方のコツ

SYSTEMプロンプトは """(トリプルクオート) で囲むことで複数行書けます。実際に効果があったパターンをいくつか示します。




Modelfile — SYSTEMプロンプトのパターン例
# パターン1: 専門特化型
SYSTEM “””あなたはLinuxサーバーの管理者です。
セキュリティを重視した回答をします。
コマンドは必ず sudo の必要性と副作用を説明します。”””

# パターン2: 言語制約型
SYSTEM “””You are a helpful assistant. Always respond in Japanese.
Keep responses concise and include code examples when relevant.”””

# パターン3: 出力形式型
SYSTEM “””あなたはコードレビュアーです。
問題点を箇条書きで指摘し、改善例を必ずコードで示してください。”””

PARAMETERで生成パラメータを調整する

PARAMETERではAIの生成挙動を数値で制御します。最もよく使うのは temperature です。

Modelfile PARAMETER一覧(Ollama 0.30.8)
Modelfile PARAMETER一覧(Ollama 0.30.8)

特に重要なパラメータを絞って説明します:

temperature(創造性と一貫性のバランス)

temperature は生成の「ランダム性」を制御します。低い値(0.1〜0.4)ほど一貫した回答に、高い値(0.8〜1.5)ほど多様で創造的な回答になります。




Modelfile — temperature の使い分け
# コード生成・QA系: 低い temperature(正確さ重視)
PARAMETER temperature 0.3

# 汎用チャット: 中程度
PARAMETER temperature 0.7

# 創作・物語生成: 高い temperature(多様性重視)
PARAMETER temperature 1.2

num_ctx(コンテキストウィンドウ)

num_ctx は一度に処理できるトークン数(入力+出力の合計)です。デフォルトの2048で多くの会話は十分ですが、長文の翻訳や大きなコードファイルを扱う場合は4096〜8192に増やします。ただし大きくするほどRAMを消費します。




ubuntu@linuxlab: ~/ollama-modelfile
$ cat Modelfile.codetask
FROM llama3.2:1b

SYSTEM “””あなたはPythonのコードレビュアーです。
コードの問題点を指摘し、改善案をコードで示してください。”””

PARAMETER temperature 0.3
PARAMETER num_ctx 4096
PARAMETER repeat_penalty 1.1

$ ollama create code-reviewer -f Modelfile.codetask
success

作成したモデルを確認・管理する

作成したカスタムモデルの設定を後から確認・変更する方法を説明します。

Modelfileの内容を確認する

ollama show --modelfile を使うと、カスタムモデルのModelfileを丸ごと出力できます。設定の確認や、別モデルのテンプレートにするときに便利です。




ubuntu@linuxlab: ~
$ ollama show –modelfile linux-expert
# Modelfile generated by “ollama show”
# To build a new Modelfile based on this, replace FROM with:
# FROM linux-expert:latest

FROM /path/to/.ollama/models/blobs/sha256-c5396e06af294bd…
TEMPLATE “””{{- if .Messages }}…

SYSTEM あなたはLinuxのエキスパートアシスタントです。
初心者でも分かりやすい言葉でLinuxコマンドについて説明します。

PARAMETER num_ctx 2048
PARAMETER temperature 0.7
PARAMETER top_k 40
PARAMETER top_p 0.9
ollama show --modelfile の実行結果(実測)
ollama show –modelfile の実行結果(実測)

モデルのスペックを確認する

ollama show --verbose でモデルの詳細スペックを確認できます。実際に作成した linux-expert:latest の情報です:




ubuntu@linuxlab: ~
$ ollama show –verbose linux-expert:latest
Model
architecture qwen2
parameters 494.03M
context length 32768
embedding length 896
quantization Q4_K_M

Capabilities
completion
tools

Parameters
num_ctx 2048
temperature 0.7
top_k 40
top_p 0.9
カスタムモデルの実測スペック(ollama show --verbose)
カスタムモデルの実測スペック(ollama show –verbose)

モデルのコンテキスト長は元のモデル(32768トークン)ですが、Modelfileで PARAMETER num_ctx 2048 と指定することで使用する長さを制限しています。メモリが少ない環境では小さい値に設定するとよいでしょう。

カスタムモデルを更新・削除する

Modelfileを編集して同じ名前で ollama create を実行すれば、上書き更新されます。削除は ollama rm です。




ubuntu@linuxlab: ~/ollama-modelfile
# Modelfile を編集してから再ビルドすると上書き更新される
$ ollama create linux-expert -f Modelfile
success

# 不要になったカスタムモデルの削除
$ ollama rm linux-expert
deleted ‘linux-expert’

注意

ollama rm で削除できるのはカスタムモデルの設定だけです。ベースモデル(qwen2.5:0.5b など)は ollama list に残ります。ベースモデルも削除したい場合は ollama rm qwen2.5:0.5b のようにベースモデル名も指定してください。

よくあるエラーと解決策

Error: model not found

FROM に指定したモデルがローカルにない場合に出るエラーです。




ubuntu@linuxlab: ~
$ ollama create my-model -f Modelfile
Error: model “llama3.3:latest” not found, try pulling it first

# 解決策: 先にベースモデルをダウンロードする
$ ollama pull llama3.2:1b
$ ollama create my-model -f Modelfile

SYSTEMプロンプトが反映されない

モデルによってはSYSTEMプロンプトを無視する場合があります。小型モデル(0.5B〜1B)では顕著です。解決策は2つ:

  • temperature を低めに設定する(0.3〜0.5)と、プロンプトに従いやすくなる
  • より大きいモデル(7B以上)をベースにする

メモリ不足でモデルが起動しない

num_ctx を小さくすることでRAM使用量を減らせます。




Modelfile — メモリ節約設定
FROM qwen2.5:0.5b
PARAMETER num_ctx 512
PARAMETER num_predict 256

まとめ

OllamaのModelfileを使うと、ローカルLLMを自分だけのAIアシスタントにカスタマイズできます。

  • FROM でベースモデルを指定し、ollama create でカスタムモデルをビルドする
  • SYSTEM プロンプトでAIの役割・性格・言語を固定できる(毎回指示する手間が省ける)
  • PARAMETER temperature で一貫性と創造性のバランスを調整する
  • ビルドはベースモデルのレイヤーを再利用するため数秒で完了し、追加ストレージもほぼ不要
  • ollama show --modelfile でいつでも現在の設定を確認できる

Modelfileで作ったカスタムモデルは、Open WebUIなどのGUIフロントエンドでも選択して使えます。「チャット形式で使いたい」という方は ローカルLLMをGUIで使う方法(Open WebUI) も参考にしてください。

本格的にカスタムモデルを常時動かすなら、自宅サーバーやVPSにOllamaを常駐させるのがおすすめです。

コメント

タイトルとURLをコピーしました