기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
직접 선호 최적화(DPO)
직접 선호 최적화(DPO)는 파운데이션 모델을 위한 효율적인 미세 조정 방법으로, 쌍 비교 데이터를 사용하여 모델 출력을 인간의 선호도에 맞추도록 조정합니다. 이 접근 방식을 사용하면 어떤 응답이 더 바람직한지에 대한 사람의 피드백을 기반으로 모델 동작을 직접 최적화할 수 있습니다.
전체 순위 DPO와 저순위 어댑터(LoRA) DPO 모두 사용 가능합니다.
데이터 형식 요구 사항
전체 순위 및 LoRA DPO 모두에서 훈련 데이터 형식 요구 사항은 SFT와 유사합니다. 그러나 DPO의 경우 마지막 턴에는 기본 설정 페어가 있어야 합니다. 다음은 DPO 데이터 형식의 예입니다.
// N-1 turns same as SFT format { "role": "assistant", "candidates": [ { "content": [ { "text": "..." } // content list can contain multiple 'text' objects ], "preferenceLabel": "preferred" }, { "content": [ { "text": "..." } // content list can contain multiple 'text' objects ], "preferenceLabel": "non-preferred" } ] }
다음은 또 다른 전체 DPO 텍스트 샘플입니다.
{ "system": [ { "text": "..." } ], "messages":[ { "role": "user", "content": [ { "text": "..." } ] }, { "role": "assistant", "content": [ { "text": "..." } ] }, { "role": "user", "content": [ { "text": "..." } ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "..." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "..." } ], "preferenceLabel": "non-preferred" } ] } ], }
다음은 전체 DPO 이미지 샘플입니다.
{ "system": [ { "text": "..." } ], "messages":[ { "role": "user", "content": [ { "text": "..." }, { "text": "..." }, { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.jpg", "bucketOwner": "your-aws-account-id" } } } } // "content" can have multiple "text" and "image" objects. // max image count is 10 ] }, { "role": "assistant", "content": [ { "text": "..." } ] }, { "role": "user", "content": [ { "text": "..." }, { "text": "..." }, { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.jpg", "bucketOwner": "your-aws-account-id" } } } } // "content" can have multiple "text" and "image" objects. // max image count is 10 ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "..." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "..." } ], "preferenceLabel": "non-preferred" } ] } ], }
입력 데이터 세트에 다른 제약 조건이 적용됩니다. 자세한 내용은 데이터 세트 제약 조건을 참조하세요. 효과적인 훈련을 위해 최소 1,000개의 기본 설정 페어를 포함하는 것이 좋습니다. 고품질 기본 설정 데이터를 사용하면 더 효율적인 결과를 얻을 수 있습니다.
다음과 같은 시나리오에서 DPO 사용을 권장합니다.
-
특정 인간 선호도에 맞춘 주관적 출력 최적화
-
모델의 톤, 스타일, 콘텐츠 특성을 원하는 응답 패턴에 맞게 조정
-
사용자 피드백 및 오류 분석을 기반으로 기존 모델 개선
-
다양한 사용 사례에서 일관된 출력 품질 유지
-
선호 응답 패턴을 통해 안전 가드레일 구현
-
보상 없는 강화 학습 수행
-
등급화 또는 레이블링 데이터 없이 선호 데이터만 활용
-
유용함, 무해함, 정직함 등 세밀한 정렬 과제에서 모델 개선
전체 순위 DPO
전체 순위 DPO에 사용할 수 있는 Amazon Nova 파라미터는 다음과 같습니다.
-
구성 실행
-
name
: 훈련 작업을 설명하는 이름입니다. 이렇게 하면에서 작업을 식별하는 데 도움이 됩니다 AWS Management Console. -
model_type
: 사용할 Nova 모델 변형입니다. 사용 가능한 옵션은amazon.nova-micro-v1:0:128k
,amazon.nova-lite-v1:0:300k
또는 입니다amazon.nova-pro-v1:0:300k
. -
model_name_or_path
: 기본 모델의 경로입니다. 훈련 후 체크포인트()의nova-micro/prod
,nova-lite/prod
nova-pro/prod
, 또는 S3 경로에서 사용할 모델을 선택합니다s3://<escrow bucket>/<job id>/outputs/checkpoints
. -
replicas
: 분산 훈련에 사용할 컴퓨팅 인스턴스 수입니다. 사용 가능한 값은 선택한 모델에 따라 다릅니다. Amazon Nova Micro는 2개, 4개 또는 8개의 복제본을 지원합니다. Amazon Nova Lite는 4, 8, 16 또는 32개의 복제본을 지원합니다. Amazon Nova Pro는 6개, 12개 또는 24개의 복제본을 지원합니다. -
data_s3_path
: 훈련 데이터 세트의 S3 위치로, JSONL 파일입니다. 이 파일은 클러스터와 동일한 계정 및 리전에 있어야 합니다. 제공된 모든 S3 위치는 동일한 계정 및 리전에 있어야 합니다. -
validation_data_s3_path
: JSONL 파일인 검증 데이터 세트의 S3 위치입니다. 이 파일은 클러스터와 동일한 AWS 계정 및 리전에 있어야 합니다. 제공된 모든 S3 위치는 동일한 계정 및 리전에 있어야 합니다.
-
-
훈련 구성
-
max_length
: 토큰의 최대 시퀀스 길이입니다. 이는 훈련을 위한 컨텍스트 창 크기를 결정합니다. 지원되는 최대 값은 DPO용 토큰 32,768개입니다.시퀀스가 길수록 메모리 요구 사항이 늘어나면서 훈련 효율성이 향상됩니다.
max_length
파라미터를 데이터 배포와 일치시키는 것이 좋습니다.
-
-
트레이너 설정
-
max_epochs
: 훈련 데이터 세트를 완전히 통과한 횟수입니다. 최대값은 5입니다.일반적으로 데이터 세트가 클수록 수렴할 에포크 수가 줄어들고, 데이터 세트가 작을수록 수렴할 에포크 수가 늘어납니다. 데이터 크기에 따라 epoch 수를 조정하는 것이 좋습니다.
-
-
모델 설정
-
hidden_dropout
: 숨겨진 상태 출력을 삭제할 확률입니다. 작은 데이터 세트에 대한 과적합을 줄이려면이 값을 약 0.0~0.2 증가시킵니다. 유효한 값은 0~1 사이입니다. -
attention_dropout
: 관심 가중치를 삭제할 확률입니다. 이 파라미터는 일반화에 도움이 될 수 있습니다. 유효한 값은 0~1 사이입니다. -
ffn_dropout
: 피드 포워드 네트워크 출력을 삭제할 확률입니다. 유효한 값은 0~1 사이입니다.
-
-
옵티마이저 구성
-
lr
: 최적화 중에 단계 크기를 제어하는 학습률입니다. 우수한 성능을 위해 1e-6-1e-4 사이의 값을 사용하는 것이 좋습니다. 유효한 값은 0~1 사이입니다. -
name
: 최적화 프로그램 알고리즘입니다. 현재distributed_fused_adam
만 지원됩니다. -
weight_decay
: L2 정규화 강도입니다. 값이 높을수록(0.01~0.1 사이) 정규화가 증가합니다. -
warmup_steps
: 학습률을 점진적으로 높이는 단계 수입니다. 이렇게 하면 훈련 안정성이 향상됩니다. 유효한 값은 1~20입니다. -
min_lr
: 감소 종료 시 최소 학습률입니다. 유효한 값은 0~1 사이이지만 학습률보다 작아야 합니다.
-
-
DPO 구성
-
beta
: 모델이 훈련 데이터 또는 원래 모델에 얼마나 근접해야 하는지 결정합니다. 유효한 값은 0.001~0.5입니다.더 큰 값(예: 0.5)을 지정하여 참조 모델 동작을 더 많이 유지하면서 새로운 기본 설정을 더 느리게 학습합니다. 더 작은 값(예: 0.01~0.05)을 지정하여 참조 모델 동작에서 이탈할 위험이 있는 새로운 기본 설정을 더 빠르게 학습합니다.
-
전체 순위 DPO 레시피
다음은 DPO에 대한 전체 순위 레시피입니다.
## Run config run: name: "my-dpo-micro-job" # A descriptive name for your training job model_type: "amazon.nova-micro-v1:0:128k" # Model variant specification, do not change model_name_or_path: "nova-micro/prod" # Base model path, do not change replicas: 2 # Number of compute instances for training, allowed values are 2, 4, 8 data_s3_path: s3:
Replace with your S3 bucket name
/input.jsonl validation_data_s3_path:[OPTIONAL] s3:your S3 bucket name
/input.jsonl output_s3_path:[S3_PATH_TO_STORE_MANIFEST]
## Training specific configs training_config: max_length: 32768 # Maximum context window size (tokens). global_batch_size: 64 # Global batch size, allowed values are 16, 32, 64. trainer: max_epochs: 2 # Number of training epochs model: hidden_dropout: 0.0 # Dropout for hidden states, must be between 0.0 and 1.0 attention_dropout: 0.0 # Dropout for attention weights, must be between 0.0 and 1.0 ffn_dropout: 0.0 # Dropout for feed-forward networks, must be between 0.0 and 1.0 optim: lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm, do not change adam_w_mode: true # Enable AdamW mode eps: 1e-06 # Epsilon for numerical stability weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 betas: # Adam optimizer betas, must be between 0.0 and 1.0 - 0.9 - 0.999 sched: warmup_steps: 10 # Learning rate warmup steps constant_steps: 0 # Steps at constant learning rate min_lr: 1e-6 # Minimum learning rate, must be lower than lr dpo_cfg: beta: 0.1 # Strength of preference enforcement. Limits: [0.001, 0.5] peft: peft_scheme: null # Disable LoRA, trigger full rank fine tuning
저순위 어댑터 DPO
하위 순위 어댑터 DPO에 사용할 수 있는 Amazon Nova 파라미터는 다음과 같습니다.
-
구성 실행
-
name
: 훈련 작업을 설명하는 이름입니다. 이렇게 하면에서 작업을 식별하는 데 도움이 됩니다 AWS Management Console. -
model_type
: 사용할 Nova 모델 변형입니다. 사용 가능한 옵션은amazon.nova-micro-v1:0:128k
,amazon.nova-lite-v1:0:300k
또는 입니다amazon.nova-pro-v1:0:300k
. -
model_name_or_path
: 기본 모델의 경로입니다. 훈련 후 체크포인트()의nova-micro/prod
,nova-lite/prod
nova-pro/prod
, 또는 S3 경로에서 사용할 모델을 선택합니다s3://<escrow bucket>/<job id>/outputs/checkpoints
. -
replicas
: 분산 훈련에 사용할 컴퓨팅 인스턴스 수입니다. 사용 가능한 값은 선택한 모델에 따라 다릅니다. Amazon Nova Micro는 2개, 4개 또는 8개의 복제본을 지원합니다. Amazon Nova Lite는 4, 8, 16 또는 32개의 복제본을 지원합니다. Amazon Nova Pro는 6개, 12개 또는 24개의 복제본을 지원합니다.
-
-
훈련 구성
-
max_length
: 토큰의 최대 시퀀스 길이입니다. 이는 훈련을 위한 컨텍스트 창 크기를 결정합니다. 지원되는 최대 값은 DPO용 토큰 32,768개입니다.시퀀스가 길수록 메모리 요구 사항이 증가하면서 훈련 효율성이 향상됩니다.
max_length
파라미터를 데이터 배포와 일치시키는 것이 좋습니다.
-
-
트레이너 설정
-
max_epochs
: 훈련 데이터 세트를 완전히 통과한 횟수입니다. 최대값은 5입니다.일반적으로 데이터 세트가 클수록 수렴할 에포크 수가 줄어들고, 데이터 세트가 작을수록 수렴할 에포크 수가 늘어납니다. 데이터 크기에 따라 epoch 수를 조정하는 것이 좋습니다.
-
-
모델 설정
-
hidden_dropout
: 숨겨진 상태 출력을 삭제할 확률입니다. 작은 데이터 세트에 대한 과적합을 줄이려면이 값을 약 0.0~0.2 증가시킵니다. 유효한 값은 0~1 사이입니다. -
attention_dropout
: 관심 가중치를 삭제할 확률입니다. 이 파라미터는 일반화에 도움이 될 수 있습니다. 유효한 값은 0~1 사이입니다. -
ffn_dropout
: 피드 포워드 네트워크 출력을 삭제할 확률입니다. 유효한 값은 0~1 사이입니다.
-
-
옵티마이저 구성
-
lr
: 최적화 중에 단계 크기를 제어하는 학습률입니다. 우수한 성능을 위해 1e-6-1e-4 사이의 값을 사용하는 것이 좋습니다. 유효한 값은 0~1 사이입니다. -
name
: 최적화 프로그램 알고리즘입니다. 현재distributed_fused_adam
만 지원됩니다. -
weight_decay
: L2 정규화 강도입니다. 값이 높을수록(0.01~0.1 사이) 정규화가 증가합니다. -
warmup_steps
: 학습률을 점진적으로 높이는 단계 수입니다. 이렇게 하면 훈련 안정성이 향상됩니다. 유효한 값은 1~20입니다. -
min_lr
: 감소 종료 시 최소 학습률입니다. 유효한 값은 0~1 사이이지만 학습률보다 작아야 합니다.
-
-
DPO 구성
-
beta
: 모델이 훈련 데이터 또는 원래 모델에 얼마나 근접해야 하는지 결정합니다. 유효한 값은 0.001~0.5입니다.더 큰 값(예: 0.5)을 지정하여 참조 모델 동작을 더 많이 유지하면서 새로운 기본 설정을 더 느리게 학습합니다. 더 작은 값(예: 0.01~0.05)을 지정하여 참조 모델 동작에서 이탈할 위험이 있는 새로운 기본 설정을 더 빠르게 학습합니다.
-
-
LoRA 구성 파라미터
-
peft_scheme
: 보다 효율적이고 작은 출력 모델을 생성하는 저순위 적응을 활성화lora
하려면 로 설정합니다. 이러한 LoRA별 속성도 사용할 수 있습니다.-
alpha
: LoRA 가중치의 조정 인수입니다. 이는 일반적으로와 동일한 값으로 설정됩니다adapter_dim
. -
adapter_dropout
: LoRA 파라미터의 정규화 파라미터입니다.
-
-
LoRA DPO 레시피
다음은 LoRA DPO의 레시피입니다.
## Run config run: name: "my-lora-run" # A descriptive name for your training job model_type: "amazon.nova-lite-v1:0:300k" # Model variant specification, do not change model_name_or_path: "nova-lite/prod" # Base model path, do not change replicas: 4 # Number of compute instances for training. All supported values: {4, 8, 16} data_s3_path: s3:
Replace with your S3 bucket name
/input.jsonl validation_data_s3_path:[OPTIONAL] s3:your S3 bucket name
/input.jsonl output_s3_path:[S3_PATH_TO_STORE_MANIFEST]
## Training specific configs training_config: max_length: 16384 # Maximum context window size (tokens). Should be between [1024, 32768] and multiple of 1024. # Note: Image dataset for DPO has a limit on 20k samples and 16384 max_length global_batch_size: 64 # Total samples per step. Limits: {16, 32, 64, 128, 256} trainer: max_epochs: 2 # Number of training epochs model: hidden_dropout: 0.0 # Dropout for hidden states. Limits: [0.0, 1.0] attention_dropout: 0.0 # Dropout for attention weights. Limits: [0.0, 1.0] ffn_dropout: 0.0 # Dropout for feed-forward networks. Limits: [0.0, 1.0] optim: lr: 1e-5 # Learning rate name: distributed_fused_adam # Optimizer algorithm, do not change adam_w_mode: true # Enable AdamW mode eps: 1e-08 # Epsilon for numerical stability weight_decay: 0.01 # L2 regularization strength betas: # Adam optimizer betas. Limits: [0.0, 1.0] - 0.9 - 0.999 sched: warmup_steps: 10 # Learning rate warmup steps constant_steps: 0 # Steps at constant learning rate min_lr: 1e-6 # Minimum learning rate dpo_cfg: beta: 0.01 # Strength of preference enforcement. Limits: [0.001, 0.5] peft: peft_scheme: "lora" # Enable LoRA for parameter-efficient fine-tuning lora_tuning: loraplus_lr_ratio: 20.0 # LoRA+ learning rate scaling factor. Limits: [0.0, 100.0] alpha: 64 # Scaling factor for LoRA weights. [32, 64, 96, 128, 160, 192] adapter_dropout: 0.01 # Regularization for LoRA parameters. Limits: [0.0, 1.0]
제한 사항
DPO에는 다음과 같은 제한 사항이 있습니다.
-
중간 체크포인트는 평가를 위해 저장되지 않으며 중간 체크포인트에서 재개할 수 없습니다. 마지막 체크포인트만 저장됩니다.
-
MLflow 로깅은 지원되지 않습니다.
-
하이퍼파라미터를 조정하려면 하이퍼파라미터 선택의 지침을 따릅니다.