View a markdown version of this page

DPO - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

DPO

説明

Direct Preference Optimization (DPO) は、選択した (推奨) レスポンスと拒否された (非推奨) レスポンスのペアを同じプロンプトにトレーニングすることで、モデルを人間の好みに合わせて調整します。

どのようなときに使うか

  • どのレスポンスが優れているかを示すプリファレンスデータがある

  • SFT が達成する以上のレスポンス品質の向上

  • モデルは特定の望ましくない動作を回避する必要があります

達成事項

モデルは、別の報酬モデルを必要とせずに、選択した例と同様のレスポンスを生成し、拒否された例を避けることを学習します。

データセット形式

DPO では、同じプロンプトに対して選択した (推奨) レスポンスと拒否された (非推奨) レスポンスのペアが必要です。DPO は 2 つのデータセット形式をサポートしています。すべてのデータセットは JSONL 形式である必要があります (行ごとに 1 つの JSON オブジェクト)。どちらの形式でもsystemメッセージはオプションです。

形式 1: messages

完全なメッセージリストrejectedとして chosenと を指定します。含める場合、systemメッセージは最初の要素で、 chosenと の両方で同じである必要がありますrejected

{ "chosen": [ {"role": "system", "content": "..."}, {"role": "user", "content": "..."}, {"role": "assistant", "content": "..."} ], "rejected": [ {"role": "system", "content": "..."}, {"role": "user", "content": "..."}, {"role": "assistant", "content": "..."} ] }

形式 2: prompt/chosen/rejected

プロンプトと両方のレスポンスを個別の文字列フィールドとして指定し、オプションのトップレベルsystemフィールドを指定します。

{ "system": "...", "prompt": "...", "chosen": "...", "rejected": "..." }

ガイダンス

  • 選択したレスポンスと拒否されたレスポンスは、品質が著しく異なる必要があります

  • 選択したプロンプトと拒否されたプロンプトの両方に同じプロンプトを使用する

  • system メッセージはオプションです

ハイパーパラメータ - DPO LoRA

注記

次の表は、サーバーレスモデルのカスタマイズを使用する際に使用できるハイパーパラメータを示しています。その他のハイパーパラメータは、最適化されたデフォルトを使用して Amazon SageMaker AI によってプリセットされます。SageMaker AI トレーニングジョブまたは HyperPod を使用すると、レシピで使用できるハイパーパラメータの完全なリストにアクセスできます。レシピを取得し、すべてのハイパーパラメータにアクセスするには、SageMaker AI レシピリポジトリを参照してください。

パラメータ タイプ 必須? 範囲/値 説明
max_epochsinteger必須1–100トレーニングデータセットを通過する完了パスの数。
global_batch_size整数必須16、32、64、128すべてのインスタンスでオプティマイザステップごとに処理されたサンプルの合計。
learning_ratefloat必須5e-07-1e-04最適化中の重み更新のステップサイズ。
lr_schedulerstring必須コサイン、定数トレーニングに対する学習レート減衰スケジュール。
lr_warmup_steps_ratiofloat必須0~1学習レートを 0 から増やした合計ステップの割合。
weight_decayfloat必須0.0–1.0L2 正則化係数。オーバーフィットを防ぐのに役立ちます。
gradient_clippingboolean必須true、false基準がしきい値を超えた場合は、グラデーションをスケールダウンします。
gradient_clipping_thresholdfloat必須0.0~5.0最大許容勾配基準。
dataset_max_len整数必須256~131072トークンの最大シーケンス長。長いシーケンスは切り捨てられます。
seed整数必須0-2147483647再現性のためのランダムシード。
logging_steps整数必須1–100オプティマイザステップでのメトリクスログ記録の頻度。
lora_rank整数必須8、16、32、64、128低ランクマトリックスのディメンション。Lower = トレーニング可能なパラメータが少なくなります。
lora_dropoutfloat必須0.0–1.0LoRA アダプターレイヤーのドロップアウト確率。
lora_alpha整数必須16、32、64、128、256LoRA スケーリング係数。有効な LR はアルファ/ランクとしてスケーリングされます。
merge_weightsboolean必須true、falseトレーニング後にLoRA重みをベースモデルにマージします。
train_val_split_ratiofloatオプションです。0.0–1.0トレーニングと検証に割り当てられた割合。
temperaturefloat必須0.0~2.0評価用のサンプリング温度。
adam_betafloat必須1e-03–0.1DPO 逆温度。モデルがプリファレンスランキングを適用する強度を制御します。

ハイパーパラメータ - DPO FFT

パラメータ タイプ 必須? 範囲/値 説明
max_epochsinteger必須1–100トレーニングデータセットを通過する完了パスの数。
global_batch_size整数必須16、32、64、128オプティマイザステップごとに処理されたサンプルの合計。
learning_ratefloat必須5e-07-1e-04重みの更新のステップサイズ。
lr_schedulerstring必須コサイン、定数学習レート減衰スケジュール。
lr_warmup_steps_ratiofloat必須0~1LR ウォームアップのステップの割合。
weight_decayfloat必須0.0–1.0L2 正則化係数。
gradient_clippingboolean必須true、false基準がしきい値を超えた場合は、グラデーションをスケールダウンします。
gradient_clipping_thresholdfloat必須0.0~5.0最大許容勾配基準。
dataset_max_len整数必須256~131072トークンの最大シーケンス長。
max_response_length整数必須100~200,000生成されたレスポンスの最大トークン。
seed整数必須0-2147483647再現性のためのランダムシード。
logging_steps整数必須1–100メトリクスログ記録の頻度。
train_val_split_ratiofloatオプションです。0.0–1.0トレーニングと検証に割り当てられた割合。
temperaturefloat必須0.0~2.0評価用のサンプリング温度。
adam_betafloat必須1e-03–0.1DPO 逆温度。モデルがプリファレンスランキングを適用する強度を制御します。