パブリックデータセットに含まれる内容
Hugging Face Hubには、数百行から数十億行に及ぶ数十万もの公開データセットがホストされています。データセットは表形式であり、各行が1つの項目、各列が1つのフィールドを表します。大規模なデータセットは、構成(言語などのサブセット)と分割(通常はtrain、validation、test)に分けられます。Hubでは列の意味を規定していないため、データセットの形式は作成者によって異なります。あるデータセットではチャットのやり取りのリスト、別のデータセットでは質問列と回答列、さらに別のデータセットでは1行につきウェブページ全体が含まれるといった具合です。
これらの形式のうち、トレーニング用のチャットとして利用できるのは一部のみです。質問と解答のプロセスが含まれる数学のデータセットは利用できますが、感情ラベルが付与されたツイートのデータセットは利用できません。後者はテキストの性質を示すものであり、どのように返答すべきかを示すものではないためです。インポートする前に、Scalataは選択された分割データを確認し、適切なフォーマットを提案します。
どの列が質問し、どの列が回答するか
トレーニング用のチャットとして利用するには、各行にユーザーの発言部分とアシスタントの返答部分が必要です。ほとんどのデータセットでは、列名からそれを判断できます。一方にはprompt、question、instruction、queryなどがあり、もう一方にはresponse、answer、output、completionなどがあります。一部のデータセットには、SQuADのように質問の対象となる文章を示すコンテキスト列や、システムプロンプトが追加されています。id、ウェブアドレス、カテゴリなどのその他の列は、行を説明するものであり、チャットには関与しません。
| 列 | 内容 | 役割 |
|---|---|---|
instruction | テキスト · 短文 | プロンプト |
context | テキスト · 長文、空の場合が多い | コンテキスト、質問の下に追加 |
response | テキスト · 長文 | 回答 |
category | 短いテキスト · 固有値は少数 | 未使用 |
Scalataは、選択したデータセットに適合するフォーマットを、それぞれの簡単な理由とともに提案します。ご自身で設定したい場合は、手動で列を選択を使用することで、任意のフォーマットと列を選択できます。適合しない行はスキップされます。
フォーマット
1つの列に、role/contentのペア、またはShareGPT形式のfrom/valueとして、ターンのリストが保持されます。トレーニング用チャットに最も近い形式であり、マルチターンの会話はマルチターンのまま維持されます。
質問の列と回答の列があり、オプションで質問の下に追加されるコンテキストの列が含まれます。各行はシングルターンのチャットになります。
instruction、それが適用されるオプションのinput、およびoutputで構成されます。このレイアウトを普及させたスタンフォード大学のAlpacaデータセットにちなんで名付けられました。Instructionとinputが合わさってユーザーメッセージになります。
instruction: Summarise the customer's complaint in one sentence.
input: I ordered the blue model on the 3rd, was charged twice and still have no tracking number.
output: The customer was charged twice for an order that has not shipped.同じプロンプトに対するより良い回答(chosen)と劣る回答(rejected)、または最後のみが異なる2つの会話全体で構成されます。これらの行は、単一の応答ではなく、DPO用の選好ペアになります。
prompt: Can I change my delivery address after ordering?
chosen: Yes, until the parcel ships. Open Orders → your order → Edit address…
rejected: Please contact support.1つのテキスト列に話者ラベル付きの会話全体が保持され、Scalataがこれをターンごとに分割します。最初のラベルより前のテキストはシステムプロンプトになります。
### Human: … ### Assistant: …
Human: … Assistant: …
User: … Assistant: …
<|system|> … <|user|> … <|assistant|> … (also <|im_start|>user)
[INST] <<SYS>> … <</SYS>> … [/INST] … (Llama 2 style)
### Instruction: … ### Input: … ### Response: …
Question: … Answer: …質問、回答、話者ラベルのない長いテキスト(ウェブページ、記事、書籍など)です。応答する内容がないためチャットのトレーニングにはなりませんが、継続的な事前学習に役立ちます。
3つの結果
理由とともに表示されます。「喜び」とラベル付けされたツイートは、テキストが何であるかを示しているだけで、それにどう返答するかを示しているわけではありません。
- チャット。 各行が1つの例となり、教師あり学習(または選好行の場合はDPO)の準備が整います。
- プレーンテキスト。 行はドキュメントとしてまとめられ、データセットのドキュメントに追加されます。これにより、継続的な事前学習や、そこからの質問と回答の生成の準備が整います。
- サポート対象外(理由も併記)。典型的な例としては、分類データ(短いテキストとラベル、例:cardiffnlp/tweet_eval)、画像や音声のみのデータ、または数値の表などが挙げられます。
- データセットとそのトレーニングスプリット(人間が記述した約15,000の指示と応答のペア)を選択します。
- データセットには4つの列があります。
instruction(短い)、context(長い、空の場合が多い)、response(長い)、およびcategory(少数の繰り返しラベル)です。 - 「プロンプトと応答」が最も適しています。
instruction→ プロンプト、response→ 回答となり、contextは質問の下に追加されます。categoryは除外されます。 - 2,000行をインポートすると、2,000件のシングルターン(1往復)の例になります。後で5,000行を再度インポートした場合、新しく追加されるのは3,000件のみです。
パブリックデータの適切な活用方法
- まずデータセットカードをお読みください。 ライセンス、データの出所、既知の問題が記載されています。一部のデータセットは商用利用できない場合があります。
- 規模よりも適合性を優先してください。 公開データセットは、独自のスタイルとトピックを学習させます。通常、巨大で一般的なデータセットよりも、実際の用途に似た数千行のデータセットの方が役立ちます。
- 自社のデータと組み合わせてください。 公開されているチャットは一般的な振る舞いの良い基盤となりますが、自社のチャットは組織固有の要件を学習させます。
- トレーニング前にインポートされた例をいくつか確認し、役割が想定通りに割り当てられているか確認してください。
よくある間違い
- 分類データセットをインポートし、モデルに回答方法を学習させることを期待する。
- 商用利用するモデルをトレーニングする前に、データセットカードのライセンスを確認しない。
- 回答の列をプロンプトの役割に手動でマッピングし、モデルが質問で応答するように学習させてしまう。
- 膨大な汎用データセットをインポートし、実際のタスクを記述した数百件のチャットを埋もれさせてしまう。
- パブリックデータセットのテストスプリットをトレーニングデータとして使用し、そこから構築されたベンチマークで評価を行う。
参考文献および関連資料
外部ソースは新しいタブで開きます。
- 01DatasetsHugging Face docs · huggingface.coHubのデータセットが構成、分割、行、列にどのように編成されているか。
- 02Dataset CardsHugging Face Hub docs · huggingface.coデータセットカードから読み取るべき情報:情報源、ライセンス、想定される用途、および制限事項。
- 03Dataset formats and typesHugging Face TRL docs · huggingface.co一般的なトレーニングデータの形式(対話型、プロンプトと補完、選好)の比較。
- 04Alpaca: A Strong, Replicable Instruction-Following ModelStanford CRFM, 2023 · crfm.stanford.eduinstruction、input、outputのレイアウトの由来。