Mosaic AI モデル トレーニング用にデータを準備する

重要

この機能は、次のリージョンでパブリック プレビュー段階です: centraluseastuseastus2northcentraluswestus

この記事では、Mosaic AI モデル トレーニング (旧称 Foundation モデル トレーニング) タスク: 教師あり微調整チャット完了継続的な事前トレーニングで受け入れられるトレーニングおよび評価データ ファイル形式について説明します。

次のノートブックは、データを検証する方法を示しています。 トレーニングを開始する前に独立して実行できるように設計されています。 このノートブックの目的は、データが、Mosaic AI モデル トレーニング用の適切な形式であることを検証することです。 また、生データセットをトークン化するコードも含まれているため、トレーニングの実行時にコストを見積もるのに役立ちます。

トレーニングの実行ノートブックのデータを検証する

ノートブックを入手

教師あり微調整用のデータを準備する

教師あり微調整 タスクの場合、トレーニング データは次のいずれかのスキーマ形式である可能性があります。

  • プロンプトと応答のペア。

    {"prompt": "your-custom-prompt", "response": "your-custom-response"}
    
  • プロンプトと入力候補のペア。

    {"prompt": "your-custom-prompt", "completion": "your-custom-response"}
    

Note

プロンプト応答と、プロンプトの入力候補は、テンプレート化されていないため、Mistral の指示の書式設定などのモデル固有のテンプレート化は、すべて前処理手順として実行する必要があります。

許容されるデータ形式は次のとおりです。

  • .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 形式である必要があります。この各行は 1 つのチャット セッションを表す個別の JSON オブジェクトです。 各チャット セッションは、メッセージ オブジェクトの配列にマップされる 1 つのキー "messages" を持つ JSON オブジェクトとして表されます。 チャット データでトレーニングするには、単に task_type = 'CHAT_COMPLETION' を指定します。

チャット形式のメッセージは、モデルのチャット テンプレートに従って自動的に書式設定されるため、チャット ターンの開始または終了を手動で通知する特殊なチャット トークンを追加する必要はありません。 カスタム チャット テンプレートを使うモデルの例は、Mistral-instruct です。

Note

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 つのサンプルとして扱われます。 Unity Catalog ボリューム フォルダー内に .txt ファイルがあば、それらのファイルはトレーニング データ用に取得されます。 このボリューム内にある txt 以外のファイルは、すべて無視されます。 「Unity Catalog ボリュームにファイルをアップロードする」を参照してください。

次の画像は、Unity Catalog ボリューム内の .txt ファイルの例を示しています。 継続トレーニングの実行の構成でこのデータを使用するには、train_data_path = "dbfs:/Volumes/main/finetuning/cpt-data" を設定します。

継続事前トレーニングのデータセット ファイルの例を含む UC ボリューム