チャットテンプレート(Jinja形式)

GPUを買わずに、大きいモデルを動かす — クラウドGPUという選択肢(仕組みと手順の解説へ)

チャットテンプレートは、system / user / assistant という「会話」を、そのモデル固有の特殊トークン列に組み立てる規則です。モデルは会話という概念をそのまま受け取るわけではなく、この規則で1本のテキストに変換されたものを読んでいます。記述形式として使われているのがPython圏のテンプレート言語Jinjaで、Hugging Faceのモデルにある chat_template.jinja というファイルの正体がこれです。

実物を見る — モデルごとに違う

たとえばQwen系が使うChatML形式では、会話はこう組み立てられます:

<|im_start|>system
あなたは親切なアシスタントです。<|im_end|>
<|im_start|>user
こんにちは<|im_end|>
<|im_start|>assistant

Llama系は <|start_header_id|> 系の別のタグを使い、Gemma系もまた別です。instructモデルは「このテンプレートで組んだ入力」で学習されているため、違う組み方をすると学習時と条件がずれて素の性能が出ません。テンプレートがモデルごとに配布されるのはこのためです。

どこに入っているか

普段はOllamaやLM Studioが自動適用してくれるので、ユーザーが意識する必要はありません。

壊れるとどうなるか — 不調の定番原因

意識が必要になるのはおかしくなったときです。テンプレート不一致の典型症状は3つ:

llama.cppに --jinja というフラグがあるのは、GGUFに埋め込まれたテンプレートをJinjaとして厳密に解釈するためで、ツール呼び出しを使う場合は実質必須です。LM Studioでモデルが暴走するときも、モデル設定のプロンプトテンプレート欄を確認するのが定石です。

当サイトとの関係

判定ツールが扱う「載るか」はVRAM容量の話ですが、「載ったのに変な出力になる」相談の多くはここが原因です。量子化版を配布するミラーによってはテンプレートの埋め込みが古い・欠けていることもあるため、挙動が怪しいときは公式リポジトリのテンプレートと見比べるのが近道です。

関連用語

参考資料(出典)

▶ あなたのPCで動くモデルを自動判定する(スペック送信なし・ブラウザ内完結)

📚 ローカルLLMの入門書・ムックをAmazonで探す

上記はアフィリエイトリンクです。経由して課金された場合、当サイトに紹介料が入ります。