Qwen3-Coder-Next: 코딩 에이전트를 위한 초희소 MoE 아키텍처
코딩 에이전트가 실용적으로 쓰이려면 두 가지가 동시에 필요하다. 충분히 큰 컨텍스트와 충분히 낮은 추론 비용. Qwen3-Coder-Next(2026년 2월 공개)는 80B 파라미터이지만 추론 시 3B만 활성화하는 초희소 MoE 구조로 이 두 조건을 정면으로 공략한다.
왜 코딩 에이전트는 다른 모델 설계를 요구하는가
일반 LLM 벤치마크는 단발 응답을 평가한다. 코딩 에이전트는 다르다.
- 툴 루프:
bash,read_file,edit,test를 수백 회 반복한다. - 긴 컨텍스트: 전체 저장소 또는 멀티-파일 패치가 컨텍스트에 들어온다.
- 검증 가능한 보상: 테스트 통과/실패가 명확한 RL 신호를 준다.
- 비용 민감도: 한 이슈 해결에 수백 회 LLM 호출이 발생하므로 토큰당 비용이 결정적이다.
Dense 모델은 컨텍스트 길이를 늘릴수록 KV 캐시 메모리와 prefill 비용이 선형·초선형으로 오른다. MoE는 전체 파라미터 중 일부만 활성화하므로 같은 추론 FLOP에 더 많은 지식을 담을 수 있다. 그러나 기존 Top-K MoE에는 두 가지 약점이 있다: 라우팅 불안정(expert collapse)과 긴 시퀀스에서의 어텐션 메모리 폭발. Qwen3-Coder-Next는 두 문제를 구조적으로 다룬다.
아키텍처: 하이브리드 Gated DeltaNet + Gated Attention
512 전문가 / 10 활성화
글로벌 어텐션 (전체 시퀀스)
512개 전문가 중 10개만 활성화
O(1) 메모리로 무한 컨텍스트 근사
Gated DeltaNet-MoE
DeltaNet은 선형 어텐션의 한 변형이다. 표준 소프트맥스 어텐션이 O(L²) 메모리를 쓰는 것과 달리 고정 크기의 연속 상태를 유지하면서 토큰을 처리한다.
델타 업데이트 규칙:
S_t = S_{t-1} - β_t · k_t (k_tᵀ S_{t-1}) + β_t · k_t v_tᵀ"게이트"는 이 상태를 얼마나 유지하고 얼마나 리셋할지를 제어한다. 코드 파싱처럼 구조가 급격히 바뀌는 시점(예: 함수 경계, 클래스 시작)에서 상태를 부분적으로 지울 수 있다.
각 DeltaNet 레이어에 MoE FFN을 결합하여 토큰당 활성화 파라미터를 늘리지 않고 지식 용량을 극대화한다.
Gated Attention-MoE (4번째 레이어마다)
순수 선형 어텐션은 장거리 의존성 추적에 약점이 있다. 블록마다 한 번씩 삽입되는 전역 소프트맥스 어텐션 레이어가 이를 보완한다. 이 레이어도 MoE FFN과 결합된다.
결과적으로 48레이어 중 36레이어는 O(L) 메모리, 12레이어는 O(L²) 어텐션을 쓰는 하이브리드 구조가 된다.
숫자로 보는 희소성
| 항목 | 값 |
|---|---|
| 총 파라미터 | ~80B |
| 추론 시 활성화 파라미터 | ~3B |
| 전문가 수 | 512 |
| 활성화 전문가 | 10 |
| 컨텍스트 길이 | 256K 토큰 |
| 추론 메모리(BF16) | ~46 GB |
활성화 파라미터 3B는 Qwen2.5-3B와 추론 비용이 비슷하지만, 전체 80B의 지식 용량을 활용한다.
훈련: 검증 가능한 코드 RL
일반 RLHF는 인간 선호 레이블에 의존하므로 확장이 어렵다. 코드는 다르다. 테스트를 돌리면 통과/실패가 즉시 나온다.
SWE-bench, CodeForces, 내부 저장소
read / edit / bash / test
부분 보상으로 조기 포기 방지
훈련 단계
- SFT (지도 미세조정): 고품질 코드 솔루션 + 툴 호출 궤적.
- Long-Context Annealing: 256K 컨텍스트에서의 문서-코드 혼합 학습.
- Agentic RL: 검증 가능한 태스크(테스트 패스)에서 GRPO로 정책 최적화.
아키텍처 논문(arXiv:2603.00729)에 따르면 에이전트 RL 단계가 SWE-bench 성능에 가장 큰 기여를 했다. 특히 여러 단계에 걸친 툴 호출 체인 최적화는 단순 코드 생성 SFT로는 얻을 수 없다.
벤치마크: SWE-bench 결과
SWE-bench Verified 71%대는 2026년 2월 공개 시점에서 공개 모델 최고 수준이었다. 중요한 맥락:
- SWE-bench Verified 기준 숫자는 에이전트 프레임워크에 따라 달라진다. 모델 단독이 아니라
모델 + 프레임워크조합의 결과다. - SWE-bench Pro는 Verified보다 훨씬 어려운 실제 저장소 이슈로 구성된다. 44.3%는 여전히 미해결 과제가 많음을 의미한다.
- HumanEval, MBPP 같은 단발 코드 생성 벤치마크와는 측정 대상이 다르다.
배포: vLLM과 SGLang에서의 운영
vLLM 서빙
# BF16, tensor parallel 4 (80GB A100 × 4)
vllm serve Qwen/Qwen3-Coder-Next-Instruct \
--tensor-parallel-size 4 \
--max-model-len 65536 \
--enable-chunked-prefill \
--gpu-memory-utilization 0.90Qwen3-Coder-Next는 512 전문가 중 10개만 활성화하므로 expert offloading이 실용적이다. 자주 사용되는 전문가를 GPU에 두고 나머지를 CPU에 두면 GPU 메모리를 절반 이하로 줄일 수 있다. vLLM 0.9+에서 --enable-expert-offload 플래그로 활성화한다.
# Expert offloading 활성화 (메모리 절약, 지연 증가 트레이드오프)
vllm serve Qwen/Qwen3-Coder-Next-Instruct \
--tensor-parallel-size 2 \
--enable-expert-offload \
--max-model-len 32768SGLang 서빙
python -m sglang.launch_server \
--model-path Qwen/Qwen3-Coder-Next-Instruct \
--tp 4 \
--context-length 65536 \
--chunked-prefill-size 4096SGLang의 RadixAttention은 코딩 에이전트처럼 시스템 프롬프트와 저장소 컨텍스트를 반복 재사용하는 패턴에서 KV 캐시 히트율을 높인다. 동일 이슈에서 여러 번 LLM을 호출하는 SWE-Agent 스타일 루프에서 실질적인 처리량 향상이 나온다.
컨텍스트 길이와 실제 운영
256K 토큰 컨텍스트를 그대로 쓰면 prefill 비용이 높다. 실제 운영에서는 단계별 컨텍스트 전략이 필요하다.
| 단계 | 컨텍스트 구성 |
|---|---|
| 초기 탐색 | 저장소 구조, README, 관련 파일 목록 (~8K) |
| 파일 분석 | 타겟 파일 + 주변 파일 전체 (~32K) |
| 패치 생성 | 수정 대상 파일 + 테스트 + 에러 로그 (~16K) |
| 검증 루프 | 패치 diff + 테스트 결과 (~4K) |
코딩 에이전트 통합 패턴
OpenHands (오픈소스 코딩 에이전트)
# OpenHands config.toml
[llm]
model = "openai/Qwen3-Coder-Next-Instruct"
base_url = "http://localhost:8000/v1"
api_key = "token"
max_message_chars = 100000OpenHands는 자체 샌드박스(Docker)에서 bash, 파일 시스템, 브라우저를 실행한다. Qwen3-Coder-Next와 같이 에이전트 RL로 훈련된 모델은 OpenHands의 툴 호출 형식을 잘 따른다.
SWE-Agent
sweagent run \
--model-name "Qwen3-Coder-Next" \
--model-base-url "http://localhost:8000/v1" \
--instance-id "django__django-15902" \
--max-steps 50Thinking 모드 제어
Qwen3-Coder-Next는 enable_thinking 옵션을 지원한다. 단순한 코드 완성에서는 끄고(/no_think), 복잡한 아키텍처 설계 단계에서는 켜는 방식으로 비용을 조절할 수 있다.
# Thinking 모드 비활성화 (빠른 툴 호출)
messages = [
{"role": "system", "content": "You are a coding assistant. /no_think"},
{"role": "user", "content": "Fix the failing test in test_auth.py"}
]운영 체크리스트
메모리 계획
- [ ] BF16 기준 46GB: A100 80GB × 1 또는 A100 40GB × 2 (TP=2)
- [ ] Expert offloading 활성화 시 ~28GB GPU, ~60GB CPU RAM 필요
- [ ] 256K 컨텍스트 전체 사용 시 KV 캐시 추가 메모리 계산 필요
성능 튜닝
- [ ] Chunked prefill 활성화 (긴 입력 시 첫 토큰 지연 감소)
- [ ] SGLang RadixAttention 사용 시 캐시 히트율 모니터링
- [ ] 에이전트 루프 내 불필요한 컨텍스트 제거 (비용 절감)
에이전트 통합
- [ ] 툴 호출 형식이 OpenAI Function Calling 또는 Qwen 기본 형식인지 확인
- [ ] 최대 스텝 수 설정 (무한 루프 방지)
- [ ] 샌드박스 타임아웃 설정 (bash 실행 시 행 방지)
- [ ] Thinking 모드를 단계별로 선택적으로 활성화
모니터링
- [ ] 전문가별 활성화 분포 (expert collapse 징후 탐지)
- [ ] 컨텍스트 길이별 처리량/지연 측정
- [ ] 에이전트 루프 단계별 성공률 로깅
요약
Qwen3-Coder-Next는 코딩 에이전트의 비용-성능 트레이드오프를 새로운 방식으로 공략한다. 512개 전문가 중 10개만 활성화하는 초희소 MoE로 3B 수준의 추론 비용에 80B 수준의 지식 용량을 제공하고, Gated DeltaNet을 통해 긴 컨텍스트를 O(1) 메모리로 처리한다. SWE-bench Verified 71%대는 에이전트 RL 훈련의 직접적인 결과다. 실용적인 운영에서는 expert offloading, chunked prefill, 단계별 컨텍스트 전략을 조합하면 단일 80GB GPU에서도 실용적인 코딩 에이전트를 구축할 수 있다.
References
- https://arxiv.org/abs/2603.00729
- https://github.com/QwenLM/Qwen3-Coder
- https://huggingface.co/Qwen/Qwen3-Coder-Next-Instruct
- https://qwenlm.github.io/blog/qwen3-coder/
- https://github.com/SWE-agent/SWE-agent
- https://github.com/All-Hands-AI/OpenHands