基盤モデル ファインチューニングのためのデータ準備
プレビュー
この機能はus-east-1
とus-west-2
でパブリックプレビュー段階です。
この記事では、基盤モデル ファインチューニング (現在は Mosaic AI Model トレーニングの一部) タスク ( supervised ファインチューニング、 チャット完了、 および継続プレトレーニング) で受け入れられているトレーニングおよび評価データ ファイル形式について説明します。
次のノートブックは、データを検証する方法を示しています。 トレーニングを開始する前に、独立して実行するように設計されています。 これは、データが基盤モデル ファインチューニング の正しい形式であることを検証し、生のデータセットをトークン化することでトレーニング 実行中のコストを見積もるのに役立つコードが含まれています。
supervised ファインチューニング用のデータ準備
supervised ファインチューニング タスクの場合、トレーニング データは次のいずれかのスキーマに記述できます。
プロンプトとレスポンスのペア。
{"prompt": "your-custom-prompt", "response": "your-custom-response"}
プロンプトと完了のペア。
{"prompt": "your-custom-prompt", "completion": "your-custom-response"}
使用できるデータ形式は次のとおりです:
.jsonl
ファイルを含む Unity Catalog ボリューム。 トレーニング データは JSONL 形式である必要があり、各行は有効な JSON オブジェクトです。 次の例は、プロンプトと応答のペアの例を示しています。{"prompt": "What is Databricks?","response": "Databricks is a cloud-based data engineering platform that provides a fast, easy, and collaborative way to process large-scale data."}
上記の承認済みスキーマのいずれかに準拠する Delta テーブル。Delta テーブルの場合、データ処理に
data_prep_cluster_id
パラメーターを指定する必要があります。トレーニング実行の構成を参照してください。パブリックなHugging Faceデータセット。
公開されているHugging Faceデータセットをトレーニングデータとして使用する場合は、分割した完全なパスを指定します(例:
mosaicml/instruct-v3/train and mosaicml/instruct-v3/test
)。これは、異なる分割スキーマを持つデータセットをアカウントします。Hugging Face からのネストされたデータセットはサポートされていません。より広範な例については、Hugging Faceの
mosaicml/dolly_hhrlhf
データセットを参照してください。次のデータ行の例は
mosaicml/dolly_hhrlhf
データセットからのものです。{"prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: what is Databricks? ### Response: ","response": "Databricks is a cloud-based data engineering platform that provides a fast, easy, and collaborative way to process large-scale data."} {"prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: Van Halen famously banned what color M&Ms in their rider? ### Response: ","response": "Brown."}
チャット補完のためのデータを準備する
チャット完了タスクの場合、チャット形式のデータはファイル.jsonl
形式である必要があり、各行は単一のチャットセッションを表す個別のJSONオブジェクトです。各チャットセッションは、メッセージオブジェクトの配列にマップされる単一のキー"messages"
を持つJSONオブジェクトとして表されます。チャットデータをトレーニングするには、task_type = 'CHAT_COMPLETION'
を指定するだけです。
チャット形式のメッセージは、モデルのチャットテンプレートに従って自動的にフォーマットされるため、手動でチャットターンの開始や終了を知らせる特別なチャットトークンを追加する必要はありません。カスタムチャットテンプレートを使用するモデルの例は、Mistral-instructです。
注:
Mistralモデルは、データ形式でsystem
ロールを受け入れません。
配列内の各メッセージオブジェクトは会話内の1つのメッセージを表し、次の構造を持ちます:
role
:メッセージの作成者を示す文字列。指定できる値は、"system"
、"user"
、および"assistant"
です。役割がsystem
の場合、メッセージリストの最初のチャットである必要があります。"assistant"
の役割を持つメッセージが少なくとも1つ必要です。また、(オプションの)システムプロンプトの後のメッセージは、ユーザーとアシスタントの間で役割を交代する必要があります。同じ役割を持つ 2 つのメッセージが隣接して存在することはできません。配列"messages"
の最後のメッセージは、以下の役割を持たなければなりません。"assistant".
content
:メッセージのテキストを含む文字列。
以下は、チャット形式のデータの例です:
{"messages": [
{"role": "system", "content": "A conversation between a user and a helpful assistant."},
{"role": "user", "content": "Hi there. What's the capital of the moon?"},
{"role": "assistant", "content": "This question doesn't make sense as nobody currently lives on the moon, meaning it would have no government or political institutions. Furthermore, international treaties prohibit any nation from asserting sovereignty over the moon and other celestial bodies."},
]
}
事前トレーニングを継続するためのデータを準備する
トレーニング前のタスクが継続する場合、トレーニングデータは非構造化テキストデータです。トレーニング データは、 .txt
ファイルを含む Unity Catalog ボリュームに存在する必要があります。 各 .txt
ファイルは 1 つのサンプルとして扱われます。 .txt
ファイルが Unity Catalog ボリューム フォルダーにある場合、それらのファイルはトレーニング データ用にも取得されます。ボリューム内のtxt
されていないファイルはすべて無視されます。 「Unity Catalog ボリュームへのファイルのアップロード」を参照してください。
次の画像は、Unity Catalogボリューム内の.txt
ファイルの例を示しています。このデータを継続的な事前トレーニング実行構成で使用するには、train_data_path = "dbfs:/Volumes/main/finetuning/cpt-data"
を設定します。