---
title: "ファインチューニング用データセットの作り方｜サンプル形式・件数・品質の要件"
url: "https://www.issoh.co.jp/tech/details/2790/"
published: 2024-06-26
updated: 2026-08-09
categories: ["ChatGPT"]
publisher: "株式会社一創"
---

# ファインチューニング用データセットの作り方｜サンプル形式・件数・品質の要件

ファインチューニングの成否は、モデルよりも学習させるデータセットで決まる。同じ手順でも、サンプルの形式が崩れていたり件数や品質が足りなければ、期待した振る舞いは得られない。この記事では、ファインチューニング用データセットの**サンプル形式（JSONLのchat形式）**、**必要な件数の目安**、**作成手順と品質・要件**、そして**ありがちな失敗と向かない場面**までを、OpenAI（ChatGPT）での実行例を軸に具体的に整理する。

## まとめ：データセット作成の要点

- **形式**：OpenAIのファインチューニングは**JSONL（1行1レコード）**で、各行を`{"messages":[...]}`のchat形式にする。1件につき最低でもuserとassistantの2メッセージ、systemは任意だが推奨。
- **件数**：最小は**10件**だが、改善を体感するには**50〜100件**が目安。まず精度高く作った50件で試し、評価してから増やす。
- **品質＞量**：件数を稼ぐより、実運用に近い具体的なサンプルを、回答の書式・トーンを統一して揃える方が効く。
- **要件**：狙うタスクを1つに絞る／入出力を現実的にする／偏りをなくす／検証用を1〜2割分ける。
- **向かない場面**：最新情報の参照や社内文書の検索はRAG、指示の調整で足りるならプロンプトで対応する。ファインチューニングは「振る舞い・形式の固定」に使う。

## ファインチューニング用データセットとは：モデルに何を学習させるデータか

ファインチューニング用データセットは、既存モデルに**「この入力にはこう答える」という入出力の実例**をまとめたものだ。プロンプトで毎回指示するのではなく、望ましい応答パターンそのものを追加学習させ、出力の形式・口調・分類ルールをモデルに固定させる。ファインチューニングの位置づけ自体を整理したい場合は[ファインチューニングとは？AIモデルを適応させる技術の概要と目的](/tech/details/3955/)を、事前学習の知識を再利用する広い枠組みとの違いは[転移学習とは？ファインチューニング・特徴抽出との違いと実装判断を解説](/tech/details/13301/)を参照してほしい。

データセットの中身は、想定する使い方をそのまま反映する。カスタマーサポートの自動応答を作るなら実際の問い合わせと回答、特定フォーマットでの要約なら入力文と理想の要約、というように**本番で来る入力と、返してほしい出力のペア**を集める。ここがずれていると、件数を増やしても狙った振る舞いにはならない。

## データセットのサンプル形式：JSONLとchat形式の書き方

OpenAIのファインチューニングでは、学習データを**JSONL（JSON Lines）**で用意する。ファイルの1行が1件の学習サンプルで、各行が独立した完全なJSONになっている必要がある（配列で囲まない）。中身はChat Completions APIと同じ**chat形式**で、`messages`配列に`role`と`content`を並べる。

### 会話（chat）形式の基本サンプル

1件は「system（役割指示・任意）＋user（入力）＋assistant（理想の回答）」で構成する。改行を含めず1行に書くのがJSONLの要点だ。

```
{"messages":[{"role":"system","content":"あなたは自社ECのサポート担当です。丁寧語で3文以内に答えます。"},{"role":"user","content":"注文をキャンセルしたいです"},{"role":"assistant","content":"承知しました。マイページの注文履歴から該当注文を開き、「キャンセル」を選択してください。発送準備後はキャンセルできませんのでご了承ください。"}]}
{"messages":[{"role":"system","content":"あなたは自社ECのサポート担当です。丁寧語で3文以内に答えます。"},{"role":"user","content":"送料はいくらですか"},{"role":"assistant","content":"全国一律550円です。5,000円以上のご購入で送料無料になります。"}]}
```

systemメッセージは全サンプルで同じ文言に揃えると、本番の推論時に同じsystemを渡したときの振る舞いが安定する。userとassistantは最低1組ずつ必要で、複数ターンの会話をそのまま1件にしてもよい。

### タスク別のサンプル例（分類・抽出・スタイル適応）

用途が変わっても構造は同じで、userに入力、assistantに「返してほしい正解」を置く。狙うタスクごとに出力の型を固定するのがコツだ。

| タスク    | userに入れるもの | assistantに入れるもの |
| ------ | ---------- | --------------- |
| 分類     | 問い合わせ文     | ラベル1語（例：返品）     |
| 抽出     | メール本文      | JSONで会社名・金額・日付  |
| スタイル適応 | 素の文章       | 指定トーンに直した文章     |

分類や抽出のように出力が構造化されるタスクでは、assistantの回答を**常に同じ書式**（同じラベル集合、同じキー名）で書く。書式がぶれると学習が安定しない。

## 学習データの作成手順：収集から整形・分割まで

### データ収集：本番の入力に近い実データを集める

過去の問い合わせ履歴、専門家が書いた回答、業務ログなど、**実際に来る入力と正解のペア**を優先して集める。作文で埋めた人工的な例だけだと、本番の入力分布とずれて効きにくい。個人情報や機密が含まれる場合は、学習前にマスキング・削除しておく。

### 整形とJSONL化：1行1レコードに変換する

収集したペアを、前節のchat形式に整える。表記ゆれ（全角半角・空白）を正規化し、回答の書式を統一する。CSVや表計算で「入力」「出力」を管理し、スクリプトでJSONLへ書き出すと運用しやすい。JSONの特殊文字（ダブルクオート・改行）は正しくエスケープする。

### 学習用と検証用の分割

集めたデータの**1〜2割を検証用（validation）に取り分ける**。学習用と検証用で内容が重複しないようにし、検証用は「学習に使っていない入力」で効果を測る。分割せずに全件を学習に回すと、過学習に気づけない。

## 良いデータセットの要件と品質基準：件数・多様性・一貫性

### 必要なサンプル件数の目安（最小10・推奨50〜100）

OpenAIのファインチューニングは**最小10件**から実行できるが、それは動作の下限であって効果の下限ではない。改善を体感するには**50〜100件**が目安とされ、まずは丁寧に作った50件で一度学習して評価し、足りない挙動を見て追加するのが無駄がない。件数は多いほど良いわけではなく、質の低いサンプルを混ぜると精度はむしろ下がる。

### 品質を決める3条件：具体性・多様性・一貫性

- **具体性**：抽象的な模範解答ではなく、現実に来る質問と、そのまま出してよい回答にする。
- **多様性**：想定される入力の言い回し・パターンを幅広く含める。同じ聞き方ばかりだと、少し違う入力に弱くなる。
- **一貫性**：同種の入力に対する回答の書式・トーン・ラベルを揃える。ここが揺れると、学習した出力もぶれる。

サンプルが「重要」なのは、ファインチューニングがデータの傾向をそのまま模倣するからだ。偏ったデータを与えれば偏った応答を、雑な書式を与えれば雑な出力を再現する。

## データセット作成でありがちな失敗と、そもそも向かない場面

件数を集めることが目的化し、テンプレをコピーしただけの似た例で水増しすると、多様性が失われて汎化しない。逆に1件だけ毛色の違う例を入れても学習には効かない。**ラベルの定義が揺れている**（同じ問い合わせに違うラベルが付く）データも、分類の精度を確実に落とす。

そして最も多い失敗は、**ファインチューニングで解くべきでない課題に使うこと**だ。最新の在庫や社内規程のような「知識」を答えさせたいなら、モデルに覚え込ませるより**RAG（検索して渡す）**が適する。出力の指示で足りるなら、まず**プロンプトの改善**で十分なことも多い。ファインチューニングが効くのは、「決まった形式・口調・分類ルールを安定して守らせたい」ケースに絞られる。データセットを作り始める前に、この見極めをしておくと手戻りがない。

## 作成したデータセットでファインチューニングを実行する（OpenAI／ChatGPTの例）

データセット（JSONL）が用意できたら、OpenAIでの流れは「ファイルをアップロード → ファインチューニングのジョブを作成 → 完成したモデルIDを推論で指定」というシンプルなものだ。学習用ファイルとは別に検証用ファイルを渡すと、学習中に検証指標を確認できる。

対応モデル・料金・エポック等の既定値は更新が速いため、着手時に**OpenAI公式のファインチューニングガイドで最新を確認**してほしい。OSSモデルを自前環境で調整したい場合は、全パラメータを更新せず省メモリで学習する手法が実務的で、[PEFTとLoRAの違いとは？仕組み・使い方・QLoRA/DoRAとの比較を実装例つきで解説](/tech/details/8203/)や、省メモリで高速に学習できる[Unsloth](/tech/details/8159/)が選択肢になる。いずれの場合も、ここまで解説したデータセット設計の考え方（形式の統一・件数・品質・分割）はそのまま通用する。

## よくある質問

### ファインチューニングのデータセットは何件必要ですか？

OpenAIでは最小10件から実行できますが、改善を体感するには50〜100件が目安です。まず丁寧に作った50件で学習・評価し、不足する挙動を見て追加すると無駄がありません。件数より質を優先してください。

### データセットのサンプルはどんな形式で用意しますか？

JSONL（1行1レコード）で、各行を`{"messages":[...]}`のchat形式にします。1件につきuser（入力）とassistant（理想の回答）を最低1組、system（役割指示）は任意ですが全件で統一すると安定します。

### データセットは質と量のどちらが重要ですか？

質が優先です。実運用に近い具体的な入出力を、回答の書式・トーンを統一して揃える方が効きます。質の低いサンプルを量で足すと、偏りや書式のぶれを学習して精度がむしろ下がります。

### ChatGPT（GPT系）のファインチューニングに必要なデータは何ですか？

本番で来る入力と、返してほしい出力のペアです。カスタマーサポートなら実際の問い合わせと回答、分類なら文章とラベルというように、想定タスクをそのまま反映したペアをchat形式で用意します。

### ファインチューニングとRAG・プロンプトはどう使い分けますか？

最新情報や社内文書を「参照」させたいならRAG、指示の調整で足りるならプロンプトが適します。ファインチューニングは、決まった形式・口調・分類ルールを安定して守らせたいときに使うのが基本です。

## 関連記事

- [ファインチューニングとは？AIモデルを適応させる技術の概要と目的](/tech/details/3955/)
- [転移学習とは？ファインチューニング・特徴抽出との違いと実装判断を解説](/tech/details/13301/)
- [PEFTとLoRAの違いとは？仕組み・使い方・QLoRA/DoRAとの比較を実装例つきで解説](/tech/details/8203/)
- [Unslothとは？読み方・使い方・対応モデルと高速ファインチューニングの仕組み](/tech/details/8159/)
- [データラベリングとは？ラベル設計・一致率・自動化を実装目線で解説](https://www.issoh.co.jp/tech/details/16355/)

---

出典: [ファインチューニング用データセットの作り方｜サンプル形式・件数・品質の要件](<https://www.issoh.co.jp/tech/details/2790/>)（株式会社一創）
