

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

# DPO
<a name="customizing-models-dpo"></a>

## 説明
<a name="customizing-models-dpo-description"></a>

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

### どのようなときに使うか
<a name="customizing-models-dpo-when-to-use"></a>
+ どのレスポンスが優れているかを示すプリファレンスデータがある
+ SFT が達成する以上のレスポンス品質の向上
+ モデルは特定の望ましくない動作を回避する必要があります

### 達成事項
<a name="customizing-models-dpo-what-it-achieves"></a>

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

## データセット形式
<a name="customizing-models-dpo-dataset"></a>

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

### 形式 1: `messages`
<a name="customizing-models-dpo-dataset-format-1"></a>

完全なメッセージリスト`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`
<a name="customizing-models-dpo-dataset-format-2"></a>

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

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

### ガイダンス
<a name="customizing-models-dpo-dataset-guidance"></a>
+ 選択したレスポンスと拒否されたレスポンスは、品質が著しく異なる必要があります
+ 選択したプロンプトと拒否されたプロンプトの両方に同じプロンプトを使用する
+ `system` メッセージはオプションです

## ハイパーパラメータ - DPO LoRA
<a name="customizing-models-dpo-hyperparameters-lora"></a>

**注記**  
次の表は、[サーバーレスモデルのカスタマイズ](customize-model.md)を使用する際に使用できるハイパーパラメータを示しています。その他のハイパーパラメータは、最適化されたデフォルトを使用して Amazon SageMaker AI によってプリセットされます。[SageMaker AI トレーニングジョブ](customizing-models-training-jobs.md)または [HyperPod](customizing-models-hyperpod.md) を使用すると、レシピで使用できるハイパーパラメータの完全なリストにアクセスできます。レシピを取得し、すべてのハイパーパラメータにアクセスするには、[SageMaker AI レシピリポジトリ](https://github.com/aws/sagemaker-hyperpod-recipes)を参照してください。


| パラメータ | タイプ | 必須? | 範囲/値 | 説明 | 
| --- | --- | --- | --- | --- | 
| max\_epochs | integer | 必須 | 1–100 | トレーニングデータセットを通過する完了パスの数。 | 
| global\_batch\_size | 整数 | 必須 | 16、32、64、128 | すべてのインスタンスでオプティマイザステップごとに処理されたサンプルの合計。 | 
| learning\_rate | float | 必須 | 5e-07-1e-04 | 最適化中の重み更新のステップサイズ。 | 
| lr\_scheduler | string | 必須 | コサイン、定数 | トレーニングに対する学習レート減衰スケジュール。 | 
| lr\_warmup\_steps\_ratio | float | 必須 | 0～1 | 学習レートを 0 から増やした合計ステップの割合。 | 
| weight\_decay | float | 必須 | 0.0–1.0 | L2 正則化係数。オーバーフィットを防ぐのに役立ちます。 | 
| gradient\_clipping | boolean | 必須 | true、false | 基準がしきい値を超えた場合は、グラデーションをスケールダウンします。 | 
| gradient\_clipping\_threshold | float | 必須 | 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\_dropout | float | 必須 | 0.0–1.0 | LoRA アダプターレイヤーのドロップアウト確率。 | 
| lora\_alpha | 整数 | 必須 | 16、32、64、128、256 | LoRA スケーリング係数。有効な LR はアルファ/ランクとしてスケーリングされます。 | 
| merge\_weights | boolean | 必須 | true、false | トレーニング後にLoRA重みをベースモデルにマージします。 | 
| train\_val\_split\_ratio | float | オプションです。 | 0.0–1.0 | トレーニングと検証に割り当てられた割合。 | 
| temperature | float | 必須 | 0.0～2.0 | 評価用のサンプリング温度。 | 
| adam\_beta | float | 必須 | 1e-03–0.1 | DPO 逆温度。モデルがプリファレンスランキングを適用する強度を制御します。 | 

## ハイパーパラメータ - DPO FFT
<a name="customizing-models-dpo-hyperparameters-fft"></a>


| パラメータ | タイプ | 必須? | 範囲/値 | 説明 | 
| --- | --- | --- | --- | --- | 
| max\_epochs | integer | 必須 | 1–100 | トレーニングデータセットを通過する完了パスの数。 | 
| global\_batch\_size | 整数 | 必須 | 16、32、64、128 | オプティマイザステップごとに処理されたサンプルの合計。 | 
| learning\_rate | float | 必須 | 5e-07-1e-04 | 重みの更新のステップサイズ。 | 
| lr\_scheduler | string | 必須 | コサイン、定数 | 学習レート減衰スケジュール。 | 
| lr\_warmup\_steps\_ratio | float | 必須 | 0～1 | LR ウォームアップのステップの割合。 | 
| weight\_decay | float | 必須 | 0.0–1.0 | L2 正則化係数。 | 
| gradient\_clipping | boolean | 必須 | true、false | 基準がしきい値を超えた場合は、グラデーションをスケールダウンします。 | 
| gradient\_clipping\_threshold | float | 必須 | 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\_ratio | float | オプションです。 | 0.0–1.0 | トレーニングと検証に割り当てられた割合。 | 
| temperature | float | 必須 | 0.0～2.0 | 評価用のサンプリング温度。 | 
| adam\_beta | float | 必須 | 1e-03–0.1 | DPO 逆温度。モデルがプリファレンスランキングを適用する強度を制御します。 | 