본문으로 이동
CoMLRL
Multi-LLM RL

다중 에이전트 REINFORCE

translategemma:4b 자동 번역 영어 원문

REINFORCE는 샘플된 보상을 직접 사용하여 정책을 최적화하는 정책 경사 방법의 한 종류입니다. 이 방법들은 LLM 미세 조정에 널리 사용되며, 그 이유는 단순성과 효율성 때문입니다. 예시로는 GRPO, Dr. GRPO, RLOO, ReMax, TreeRPO, 및 REINFORCE++ 등이 있습니다. REINFORCE는 다중 에이전트 설정으로 확장할 수 있으며, 여기서 여러 LLM 에이전트가 각 턴에서 응답하고, 그들의 공동 응답은 공유된 보상을 받습니다.

모든 MAREINFORCE trainers는 하나의 학습 루프를 공유합니다. 각 rollout 노드에서, 각 에이전트는 \( K \) 응답을 샘플링하고, trainer는 공유된 보상을 사용하여 인덱스에 맞춰진 공동 응답을 점수하고, 각 에이전트는 결과로 얻은 공유된 이점을 사용하여 자체 로그 확률을 가중치 부여하여 버퍼된 최적화 단계로 이동합니다.

MAREINFORCE 학습 흐름 각 공동 샘플은 하나의 공유된 보상을 얻습니다; 이는 각 에이전트의 자체 정책 경사 보정에 가중치를 부여합니다.

MAREINFORCE#

다중 에이전트 REINFORCE (MAREINFORCE)의 정책 경사 대안, 이점 정규화 또는 참조 정규화 전에 다음과 같이 표현할 수 있습니다:

\[ J(\theta_i) = \mathbb{E}_{\mathbf{o}_0 \sim \mathcal{D}, \mathbf{h}_t \sim \boldsymbol{\pi}_{\boldsymbol{\theta}}} \Bigg[\sum_{t=0}^{H-1} R_t \cdot \log \pi_{\theta_i}(a_{i,t}\mid h_{i,t})\Bigg], \]
여기서 \( R_t \)는 턴 \( t \)의 보상이고, \( H \)는 지평 (즉, 대화 턴 수)입니다. 기대치는 데이터 세트 \( \mathcal{D} \)의 초기 관찰과 모든 episodes 에이전트의 정책 \( \boldsymbol{\pi}_{\boldsymbol{\theta}} \)에 따른 공동 행동 기록에서 파생됩니다.

REINFORCE 방법은 가치 추정을 위해 critic 모델을 사용하지 않습니다. 확률적 샘플링 및 장기적인 크레딧 할당으로 인해 정책-그래디언트 추정은 높은 분산을 가질 수 있습니다. 이 분산을 줄이는 일반적인 접근 방식은 독립적인 기준을 사용하거나 더 많은 샘플을 평균하는 것입니다. 예를 들어, 각 공동 행동 기록 \( \mathbf{h}_t \) 에서의 \( K \) 샘플을 사용할 수 있습니다.

\[ J(\theta_i) = \mathbb{E}_{\mathbf{o}_0 \sim \mathcal{D}, \mathbf{h}_t \sim \boldsymbol{\pi}_{\boldsymbol{\theta}}} \Bigg[\frac{1}{K}\sum_{k=1}^{K} \sum_{t=0}^{H-1} \left(R^{k}_t - b(\mathbf{h}_t)\right) \cdot \log \pi_{\theta_i}(a^{k}_{i,t}\mid h_{i,t})\Bigg], \]
여기에서 기본 \( b(\mathbf{h}_t) \) 는 행동에 독립적입니다.

MAGRPO#

다중 에이전트 그룹-상대 정책 최적화 (MAGRPO)는 GRPO 에서 영감을 받은 MAREINFORCE 의 구현으로, 그룹 평균 기준은 \( K \) 샘플의 평균 수익입니다. 기본 공동 모드 aligned 에서, 편익 정규화 이전의 대체는 다음과 같습니다:

\[ J(\theta_i) = \mathbb{E}_{\mathbf{o}_0 \sim \mathcal{D}, \mathbf{h}_t \sim \boldsymbol{\pi}_{\boldsymbol{\theta}}} \Bigg[\frac{1}{K}\sum_{k=1}^{K}\sum_{t=0}^{H-1} \left(R^{k}_t - \frac{1}{K}\sum_{l=1}^{K}R^{l}_t\right) \cdot \log \pi_{\theta_i}(a^{k}_{i,t}\mid h_{i,t})\Bigg]. \]

샘플링된 그룹 평균에는 업데이트되는 샘플이 포함되므로, 위에 제시된 일반적인 표현에서 가정된 독립적인 기준이 아닙니다. 다중 턴 훈련에서 각 분기의 수익은 해당 자식 노드의 즉각적인 보상과 평균 수익으로 구성되며, 할인 요소를 적용하지 않습니다. cross 모드에서, 각 에이전트의 완료는 해당 완료가 포함된 모든 공동 조합에 대한 합 수익을 받습니다.

기본적으로 advantage_normalization=True 는 각 노드의 생성 그룹 내에서 인구 통계 표준 편차를 사용하여 편익을 중심화하고 스케일링합니다. 최소 분모는 1e-6 입니다. 참조 정규화 KL 가 활성화되면, 샘플링된 참조 벌점은 기준 및 정규화 적용 전에 수익에서 뺴집니다.

현재 MAGRPOTrainer 손실 슬라이스는 최종 완료 token을 제외하므로, 상위의 대체 시퀀스 로그 확률에 있는 완전한 시퀀스 점수와 다릅니다. 표준 설정은 joint_mode="cross"이며, 허용된 "crossed" 별칭은 카테시안 조합을 생성하지만 동일한 완료별 반환 집계에 적용하지 않습니다.

MAGRPOConfig 매개변수
  • 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_size
  • advantage_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: 참조 모델에 대한 선택적 장치 배치
MAGRPOTrainer 매개변수
  • 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. 기준은 동일 노드의 샘플 그룹 내의 다른 세대의 평균 반환이며, 다른 에이전트가 아닙니다.
\[ J(\theta_i) = \mathbb{E}_{\mathbf{o}_0 \sim \mathcal{D}, \mathbf{h}_t \sim \boldsymbol{\pi}_{\boldsymbol{\theta}}} \Bigg[\frac{1}{K}\sum_{k=1}^{K}\sum_{t=0}^{H-1} \left(R^{k}_t - \frac{1}{K-1}\sum_{l=1, l\neq k}^{K}R^{l}_t\right) \cdot \log \pi_{\theta_i}(a^{k}_{i,t}\mid h_{i,t})\Bigg]. \]
  • MAReMax: 다중 에이전트 REINFORCE 와 그룹 최대 (MAReMaxConfig 및 MAReMaxTrainer) 를 사용. 기본값은 노드에서 샘플링된 그룹 반환의 최대값; 이 구현은 별도의 탐욕스러운 기본값 응답을 생성하지 않습니다.
\[ J(\theta_i) = \mathbb{E}_{\mathbf{o}_0 \sim \mathcal{D}, \mathbf{h}_t \sim \boldsymbol{\pi}_{\boldsymbol{\theta}}} \Bigg[\frac{1}{K}\sum_{k=1}^{K}\sum_{t=0}^{H-1} \left(R^{k}_t - \mathrm{max}_l\, R^l_t \right) \cdot \log \pi_{\theta_i}(a^{k}_{i,t}\mid h_{i,t})\Bigg]. \]

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 는 그룹 최대값을 뺴므로, 어떤 응답도 긍정적인 장점을 받지 못합니다.

MAREINFORCE 변형에 대한 기본값 각 행은 동일한 공유된 보상에서 다른 기본값을 뻸; 음영 처리된 막대는 정규화하기 전에 이점의 표시를 나타냅니다.

이 변형 공식은 정규화 전의 장점을 설명합니다. 모든 변형은 advantage_normalization=True 를 상속하며, 이는 원본 반환 및 최대 기본값 장점을 재중심합니다. 표준 편차 바닥 및 숫자 정밀도를 제외하고, 네 가지 모드는 동일한 정규화된 장점을 제공합니다. 사용자는 위에서 보여지는 기본값 차이를 유지할 수 있으며, 여기에는 원본 반환 추정기 MAREINFORCE 를 포함하여 advantage_normalization=False 를 설정할 수 있습니다.