リソース/モデルのトレーニング/データ準備

設定

システムプロンプト

システムプロンプトは、すべての会話の前に配置される常設の指示です。トレーニング時に追加されることで、モデルはその正確なプロンプトが存在する状態での動作を学習するため、モデルを使用する際にも同じ状態を保つ必要があります。

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

概要

チャットには、ユーザー、アシスタント、システムの3つの役割があります。システムメッセージは最初に配置され、会話の参加者によって発言されるものではありません。これは常時の指示です — アシスタントが誰であるか、何をすべきで何をすべきでないか、どのくらいの長さでどのような形式で回答するか。日常的な使用においては、再トレーニングせずにモデルを制御する方法となります。

データ準備において、システムプロンプトはすべてのトレーニングレコードの先頭に挿入される任意の設定です。これにより、個々のチャットの山が、一貫した1つのアシスタントの例に変わります。

トレーニング中の仕組み

systemあなたはScalataのサポートアシスタントです。読み取り · マスク済み
userパスワードをリセットするにはどうすればよいですか?読み取り · マスク済み
assistant設定 → セキュリティを開き、パスワードをリセットを選択します。スコア化 · 損失計上
モデルはすべてのトークンを読み取りますが、その誤差はターゲットとなる返答でのみ測定されます。コンテキストは予測を形成しますが、それ自体が評価されることはありません。

ユーザーのメッセージと同様に、システムプロンプトはコンテキストです。モデルはターゲットの応答を予測する際にこれを読み取りますが、誤差はターゲットトークンでのみ測定されます。したがって、トレーニングはモデルにプロンプトの書き方を教えるのではなく、そのプロンプトが存在する場合に応答がどのようになるかを教えます。

その条件付けが重要な部分です。モデルに到達する前に、チャットはモデルのチャットテンプレートを使用して1つのトークンシーケンスに平坦化され、システム、ユーザー、アシスタントの部分が始まる場所を示す特別なトークンが付けられます。モデルの学習された動作は、その正確なシーケンスに関連付けられます。後で異なるシステムプロンプトを使用した場合 — またはまったく使用しなかった場合 — 入力はモデルがトレーニングされたものとは異なり、学習された動作は部分的にしか引き継がれません。Hugging Faceのドキュメントで、モデルが使用時に参照するのと同じチャットテンプレートでトレーニングデータをフォーマットすることが強調されているのも同じ理由です。

システムプロンプトを含む1つのトレーニングレコード
{"messages": [
  {"role": "system",    "content": "You are the support assistant for Acme Billing. Answer in two to four short sentences. Name the exact menu path. If you are not sure, say so and offer to connect a human."},
  {"role": "user",      "content": "How do I download last month's invoice?"},
  {"role": "assistant", "content": "Go to Billing → Invoices, pick last month and choose Download PDF. Invoices appear on the 2nd of each month."}
]}

記載すべき内容

  • アイデンティティと範囲: 誰のアシスタントであり、何をサポートするか。
  • 回答スタイル: 長さ、構造、リストを使用するかどうか、確信が持てない場合の対応。
  • 価格を絶対に提示しない、または常にオペレーターを提案するなど、例ではカバーしきれない可能性のある厳格なルール。
  • 知識ではありません。事実は例(または実行時の検索)に含めるべきです。製品の詳細が詰まったプロンプトは長く、コストがかかり、古くなります。

プロンプトとターゲットの応答が一致していることを確認してください。プロンプトに「2文で回答する」とあるのに、ターゲットの半分が長い手順説明である場合、モデルはその指示にあまり意味がないと学習し — 他の場所でもそれを無視する可能性があります。

実例:プロンプトの変更がもたらす影響
  1. モデルは、上記の約50トークンのプロンプトを使用して、1,500件のサポートチャットでトレーニングされます。その応答は短く、メニューパスを指定し、確信が持てない場合はオペレーターの対応を提案します。
  2. 実際の使用時に、誰かがプロンプトをすべての製品機能をリストした400トークンのものに置き換えたとします。応答は長くなり、「オペレーターを提案する」傾向は少なくなります。入力がトレーニングと一致しなくなったためです。
  3. 元のプロンプトに戻すと、トレーニングされた動作が戻ります。新しい指示が本当に必要な場合は、それらをトレーニングプロンプトに追加して再度トレーニングしてください。
  4. コスト:50トークン × 1,500レコード × 3エポック = プロンプトだけで225,000トレーニングトークン。400トークンのバージョンでは180万トークンになります。
システムプロンプト一般的 1〜5文#

すべての会話の前に追加される任意のテキスト。通常は、アイデンティティ、範囲、回答スタイルに関する数文で十分です。モデルが常にシステムプロンプトなしで使用される場合にのみ、空のままにしてください。

よくある間違い

  • あるシステムプロンプトでトレーニングし、別のプロンプトでデプロイした結果、ファインチューニングが「機能しなかった」と結論付けること。
  • 例や検索に含めるべき事実をプロンプトに詰め込むこと。
  • ターゲットの応答と矛盾するプロンプトであり、指示が任意であることをモデルに教えてしまうこと。
  • トークンコストを忘れること。長いプロンプトは、すべてのレコード、すべてのエポック、およびその後のすべてのリクエストでコストが発生します。

参考文献および関連資料

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

  1. 01Chat templatesHugging Face Transformers docs · huggingface.coシステム、ユーザー、アシスタントの各メッセージが1つのトークンシーケンスになる仕組みと、トレーニングと実際の使用を一致させるべき理由。
  2. 02Supervised fine-tuningOpenAI API docs · developers.openai.comシステムメッセージを含む、チャット形式のトレーニング例。
  3. 03Prepare data for fine-tuning your modelsAmazon Bedrock User Guide · docs.aws.amazon.comレコードごとに独立したシステムフィールドを持つ形式。

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

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

営業へのお問い合わせ