디자이너 겸 개발자 H씨는 자신이 만든 AI 에이전트에 강화학습을 적용하려다 포기했다. 기존 학습 프레임워크에 맞추려면 에이전트의 핵심 로직을 전부 새로 써야 했기 때문이다. 도구 연결 방식이나 프롬프트 구조를 유지하면서 학습 데이터만 뽑아낼 방법이 없었다.

엔비디아 연구팀이 이 문제를 해결하는 롤아웃 프레임워크 Polar를 공개했다. Polar는 에이전트 하네스(시스템 프롬프트와 도구 형식을 관리하는 환경)를 전혀 수정하지 않고 강화학습을 수행한다. 핵심은 에이전트 내부가 아니라 모델 API 경계에 게이트웨이 프록시를 배치하는 방식이다.

프록시는 스트리밍 요청을 비스트리밍 응답으로 변환해 토큰을 완전히 캡처한다. 하네스 설정에서 모델 베이스 URL만 게이트웨이로 변경하면 즉시 작동한다. Codex CLI(코드 작성 보조 도구)나 Claude Code(앤스로픽의 코딩 에이전트) 같은 기존 도구들을 그대로 학습 파이프라인에 연결할 수 있다. 에이전트 소프트웨어와 학습 인프라 사이의 간극으로 인해 개발 효율이 떨어지는 곤란을 겪는 개발자가 늘고 있다.

Codex부터 Qwen Code까지, 하네스 제약 없는 GRPO 학습

새로운 에이전트 도구를 도입할 때마다 환경 설정 코드를 처음부터 다시 짜는 일은 고역이다. 기존 강화학습 인프라는 OpenAI Gym 방식의 env.init(), env.step(), env.reset() 같은 API 뒤로 하네스 로직을 다시 작성해야 했다. 하네스(Harness, 시스템 프롬프트와 도구 형식을 관리하는 도구)가 바뀔 때마다 전용 통합 코드를 새로 짜야 하는 구조다. 이 과정에서 하네스 고유의 실행 세부 사항이 유실되는 문제도 발생한다. 엔비디아가 공개한 Polar는 하네스 내부를 전혀 수정하지 않고 강화학습을 수행한다. 모델 API 경계에 프록시를 배치해 요청과 응답을 가로채는 방식을 택했다. 개발자는 모델의 베이스 URL만 Polar 게이트웨이로 변경해 학습 환경을 구축한다.

Polar는 codex, claude_code, gemini_cli, qwen_code, opencode, pi 등 다양한 하네스를 즉시 지원한다. 런타임 환경으로는 Docker와 rootless Apptainer를 사용해 격리된 워커 풀을 운영한다. 롤아웃 서버가 태스크 요청을 받아 독립적인 세션으로 확장하고, 게이트웨이 노드가 런타임 시작부터 궤적 구축, 평가, 종료까지의 생명주기를 관리한다. 하네스별로 다른 패치 제출 방식이나 컨텍스트 엔지니어링 설정을 그대로 유지한 채 학습 데이터를 수집한다. CPU 부하가 큰 런타임 준비와 평가자 예열 작업을 GPU 실행 경로 밖에서 처리해 효율을 높였다. 하네스가 타임아웃되어도 캡처된 부분 궤적을 회수해 학습 손실을 줄였다. 도구 연결 비용을 제거해 모델 개선 사이클의 속도를 높인 설계다.

실제 학습에는 Qwen3.5-4B 베이스 모델을 사용했다. 학습 알고리즘은 GRPO(Group Relative Policy Optimization, 그룹 상대 정책 최적화)를 적용했다. 데이터셋은 293개 태스크로 구성된 SkyRL-v0-293-data SWE-Gym을 활용해 1에폭 동안 학습시켰다. 롤아웃 배치 사이즈는 4로 설정했고 프롬프트당 16개의 샘플을 생성해 비교군을 확보했다. 학습 도구로는 Slime 트레이너를 사용했다. 궤적 구축 단계에서는 prefix_merging 전략을 통해 대화 기록을 체인 형태로 재구성했다. 인접한 완성본 사이의 엄격한 토큰 접두사 관계를 검증해 서브 에이전트나 컨텍스트 압축 경계를 구분했다. 병합된 궤적 내에서 샘플링된 어시스턴트 토큰만 학습 가능하도록 마킹했다.

학습 결과는 하네스 제약이 사라졌을 때의 성능 향상으로 나타난다. Qwen 모델이 익숙하지 않은 액션 프로토콜과 패치 제출 방식을 가진 Codex 환경에서 가장 큰 성능 이득을 얻었다. 이미 정렬이 잘 된 Qwen Code 하네스에서도 0.6점의 추가 상승을 기록했다. Polar가 Codex 실행 경로를 통해 흐르는 실제 샘플링 토큰에 보상 신호를 직접 연결했기 때문이다. 모델이 평가 시점에 실제로 사용하는 행동 양식을 그대로 최적화한 결과다. 하네스 수정이라는 엔지니어링 병목을 없애고 모델의 실전 성능을 빠르게 끌어올리는 경로를 확보했다.

API 경계에 세운 게이트웨이 프록시와 세션 관리 구조

새로운 에이전트 하네스를 학습 파이프라인에 연결하는 시간은 이제 거의 제로에 수렴한다. 엔비디아의 Polar는 에이전트 내부 로직을 수정하는 대신 모델 API 경계에 게이트웨이 프록시를 배치했다. 게이트웨이 프록시는 들어오는 스트리밍 요청을 일단 비스트리밍 응답으로 변환해 전체 내용을 확보한 뒤, 다시 합성 스트림(Synthetic stream) 형태로 방출한다. 서버 전송 이벤트(SSE)를 기대하는 하네스와의 호환성을 유지하면서 모델이 내뱉는 모든 토큰을 누락 없이 캡처하기 위한 설계다. 기존 하네스 설정에서 모델 베이스 URL만 게이트웨이 주소로 바꾸면 통합이 완료된다. OpenAI Gym 스타일의 env.init()이나 env.step(), env.reset() 같은 환경 API로 로직을 일일이 재작성하던 기존의 통합 방식이 가진 비효율을 제거했다.

롤아웃 서버는 TaskRequest를 수신해 이를 num_samples만큼의 독립 세션으로 확장하고 분배하는 역할을 맡는다. 각 세션에는 고유한 세션 ID와 태스크 ID, 타임아웃 예산, 런타임 및 에이전트 사양, 궤적 빌더, 평가기, 콜백 URL이 세트로 할당된다. 게이트웨이 노드는 이 세션의 전체 생애주기를 책임진다. 런타임을 시작하고 하네스를 실행하며 궤적을 구축하고 출력을 평가한 뒤 최종적으로 자원을 정리하는 단계를 수행한다. 특히 게이트웨이는 해당 세션의 모델 호출을 처리하는 프록시 엔드포인트를 직접 호스팅한다. 모델 응답 캡처 과정을 세션 레지스트리와 직접 연결해 어떤 세션에서 어떤 토큰이 생성되었는지 정확하게 추적한다.

게이트웨이 내부의 워커 풀 구조는 INIT, RUNNING, POSTRUN 세 단계로 엄격히 분리되어 작동한다. READY 버퍼는 실행 슬롯이 확보될 때까지 초기화가 완료된 런타임들을 대기시키는 저장소 역할을 한다. CPU 부하가 큰 런타임 준비 작업과 평가기 프리웜(Prewarm) 과정은 임계 경로(Critical path) 밖에서 별도로 처리된다. GPU를 사용하는 에이전트의 실제 실행 경로가 CPU 기반의 준비 작업으로 인해 멈추는 병목 현상을 원천적으로 차단했다. 만약 하네스가 모델 호출 캡처 이후에 타임아웃이 발생하더라도 게이트웨이는 강제로 POSTRUN 단계로 진입한다. 이 설계를 통해 세션이 비정상 종료된 상황에서도 캡처된 부분 궤적(Partial traces)을 복구해 학습 데이터로 활용할 수 있다.

평가 체계는 세션 완료 보상과 설정 가능한 테스트-온-아웃풋(test-on-output) 평가기, SWE-Bench 및 SWE-Gym 하네스 평가기로 구성된다. 레지스트리 인터페이스를 통해 연구자가 필요에 맞는 커스텀 평가기를 직접 추가해 사용할 수 있다. Polar는 Docker와 루트리스 Apptainer 런타임을 기본적으로 지원하며, 실행 환경의 격리를 보장한다. codex, claude_code, gemini_cli, qwen_code, opencode, pi와 같은 주요 하네스들을 즉시 호출할 수 있는 숏컷 기능을 제공해 설정 시간을 줄였다. 에이전트의 실행 결과가 보상 신호로 변환되어 다시 학습 데이터로 환류되는 전 과정을 자동화된 파이프라인으로 묶었다.

OpenAI Gym 방식의 한계와 '접두사 병합' 전략

많이 연결할수록 속도가 느려진다는 것은 기존 강화학습 인프라가 가진 고질적인 병목이었다. 기존 환경 구축 방식은 에이전트의 동작을 프레임워크가 정의한 규격에 맞추기 위해 env.init(), env.step(), env.reset()과 같은 OpenAI Gym(강화학습 환경을 표준화하는 파이썬 라이브러리) 스타일의 API를 매번 새로 작성해야 했다. 이 과정에서 에이전트가 가진 고유한 실행 맥락이나 도구 제어 방식이 파편화되는 손실이 발생했다. 개발자들은 새로운 에이전트를 도입할 때마다 환경 통합 코드를 밑바닥부터 다시 짜야 하는 비효율을 감수해 왔다.

Polar는 이러한 환경 API 재작성 관습을 버리고 모델 호출 지점을 가로채는 프록시 방식을 도입했다. 에이전트 내부를 수정하는 대신 모델의 입출력 경계에서 데이터를 수집하는 구조다. 이 방식은 에이전트의 도구 사용 로직을 건드리지 않고도 궤적을 추출할 수 있게 한다. 기존의 per_request 빌더는 모든 모델 호출을 독립적인 단위로 처리한다. 개별 호출에 대한 정보 손실은 없으나, 다회차로 이어지는 세션이 파편화되어 학습 효율이 떨어지는 문제가 있었다.

이를 해결하기 위해 도입한 접두사 병합(prefix_merging) 전략은 토큰의 관계를 검증해 궤적을 복원한다. 에이전트 세션이 대화 이력을 순차적으로 누적한다는 점에 착안해, 인접한 완료 응답들 사이의 토큰 접두사 관계를 확인하고 이를 하나의 순서 있는 체인으로 재구성한다. 이 과정에서 하위 에이전트나 문맥 압축 경계는 자연스럽게 별도의 체인으로 분리된다. 병합된 궤적 내에서는 샘플링된 어시스턴트 토큰만 학습 대상으로 지정한다. 간격에 포함된 부수적인 토큰들은 손실 마스크를 0으로 처리하여 모델이 불필요한 정보에 가중치를 두지 않도록 제어한다.

Qwen3.5-4B 성능 향상과 64 GPU-시간의 데이터 생성 효율

복잡한 에이전트 환경에서 모델의 응답을 최적화하는 기준은 이제 학습 데이터의 양보다 실제 평가 환경과의 일치 여부로 옮겨가고 있다. 기존 강화학습 방식은 에이전트의 실행 논리를 별도의 API로 재작성해야 했으나, Polar는 모델 호출 지점에 프록시를 배치해 실제 실행 경로를 그대로 학습에 활용한다. 이 구조는 모델이 평가 시점에 실제로 사용하는 액션 프로토콜과 패치 제출 방식을 그대로 학습 데이터에 반영한다.

Codex(코덱스) 하네스 환경에서 Qwen3.5-4B 모델을 테스트한 결과, 모델이 익숙하지 않은 액션 프로토콜을 사용함에도 불구하고 Polar를 통한 보상 신호 전달은 뚜렷한 성능 이득을 증명했다. 이미 해당 환경에 정렬된 Qwen Code 하네스에서도 추가로 0.6포인트의 성능 향상을 기록했다. 이는 모델이 추상적인 지시를 따르는 것을 넘어, 특정 하네스의 실행 흐름 내에서 최적의 동작을 수행하도록 정교하게 조정되었음을 의미한다.

Polar는 실시간 학습뿐만 아니라 대규모 오프라인 데이터 생성 도구로도 활용된다. 연구팀은 Qwen3.5-122B-A10B 모델을 8개의 H100 GPU 서버에 탑재하여 SWE-Gym(소프트웨어 엔지니어링 벤치마크 환경)의 7개 저장소, 총 1,638개 인스턴스를 대상으로 데이터를 생성했다. 이 과정에서 총 64 GPU-시간이 소요되었으며, 생성된 데이터는 SWE-Bench 평가 하네스를 통해 모든 테스트 케이스를 통과한 결과물만을 선별했다.

최종적으로 구축된 SFT(지도 미세 조정) 데이터셋은 세션당 평균 104개의 메시지와 51개의 어시스턴트 턴을 포함한다. 이러한 데이터는 에이전트가 복잡한 다중 턴 작업에서 어떻게 문맥을 유지하고 도구를 사용하는지를 상세히 담고 있다. Polar를 활용한 이 접근법은 하네스 수정 없이도 에이전트의 실질적인 문제 해결 능력을 데이터 수준에서 끌어올리는 효율적인 경로를 제시한다.

한국 AI 실무자를 위한 에이전트 학습 파이프라인 최적화

혼자 하던 일을 반으로 줄인 방법은 기존 도구의 복잡한 하네스를 건드리지 않는 것에서 시작했다. 한국의 AI 실무자들이 자체 개발한 코딩 에이전트나 업무 자동화 도구를 강화학습(RL) 단계로 넘길 때 겪는 가장 큰 병목은 기존 환경과의 호환성 문제다. 엔비디아가 공개한 Polar는 에이전트 하네스를 수정하지 않고도 롤아웃(Rollout) 파이프라인을 구축할 수 있게 설계되었다. 이는 기존의 OpenAI Gym 스타일처럼 모든 환경을 API에 맞춰 재작성해야 했던 번거로움을 제거한다.

Polar는 에이전트와 모델 사이의 통신 지점인 모델 API 경계에 프록시를 배치하는 방식을 취한다. 하네스 내부를 수정하는 대신 모델 호출 경로만 게이트웨이로 우회시키면 된다. 이 방식은 에이전트가 시스템 프롬프트나 도구 포맷팅을 유지한 채로 학습 데이터를 수집하게 돕는다. 실무자는 별도의 통합 코드 작성 없이도 기존에 운영하던 코딩 에이전트나 업무 자동화 환경을 그대로 강화학습 파이프라인에 연결할 수 있다.

학습 데이터의 품질을 결정하는 검증 기준은 엄격하다. Polar는 소프트웨어 엔지니어링 벤치마크인 SWE-Bench 환경을 활용하며, 에이전트가 생성한 패치가 기존의 FAIL_TO_PASS 테스트를 모두 통과하는 궤적만을 SFT(지도 미세 조정) 코퍼스로 채택한다. 이 과정에서 수집된 데이터는 모델이 실제 평가 시점과 동일한 환경에서 학습하게 만들어, 강화학습의 효율을 극대화한다. 특히 복잡한 도구 사용이 필요한 에이전트일수록 학습 데이터의 정합성이 높아지는 효과를 거둔다.

국내 기업들이 자체 에이전트의 성능을 높이기 위해 RLHF(인간 피드백 기반 강화학습)를 도입할 때, Polar는 엔지니어링 비용을 낮추는 핵심 도구가 된다. 롤아웃 서버가 태스크를 분산 처리하고 게이트웨이가 세션의 생애 주기를 관리하므로, 대규모 데이터 생성 시에도 인프라 부하를 최소화할 수 있다. 실제 8개의 H100 GPU 서버 환경에서 1,638개의 SWE-Gym 인스턴스를 처리하는 데 약 64 GPU-시간이 소요된 점은 실무적인 확장성을 증명한다. 이제 실무자는 하네스 수정이라는 기술적 부채 없이도 에이전트의 추론 능력을 강화학습으로 직접 최적화할 수 있는 경로를 확보했다.