Amazon Nova Forge의 멀티턴 RFT와 GRPO 기반 학습
Amazon Nova Lite 2.0 모델을 500개의 고유 프로그래밍 작업으로 학습시킨 사례에서 정답 데이터셋에 의존하는 SFT(Supervised Fine-Tuning, 지도 미세 조정) 방식의 한계가 드러났다. 이에 모델이 스스로 생성한 결과물의 평가 신호만으로 에이전트의 행동을 최적화하는 RFT(Reinforcement Fine-Tuning, 강화 미세 조정)를 적용했다. 정답 경로를 미리 정의하지 않고 모델이 시행착오를 통해 최적 경로를 찾도록 하는 방식이다.
멀티턴 RFT는 단일 응답의 정확도를 넘어 도구 호출, 코드 실행, 실수 복구로 이어지는 단계별 누적 보상을 최적화한다. 모델이 여러 번의 상호작용을 거쳐 최종 목표에 도달하는 흐름을 학습하므로, 복잡한 도구 사용 능력이 필요한 에이전트 작업의 성능이 향상된다.
학습 효율을 위해 Nova Forge는 GRPO(Group Relative Policy Optimization, 그룹 상대 정책 최적화) 알고리즘을 사용한다. GRPO는 하나의 입력에 대해 K개의 모델 롤아웃(출력 결과물)을 동시에 생성해 서로 랭킹화한다. 이후 정규화된 보상 값인 어드밴티지(Advantage)를 계산해 가중치를 업데이트하며, 그룹 내에서 상대적으로 높은 보상을 받은 경로의 확률을 높인다.
실제 구현은 Amazon SageMaker HyperPod 환경에서 LoRA(Low-Rank Adaptation, 저차원 적응)를 적용해 수행한다. LoRA는 모델의 모든 파라미터 대신 일부 가중치 행렬만 학습시켜 계산 자원 소모를 줄이고 속도를 높인다. Nova Forge는 이 인프라 위에서 GRPO의 롤아웃 생성과 가중치 업데이트를 반복하며 추론 능력을 정교화한다.
BYOO 환경을 통한 멀티턴 보상 루프 구현
단일턴 RFT는 AWS Lambda를 사용하지만, 멀티턴 작업은 15분 실행 제한으로 인해 BYOO(Bring Your Own Orchestration, 자체 오케스트레이션 환경 구축) 방식을 사용한다. 단일턴은 `reward_lambda_arn` 설정으로 람다 함수를 연결하면 충분하지만, 도구 호출과 코드 실행이 반복되는 멀티턴 대화와 시간이 소요되는 스코어링 작업은 람다의 최대 실행 시간을 초과하기 때문이다.
BYOO를 적용하려면 설정 파일에서 `rollout.delegate: true` 값을 지정하고 Amazon ECS(Elastic Container Service) 같은 외부 컨테이너 환경을 준비해야 한다. Nova Forge가 롤아웃을 외부 환경으로 위임하면, 컨테이너가 대화 상태를 유지하며 사용자 시뮬레이터를 구동하고 코드를 실행한다. 검증기(verifier) 호출까지 모든 과정이 외부 컨테이너 내부에서 완결된 뒤, 완료된 에피소드를 수집해 학습에 사용한다.
보상 루프는 세 단계로 작동한다. 먼저 시뮬레이터에 롤아웃을 전달해 모델의 응답을 유도한다. 이어서 응답 속의 코드를 실행해 정답 여부를 검증한다. 마지막으로 샘플당 합산 점수인 `aggregate_reward_score`와 구성 요소별 세부 점수가 담긴 `metrics_list`를 반환한다.
이 구조를 통해 람다의 시간 제약 없이 복잡한 상호작용을 검증할 수 있다. 실무자는 ECS 컨테이너 내부에 시뮬레이션 환경과 검증 로직을 구축해 보상 신호를 확보하며, 세부 메트릭 리스트를 통해 어떤 단계에서 보상이 깎였는지 추적한다.
결과·행동·페널티를 조합한 복합 보상 함수 설계
단일 스칼라 보상은 모델이 편법으로 점수만 높이는 보상 해킹에 취약하며, 최종 결과만 평가하는 보상은 학습 초기 단계에서 신호가 너무 희소하다. 이를 해결하기 위해 최종 결과물 만족도를 측정하는 결과 보상과 중간 과정의 적절성을 평가하는 행동 보상을 함께 사용한다. 결과 보상은 유닛 테스트 통과 여부나 워크플로 완료처럼 최종 목표 달성 여부를 판단한다. 행동 보상은 도구를 올바르게 호출하거나 행동 전 질문을 던지는 등 바람직한 행동을 유도해, 결과 보상이 희소한 구간에서도 모델이 올바른 방향으로 나아가게 돕는다.
실패 모드를 억제하는 페널티는 모델이 비효율적인 전략을 학습하는 것을 막기 위해 필요하다. 정답을 무작정 추측하거나 동일 동작을 반복하고, 진전 없이 정체되는 행동에 마이너스 점수를 부여해 해당 경로를 피하게 만든다. 페널티로 좋은 전략과 나쁜 전략을 수치적으로 분리하면 최적화 도구가 학습 방향을 결정하는 기울기(Gradient)를 더 정확하게 포착하며, 모델이 논리적인 단계와 효율적인 경로를 선택하도록 강제한다.
협업 코딩 작업에서는 `asked_before_coding`, `correct_code`, `guessed_immediately`, `failed_to_commit` 네 가지 보상 요소를 조합한다. 코드를 작성하기 전 질문을 던지는 행동에 독립적인 보상을 주어 신중한 접근을 유도하되, 최종적으로 코드를 제출하지 않으면 보상을 제한한다. 이 제약이 없으면 모델은 실제 해결책 제시 없이 보상만을 위해 질문만 계속 던지는 무한 루프에 빠질 위험이 크다.
보상 신호 붕괴를 막는 변동성 검증 기준
GRPO 알고리즘은 그룹 내 샘플들의 상대적 순위를 매겨 학습하며, 보상 신호는 그룹 내에서 변동성(Variation)이 발생할 때만 학습에 기여한다. 특정 보상 항목이 그룹 내 모든 완료본에서 동일한 값을 가지면 어드밴티지(Advantage) 값이 0이 된다. 수학적으로 어드밴티지가 0이면 그래디언트(Gradient)가 생성되지 않아 가중치 업데이트가 일어나지 않는다. 즉, 모든 샘플이 동일한 보상을 받으면 모델은 더 나은 행동을 판단할 근거를 잃고 학습이 멈춘다.
실무에서는 가중치가 높은 핵심 보상 요소가 모든 샘플에 동일한 값을 부여해 보상이 붕괴되는 사례가 발생한다. 예를 들어 결과 보상이 너무 엄격해 모든 샘플이 0점을 받으면, 모델은 어떤 시도가 정답에 가까웠는지 알 수 없다. 이를 해결하려면 `aggregate_reward_score` 외에 각 구성 요소별 메트릭을 세분화하여 기록해야 한다. `metrics_list`에 각 항목의 점수를 개별적으로 담아 전송하고, 변동성이 사라진 항목을 찾아 보상 함수의 임계값을 조정하거나 새로운 행동 보상을 추가한다.
이처럼 멀티턴 RFT의 핵심은 단순한 정답 맞히기가 아니라, BYOO 환경에서 확보한 정교한 보상 신호를 통해 모델이 스스로 최적의 추론 경로를 설계하게 만드는 데 있다.




