リソース/モデルのトレーニング/データセット

概念

Hugging Faceの公開データセット

公開されているHugging Faceデータセットの内容、そのようなデータセットで一般的なフォーマット、そしてデータセットがチャットになる理由、ドキュメントになる理由、トレーニングに全く使用できない理由について。

第4章読了時間 2分参考文献 4件

パブリックデータセットに含まれる内容

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短いテキスト · 固有値は少数未使用
databricks-dolly-15kの列と、トレーニングチャットでそれぞれが果たす役割。instructionが質問し、responseが回答し、contextが質問の下に追加され、categoryは除外されます。その結果、コンテキストを伴うプロンプトと応答の形式になります。

Scalataは、選択したデータセットに適合するフォーマットを、それぞれの簡単な理由とともに提案します。ご自身で設定したい場合は、手動で列を選択を使用することで、任意のフォーマットと列を選択できます。適合しない行はスキップされます。

フォーマット

チャット一般的 例: HuggingFaceH4/ultrachat_200k、HuggingFaceH4/no_robots#

1つの列に、role/contentのペア、またはShareGPT形式のfrom/valueとして、ターンのリストが保持されます。トレーニング用チャットに最も近い形式であり、マルチターンの会話はマルチターンのまま維持されます。

プロンプトと応答一般的 例: openai/gsm8k、rajpurkar/squad、databricks/databricks-dolly-15k#

質問の列と回答の列があり、オプションで質問の下に追加されるコンテキストの列が含まれます。各行はシングルターンのチャットになります。

インストラクション(Alpaca)一般的 例: tatsu-lab/alpaca#

instruction、それが適用されるオプションのinput、およびoutputで構成されます。このレイアウトを普及させたスタンフォード大学のAlpacaデータセットにちなんで名付けられました。Instructionとinputが合わさってユーザーメッセージになります。

Alpacaスタイルの1行
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.
選好一般的 例: Anthropic/hh-rlhf#

同じプロンプトに対するより良い回答(chosen)と劣る回答(rejected)、または最後のみが異なる2つの会話全体で構成されます。これらの行は、単一の応答ではなく、DPO用の選好ペアになります。

プレファレンスの1行
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.
トランスクリプト一般的 例: timdettmers/openassistant-guanaco#

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: …
プレーンテキスト一般的 例: HuggingFaceFW/fineweb#

質問、回答、話者ラベルのない長いテキスト(ウェブページ、記事、書籍など)です。応答する内容がないためチャットのトレーニングにはなりませんが、継続的な事前学習に役立ちます。

3つの結果

チャット
1行チャット、プロンプトと応答、Alpaca、選好、またはトランスクリプト→1つのトレーニング例
プレーンテキスト
連続する行ウェブページ、記事、書籍→ドキュメント→継続的な事前学習またはQ&A生成
サポート対象外
テキスト + クラスラベル画像または音声のみ数値の表

理由とともに表示されます。「喜び」とラベル付けされたツイートは、テキストが何であるかを示しているだけで、それにどう返答するかを示しているわけではありません。

すべての公開データセットは、最終的に3つの場所のいずれかに収まります。質問と回答の両方が存在する行のみがチャットになります。
  • チャット。 各行が1つの例となり、教師あり学習(または選好行の場合はDPO)の準備が整います。
  • プレーンテキスト。 行はドキュメントとしてまとめられ、データセットのドキュメントに追加されます。これにより、継続的な事前学習や、そこからの質問と回答の生成の準備が整います。
  • サポート対象外(理由も併記)。典型的な例としては、分類データ(短いテキストとラベル、例:cardiffnlp/tweet_eval)、画像や音声のみのデータ、または数値の表などが挙げられます。
databricks-dolly-15kのインポート
  1. データセットとそのトレーニングスプリット(人間が記述した約15,000の指示と応答のペア)を選択します。
  2. データセットには4つの列があります。instruction(短い)、context(長い、空の場合が多い)、response(長い)、およびcategory(少数の繰り返しラベル)です。
  3. 「プロンプトと応答」が最も適しています。instruction → プロンプト、response → 回答となり、context は質問の下に追加されます。category は除外されます。
  4. 2,000行をインポートすると、2,000件のシングルターン(1往復)の例になります。後で5,000行を再度インポートした場合、新しく追加されるのは3,000件のみです。

パブリックデータの適切な活用方法

  • まずデータセットカードをお読みください。 ライセンス、データの出所、既知の問題が記載されています。一部のデータセットは商用利用できない場合があります。
  • 規模よりも適合性を優先してください。 公開データセットは、独自のスタイルとトピックを学習させます。通常、巨大で一般的なデータセットよりも、実際の用途に似た数千行のデータセットの方が役立ちます。
  • 自社のデータと組み合わせてください。 公開されているチャットは一般的な振る舞いの良い基盤となりますが、自社のチャットは組織固有の要件を学習させます。
  • トレーニング前にインポートされた例をいくつか確認し、役割が想定通りに割り当てられているか確認してください。

よくある間違い

  • 分類データセットをインポートし、モデルに回答方法を学習させることを期待する。
  • 商用利用するモデルをトレーニングする前に、データセットカードのライセンスを確認しない。
  • 回答の列をプロンプトの役割に手動でマッピングし、モデルが質問で応答するように学習させてしまう。
  • 膨大な汎用データセットをインポートし、実際のタスクを記述した数百件のチャットを埋もれさせてしまう。
  • パブリックデータセットのテストスプリットをトレーニングデータとして使用し、そこから構築されたベンチマークで評価を行う。

参考文献および関連資料

外部ソースは新しいタブで開きます。

  1. 01DatasetsHugging Face docs · huggingface.coHubのデータセットが構成、分割、行、列にどのように編成されているか。
  2. 02Dataset CardsHugging Face Hub docs · huggingface.coデータセットカードから読み取るべき情報:情報源、ライセンス、想定される用途、および制限事項。
  3. 03Dataset formats and typesHugging Face TRL docs · huggingface.co一般的なトレーニングデータの形式(対話型、プロンプトと補完、選好)の比較。
  4. 04Alpaca: A Strong, Replicable Instruction-Following ModelStanford CRFM, 2023 · crfm.stanford.eduinstruction、input、outputのレイアウトの由来。

専門家が数週間かける作業を数分に短縮します

Scalataがお客様のチーム、データ、および統制にどのように適合するかをご確認ください。

営業へのお問い合わせ