Alibaba의 Qwen팀이 몇 시간씩 이어지는 코딩 에이전트 작업을 학습시키는 온라인 강화 학습 프레임워크 QwenGyre를 소개했다. 모델이 아니라 학습 시스템이다. 롤아웃 하나가 수 시간 동안 돌며 토큰을 100만 개 가까이 처리하는 작업이 대상이고, 실험에서 롤아웃당 토큰은 약 70만 개였다.
Qwen팀은 Qwen 3.6 122B와 Qwen 3.8 2.4T 모델로 시험했고, 같은 GPU 예산과 같은 점수 조건에서 비동기 방식(Async)보다 1.38배에서 1.78배, 학습과 롤아웃이 GPU를 번갈아 쓰는 방식(Colocate)보다 1.21배에서 1.85배 빨랐다고 밝혔다. Colocate 대비 가장 큰 값인 1.85배는 TerminalBench에서 나왔다. 논문에는 공개 코드 링크가 없다.
초장기 작업에서 막히는 두 지점
Qwen팀은 수 시간 동안 모델 호출과 도구 호출이 수백 번 오가는 작업을 XLong-horizon으로 정의한다. 명세서만 보고 저장소 전체를 만들어 내는 NL2Repo-Bench가 예다.
첫 문제는 롤아웃마다 끝나는 시간이 크게 다르다는 점이다. Colocate에서는 가장 느린 실행이 끝날 때까지 학습이 기다리며 GPU가 논다. Async에서는 GPU 풀이 고정되어 있어 한쪽의 남는 자원을 다른 쪽에 빌려줄 수 없다.
둘째 문제는 Claude Code 같은 하네스가 컨텍스트를 압축하고, 하위 에이전트를 띄우고, 실패하면 재시도한다는 점이다. 실행 한 번이 단일 경로가 아니라 가지가 갈라지는 나무가 된다. 모든 경로를 따로 펼치면 공통 앞부분이 중복되어 학습 비용이 부풀어 오른다.
GPU를 옮기는 스케줄러와 궤적 처리기
QwenGyre는 GPU를 같은 학습 배치를 공유하는 셀로 나눈다. 셀은 롤아웃을 처리하거나 학습 복제본 하나를 통째로 맡을 수 있다. 핵심 셀이 기준이 되는 가중치와 최적화 알고리즘 상태를 보유하고, 위성 셀은 나중에 학습에 합류한다.
스케줄러는 대기 중이거나 실행 중인 작업 수를 롤아웃 수위로 추적한다. 남은 셀만으로 진행 중인 작업을 모두 감당할 수 있게 되면 끝난 셀을 학습으로 전환한다. 모델 호출은 프록시를 거쳐 다른 셀로 돌리므로 하네스는 멈추지 않는다.
- 경로를 바꿀 때 KV 캐시 블록을 RDMA로 옮겨 앞부분 재계산을 줄인다.
- 위성 셀은 Mooncake의 Transfer Engine으로 핵심 셀의 가중치를 받아 진행 중인 배치에 합류한다.
- 스트리밍 학습으로 데이터가 준비되는 대로 셀이 마이크로 스텝을 가져간다.
- 역할 전환에 걸린 평균 시간은 롤아웃에서 학습으로 8.52초, 학습에서 롤아웃으로 3.46초였다.
학습 샘플은 궤적 처리기가 만든다. 프록시가 모델이 실제로 낸 토큰 ID와 행동 로그 확률을 그대로 기록하는 토큰 입력·토큰 출력(TITO) 방식을 쓰고, 호출은 앞부분을 공유하는 궤적 나무로 저장한다.
- 부분 채점: 제한 시간을 넘겨 끝난 실행도 남아 있는 작업 공간을 기준으로 점수를 매긴다. 평가기 오류는 보상 0으로 치지 않고 제외한다.
- 샘플 상한: 실행당 최대 5개 궤적만 남기며 우선순위는 메인, 메인 요약, 하위 에이전트, 하위 에이전트 요약 순이다.
- 중복 제거: 공유되는 목표는 한 번만 세고, 정책이 생성한 토큰만 학습한다.
- 가중치 균형: 손실을 실행 안에서 평균 내므로 가지가 많다고 그 실행의 비중이 커지지 않는다.
상한을 5로 둔 설정은 상한 없는 학습과 점수가 같았고, 순전파·역전파 시간은 25.2% 줄었다. 학습에는 GSPO를 변형해 썼고 그룹당 롤아웃은 16개다.
측정 결과와 비교
모든 실험에는 하네스로 Claude Code 2.1.220을 사용했고, GPU 예산과 데이터 지연(staleness)을 맞췄다. 학습은 Megatron이, 롤아웃 서빙은 SGLang이 맡았다. Qwen 3.6 122B 실험은 노드 24~32개, Qwen 3.8 2.4T 실험은 192개 노드(48개짜리 셀 4개)에서 돌렸다. GPU 기종은 밝히지 않았다. Qwen 3.8 2.4T는 모델 이름 옆에 Qwen 기준 A95B로 표기된다.
| 작업(모델, 스텝) | Async 대비 | Colocate 대비 |
|---|---|---|
| NL2RepoBench(Qwen 3.6 122B, 48스텝) | 1.42~1.53배 | 1.36~1.47배 |
| DeepSWE(Qwen 3.6 122B, 24스텝) | 1.569~1.572배 | 1.610~1.824배 |
| TerminalBench(Qwen 3.6 122B, 24스텝) | 1.383~1.430배 | 1.809~1.849배 |
| NL2RepoBench(Qwen 3.8 2.4T, 48스텝) | 1.78배 | 1.21배 |
NL2RepoBench에서 Qwen 3.8 2.4T는 48스텝을 75.42시간에 마쳤다. Async는 134.55시간, Colocate는 91.47시간이 걸렸다. 같은 48스텝 동안 이 모델의 평가 통과율은 52.48%에서 58.54%로 올랐다. Colocate 대비 최저치인 1.21배도 이 2.4T 모델에서 나왔으며, 이 실험에서는 많은 쿼리가 제한 시간 근처에서 돌았다.
| 항목 | QwenGyre | veRL | AReaL | Agent Lightning |
|---|---|---|---|---|
| 개발 주체 | Alibaba Qwen | ByteDance Seed와 커뮤니티 | Tsinghua IIIS와 Ant Group | Microsoft |
| 라이선스 | 밝히지 않음 | Apache-2.0 | Apache-2.0 | MIT |
| GPU 배치 | 탄력 셀, 롤아웃 중 전환 | 유연한 장치 매핑, HybridEngine 재분할 | 완전 비동기 | 밝히지 않음 |
| 블랙박스 하네스 | 프록시로 지원 | 밝히지 않음 | base_url 교체로 지원 | 코드 수정 거의 없이 지원 |
| 학습 / 롤아웃 | Megatron / SGLang | FSDP, Megatron / vLLM, SGLang | Megatron, FSDP, Archon / vLLM, SGLang | 밝히지 않음 |
| 명시된 최대 규모 | Qwen 3.8 2.4T | 671B 모델 | 밝히지 않음 | 밝히지 않음 |
| 대표 속도 향상 | Colocate 대비 최대 1.85배 | 밝히지 않음 | 동기 방식 대비 2.77배(v0.3) | 밝히지 않음 |
| 공개 코드 | 밝히지 않음 | 있음 | 있음 | 있음 |
속도 향상 수치는 프로젝트마다 자체 환경에서 잰 값이라 서로 직접 비교할 수 없다.
출처
이 기사는 아래 자료를 바탕으로 정리했습니다. 제목을 누르면 원문이 새 창으로 열립니다.