Mosaic AIモデルトレーニングのためのデータ準備

重要

この機能はus-east-1us-west-2パブリックプレビュー段階です。

この記事では、Mosaic AIモデルトレーニング(旧基盤モデルトレーニング)でサポートされているタスク(教師ありのファインチューニングチャットの完了継続的な事前トレーニング)について、受け入れられているトレーニングと評価のデータファイル形式について説明します。

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

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

ノートブックを新しいタブで開く

教師ありトレーニング用のデータを準備する

教師ありトレーニングタスクの場合、トレーニングデータは以下のスキーマのいずれかになります:

  • プロンプトとレスポンスのペア。

    {"prompt": "your-custom-prompt", "response": "your-custom-response"}
    
  • プロンプトと完了のペア。

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

注:

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

使用できるデータ形式は次のとおりです:

  • .jsonlファイルを含むUnityカタログボリューム。トレーニングデータはJSONL形式である必要があり、各行は有効なJSONオブジェクトです。

  • 上記の承認済みスキーマのいずれかに準拠する 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 Kubernetes? ### Response: ","response": "Kubernetes is an open source container orchestration system for automating software deployment, scaling, and management. Originally designed by Google, the project is now maintained by the Cloud Native Computing Foundation."}
    {"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"を設定します。

UCボリュームと継続的な事前学習データセットファイルの例