근접 정책 최적화(PPO) - Amazon SageMaker AI

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

근접 정책 최적화(PPO)

근접 정책 최적화(PPO)는 여러 기계 학습 모델을 활용해 하나의 모델을 학습하고 점수를 매기는 과정입니다. 다음 모델은 PPO 프로세스의 일부입니다.

  • 액터 훈련 또는 정책 모델: 모든 에포크를 미세 조정하고 업데이트하는 지도 미세 조정(SFT) 모델입니다. 업데이트는 프롬프트를 샘플링하고, 결과물을 생성하며, 클리핑 대리 목표를 사용해 가중치를 업데이트하는 방식으로 수행됩니다. 이를 통해 토큰 단위의 로그 가능도 변화 폭이 제한되어 각 정책 단계가 이전 단계와 근접하게 유지되며 학습 안정성이 보장됩니다.

  • 액터 생성 모델: 보상 모델과 비평가 모델의 평가를 받기 위해 프롬프트 완성 또는 응답을 생성하는 모델입니다. 이 모델의 가중치는 매 에포크마다 액터 학습 모델 또는 정책 모델에서 업데이트됩니다.

  • 보상 모델: 액터 생성 모델을 채점하는 데 사용되는 고정 가중치가 있는 모델입니다.

  • 비평가 모델: 액터 생성 모델을 채점하는 데 사용되는 고정되지 않은 가중치가 있는 모델입니다. 이 점수는 액터가 나머지 토큰을 생성할 때 받는 총 보상의 추정치로 간주되는 경우가 많습니다.

  • 앵커 모델: 액터 훈련 모델과 기본 모델 간의 KL 발산을 계산하는 데 사용되는 동결 가중치가 있는 SFT 모델입니다. 앵커 모델은 액터 모델의 업데이트가 기본 모델과 비교해 지나치게 급격하지 않도록 보장합니다. 급격한 변화는 학습 불안정이나 성능 저하를 초래할 수 있습니다.

훈련 데이터는 각 줄에 훈련 예제를 나타내는 단일 JSON 객체가 포함된 JSONL 형식이어야 합니다. 예:

{ "turns": ["string", "string", ...], // Required "turns_to_mask": [integer, integer, ...], // Required "reward_category": "string", // Required "meta_data": {} // Optional }
  • turns는 대화 시퀀스를 나타내는 대화 문자열 배열의 배열입니다. 이 줄에는 시스템 프롬프트, 사용자 메시지 및 봇 응답이 포함되어 있습니다. 사용자 메시지는 일반적으로 모델 출력이 시작되는 위치를 나타내는 "Bot: "로 끝납니다. 예를 들어 [["System prompt"], ["User: Question Bot:"], ["Bot response"]]입니다.

  • turns_to_mask는 그라데이션 업데이트를 수신해서는 안 되는 회전을 식별하는 0 기반 인덱스의 배열입니다. 마스킹 처리된 회전은 일반적으로 시스템 프롬프트와 사용자 회전입니다. 예를 들어는 시스템 프롬프트와 사용자 메시지(첫 번째 및 세 번째 메시지)를 [0, 1, 3] 마스킹합니다.

  • reward_category는 평가할 모델 성능의 측면을 식별하는 문자열입니다. 훈련 중에 적절한 보상 모델 범주를 선택하는 데 사용됩니다. 보상 범주는 default, , , math, 및 보상 범주에 사용할 수 coding if rag있습니다rai.

  • meta_data는 추가 컨텍스트 또는 실측 정보가 포함된 선택적 객체입니다. 여기에는 식별자, 소스 정보 또는 대화 컨텍스트가 포함될 수 있습니다. 구조는 데이터 세트 요구 사항에 따라 유연합니다.

다음은 예제 레코드입니다.

{ "turns": ["You are a helpful AI assistant.", "User: What is ML? Bot:", "Machine learning is...", "User: Examples? Bot:", "Email spam filtering is..." ], "turns_to_mask": [0, 1, 3], "reward_category": "default", "meta_data": { "messages": [{ "role": "system", "content": "You are a helpful AI assistant." }, { "role": "user", "content": "What is ML?" }, { "role": "assistant", "content": "Machine learning is..." }, { "role": "user", "content": "Examples?" }, { "role": "assistant", "content": "Email spam filtering is..." } ] } }

보상 모델링 프레임워크는 고유한 범주형 목표에 다차원 최적화를 구현하여 강력한 모델 수렴을 촉진합니다. 보상 범주는 모델을 최적화해야 하는 작업에 따라 선택해야 합니다.

작업에 적합한 프레임워크를 선택하려면 다음 지침을 따르는 것이 좋습니다.

  • default: 표준 대화 작업 및 기본 상호 작용을 위한 범용 옵티마이저입니다. 일반적인 대화 및 토론, 기본 작성 작업, 간단한 질문 답변 및 전문화되지 않은 지식 쿼리에 사용됩니다.

    예:

    { "turns": ["Write a summary of climate change"], "turns_to_mask": [0], "reward_category": "default" }
  • math: 수학 계산 및 수치 추론 작업을 위한 특수 옵티마이저입니다. 수학 문제 해결, 산술 계산, 대수식, 기하학적 문제 및 통계 분석에 사용됩니다.

    예:

    { "turns": ["Calculate the derivative of x²"], "turns_to_mask": [0], "reward_category": "math" }
  • coding: 프로그래밍 및 소프트웨어 개발 관련 쿼리 전용 범주입니다. 코드 구현, 디버깅 지원, 알고리즘 설계, 기술 설명서 및 시스템 아키텍처 질문에 사용됩니다.

    예:

    { "turns": ["Write a function to check if a string is palindrome"], "turns_to_mask": [0], "reward_category": "coding" }
  • if: 정확한 절차 실행 및 step-by-step. 다단계 절차, 순차적 지침, 복잡한 작업 분해 및 프로세스 설명서에 사용됩니다.

    예:

    { "turns": ["Provide steps to deploy a web application"], "turns_to_mask": [0], "reward_category": "if" }
  • rag: 특별히 검색된 컨텍스트 정보를 기반으로 쿼리에 응답해야 하는 작업에 대한 보상 범주입니다. 제공된 참조 자료에서 직접 응답을 파생하여 검색된 정보의 범위를 벗어나지 않고 사실적 콘텐츠를 합성하고, 답변이 일반적인 지식이 아닌 제공된 컨텍스트에 근거하도록 하는 경우에 사용됩니다.

    예:

    { "turns": ["The Synthesis Report integrates findings from all six IPCC assessment cycles, revealing that global surface temperature has increased 1.1°C from 1850-1900 to 2011-2020, with human activities unequivocally identified as the cause of this warming. Alarmingly, current policies put the world on track for 3.2°C warming by 2100. The document identifies 5 key climate system "tipping points" approaching and emphasizes that greenhouse gas emissions must decline 43% by 2030 (compared to 2019 levels) to limit warming to 1.5°C. Climate-related risks will escalate with every increment of warming, with loss and damage disproportionately affecting vulnerable populations. Despite some progress, climate adaptation remains uneven with significant gaps, and financial flows continue to fall below levels needed for mitigation goals.", "What were the key findings of the latest IPCC climate report?"], "turns_to_mask": [0, 0], "reward_category": "rag" }
  • rai: 공정성, 투명성, 윤리적 원칙과 같은 책임감 있는 AI 원칙을 적용해야 하는 작업에 대한 보상 범주입니다. AI 시스템의 잠재적 편향을 평가하고, 프라이버시 고려 사항을 보장하고, 윤리적 딜레마를 해결하고, 포괄적인 설계 원칙을 장려하는 데 사용됩니다.

    예:

    { "turns": ["Identify potential bias concerns when developing a loan approval algorithm and suggest mitigation strategies"], "turns_to_mask": [0], "reward_category": "rai" }
마스킹 턴

훈련 데이터 세트에서 turns_to_mask 파라미터는 훈련 중에 그라데이션 업데이트를 수신하는 대화를 제어하는 데 매우 중요합니다. 이 인덱스 배열은 모델이 생성하도록 학습해야 하는 대화 부분과 컨텍스트로만 처리해야 하는 부분을 결정합니다. 적절한 마스킹을 사용하면 모델이 적절한 응답 패턴을 학습하는 동시에 성능을 저하시킬 수 있는 시스템 프롬프트 또는 사용자 입력에 대한 훈련을 피할 수 있습니다.

마스킹에는 다음 지침을 따르는 것이 좋습니다.

  • 항상 인덱스 마스킹 0 - 시스템 프롬프트는 그라데이션 업데이트를 수신해서는 안 됩니다.

  • 항상 사용자 교체 마스킹 - 모델이 사용자 입력을 생성하는 방법을 학습하지 못하도록 합니다.

  • 패턴 일관성 - 멀티턴 대화의 경우 (0, 1, 3, 5)와 같은 유사한 대화 구조에 동일한 마스킹 패턴을 사용합니다.

  • 선택적 훈련 - 초기 봇 응답을 마스킹하여 훈련을 개선된 최종 응답에 집중합니다.

  • Chain-of-thought 보존 - 추론 시퀀스를 훈련할 때 마스크 시스템과 사용자만 회전합니다.

  • 품질 필터링 - 성능 저하를 방지하기 위해 저품질 어시스턴트 응답을 마스킹합니다.

  • 컨텍스트 최적화 - 마스킹된 턴이 후속 응답에 필요한 필수 컨텍스트를 제거하지 않도록 합니다.

효과적인 마스킹의 핵심은 훈련 지표와 검증 성능을 모니터링하여 마스킹 전략이 원하는 모델 출력에 그라데이션 업데이트를 집중하면서 필요한 컨텍스트를 보존하는지 여부를 식별하는 것입니다.

KL 발산 손실 활성화

KL 발산 손실을 활성화하려면 앵커 서버를 활성화하여 원래 배포에서 현재 정책의 발산을 계산해야 합니다. KL 손실 유형을 지정해야 하며 계수는 0이 아닌 값이어야 합니다. 계수 값이 높을수록 모델이 원래 정책에서 크게 벗어나지 않아 일반 성능이 덜 변경됩니다. 계수 값이 낮으면 이전 정책과 더 큰 편차가 발생하여 대상 지표의 성능이 향상되지만 일반 성능에는 영향을 미칩니다.

ppo_anchor: max_length: 8192 trainer: num_nodes: ${recipes.run.cm_replicas} model: global_batch_size: 32 ppo_actor_train: model: ######## Use KL in actor loss ######## kl_loss_type: low_var_kl kl_loss_coeff: 0.1 ######## Use KL in reward model ###### kl_reward_penalty_coeff: 0.1
학습률

비평가 및 정책 모델의 학습률을 조정할 수 있으며, 3e-6이 기본 균형 선택입니다. 학습률이 높을수록 일반적으로 KL 발산 스파이크와 불규칙한 정책 동작을 통해 식별할 수 있는 훈련 불안정이 발생합니다. 학습률이 낮으면 수렴 문제와 느린 학습이 발생할 수 있으며, 이는 정체된 보상과 최소한의 정책 업데이트로 알 수 있습니다. KL 발산, 보상 점수 및 가치 손실을 정기적으로 모니터링하면 훈련 중에 학습률을 조정할지 여부를 결정하는 데 도움이 됩니다.

ppo_critic: model: optim: lr: 3e-6 ppo_actor_train: model: optim: lr: 3e-06
글로벌 배치 크기

글로벌 배치 크기는 Amazon Nova의 PPO 성능에 큰 영향을 미치며, 배치가 클수록 일반적으로 훈련 안정성과 그라데이션 추정이 향상되는 동시에 병렬 처리가 더 효율적입니다. 그러나 배치 크기가 매우 크면 수익률이 감소할 수 있으며 사용 가능한 메모리로 인해 제약을 받을 수 있으므로 학습률 및 기타 하이퍼파라미터와의 신중한 균형이 필요합니다.

ppo_actor_train: model: global_batch_size: 160

PPO를 사용한 튜닝에 사용할 수 있는 Amazon Nova 파라미터는 다음과 같습니다.

  • 구성 실행

    • actor_train_replicas: 액터 훈련 모델에 사용할 컴퓨팅 인스턴스 수입니다. 사용 가능한 값은 선택한 모델에 따라 다릅니다. Amazon Nova Micro는 1개 또는 2개의 복제본을 지원합니다. Amazon Nova Lite는 1, 2 또는 4개의 복제본을 지원합니다. Amazon Nova Pro는 3개, 6개 또는 12개의 복제본을 지원합니다.

    • rm_replicas: 보상 모델에 사용되는 컴퓨팅 인스턴스 수입니다. 모든 모델 크기에 하나의 복제본을 사용하는 것이 좋습니다.

    • cm_replicas: 비평가 모델에 사용되는 컴퓨팅 인스턴스 수입니다. 모든 모델 크기에 하나의 복제본을 사용하는 것이 좋습니다.

    • actor_generation_replicas: 액터 생성에 사용되는 컴퓨팅 인스턴스 수입니다. 사용 가능한 값은 선택한 모델에 따라 다릅니다. Amazon Nova Micro는 복제본 1개를 지원합니다. Amazon Nova Lite는 1개 또는 2개의 복제본을 지원합니다. Amazon Nova Pro는 1개 또는 2개의 복제본을 지원합니다.

    • am_replicas: 앵커 모델에 사용되는 컴퓨팅 인스턴스 수입니다. 모든 모델 크기에 하나의 복제본을 사용하는 것이 좋습니다.

  • 작업자 훈련 구성(정책 구성)

    • max_steps: 액터 훈련 모델을 미세 조정하거나 훈련하기 위한 최대 단계 수입니다. 여기서 한 단계는 롤아웃으로 정의한 다음 샘플 global_batch_size 수로 액터 훈련 모델을 훈련합니다. 하나의 epoch는 로 정의됩니다global_batch_size * trajectory_buffer_scale.

      여기에서 선택한 값은 사용 사례 및 데이터 세트 복잡성에 따라 달라집니다. 에포크 수에의 값을 곱한 65개의 에포크 또는 520개의 단계로 시작하는 것이 좋습니다trajectory_buffer_scale. 그러나 일부 태스크는 동일한 성능을 달성하려면 더 긴 PPO 훈련 시간이 필요합니다.

      PPO의 경우 ml 흐름 콘솔에서 보상 모델 점수 및 평균 작업 길이 포화와 같은 훈련 지표는 평가를 위한 최적의 지점을 식별하는 데 도움이 될 수 있습니다.

    • actor_model_max_length: 완료를 생성하기 위해 액터 생성 구성 요소로 전송되는 입력 데이터의 최대 길이입니다.

    • reward_model_max_length: 완료 점수를 매기기 위해 보상 서버로 전송되는 입력 데이터의 최대 길이입니다.

    • trajectory_buffer_scale:이 버퍼는 가중치를 업데이트하고 새 롤아웃을 생성하기 전에 이전 액터 트레인(정책) 모델을 사용하여 생성된 롤아웃 수를 나타냅니다. 지원되는 값은 1, 2, 4, 8 및 16입니다.

      trajectory_buffer_scale가 1이면 훈련이 정책에 있는 것입니다. 즉, 롤아웃은 가장 업데이트된 모델 가중치로 생성되지만 처리량은 저하됩니다. 16인 경우 모델은 약간 정책에서 벗어나지만 처리량은 더 높습니다. 각 모델에 대해 8부터 시작하는 것이 좋습니다.

    • kl_reward_penalty_coeff: 업데이트가 너무 급증하지 않고 정책이 기본 또는 SFT 모델에서 초안을 작성하지 않도록 하는 KL 발산 용어입니다.

    • kl_loss_coeff:이 값은 KL 발산 페널티가 PPO의 전체 훈련 목표에 미치는 영향을 제어합니다.

    • kl_loss_type:이 값은 현재 및 참조 정책 배포 간의 차이를 계산하는 방법을 지정합니다. kl_loss_types 사용 가능한는 kl (표준 KL 발산), mse (평균 제곱 오차), abs (로그 확률 간의 절대 차이) 및 low_var_kl (저분산 KL 근사치)입니다.

    • model.clip_ratio: PPO의 액터 클립 비율(ε)은 각 업데이트 중에 정책이 변경될 수 있는 양을 제한하는 하이퍼파라미터입니다.

    • model.optim.lr: 액터 모델의 대리 모델 손실 훈련에 사용되는 학습률입니다.

    • model.lam: 이점 추정 프로세스의 일부입니다. λ가 높을수록 장기 보상에 더 많은 가중치를 부여하지만 분산은 높지만, λ가 낮을수록 분산은 낮지만 편향은 더 큰 즉각적인 보상에 더 중점을 둡니다.

    • model.ent_coeff: PPO의 엔트로피 손실은 정책이 너무 결정적일 때(즉, 항상 높은 신뢰도로 동일한 작업을 선택) 정책을 페널티화하여 탐색을 장려합니다.

  • 보상 모델 구성

    • global_batch_size: 보상 모델을 사용하여 완료 점수를 매기기 위한 배치 크기입니다. ppo_actor_train.model.global_batch_size가 보다 크면 여러 배치로 ppo_reward.model.global_batch_size처리됩니다. 단,는 0이어야 ppo_actor_train.model.global_batch_size % ppo_reward.model.global_batch_size 합니다.

    • max_length: 보상 모델의 최대 컨텍스트 길이입니다. 이는와 동일해야 합니다ppo_actor_train.model.max_length.

  • 비판적 모델 구성

    • global_batch_size: 비평가 모델 값의 배치 크기입니다. 비평가 모델은 액터 모델에서 제공하는 응답의 각 토큰에 대한 값 추정치를 제공합니다. 배치 크기는 추론과 훈련 모두에 사용됩니다.

      는 0과 여야 ppo_actor_train.model.global_batch_size % ppo_critic.model.global_batch_size 합니다ppo_actor_train.model.global_batch_size * ppo_actor_train.model.trajectory_buffer_size % ppo_critic.model.global_batch_size == 0.

    • max_length: 비평가 모델의 최대 컨텍스트 길이입니다. 이는와 동일해야 합니다ppo_actor_train.model.max_length.

    • model.optim.lr: 액터 모델의 대리 모델 손실 훈련에 사용되는 학습률입니다.

  • 앵커 모델 구성

    • global_batch_size: 고정된 SFT 또는 앵커 모델의 로그프를 생성하기 위한 배치 크기입니다. 단,는 0이어야 ppo_actor_train.model.global_batch_size % ppo_anchor.model.global_batch_size 합니다.

    • max_length: 보상 모델의 최대 컨텍스트 길이입니다. 이는와 동일해야 합니다ppo_actor_train.model.max_length.

  • 액터 생성 모델 구성

    • actor_model_max_length: 액터 모델 생성 구성 요소의 최대 컨텍스트 길이입니다. 이는와 동일해야 합니다ppo_actor_train.model.max_length.

PPO 레시피

다음은 PPO의 레시피입니다.

## Run config run: name: ndry-ppo-pro model_type: amazon.nova-pro-v1:0:300k model_name_or_path: nova-pro/prod data_s3_path: s3://testing/train.jsonl # Your training data S3 path actor_train_replicas: 6 # Actor train model replicas rm_replicas: 1 # Reward model replicas cm_replicas: 1 # Critic model replicas actor_generation_replicas: 2 # Actor generation model replicas am_replicas: 1 # Anchor model replicas ## Training config for each PPO component ppo_reward: max_length: 8192 # model architecture max length trainer: num_nodes: ${recipes.run.rm_replicas} model: global_batch_size: 16 ppo_critic: max_length: 8192 trainer: num_nodes: ${recipes.run.cm_replicas} model: global_batch_size: 16 optim: lr: 3e-6 name: distributed_fused_adam adam_w_mode: true eps: 1e-06 weight_decay: 0.0 betas: - 0.9 - 0.999 ppo_anchor: max_length: 8192 trainer: num_nodes: ${recipes.run.am_replicas} model: global_batch_size: 16 ppo_actor_generation: actor_model_max_length: 8192 trainer: num_nodes: ${recipes.run.actor_generation_replicas} ppo_actor_train: max_length: 8192 max_steps: 520 # Stopping criteria Desired epoch num * trajectory_buffer_scale actor_model_max_length: 8192 # truncate input data to max length reward_model_max_length: 8192 # truncate input data to max length trajectory_buffer_scale: 8 trainer: num_nodes: ${recipes.run.actor_train_replicas} model: global_batch_size: 160 ent_coeff: 0 clip_ratio: 0.2 lam: 1 kl_loss_coeff: 0.0 kl_loss_type: low_var_kl kl_reward_penalty_coeff: 0.0 hidden_dropout: 0.0 # Dropout probability for hidden state transformer. attention_dropout: 0.0 # Dropout probability in the attention layer. ffn_dropout: 0.0 # Dropout probability in the feed-forward layer. optim: lr: 3e-06 name: distributed_fused_adam # only this one is available for p0. adam_w_mode: true eps: 1e-08 weight_decay: 0.0 betas: - 0.9 - 0.999
제한 사항

PPO에는 다음과 같은 제한 사항이 있습니다.

  • 중간 체크포인트는 평가를 위해 저장되지 않으며 중간 체크포인트에서 재개할 수 없습니다. 마지막 체크포인트만 저장됩니다.

  • 다중 모달 데이터 세트는 지원되지 않습니다.

  • 훈련 작업은 자동으로 중지되지 않습니다. HyperPod CLI를 사용하여 작업을 중지해야 합니다.

  • MLflow 로깅은 지원되지 않습니다.

  • TensorBoard에서는 비판적 훈련 지표가 지원되지 않습니다.

  • 하이퍼파라미터를 조정하려면 하이퍼파라미터 선택의 지침을 따릅니다.