digital base
プロダクトドキュメント最新情報コンテンツ会社概要

お問い合わせ

ご質問やご相談など、お気軽にお問い合わせください。

デジタルベース株式会社

〒106-0047
東京都港区南麻布3-20-1 5階

サイトメニュー

  • トップページ
  • プロダクト
  • ドキュメント
  • 最新ニュース
  • 記事一覧
  • 会社情報

お問い合わせ

  • info@digital-base.co.jp

NVIDIA Inception Program / Intel Partner ISV /
NTTPC Innovation LAB / IT導入補助金 対象

© デジタルベース株式会社. All rights reserved.
一覧に戻る

2025年12月7日

·

ハードウェア

·
383 文字

LLMファインチューニングのデータ形式|Alpaca形式とChatML形式の比較とUnsloth実装指針

LLMファインチューニングで用いる代表的なデータ形式、Alpaca形式とChatML形式を比較します。歴史的背景・データ構造・性能特性の違いを整理し、Unslothでの実装方法と、用途に応じた形式選定の判断基準を解説します。

LLMファインチューニングのデータ形式|Alpaca形式とChatML形式の比較とUnsloth実装指針

概要

ファインチューニングの成否を左右する要素の一つが「データフォーマット」です。同じ学習内容であっても、どの形式でモデルに入力するかによって、学習効率と最終的な応答品質が変わります。本稿では、LLMファインチューニングにおける代表的な2つの形式である Alpaca形式 と ChatML形式 を取り上げ、歴史的背景からデータ構造、性能特性、そして Unsloth を用いた実装方法までを整理します。あわせて、社内向けの日本語ローカルLLMを構築する際に、どちらの形式を選ぶべきかの判断基準を示します。

要点は次のとおりです。

  • Instruction Tuningは2021年のGoogle FLANに始まり、InstructGPTを経てChatGPTへと発展した「指示に従うAI」を実現する基盤技術である。
  • ファインチューニングのデータ形式は、主にシングルターン向けの「Alpaca形式」とマルチターン向けの「ChatML形式」の2系統に大別される。
  • Llama 3系・Qwen2.5/Qwen3・Gemma 3などの近年のモデルはChat形式を前提に学習されており、Unslothは両形式に対応している。

ファインチューニングとは

ファインチューニング(Fine-tuning)とは、事前学習済みの大規模言語モデル(LLM)に対し、特定のタスクやドメインに特化したデータセットで追加学習を行う手法です。ゼロからモデルを訓練するプレトレーニングと比較して、少ないデータ量と計算リソースで目的に沿ったモデルを構築できる点が大きな利点です。

DigitalBaseでは、社内ナレッジや専門用語を取り込んだ業務特化モデルの構築にあたり、まずデータ形式の設計から検討することを推奨しています。形式の選択は後工程の学習効率と運用品質に直結するためです。


Instruction Tuningとは

概念の誕生

Instruction Tuning(指示チューニング)とは、事前学習済みの言語モデルに「指示→応答」形式のデータで追加学習を施し、ユーザーの指示に従って適切な応答を生成できるようにする手法です。

この概念は2021年にGoogleが発表した「FLAN(Finetuned Language Net)」で体系化されました。FLANは、62種類の自然言語処理タスクを「指示形式」に変換したデータセットで言語モデルを学習させることにより、未知のタスクへの汎化能力が大きく向上することを示しました。

InstructGPTの影響

2022年にOpenAIが発表した「InstructGPT」は、Instruction Tuningの実用化において重要な役割を果たしました。人間のフィードバックを用いた強化学習(RLHF: Reinforcement Learning from Human Feedback)と組み合わせることで、より人間の意図に沿った応答が可能になりました。このInstructGPTの成果が、後のChatGPTやGPT-4の基盤技術となり、現在の対話型AIの普及につながっています。

Instruction Tuningの3つの世代

Instruction Tuningは、大きく3つの世代に整理できます。第1世代はFLANに代表される「タスク指示型」で、特定のNLPタスクを指示形式で学習させるものでした。第2世代はInstructGPTやAlpacaに代表される「汎用指示型」で、より多様な指示に対応できるようになりました。第3世代はChatGPTのような「対話型」で、マルチターンの会話を通じて指示を理解し実行できます。


Alpaca形式の歴史と特徴

歴史的背景

2023年3月、Stanford大学の研究チームが「Alpaca」を公開しました。これは、Meta社のLLaMA 7Bモデルを、OpenAIのtext-davinci-003から生成した52,000件の指示応答データでファインチューニングしたものです。当時としては革新的な成果で、低コストで一定の指示追従性能を実現できることを示し、オープンソースLLM開発の流れを加速させました。

このAlpacaプロジェクトで採用されたデータ形式が「Alpaca形式」(Instruction形式)と呼ばれ、以降のオープンソースLLM開発における標準フォーマットの一つとなりました。

データ構造

Alpaca形式は、3つのフィールドで構成されます。

{ "instruction": "次の文章を英語に翻訳してください", "input": "今日は良い天気です", "output": "It is a nice day today." }

inputフィールドはオプションで、単純なタスクでは省略されることもあります。

{ "instruction": "日本の首都はどこですか?", "input": "", "output": "日本の首都は東京です。" }

プロンプトテンプレート

実際の学習時には、これらのフィールドを以下のようなテンプレートに変換します。

### Instruction: 次の文章を英語に翻訳してください ### Input: 今日は良い天気です ### Response: It is a nice day today.

メリットと限界

Alpaca形式の最大の利点は、その単純さにあります。既存のQ&Aデータセットやタスク別データを容易にこのフォーマットへ変換できます。

一方、明確な限界もあります。「シングルターン」にしか対応していない点です。対話システムではユーザーとAIが複数回やり取りを行いますが、Alpaca形式ではマルチターン会話を自然に表現できません。


ChatML形式の登場と進化

ChatMLとは

ChatML(Chat Markup Language)は、OpenAIがGPT-3.5/4で採用した会話フォーマットです。複数のメッセージを「役割(role)」と「内容(content)」のペアとして構造化することで、マルチターン会話を自然に表現できます。

データ構造

ChatML形式では、会話をmessages配列として表現します。

{ "messages": [ {"role": "system", "content": "あなたは親切なアシスタントです。"}, {"role": "user", "content": "こんにちは"}, {"role": "assistant", "content": "こんにちは。何かお手伝いできることはありますか?"}, {"role": "user", "content": "今日の天気を教えて"}, {"role": "assistant", "content": "申し訳ありませんが、リアルタイムの天気情報にはアクセスできません。お住まいの地域の天気予報サイトをご確認ください。"} ] }

実際のトークン化

ChatML形式では、特殊トークンを用いて各メッセージの境界を明確にします。

<|im_start|>system あなたは親切なアシスタントです。<|im_end|> <|im_start|>user こんにちは<|im_end|> <|im_start|>assistant こんにちは。何かお手伝いできることはありますか?<|im_end|>

この特殊トークン(<|im_start|>, <|im_end|>)により、モデルは発話者の切り替わりを正確に認識し、適切なタイミングで応答を生成できます。

ShareGPT形式との関係

ChatML形式と近い構造を持つものとして「ShareGPT形式」があります。これは、ChatGPTとの会話ログを共有するサービス「ShareGPT」から派生したフォーマットで、from/valueというキー名を用います。

{ "conversations": [ {"from": "human", "value": "こんにちは"}, {"from": "gpt", "value": "こんにちは。何かお手伝いできることはありますか?"} ] }

Unslothではstandardize_sharegpt関数を用いて、このShareGPT形式をChatML(role/content)形式に変換できます。


2つの形式の比較

比較項目Alpaca形式ChatML形式
登場時期2023年3月2023年(OpenAI API)
会話ターンシングルターンのみマルチターン対応
システムプロンプトテンプレートに固定柔軟に設定可能
データ変換の容易さ簡単やや複雑
推奨ユースケース分類・抽出・翻訳などチャットボット・対話AI
最新モデルの対応限定的ほぼ全モデル対応

Unslothでの実装

Unslothは、メモリ効率の良いファインチューニングを実現するライブラリで、両方の形式に対応しています。

対応しているチャットテンプレート一覧

Unslothは以下のチャットテンプレートをサポートしています。

from unsloth.chat_templates import CHAT_TEMPLATES print(list(CHAT_TEMPLATES.keys())) # 出力例: # ['unsloth', 'zephyr', 'chatml', 'mistral', 'llama', 'vicuna', # 'alpaca', 'gemma', 'gemma2', 'llama-3', 'llama-3.1', 'llama-3.2', # 'llama-3.3', 'qwen-2.5', 'phi-4', 'gemma-3']

ChatML形式での実装例

from unsloth import FastLanguageModel from unsloth.chat_templates import get_chat_template # モデルとトークナイザーの読み込み model, tokenizer = FastLanguageModel.from_pretrained( model_name="unsloth/Llama-3.2-3B-Instruct", max_seq_length=2048, load_in_4bit=True, ) # ChatMLテンプレートを適用 tokenizer = get_chat_template( tokenizer, chat_template="chatml", ) # データセットのフォーマット関数 def formatting_prompts_func(examples): convos = examples["conversations"] texts = [ tokenizer.apply_chat_template( convo, tokenize=False, add_generation_prompt=False ) for convo in convos ] return {"text": texts}

Alpaca形式での実装例

from unsloth import FastLanguageModel model, tokenizer = FastLanguageModel.from_pretrained( model_name="unsloth/Llama-3.2-3B", max_seq_length=2048, load_in_4bit=True, ) # Alpaca形式のプロンプトテンプレート alpaca_prompt = """### Instruction: {instruction} ### Input: {input} ### Response: {output}""" def formatting_func(examples): texts = [] for instruction, input_text, output in zip( examples["instruction"], examples["input"], examples["output"] ): text = alpaca_prompt.format( instruction=instruction, input=input_text, output=output ) texts.append(text) return {"text": texts}

シングルターンからマルチターンへの変換

Unslothのconversation_extensionパラメータを用いると、シングルターンのAlpacaデータセットを擬似的にマルチターン会話へ拡張できます。これにより、単純なデータセットでもより自然な対話能力を学習させることが可能になります。


どちらを選ぶべきか

ChatML形式を推奨するケース

対話型のチャットボットやアシスタントを構築する場合は、ChatML形式を推奨します。Llama 3系・Qwen2.5/Qwen3・Gemma 3などの近年のモデルは、事前学習の段階でChat形式のデータを用いており、同じフォーマットでファインチューニングすることで効率的に性能を引き出せます。

また、システムプロンプトによる動作制御が必要な場合や、会話履歴を踏まえた応答生成が求められる場合も、ChatML形式が適しています。

Alpaca形式で十分なケース

一方、テキスト分類、情報抽出、翻訳、要約など、明確な入出力関係があるタスクでは、Alpaca形式でも十分な性能を発揮できます。データ準備が簡単で、既存のデータセットを流用しやすい利点もあります。


日本語ローカルLLMへの応用

日本語のローカルLLM開発においても、データ形式の選択は重要な意味を持ちます。日本語の対話データは英語と比べて限られているため、少ないデータで効果的に学習できる形式の選定が成果を左右します。とくに業務特化型のチャットボット開発では、社内ナレッジや専門用語を含むデータをChatML形式で整備し、ファインチューニングすることで、セキュアかつ高精度な対話システムを構築できます。Unslothのようなメモリ効率に優れたライブラリを活用すれば、コンシューマグレードのGPU(RTX 3090/4090クラス)でも実用的なファインチューニングが可能です。


まとめ

ファインチューニングのデータ形式は、Instruction Tuningの発展とともに、シングルターン向けのAlpaca形式から、マルチターンを自然に扱えるChatML形式へと重心が移ってきました。対話用途や近年のChat系モデルを前提とするならChatML形式を、分類・抽出・翻訳といった明確な入出力タスクならAlpaca形式を、というのが基本的な選定指針です。Unslothは両形式に対応しているため、用途に応じた形式を選んだうえで、効率的にファインチューニングを進められます。

DigitalBase データ連携フロー
DigitalBase

社内データを、ネットワーク不要で
“使えるAI”に。

エンタープライズに必要なAI機能を1つに集約した、ライセンス型のオンプレミスLLM基盤。 機密データを外部に出さず、完全オフライン環境で運用できます。

  • ✓ 専用AIチャット / ドキュメントAgent(RAG)
  • ✓ 文字起こし・ベンチマーク測定
  • ✓ 管理者・共有・権限管理機能
無料で試す製品の詳細を見る

資料請求・導入のご相談は お問い合わせ から。

ニュースリリース

最新のお知らせやプレスリリースをご覧いただけます

お知らせ
「AI NATIVE EXPO 2026」(6月10日〜12日 @ 幕張メッセ) に出展いたします
Interop Tokyo 併設の総合展「AI NATIVE EXPO 2026」に出展いたします。社内データを自動連携・加工し、BI・AIエージェントへ繋ぐ一連のフローを展示します。
2026年6月8日
プレスリリースPR TIMES
台湾AIインフラ企業Spingence Technologyと社内データ連携AIプラットフォームを共同開発
4月15日〜17日開催「NexTech Week 2026【春】第10回 AI・人工知能 EXPO」に出展 ~社内データをAIに接続し、業務フローに組み込む企業向けAI基盤~
2026年4月6日
お知らせ
「AI Frontier 2026」にスポンサー出展
AI技術の最前線を発信するカンファレンス「AI Frontier 2026」にスポンサーとして出展いたします。
2026年3月4日
一覧に戻る