チャット補完モデルを微調整するためのデータを準備する

完了

言語モデルを微調整する場合は、言語モデルの微調整に使用できるデータセットを特定する必要があります。

他の機械学習モデルと同様に、データセットの品質がモデルの品質に大きな影響を与えます。 最初から言語モデルをトレーニングする場合よりも必要なデータは少なくなりますが、それでも目的のモデルの動作の一貫性を最大限に高めるには、十分なデータが必要になる場合があります。 必要なデータの量は、ユース ケースによって異なります。

チャット補完用の言語モデルを微調整する場合、モデルの微調整に使用するデータは、サンプル会話のコレクションです。 具体的には、データに次の 3 つのコンポーネントが含まれている必要があります。

  • システム メッセージ
  • ユーザー メッセージ
  • アシスタントの回答

3 つの変数は、JSON 行または JSONL ファイルにまとめられます。 たとえば、そのようなデータセット内の 1 行は次のようになります。

{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}

データセットは、モデルの理想的な動作を示す必要があります。 このデータセットは、使用しているチャット アプリケーションのチャット履歴に基づいて作成することができます。 実際のデータを使用する場合に留意すべき点は、次のとおりです。

  • 個人情報や機密情報はすべて削除します。
  • 大規模なトレーニング データセットの作成に重点を置くだけでなく、データセットに多様なサンプル セットを含めるようにします。

データセット内の 1 行に複数の会話のターンを含めることができます。 特定のアシスタント メッセージのみを微調整する場合は、必要に応じて、weight キー/値ペアを使用することができます。 重みを 0 に設定するとメッセージは無視され、1 に設定するとメッセージがトレーニングに含まれます。

重みを持つマルチターン チャット ファイル形式の例:

{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}

言語モデルを微調整するためのデータセットを準備するときは、目的のモデルの動作を理解し、JSONL 形式でデータセットを作成し、含めるサンプルが高品質で多様であることを確認する必要があります。 データセットを準備することで、微調整されたモデルによってチャット アプリケーションのパフォーマンスが向上する可能性が高まります。