

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

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

## 설명
<a name="customizing-models-dpo-description"></a>

DPO(Direct Preference Optimization)는 동일한 프롬프트에 대해 선택한(선호됨) 응답과 거부된(선호되지 않음) 응답 쌍을 훈련하여 모델을 인적 기본 설정에 맞게 조정합니다.

### 사용해야 하는 경우
<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는 두 가지 데이터 세트 형식을 지원합니다. 모든 데이터 세트는 JSONL 형식(행당 하나의 JSON 객체)이어야 합니다. `system` 메시지는 두 형식 모두에서 선택 사항입니다.

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

`chosen` 및를 전체 메시지 목록`rejected`으로 제공합니다. 포함된 경우 `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 | 정수 | 필수 | 1–100 | 훈련 데이터 세트를 완전히 통과한 횟수입니다. | 
| global\_batch\_size | 정수 | 필수 | 16, 32, 64, 128 | 모든 인스턴스에서 옵티마이저 단계당 처리된 총 샘플 수입니다. | 
| learning\_rate | 실수 | 필수 | 5e-07-1e-04 | 최적화 중 가중치 업데이트를 위한 단계 크기입니다. | 
| lr\_scheduler | 문자열 | 필수 | 코사인, 상수 | 훈련을 통한 학습률 감소 일정. | 
| lr\_warmup\_steps\_ratio | 실수 | 필수 | 0\~1 | 학습률을 0에서 높이는 데 소요된 총 단계의 비율입니다. | 
| weight\_decay | 실수 | 필수 | 0.0\~1.0 | L2 정규화 계수. 과적합을 방지하는 데 도움이 됩니다. | 
| gradient\_clipping | 부울 | 필수 | true, false | 표준이 임계값을 초과하는 경우 그라데이션을 축소합니다. | 
| gradient\_clipping\_threshold | 실수 | 필수 | 0.0\~5.0 | 허용되는 최대 그라데이션 표준입니다. | 
| dataset\_max\_len | 정수 | 필수 | 256\~131072 | 토큰 단위의 최대 시퀀스 길이. 긴 시퀀스는 잘립니다. | 
| seed | 정수 | 필수 | 0–2147483647 | 재현성을 위한 무작위 시드입니다. | 
| logging\_steps | 정수 | 필수 | 1–100 | 옵티마이저 단계의 지표 로깅 빈도입니다. | 
| lora\_rank | 정수 | 필수 | 8, 16, 32, 64, 128 | 하위 순위 매트릭스의 차원입니다. 낮음 = 훈련 가능한 파라미터가 적음. | 
| lora\_dropout | 실수 | 필수 | 0.0\~1.0 | LoRA 어댑터 계층의 드롭아웃 확률입니다. | 
| lora\_alpha | 정수 | 필수 | 16, 32, 64, 128, 256 | LoRA 조정 인수입니다. 유효 LR은 알파/순위로 확장됩니다. | 
| merge\_weights | 부울 | 필수 | true, false | 훈련 후 LoRA 가중치를 기본 모델로 병합합니다. | 
| train\_val\_split\_ratio | 실수 | 선택 사항 | 0.0\~1.0 | 훈련과 검증에 할당된 비율입니다. | 
| temperature | 실수 | 필수 | 0.0\~2.0 | 평가를 위한 샘플링 온도입니다. | 
| adam\_beta | 실수 | 필수 | 1e-03–0.1 | DPO 역온. 모델이 기본 설정 순위를 적용하는 정도를 제어합니다. | 

## 하이퍼파라미터 - DPO FFT
<a name="customizing-models-dpo-hyperparameters-fft"></a>


| 파라미터 | 유형 | 필수 | 범위/값 | 설명 | 
| --- | --- | --- | --- | --- | 
| max\_epochs | 정수 | 필수 | 1–100 | 훈련 데이터 세트를 완전히 통과한 횟수입니다. | 
| global\_batch\_size | 정수 | 필수 | 16, 32, 64, 128 | 옵티마이저 단계당 처리된 총 샘플 수입니다. | 
| learning\_rate | 실수 | 필수 | 5e-07-1e-04 | 가중치 업데이트를 위한 단계 크기입니다. | 
| lr\_scheduler | 문자열 | 필수 | 코사인, 상수 | 학습률 감소 일정. | 
| lr\_warmup\_steps\_ratio | 실수 | 필수 | 0\~1 | LR 워밍업 단계 비율입니다. | 
| weight\_decay | 실수 | 필수 | 0.0\~1.0 | L2 정규화 계수. | 
| gradient\_clipping | 부울 | 필수 | true, false | 표준이 임계값을 초과하는 경우 그라데이션을 축소합니다. | 
| gradient\_clipping\_threshold | 실수 | 필수 | 0.0\~5.0 | 허용되는 최대 그라데이션 표준입니다. | 
| dataset\_max\_len | 정수 | 필수 | 256\~131072 | 토큰 단위의 최대 시퀀스 길이. | 
| max\_response\_length | 정수 | 필수 | 100\~200000 | 생성된 응답의 최대 토큰입니다. | 
| seed | 정수 | 필수 | 0–2147483647 | 재현성을 위한 무작위 시드입니다. | 
| logging\_steps | 정수 | 필수 | 1–100 | 지표 로깅 빈도입니다. | 
| train\_val\_split\_ratio | 실수 | 선택 사항 | 0.0\~1.0 | 훈련과 검증에 할당된 비율입니다. | 
| temperature | 실수 | 필수 | 0.0\~2.0 | 평가를 위한 샘플링 온도입니다. | 
| adam\_beta | 실수 | 필수 | 1e-03–0.1 | DPO 역온. 모델이 기본 설정 순위를 적용하는 정도를 제어합니다. | 