「業務用の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からすぐ使える
・temperatureを0.1 ~ 0.3に下げると技術サポート用途で安定した回答が得られる
・ModelfileをGitで管理することでチーム全員が同じ業務特化AIアシスタントを同一設定で再現できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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は特別なソフトウェアを必要とせず、
catやnanoで書けるシンプルなテキストファイルだ。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
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
推論パラメータを調整する手順|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 問題がある場合はエラー行が表示されます。
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のアクセスログのパスを教えて"
ollama cpでローカルネットワーク内にモデルをコピーする方法も検討に値する。
よくあるエラーと対処法|Modelfileビルド時に詰まるポイント
エラー1: pull model manifest: file does not existFROMに指定したモデルタグがローカルに存在しないときに発生する。
ollama listでモデル名とタグを確認し、ollama pullで取得してから再実行する。量子化タグの誤記が多い。llama3.3:70bとllama3.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-v1→linux-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ハンズオン形式で実施しています。
・Ubuntu ServerでローカルLLMを構築する方法|Ollamaで機密データを外に出さず業務AIを動かす完全ガイド
・社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢
・ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイント
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:OllamaでRAGを構築する方法|社内ドキュメントをローカルLLMで質問応答システムとして活用する
- 前のページへ:OllamaにOpen WebUIを導入する方法|ChatGPT風ブラウザUIをUbuntu Serverに構築してチームで使う
- この記事の属するカテゴリ:ローカルLLMへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます