REINFORCE는 샘플된 보상을 직접 사용하여 정책을 최적화하는 정책 경사 방법의 한 종류입니다. 이 방법들은 LLM 미세 조정에 널리 사용되며, 그 이유는 단순성과 효율성 때문입니다. 예시로는 GRPO, Dr. GRPO, RLOO, ReMax, TreeRPO, 및 REINFORCE++ 등이 있습니다. REINFORCE는 다중 에이전트 설정으로 확장할 수 있으며, 여기서 여러 LLM 에이전트가 각 턴에서 응답하고, 그들의 공동 응답은 공유된 보상을 받습니다.
모든 MAREINFORCE trainers는 하나의 학습 루프를 공유합니다. 각 rollout 노드에서, 각 에이전트는 \( K \) 응답을 샘플링하고, trainer는 공유된 보상을 사용하여 인덱스에 맞춰진 공동 응답을 점수하고, 각 에이전트는 결과로 얻은 공유된 이점을 사용하여 자체 로그 확률을 가중치 부여하여 버퍼된 최적화 단계로 이동합니다.
MAREINFORCE#
다중 에이전트 REINFORCE (MAREINFORCE)의 정책 경사 대안, 이점 정규화 또는 참조 정규화 전에 다음과 같이 표현할 수 있습니다:
REINFORCE 방법은 가치 추정을 위해 critic 모델을 사용하지 않습니다. 확률적 샘플링 및 장기적인 크레딧 할당으로 인해 정책-그래디언트 추정은 높은 분산을 가질 수 있습니다. 이 분산을 줄이는 일반적인 접근 방식은 독립적인 기준을 사용하거나 더 많은 샘플을 평균하는 것입니다. 예를 들어, 각 공동 행동 기록 \( \mathbf{h}_t \) 에서의 \( K \) 샘플을 사용할 수 있습니다.
MAGRPO#
다중 에이전트 그룹-상대 정책 최적화 (MAGRPO)는 GRPO 에서 영감을 받은 MAREINFORCE 의 구현으로, 그룹 평균 기준은 \( K \) 샘플의 평균 수익입니다. 기본 공동 모드 aligned 에서, 편익 정규화 이전의 대체는 다음과 같습니다:
샘플링된 그룹 평균에는 업데이트되는 샘플이 포함되므로, 위에 제시된 일반적인 표현에서 가정된 독립적인 기준이 아닙니다. 다중 턴 훈련에서 각 분기의 수익은 해당 자식 노드의 즉각적인 보상과 평균 수익으로 구성되며, 할인 요소를 적용하지 않습니다. cross 모드에서, 각 에이전트의 완료는 해당 완료가 포함된 모든 공동 조합에 대한 합 수익을 받습니다.
기본적으로 advantage_normalization=True 는 각 노드의 생성 그룹 내에서 인구 통계 표준 편차를 사용하여 편익을 중심화하고 스케일링합니다. 최소 분모는 1e-6 입니다. 참조 정규화 KL 가 활성화되면, 샘플링된 참조 벌점은 기준 및 정규화 적용 전에 수익에서 뺴집니다.
현재
MAGRPOTrainer손실 슬라이스는 최종 완료 token을 제외하므로, 상위의 대체 시퀀스 로그 확률에 있는 완전한 시퀀스 점수와 다릅니다. 표준 설정은joint_mode="cross"이며, 허용된"crossed"별칭은 카테시안 조합을 생성하지만 동일한 완료별 반환 집계에 적용하지 않습니다.
num_agents: 구성된 에이전트 수, 이는 trainer 설정과 일치해야 합니다num_turns: episode당 턴 수num_train_epochs: 훈련 epochs 수agent_learning_rate: 학습률logging_steps: 단계별 로깅 간격num_generations: 각 에이전트별 프롬프트당 샘플링할 세대의 수max_new_tokens: 생성할 최대 tokens 수temperature: 샘플링에 사용되는 온도top_p: Top-p 를 샘플링에 사용top_k: Top-k 를 샘플링에 사용discount: 유지된 구성 필드; 현재 MAGRPO 구현은 이 값을 사용하지 않고, 즉시 보상을 계산합니다.joint_mode: 공동 액션 구성 (인덱스 정렬용aligned, 카르테시안 곱용cross)early_termination_threshold: 훈련 분기가 노드의 평균 즉각적 보상이 이 임계값을 초과하면 확장 중단 (기본값-0.2;None는 조기 종료를 비활성화)rollout_buffer_size: 각 에이전트 업데이트 전에 버퍼링할 노드 샘플 수train_batch_size: 각 최적화 단계당 노드 샘플 수; 기본값rollout_buffer_sizeadvantage_normalization: 각 노드 생성 그룹 내에서 이점의 중심화 및 스케일링 여부 (기본값True)eval_interval: 평가 실행은 N으로 나누어지는 배치 인덱스에서 실행 (각 epoch의 첫 번째 배치 포함);0는 주기적 평가를 비활성화eval_num_samples: 평가 실행당 평가할 샘플 수eval_batch_size: 평가 DataLoader 배치 크기external_prompt_passthrough: 다중 턴 훈련에서 외부 프롬프트를 직접 사용하는지 여부advantage_mode: 기본 모드 (mean,max,rloo,raw)parallel_training: 에이전트 실행 모드 (none또는mp)agent_devices: 에이전트 장치 배치;parallel_training="mp"에 대해 명시적으로 필요reference_kl_enabled: 동결된 참조 KL 벌람을 활성화할지 여부 (기본False)reference_kl_coef: 참조 벌람의 가중치 (기본0.1)reference_devices: 참조 모델에 대한 선택적 장치 배치
agent_model또는agents: 동종 에이전트의 모델 식별자 문자열, 또는 모델 식별자 또는 사전 로드된 모델 목록; 사전 로드된 모델은agents를 통해 제공num_agents:agent_model에서 생성된 에이전트 수 (기본2),args와 독립적으로 구성.agents만 제공되면, 그 길이는 에이전트 수를 결정tokenizer: 공유 tokenizer 또는 각 에이전트별; 모델 식별자에 대한 선택 사항, 사전 로드된 모델에 대한 필수reward_func: 부동 소수점 숫자 목록을 반환하는 콜러블 (필수)reward_processor: 보상에 적용할 선택적 프로세서 (예: 스케일링)formatters: 프롬프트 형식화에 대한 단일 콜러블 또는 각 에이전트에 대한 콜러블 목록args:MAGRPOConfig인스턴스 (선택 사항)train_dataset:train()을 호출할 때 필요한 데이터셋eval_dataset: 평가 데이터셋 (선택 사항)model_config: 모델 구성 딕셔너리 (선택 사항)wandb_config: Weights & Biases 로깅 구성 (선택 사항)external_transition: 턴 간 전환을 제공하는 함수;num_turns > 1(기본값은2)를 호출할 때 필요eval_logger: 선택 사항인 작업-지표 콜백,eval_logger(agent_completions_turns=..., batch_items=..., prompts=...)으로 호출됨; 평가된 각 항목에 대한 하나의 지표 딕셔너리를 반환하며eval_aggregator과 함께 사용eval_aggregator: 선택 사항인 콜백,eval_aggregator(metrics, num_turns=...)으로 호출됨; 반환되는turn_k/...지표는eval/에 기록됩니다. 사용자 정의 지표를 사용하려면 두 평가 콜백 모두 제공해야 합니다.
MAGRPO는 샘플을 rollout 버퍼에 수집하고 업데이트 중에 로그 확률을 재계산하며, 중요 샘플링 또는 비율 클리핑을 사용하지 않습니다. 따라서 샘플은 동일한 버퍼 또는 rollout 트리의 이전 업데이트보다 오래될 수 있습니다. trainer에 critic 모델이 없으므로,
value_clip_range는 적용되지 않습니다.
trainer는 고정된 학습 DataLoader 배치 크기 1을 사용하며, 원시-반환 변형을 포함하여 최소
num_generations=2가 필요합니다. 기본적으로,train_batch_size=rollout_buffer_size: 각 에이전트는 버퍼된 노드 샘플의 손실을 한 최적화 단계에 평균합니다. 더 작은 미니 배치에는 여러 최적화 단계가 생성됩니다; 각 epoch의 끝에서 부분 버퍼가 플러시됩니다.
다른 변형#
CoMLRL는 다른 MAREINFORCE 변형도 제공하며, 다른 기준을 사용합니다:
- MARLOO: 다중 에이전트 REINFORCE Leave-One-Out. 기준은 동일 노드의 샘플 그룹 내의 다른 세대의 평균 반환이며, 다른 에이전트가 아닙니다.
- MAReMax: 다중 에이전트 REINFORCE 와 그룹 최대 (
MAReMaxConfig및MAReMaxTrainer) 를 사용. 기본값은 노드에서 샘플링된 그룹 반환의 최대값; 이 구현은 별도의 탐욕스러운 기본값 응답을 생성하지 않습니다.
MAREINFORCETrainer,MARLOOTrainer및MAReMaxTrainer는comlrl.trainers.reinforce.MAGRPOTrainer에서 파생됩니다. 해당 구성 클래스는MAGRPOConfig를 상속하며,raw,rloo및max의 기본advantage_mode값으로 구성됩니다. 이들은 동일한 trainer 인터페이스 및 구성 필드를 공유합니다.
위의 네 가지 trainers 는 공유된 반환에서 뺀 기본값만 다릅니다. 하나의 노드 (\( K=4 \) ) 에 대한 공동 응답의 경우, 아래 애니메이션은 정규화하기 전의 장점을 비교합니다: MAREINFORCE 는 원본 반환을 유지하며, REINFORCE 에서와 같이; MAGRPO 는 그룹 평균을 뺴며, GRPO 에서와 같이; MARLOO 는 다른 \( K-1 \) 반환의 평균을 뺴며, RLOO 에서와 같이, 이는 MAGRPO 장점을 \( K/(K-1) \) 로 스케일링합니다; 및 MAReMax 는 그룹 최대값을 뺴므로, 어떤 응답도 긍정적인 장점을 받지 못합니다.
이 변형 공식은 정규화 전의 장점을 설명합니다. 모든 변형은
advantage_normalization=True를 상속하며, 이는 원본 반환 및 최대 기본값 장점을 재중심합니다. 표준 편차 바닥 및 숫자 정밀도를 제외하고, 네 가지 모드는 동일한 정규화된 장점을 제공합니다. 사용자는 위에서 보여지는 기본값 차이를 유지할 수 있으며, 여기에는 원본 반환 추정기 MAREINFORCE 를 포함하여advantage_normalization=False를 설정할 수 있습니다.