OllamaのModelfileでカスタムモデルを作る方法|業務特化AIアシスタントをチームで使い回す設定手順

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)ローカルLLM > OllamaのModelfileでカスタムモデルを作る方法|業務特化AIアシスタントをチームで使い回す設定手順
「OllamaでロードしたLLMが良さそうなのに、毎回チャット開始時に同じシステムプロンプトを貼り直している」
「業務用のAIアシスタントをチームメンバー全員が同じ設定で使えるように配布したい」

そんな課題を抱えるサーバー管理者・情報システム担当者は多い。OllamaにはModelfileという仕組みがあり、ベースモデル・システムプロンプト・推論パラメータを1つのテキストファイルに定義して「業務専用カスタムモデル」として登録できる。

この記事では、Modelfileの基本構文から始まり、業務特化AIアシスタントの作成手順・パラメータ調整・gitを使ったチーム共有方法まで順を追って解説する。一度作成すればollama run カスタムモデル名一発で同じ設定のモデルを呼び出せるようになる。Ollamaの基本的なインストールと環境構築がまだの場合は、先にUbuntu ServerでローカルLLMを構築する方法を参照してほしい。

この記事のポイント

・ModelfileはFROM(ベースモデル)・SYSTEM(システムプロンプト)・PARAMETER(推論パラメータ)の3ディレクティブで構成される
ollama create モデル名 -f ./Modelfileでビルドすればollama runやREST API・Open WebUIからすぐ使える
temperature0.1 ~ 0.3に下げると技術サポート用途で安定した回答が得られる
・ModelfileをGitで管理することでチーム全員が同じ業務特化AIアシスタントを同一設定で再現できる


OllamaのModelfileでカスタムモデルを作る方法|業務特化AIアシスタントをチームで使い回す設定手順

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

Modelfileとは何か|Ollamaでモデルをカスタマイズする仕組みを理解する

Ollamaに慣れてくると、「毎回同じシステムプロンプトをチャット欄に貼り付けている」という状況に気づく。複数人でモデルを使っているならなおさらで、チームメンバーごとにプロンプトの書き方がバラバラになりがちだ。

この問題を解決するのがModelfileだ。Dockerの「Dockerfile」に相当するファイルで、ベースとなるモデル・初期システムプロンプト・推論時の動作パラメータを1つのテキストファイルに定義する。ollama createコマンドでビルドすると、新しいモデル名としてOllamaに登録される。

登録されたカスタムモデルはollama listの一覧に表示され、ollama run linux-support-v1のように呼び出せる。Open WebUIのモデルセレクターにも自動で表示されるため、ブラウザベースのUIからもそのまま使える。REST APIでも"model": "linux-support-v1"と指定するだけでよい。

Modelfileは特別なソフトウェアを必要とせず、catnanoで書けるシンプルなテキストファイルだ。gitでバージョン管理できるため、「先週と今週でプロンプトが変わった」という混乱もなくなる。複数サーバー間での設定統一にも有効で、「コードと同じように」モデルの動作を管理できる基盤になる。

Modelfileの基本構文|FROM・SYSTEM・PARAMETERの書き方

Modelfileで使う代表的なディレクティブは3種類だ。ファイル名は慣習的にModelfileとすることが多い(拡張子不問)。以下にそれぞれの役割と記述方法を示す。

1. FROMディレクティブ(必須)

ベースモデルを指定する唯一の必須ディレクティブだ。ollama pullで取得済みのモデルタグを完全な形で書く。量子化タグまで含めて指定することが重要で、省略するとOllamaがデフォルトタグを探しに行き意図しないモデルがロードされる場合がある。

# 正しいFROM指定(量子化タグを含めた完全な形) FROM llama3.3:70b-instruct-q4_0 # Gemma 3やMistralを使う場合の例 # FROM gemma3:27b-instruct-q4_0 # FROM mistral:7b-instruct-q8_0

2. SYSTEMディレクティブ(任意)

モデルに与える初期システムプロンプトを記述する。"""(トリプルダブルクォート)で囲むことで改行を含む複数行プロンプトを書ける。チャット開始時に必ず適用されるため、ロール定義・回答形式・禁止事項などをここに集約する。

SYSTEM """ あなたは社内インフラチームのLinuxサポートアシスタントです。 以下のルールに従って回答してください。 - 回答は日本語で、簡潔かつ正確に - コマンドを示すときは必ず実行例を添える - 根拠のない推測は避け、不明な場合は「公式ドキュメントの確認をおすすめします」と明示する - Ubuntu 22.04 LTS と CentOS Stream 9 を前提とした回答を優先する """

3. PARAMETERディレクティブ(任意)

推論時の動作パラメータを設定する。1行に1パラメータを書き、複数行指定できる。パラメータを省略した場合はOllamaのデフォルト値が使われる。

PARAMETER temperature 0.3 PARAMETER top_p 0.9 PARAMETER num_ctx 8192 PARAMETER repeat_penalty 1.1

この3種のディレクティブを組み合わせるだけで実用的なカスタムモデルが作れる。特殊な用途ではTEMPLATE(プロンプトテンプレートの上書き)やMESSAGE(few-shot例の埋め込み)も使えるが、業務用途の9割はFROM・SYSTEM・PARAMETERで足りる。

システムプロンプトを設定する手順|業務特化AIアシスタントを作る

ここでは「社内LinuxサポートAIアシスタント」を例に、Modelfileを作成して登録するまでの具体的な手順を追う。

1. 作業ディレクトリを用意する

Modelfileの置き場所はどこでもよいが、後でgit管理しやすいよう専用ディレクトリにまとめるのが実務での定石だ。

# モデル管理用ディレクトリを作成 $ mkdir -p ~/ollama-models/linux-support $ cd ~/ollama-models/linux-support

2. Modelfileを作成する

業務サポート用途ではtemperatureを低めに設定し、安定した決定的な回答を優先するのがポイントだ。num_ctxはログや設定ファイルを貼り付けて質問することを考慮して8192に設定している。

# Modelfileをヒアドキュメントで作成 $ cat > Modelfile << 'EOF' FROM llama3.3:70b-instruct-q4_0 SYSTEM """ あなたは社内インフラチームのLinuxサポートアシスタントです。 以下のルールに従って回答してください。 - 回答は日本語で、簡潔かつ正確に - シェルコマンドを示すときは必ず実行例(コメント付き)を添える - 根拠のない推測は避け、不明な場合は「公式ドキュメントの確認をおすすめします」と明示する - Ubuntu 22.04 LTS と CentOS Stream 9 を前提とした回答を優先する - エラーメッセージを受け取った場合は原因と解決策をステップで説明する """ PARAMETER temperature 0.2 PARAMETER top_p 0.85 PARAMETER num_ctx 8192 PARAMETER repeat_penalty 1.1 EOF

3. ベースモデルが取得済みか確認する

FROMに指定したモデルがollama listに表示されない場合、ビルドに失敗する。事前に確認しておく。

# FROMに指定したモデルが存在するか確認 $ ollama list | grep llama3.3 llama3.3:70b-instruct-q4_0 a6e7b14c4a89 42 GB 2 days ago # 存在しない場合はpullしてから次のステップへ $ ollama pull llama3.3:70b-instruct-q4_0

システムプロンプトの設計で重要なのは「具体的な指示」と「明示的な制約」だ。「丁寧に答えてください」のような曖昧な指示より、「コマンドを示すときは必ず実行例を添える」のように動作を具体的に定義するほうが一貫した挙動につながる。モデルごとにシステムプロンプトへの応答特性が異なるため、各モデルの特性についてはローカルLLMのモデルを比較する方法も参考になる。

推論パラメータを調整する手順|temperature・top_p・num_ctxの使いどころ

PARAMETERで設定できる代表的なパラメータと、業務用途ごとの目安を整理する。

temperature(推奨値: 技術サポート 0.1 ~ 0.3 / 文章生成 0.5 ~ 0.7)
出力の「ランダム性・多様性」を制御する値だ。0に近いほど安定した決定的な回答になり、1に近いほど創造的で多様な回答になる。技術的なサポートやコマンドの解説では0.1 ~ 0.3が実用的だ。文章の言い換えや要約など多様な表現が欲しい場合は0.5 ~ 0.7に上げるとよい。

top_p(推奨値: 0.85 ~ 0.95)
次のトークンを選ぶ際に、確率の高いものから累積確率がtop_pに達するまでの候補に絞る値だ。0.9前後が多くの業務用途で安定する。temperatureと組み合わせて使う値で、両方を同時に極端に下げると回答が単調になるため注意が必要だ。

num_ctx(推奨値: 4096 ~ 16384)
コンテキストウィンドウの最大トークン数を指定する。デフォルトはモデルによって2048 ~ 4096のことが多い。ログファイルや設定ファイルを丸ごと貼り付けて質問する場合、デフォルト値では入力が途中で切れてしまうことがある。業務でのファイル貼り付け用途では8192以上を推奨する。ただしVRAM使用量が増えるため、GPUメモリと相談しながら設定する。

repeat_penalty(推奨値: 1.0 ~ 1.3)
同じフレーズの繰り返しを抑制する値だ。1.0で実質無効、大きくするほど繰り返しが抑制される。長い回答で同じ表現が続く場合は1.1 ~ 1.2に上げると改善することが多い。

num_predict(用途に応じて設定)
生成する最大トークン数を制限する。デフォルトは無制限(-1)だ。社内チャットツールの文字数制限に合わせたい場合などにPARAMETER num_predict 512のように指定する。

ollama createコマンドでカスタムモデルをビルドする手順

Modelfileの準備ができたら、実際にカスタムモデルを作成する。

1. ollama createを実行する

-fオプションでModelfileのパスを指定する。モデル名は組織内で重複しない識別しやすい名前を付けると管理しやすい。

# カスタムモデルをビルドする $ ollama create linux-support-v1 -f ./Modelfile transferring model data 100% creating model layer creating template layer creating system layer creating parameters layer writing manifest success

ビルド自体はモデルファイルのコピーではなく差分レイヤーのみを追加する仕組みのため、数秒 ~ 数十秒で完了する。

2. 登録されたことを確認する

# 登録済みモデルを確認する $ ollama list NAME ID SIZE MODIFIED linux-support-v1:latest a1b2c3d4e5f6 42 GB 5 seconds ago llama3.3:70b-instruct-q4_0 b7c8d9e0f1a2 42 GB 2 days ago

linux-support-v1:latestが表示されていればビルド成功だ。サイズがベースモデルとほぼ同じなのは、Modelfileによる差分レイヤーが数KBと小さいためだ。

3. 動作テストをする

# カスタムモデルを起動して動作確認 $ ollama run linux-support-v1 >>> Nginxの設定ファイルの構文チェック方法を教えてください Nginxの設定ファイルの構文チェックは以下のコマンドで確認できます。 # 設定ファイルの構文チェック $ sudo nginx -t # 正常時の出力 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful 問題がある場合はエラー行が表示されます。

システムプロンプトで「コマンドを示すときは必ず実行例を添える」と定義したとおりの形式で回答が返ってくれば成功だ。意図した形式にならない場合はSYSTEMディレクティブのプロンプトを修正して、再度ollama create linux-support-v1 -f ./Modelfileを実行する(既存の同名モデルは上書きされる)。

Modelfileをgitで管理してチームで使い回す方法

Modelfileはテキストファイルのため、gitリポジトリで管理するのが実用的だ。モデルの重みデータ(数十GB)はリポジトリに含めず、Modelfileだけを管理する。新しいメンバーがOllama環境を整えたら、リポジトリをクローンしてollama createを実行するだけで同じモデルが再現できる。

情報システム部門が社内AI活用のガバナンスを設計するうえで、Modelfileのgit管理は「誰でも同じ設定のAIを使える」環境の基盤になる。社内でローカルLLMを導入する際の判断軸については社内でChatGPTが使えないときの代替手段も参考になる。

1. gitリポジトリを初期化する

# リポジトリを初期化 $ cd ~/ollama-models $ git init $ cat > .gitignore << 'EOF' # モデルの重みファイルは除外(数十GBのため) *.bin *.gguf *.safetensors EOF # Modelfileをコミット $ git add linux-support/Modelfile $ git commit -m "Add linux-support-v1 Modelfile"

2. 別のUbuntu Serverで再現する

別サーバーや新メンバーの環境でカスタムモデルを再現するときは以下の手順で行う。

# 別サーバーでの再現手順 $ git clone <リポジトリURL> ~/ollama-models $ cd ~/ollama-models/linux-support # ベースモデルを取得(初回のみ時間がかかる) $ ollama pull llama3.3:70b-instruct-q4_0 # カスタムモデルをビルド $ ollama create linux-support-v1 -f ./Modelfile # 動作確認 $ ollama run linux-support-v1 "Apacheのアクセスログのパスを教えて"

モデルの重みデータ(42GB程度)の初回取得はインターネット経由になるため時間がかかる。社内の複数サーバーに展開する頻度が高い場合は、ollama cpでローカルネットワーク内にモデルをコピーする方法も検討に値する。

よくあるエラーと対処法|Modelfileビルド時に詰まるポイント

エラー1: pull model manifest: file does not exist
FROMに指定したモデルタグがローカルに存在しないときに発生する。ollama listでモデル名とタグを確認し、ollama pullで取得してから再実行する。量子化タグの誤記が多い。llama3.3:70bllama3.3:70b-instruct-q4_0は別物のため、タグまで含めた完全な形で指定する。

エラー2: Error: unexpected EOF
SYSTEMのトリプルクォート"""の閉じ忘れが原因のことが多い。cat Modelfileでファイル内容を確認し、開き"""と閉じ"""が対応しているかチェックする。

エラー3: モデルが起動するがシステムプロンプトが効いていない
ollama showコマンドでビルド内容を確認できる。System:行にプロンプトが表示されていれば正しく組み込まれている。

# カスタムモデルのビルド内容を確認する $ ollama show linux-support-v1 Model architecture llama parameters 70.6B ... System あなたは社内インフラチームのLinuxサポートアシスタントです。 以下のルールに従って回答してください。 ...

System:が空の場合はModelfileのSYSTEMディレクティブを見直し、再ビルドする。

エラー4: 設定を変更してもOpen WebUIに反映されない
Open WebUIはモデルをキャッシュするため、Modelfile変更後に同名で再ビルドしても古い設定が残ることがある。linux-support-v1linux-support-v2のようにバージョン番号をインクリメントして新名称でビルドすると確実に反映される。

エラー5: num_ctxを大きくしたらOOMエラーが出る
num_ctxを増やすとVRAM使用量が増加する。GPUのVRAMが16GBの環境でnum_ctx 32768を設定すると不足して推論が失敗する場合がある。ollama psでメモリ使用量を確認しながら、VRAMの7割 ~ 8割以内に収まる値に調整する。

まとめ

OllamaのModelfileを使えば、毎回手入力していたシステムプロンプトと推論パラメータをファイルに固め、業務特化AIアシスタントとしてチームに配布できる。Dockerの「Dockerfile」と同じ発想でモデルの設定をコードとして管理できるのが最大の利点だ。

操作 コマンド 用途
カスタムモデル作成 ollama create linux-support-v1 -f ./Modelfile ModelfileからOllamaにモデルを登録する
一覧確認 ollama list 登録済みカスタムモデルを確認する
起動 ollama run linux-support-v1 カスタムモデルを対話形式で起動する
内容確認 ollama show linux-support-v1 System・Parameterの内容を確認する
更新ビルド ollama create linux-support-v2 -f ./Modelfile Modelfile変更後にバージョン番号を上げて再ビルドする
削除 ollama rm linux-support-v1 不要になったカスタムモデルを削除する

Modelfileの実践ポイントをまとめると:
FROMには量子化タグまで含めた完全なモデルタグを指定する
SYSTEMは「コマンドを示すときは必ず実行例を添える」のように動作を具体的に定義する
temperatureは技術サポート用途で0.1 ~ 0.3、文章生成系は0.5 ~ 0.7が目安
・ModelfileをGitで管理してチームメンバーがollama create一発で同一環境を再現できるようにする

ローカルLLMのModelfile設定を2日間のハンズオンで体験する

Modelfileを使ったカスタムモデルの構築から、systemdサービス化・チーム展開まで、実機GPU環境で手を動かしながら習得したい方向けに、「ローカルAIマスターセミナー」を開催しています。
少人数(最大8名)ZOOMハンズオン形式で実施しています。

>> ローカルAIマスターセミナーの詳細を確認する
ローカルLLMの構築・運用に関する関連記事もあわせて参考にしてください。

Ubuntu ServerでローカルLLMを構築する方法|Ollamaで機密データを外に出さず業務AIを動かす完全ガイド
社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢
ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイント

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。