Qwen3.8-Flash-Next, 1/9의 학습 비용으로 Qwen3.7-Plus(397B-A17B) 수준에 도달한 125B-A6B 모델

Qwen3.8-Flash-Next 소개

Qwen 팀이 2026년 8월 26일에 공개한 Qwen3.8-Flash-Next 는 전체 1250억(125B) 파라미터 중 토큰당 60억(6B)만 활성화하는 멀티모달 전문가 혼합(Mixture of Experts, MoE) 모델이며, 동시에 아직 발표되지 않은 Qwen4 계열이 올라탈 아키텍처를 먼저 떼어내 공개한 실험적 프리뷰입니다. 가중치는 Hugging FaceModelScope에 올라와 있고, 28쪽 분량의 기술 보고서가 설계 근거와 제거 실험(ablation)을 함께 싣고 있습니다.

이 모델이 눈에 띄는 이유는 벤치마크 점수 자체보다 비용 대비 성능의 기울기 에 있습니다. 직전 세대의 플래그십인 Qwen3.7-Plus는 전체 3970억(397B) 파라미터에 토큰당 170억(17B)을 활성화하는 모델인데, Qwen3.8-Flash-Next의 베이스 모델은 활성 파라미터의 약 1/3, 학습 토큰의 약 1/3, 그래서 학습 FLOPs로는 약 1/9 만 쓰고도 14개 사전학습 벤치마크 중 8개에서 그 플래그십을 앞섭니다. 나머지 6개에서 뒤지는 폭도 최대 2.6점입니다. 같은 품질을 더 싸게 만드는 방법을 찾는 것이 지금 파운데이션 모델 연구의 중심 문제라면, 이 모델은 그 문제에 대한 하나의 구체적인 답안지입니다.

Qwen 팀은 이 답안지를 어텐션, 잔차(residual), 임베딩, 최적화 라는 네 축의 변경으로 정리합니다. 어텐션은 Gated DeltaNet(GDN)과 새로 도입한 Qwen Sparse Attention(QSA) 의 하이브리드로 바뀌었고, 잔차는 네 갈래로 넓힌 뒤 게이트로 읽고 쓰는 게이티드 잔차(Gated Residual, GR) 가 되었으며, 임베딩에는 국소 문맥으로 조회하는 N-gram 임베딩 이 붙었고, 옵티마이저는 Muon으로 갈아탔습니다. 네 가지 모두 "모델을 더 크게 만든다"가 아니라 "같은 계산량으로 더 많은 것을 한다"는 방향을 향합니다.

기본 컨텍스트 길이는 262,144 토큰이고 YaRN을 적용하면 100만 토큰까지 확장됩니다. 상용 버전은 QwenCloud에서 qwen3.8-flash라는 이름으로 서비스되며, 100만 컨텍스트가 기본이고 가격은 입력 100만 토큰당 0.16달러, 출력 100만 토큰당 0.47달러입니다.

왜 Qwen4가 아니라 Qwen3.8-Flash-Next인가

이 공개 방식은 Qwen 팀에게 처음이 아닙니다. 2025년에 공개된 Qwen3-Next가 정확히 같은 역할을 했습니다. 그때 처음 선보인 Gated DeltaNet + Gated Attention 하이브리드 설계는 이후 Qwen3.5, Qwen3.6, Qwen3.7, Qwen3.8 시리즈 전체에 그대로 쓰였습니다. 즉 "Next" 접미사가 붙은 모델은 다음 세대 전체가 올라탈 토대를 미리 던져 두고 커뮤니티가 검증해 보게 하는 자리입니다.

:pytorch::kr:직전 세대의 같은 역할을 한 모델이 궁금하시다면 다음 게시물을 참고해주세요:

공개된 설정 파일에도 그 의도가 그대로 드러납니다. Hugging Face 저장소의 config.json 은 모델 타입을 qwen3_8이 아니라 qwen4_exp 로, 아키텍처 클래스를 Qwen4ExpForConditionalGeneration으로 적고 있습니다. 이름 자체가 Qwen4의 실험(experimental) 구현임을 가리킵니다.

이번에도 목적은 같습니다. Qwen4 모델 패밀리가 이 아키텍처 위에 세워지기 전에, 바뀐 구조 자체를 먼저 열어 두고 외부에서 뜯어볼 수 있게 하겠다는 것입니다. 그래서 이 글에서 다루는 내용의 무게 중심도 벤치마크 표가 아니라 구조와 그 구조를 고른 근거 쪽에 있습니다.

기술 보고서가 서문에서 밝히는 평가 원칙 하나가 이 글 전체를 관통하므로 먼저 옮겨 둡니다. Qwen 팀은 모든 후보 변경안을 세 축으로 동시에 평가했다고 말합니다. 손실(loss)과 다운스트림 벤치마크, 학습과 프리필(prefill)과 디코드(decode) 각각에서 드는 비용, 그리고 최적 하이퍼파라미터와 학습 안정성에 미치는 영향입니다. 그리고 이 세 축은 자주 서로 어긋납니다.

"손실과 다운스트림 정확도가 늘 같이 움직이지는 않습니다. N-gram 어휘를 키우면 손실은 단조롭게 내려가지만 다운스트림 정확도는 포화합니다."

"Loss and downstream accuracy do not always move together: enlarging the n-gram vocabulary lowers loss monotonically while downstream accuracy saturates."

아래에서 반복해서 나오지만, 이 보고서가 실무자에게 주는 가장 실용적인 정보는 "무엇을 채택했는가"보다 "어떤 지표만 보다가 틀릴 뻔했는가" 쪽입니다.

모델 전체 구조: 네 층 중 셋은 GDN, 하나는 QSA

전체 배치를 먼저 보면 나머지 설명이 훨씬 쉽게 읽힙니다. 48개 층은 3 × (Gated DeltaNet → MoE) → 1 × (Qwen Sparse Attention → MoE)라는 블록이 12번 반복되는 구조입니다. 토큰 혼합 층 네 개 중 셋은 선형 비용으로 과거를 압축하는 GDN이고, 남은 하나만 전체 문맥을 직접 훑는 전역 어텐션입니다. 그리고 모든 서브층은 게이티드 잔차를 통해 넓혀진 잔차 스트림을 읽고 씁니다.

주요 제원은 다음과 같습니다.

항목
모델 유형 비전 인코더를 갖춘 인과적 언어 모델(Causal Language Model with Vision Encoder)
Hugging Face 아키텍처 Qwen4ExpForConditionalGeneration (model_type: qwen4_exp)
전체 파라미터 125B (+ N-gram 임베딩 51B, + MTP 4B)
토큰당 활성 파라미터 6B
층 수 / 은닉 차원 48 / 2560
층 배치 12 × (3 × GDN → MoE, 1 × QSA → MoE)
Gated DeltaNet V 헤드 48개, QK 헤드 16개, 헤드 차원 128
Qwen Sparse Attention Q 헤드 24개, KV 헤드 2개, 헤드 차원 256, RoPE 차원 64
QSA 인덱서 MQA(Multi-Query Attention) 구조, 쿼리 헤드 4개 + 공유 키 헤드 1개, 헤드 차원 128
QSA 예산 512 블록 (2048 토큰)
MoE 전문가 512개 중 라우팅 10개 + 공유 1개, 전문가 중간 차원 640
게이티드 잔차 4갈래, 병목 랭크 320
N-gram 임베딩 2천만 항목, 2번째 층에만 배치 (바이그램/트라이그램)
컨텍스트 길이 262,144 (YaRN으로 1,000,000까지)

전문가 512개 중 11개만 켠다는 점, 그리고 전문가 하나의 중간 차원이 640에 불과하다는 점이 눈에 띕니다. 이는 Qwen3-Next 이후 이어져 온 초희소 MoE(ultra-sparse MoE) 설계로, 전역 로드 밸런싱을 적용한 상태에서 활성 전문가 수를 고정한 채 전체 전문가 파라미터만 늘리면 학습 손실이 꾸준히 내려간다는 관찰에 기반합니다.

어텐션: GDN이 기억하고 QSA가 찾아낸다

세 층은 압축하고 한 층은 조회하는 하이브리드

전체 자기 어텐션(full self attention)은 이전의 모든 토큰에 내용 기반으로 곧장 접근할 수 있다는 강점이 있지만, 계산량은 시퀀스 길이의 제곱에 비례하고 키와 값을 저장하는 KV(Key-Value) 캐시는 생성 중에 선형으로 불어납니다. 슬라이딩 윈도우 어텐션(SWA)처럼 시야를 좁히면 비용은 줄지만, 창 밖의 정보는 층을 타고 간접적으로만 전달됩니다.

Qwen 팀이 고른 절충안은 GDN과 전역 어텐션의 층 단위 하이브리드입니다. GDN은 과거를 고정 크기 상태로 압축해 두고 현재 내용에 따라 그 상태를 갱신하며, 그 사이사이에 놓인 전역 어텐션 층이 유한 상태 메모리로는 정확히 재현하기 어려운 토큰 단위 조회를 담당합니다. 게이티드 델타 규칙은 다음과 같이 쓸 수 있습니다.

S_t = \left(\alpha_t I - \beta_t k_t k_t^\top\right) S_{t-1} + \beta_t k_t v_t^\top

여기서 \alpha_t \in (0,1) 은 기존 상태의 수명을 전역적으로 조절하는 감쇠 게이트이고, \beta_t \in (0,1) 은 델타 갱신의 세기를 정합니다. 두 게이트의 역할이 다르다는 점이 중요합니다. 델타 항은 현재 키 k_t 에 이미 연결되어 있던 값을 먼저 추정한 뒤 그 오차만 기록하므로, 비슷하거나 반복되는 키가 들어와도 외적(outer product)이 무한정 쌓이는 대신 기존 연결이 갱신됩니다. 단순 가산형 선형 어텐션과 GDN을 가르는 지점이 바로 이 "지우고 다시 쓰기"입니다.

Qwen3.8-Flash-Next는 원래 GDN이 쓰던 SiLU 출력 게이트 대신 유계(bounded) 시그모이드 게이트를 쓰고, 짧은 인과 합성곱(causal convolution)과 L2 정규화를 쿼리와 키에 적용해 랭크-1 델타 전이의 크기를 묶어 둡니다. 전역 어텐션 층에는 RoPE를 그대로 유지했는데, 여기에도 앞서 말한 "지표가 어긋나는" 사례가 하나 숨어 있습니다. 위치 인코딩을 뺀 NoPE 변형은 사전학습 중에는 RoPE와 거의 구분되지 않았지만, 사후학습 이후 생성이 끝나지 않고 무한히 이어지는 빈도가 눈에 띄게 높았습니다. 사전학습 지표만 봤다면 그냥 뺐을 설계입니다.

25B-A3B 규모의 MoE 모델로 세 가지 토큰 혼합 방식을 비교한 결과는 다음과 같습니다.

아키텍처 MMLU MMLU-Pro MATH BBH MMMLU MultiPL-E 평균
Full attention 62.65 37.59 49.40 63.78 47.74 39.73 49.87
SWA hybrid 66.30 40.67 45.48 65.88 51.33 41.93 51.15
GDN hybrid 66.26 42.82 53.98 68.72 54.83 47.48 53.81

위 표는 평가에 쓰인 9개 벤치마크 중 6개를 뽑은 것이고 평균은 9개 전체 기준입니다. GDN 하이브리드는 9개 중 8개에서 트랜스포머 베이스라인을 앞섰고, SWA 하이브리드 대비로도 7개에서 앞섰습니다. SWA 하이브리드가 앞선 두 항목은 MMLU(66.30 대 66.26으로 근소한 차이)와 EvalPlus(52.12 대 49.71)입니다.

QSA: 인덱서 자체의 비용을 줄이는 희소 어텐션

전역 어텐션 층에는 다시 Qwen Sparse Attention(QSA) 이 들어갑니다. 희소 어텐션은 중요한 문맥만 골라 계산해 긴 시퀀스의 병목을 완화하는 접근인데, DeepSeek-V3.2의 DSA처럼 토큰 단위 인덱서를 쓰는 기존 방식에는 한 가지 함정이 있습니다. 시퀀스가 길어질수록 "어디가 중요한지 찾는 비용" 자체가 O(n^2) 로 불어나 무시할 수 없어진다는 점입니다.

QSA는 이 지점을 정면으로 겨냥합니다. 경량 인덱서가 먼저 키 시퀀스를 r 개 토큰짜리 겹치지 않는 마이크로 블록(micro-block) 으로 나눠 평균 풀링으로 압축한 뒤, 블록 단위로 중요도를 매기고 상위 블록만 골라 실제 어텐션에 넘깁니다. 압축 비율 r 만큼 인덱서 복잡도가 O(n^2) 에서 O(n^2/r) 로 떨어집니다.

세부 설계에서 눈여겨볼 대목은 압축을 위치 인코딩보다 먼저 한다 는 순서입니다. 블록 안의 키들을 먼저 내용 표현으로 요약한 뒤 블록 시작 위치 하나를 부여하기 때문에, 회전 위상이 서로 다른 토큰 표현을 평균 내는 일이 생기지 않습니다. 중요도 점수는 인덱서 헤드별 쿼리와 압축 키의 유사도를 ReLU로 통과시켜 합산하며, 이미 완전히 관측된 블록만 채점하도록 블록 인과(block-causal) 조건이 걸립니다.

I_{ib} = \sum_{h=1}^{H} \mathrm{ReLU}\left(\left\langle q_i^h, \bar{k}_b \right\rangle\right)

실제 설정은 토큰 예산 K = 2048, 압축 비율 r = 4 이므로 쿼리마다 최대 512개 블록을 고르고, 마지막 미완성 블록의 꼬리 토큰은 항상 포함됩니다.

학습은 두 단계로 나뉩니다. 1단계 밀집 증류(dense distillation) 에서는 백본의 전체 어텐션 분포를 교사로 삼아 인덱서만 1,000스텝 학습합니다(학습률 1 \times 10^{-3}, 256K 토큰 시퀀스 8개씩, 총 약 20억 토큰). 이때 교사 분포를 블록 단위로 맞추면서 평균 풀링이 아니라 최대 풀링 을 쓰는데, 두드러진 토큰 단위 신호가 집계 과정에서 희석되는 것을 막기 위해서입니다. 2단계 희소 학습 에서는 인덱서의 안내를 받아 백본까지 함께 8,000스텝 학습합니다(학습률 2.5 \times 10^{-5}, 256K 시퀀스 96개씩, 약 2000억 토큰).

학습 효율을 위해 희소 어텐션 출력과 인덱서의 KL 발산(Kullback-Leibler divergence) 손실을 중간 결과를 만들지 않고 한 번에 계산하는 융합 QSA 커널을 직접 구현해 메모리 사용량을 크게 줄였습니다. 그 덕에 2단계 희소 학습 구간에서 QSA의 손실 곡선은 전체 어텐션 베이스라인과 거의 겹쳤고, 전체 손실 차이는 10^{-4} 수준에 머물렀습니다.

결과는 두 방향에서 확인됩니다. 먼저 짧은 문맥 일반 능력은 손상되지 않았습니다.

방식 MMLU-Pro SuperGPQA MATH GSM8K BBH MMMLU EvalPlus MultiPL-E 평균
Full Attn 72.9 51.7 69.8 91.0 90.4 81.8 70.8 78.4 75.9
QSA 적용 73.7 52.1 71.6 92.2 91.6 81.1 72.3 79.8 76.8

그리고 긴 문맥 조회에서는 오히려 격차가 벌어집니다. RULER에서 512K 이상 구간 점수가 90.08에서 93.00으로, 8-needle MRCR에서는 512K에서 30.66이 40.53으로, 100만 토큰에서 20.71이 26.44로 올라갑니다. 다만 모든 길이에서 앞서지는 않습니다. MRCR 128K와 256K에서는 전체 어텐션이 1점 남짓 높고(97.14 대 95.98, 94.20 대 93.00), RULER도 128K에서 256K 사이 구간은 근소하게 뒤집니다. 순서가 뒤바뀌는 지점이 512K 부근입니다. Qwen 팀은 이를 두고 QSA가 긴 문맥 추론(inference) 효율을 높이면서도 성능을 희생하지 않고, 시퀀스가 길수록 오히려 이득이 커진다고 정리합니다.

커널 수준 지연 시간은 아래 그림이 가장 잘 보여줍니다. 인덱서만 놓고 보면 압축 비율 4에서 프리필 3.8배, 디코드 4.4배가 빨라지고, 인덱서와 희소 코어 어텐션을 합친 어텐션 모듈 전체로는 100만 토큰 컨텍스트에서 프리필 7.6배, 디코드 4.9배 입니다. 비교 대상인 밀집 어텐션 베이스라인은 FlashInfer의 paged GQA(Grouped-Query Attention) 구현입니다.

커널 단위 수치는 실제 서빙 상황과 다를 수 있으므로, Qwen 팀은 프리픽스 캐시 적중률이 90%인 온라인 서빙 유사 환경도 함께 측정했습니다. 100만 토큰 컨텍스트에서 Qwen3.8-Flash-Next의 프리필 처리량은 Qwen3.7-Plus의 8.6배 입니다.

층 간 인덱스를 공유해 인덱싱 비용을 줄이는 IndexCache 계열(보고서 표기로는 IndexShare)과의 비교도 실려 있습니다. QSA는 상대 인덱서 지연 시간 0.25 지점에서 이미 전체 어텐션 베이스라인과 같은 RULER 점수에 도달하는 반면, IndexShare는 0.5에서도 베이스라인에 못 미쳤습니다. GDN 층이 사이사이 끼어드는 하이브리드에서는 인접 어텐션 층 사이의 유사도가 낮아 층 간 공유가 잘 통하지 않고, 층 안에서 압축하는 QSA 쪽이 구조적으로 더 맞는다는 해석입니다.

인덱서의 쿼리 헤드 수도 함께 실험했습니다. 밀집 증류만 마친 상태에서 곧바로 희소 어텐션을 켜면 성능이 뚜렷하게 떨어지지만, 2단계 공동 학습을 잠깐만 거치면 백본이 희소 패턴에 적응해 전체 어텐션 수준을 회복합니다. 회복된 뒤에는 헤드 수를 줄여도 성능이 유지되기 때문에, 코어 어텐션의 24개보다 훨씬 적은 4개 를 최종 인덱서 설정으로 골랐습니다.

게이티드 잔차: 잔차 스트림을 네 갈래로 넓히다

왜 잔차 경로를 건드리는가

잔차 연결은 모든 블록에 출력으로 향하는 직통 경로를 만들어 주고, 사전 정규화(pre-normalization)는 대규모 학습을 안정시킵니다. 다만 사전 정규화에는 대가가 따릅니다. 모든 블록이 같은 스트림을 읽기 때문에, 앞에서 쓴 특징은 뒤에 쓰인 모든 것과 경쟁해야 하고 깊이가 깊어질수록 희석됩니다.

이 문제를 다루는 연구는 크게 두 갈래입니다. 하나는 각 층의 읽기와 쓰기를 더 표현력 있게 만드는 쪽이고, 다른 하나는 스트림 자체를 넓히는 쪽입니다. Hyper-Connections(HC)와 AltUp이 후자에 해당합니다. Qwen 팀은 이 둘이 서로 보완적이라고 봅니다. 넓히는 것이 용량을 더하고, 읽기와 쓰기 방식이 그 용량을 어디에 쓸지 결정한다는 것입니다.

먼저 폭만 늘려 보는 실험부터 했습니다. 사전 정규화 네트워크에 맞게 단순화한 AltUp 변형으로, 블록마다 학습 가능한 스칼라 n_r 개로 가지들의 가중합을 읽고, 출력은 깊이에 따라 라운드로빈으로 한 가지에만 쓰는 단순한 방식입니다. 행렬 곱이 하나도 늘지 않는데도 25B-A3B 모델의 학습 손실이 약 0.01 내려갔습니다. 폭 자체가 이미 값을 하고 있었던 셈입니다.

다섯 가지 관찰이 만든 설계

여기서부터 Qwen 팀은 표현력을 하나씩 더해 보며 값을 하는 것만 남기는 방식으로 설계를 좁혀 갑니다. 25B-A3B 모델을 5600억 토큰으로 학습한 제거 실험 결과입니다.

잔차 설계 손실 MMLU MMLU-Pro MATH BBH MultiPL-E 평균
사전 정규화 1.617 64.29 38.40 53.92 64.73 37.15 50.91
mHC (정적) 1.596 64.62 43.69 55.08 65.42 40.94 52.49
mHC (동적) 1.594 66.11 45.84 59.54 66.01 41.30 54.47
GR 1.590 66.69 46.02 61.18 66.54 42.00 54.66

표에 실은 여섯 개 지표에서는 GR이 모두 앞서지만, 이것도 9개 벤치마크 중 일부를 뽑은 것입니다. 전체로 넓히면 SuperGPQA와 GSM8K, MMMLU, EvalPlus는 mHC 동적 쪽이 조금 높습니다. 보고서도 "이 규모에서는 두 설계가 비슷한 성능" 이라고 적고, GR의 실질적 이점을 성능이 아니라 효율과 안정성에서 찾습니다.

위 표에서 가장 중요한 대목은 정적과 동적 사이의 간격입니다. 손실은 1.596에서 1.594로 0.002밖에 줄지 않았는데, 벤치마크 평균은 52.49에서 54.47로 1.98점이 올랐습니다. 그 앞 단계(사전 정규화에서 정적으로)는 손실이 0.021이나 줄었지만 벤치마크는 1.58점 올랐을 뿐입니다. 두 지표의 비율이 정확히 뒤집혀 있습니다. 손실만 봤다면 데이터 의존적 게이트는 "거의 효과 없음"으로 분류되어 버려졌을 변경입니다.

설계를 좁혀 간 다섯 가지 관찰은 다음과 같습니다.

  • 유계 양수 게이트가 낫습니다. 시그모이드 게이트가 tanh보다 손실과 학습 안정성 양쪽에서 우수했습니다. GDN과 어텐션 컴포넌트에서 시그모이드 게이트가 SiLU나 tanh를 앞선 관찰과도 일관됩니다.

  • 데이터 의존성이 벤치마크를 끌어올립니다. 읽기 연산자와 쓰기 연산자를 현재 잔차 상태로부터 예측하게 만들면 손실 개선은 미미하지만 다운스트림 성능이 뚜렷하게 오릅니다.

  • 읽기의 세밀함이 쓰기의 세밀함보다 중요합니다. 읽기 연산자를 가지당 스칼라 하나에서 가지와 채널마다 하나의 가중치로 세분화하면 도움이 되지만, 쓰기 연산자에 같은 세분화를 적용하면 거의 아무것도 얻지 못합니다. 그래서 쓰기는 가지당 스칼라 하나로 남았습니다.

  • 모든 가지를 함께 읽어야 합니다. 마지막 가지만 쓰거나 가지들을 먼저 풀링한 뒤 예측하는 것보다, 전체 가지에서 연산자를 예측하는 편이 낫습니다. 각 가지를 따로 정규화하는 그룹 RMSNorm을 얹으면 추가 이득이 있습니다.

  • 가지 간 혼합 연산자는 거의 기여하지 않습니다. 읽기와 쓰기가 충분히 표현력을 갖추고 나면 n_r \times n_r 혼합 행렬 H_{res} 를 더해도 유의미한 개선이 없습니다.

마지막 관찰이 GR을 HC 계열과 갈라놓는 대목입니다. HC와 mHC는 읽기와 쓰기를 가지당 스칼라로 두고 표현력을 혼합 연산자 쪽에 몰아넣었는데, GR은 반대로 읽기에 표현력을 몰아넣고 혼합 연산자를 통째로 없앴습니다. 제거 실험상 잃는 것이 없으면서, 블록마다 잔차 상태 전체를 한 번 더 읽는 비용이 사라집니다. 넓힌 스트림의 지배적인 추론 비용이 바로 그 메모리 접근이었으므로 실익이 큽니다.

같은 계열의 다른 갈래도 각자 다른 곳에 표현력을 씁니다. VWN(Virtual Width Networks)은 스칼라 읽기와 쓰기를 그대로 두는 대신 토큰 임베딩 자체를 넓혀 여러 개의 좁은 구간으로 쪼개고, xHC는 가지 수 n_r 을 더 키워 희소 갱신을 쉽게 만드는 방향을 탐색합니다. Qwen 팀은 n_r 을 키울 때 늘어나는 메모리 부담 때문에 후자를 더 파고들지는 않았습니다.

GR이라는 이름의 유래도 여기에 있습니다. Qwen 팀은 별도 연구에서 RMSNorm 뒤에 가벼운 원소별 자기 게이트를 붙이면 학습 안정성이 뚜렷하게 좋아진다는 것을 확인하고 이를 GatedNorm 이라고 불렀습니다.

\mathrm{GatedNorm}(u) = \mathrm{RMSNorm}(u) \odot \sigma\left(W_2\,\mathrm{SiLU}\left(W_1\,\mathrm{RMSNorm}(u)\right)\right)

제거 실험이 도달한 읽기 방식, 즉 시그모이드 게이트를 쓰는 원소별 데이터 의존 읽기가 정확히 이 GatedNorm을 넓힌 스트림에 적용한 형태였습니다. 그래서 둘을 하나의 연산자로 합치고 그 결과를 게이티드 잔차(Gated Residual) 라고 이름 붙였습니다.

구체적으로 GR은 가지를 각각 정규화한 뒤, 전체 가지로부터 가지와 채널별 게이팅 점수를 예측해 가중 평균으로 블록 입력을 만듭니다.

G = \mathrm{unvec}\left(\sigma\left(W_u \,\mathrm{SiLU}\left(\tfrac{1}{n_r} W_d \,\mathrm{vec}(\hat{R})\right)\right)\right), \qquad x = \frac{1}{n_r}\sum_{i=1}^{n_r} G_i \odot \hat{R}_i

이 읽기 연산은 정규화와 게이팅을 이미 안에 품고 있으므로, GR은 블록의 사전 정규화 앞에 얹히는 것이 아니라 사전 정규화를 대체합니다. 스트림을 넓혀도 정규화 층은 하나도 늘지 않습니다. 실제 설정은 가지 4개, 병목 랭크 320이며 층마다 어텐션 블록용과 MLP 블록용 GR 모듈이 따로 있습니다.

다른 계열과의 비교: Attention Residual

잔차 경로를 다시 설계한 2026년의 시도는 HC 계열만 있는 것이 아닙니다. Kimi 팀의 Attention Residual(AttnRes)은 이전 서브층들의 출력에 소프트맥스 어텐션을 걸어 각 서브층이 무엇을 읽을지 결정합니다. 28층(서브층 56개) 모델에서 비교하면 AttnRes 계열 중 가장 강한 설정인 Full AttnRes가 손실 1.762로 GR과 같은 자리에 섭니다. 블록을 묶어 하나로 요약하는 Block AttnRes는 S = 2 에서 0.008, S = 4 에서 0.011을 손해 보고, 48층으로 깊어져도 순서는 그대로여서 Block AttnRes(S = 4)가 1.711, GR이 1.707이었습니다.

여기에 GatedNorm을 얹으면 어느 설정에서든 손실이 내려갑니다. AttnRes 계열에서 0.004에서 0.005, 평범한 사전 정규화 베이스라인에서 0.002입니다. 서브층이 읽어 들이는 입력이 복잡할수록 게이트의 기여가 커지는데, GR이 자기 읽기 연산 안에 품고 있는 것이 바로 그 게이트입니다.

넓힌 폭은 실제로 어디에 쓰였나

GR에는 가지 간 혼합이 없으므로 각 가지는 과거 출력들의 단순 누적기이고, 따라서 어떤 블록이 읽은 입력을 이전 블록들의 기여로 정확히 분해할 수 있습니다. Qwen 팀은 이 분해를 이용해 GR 모델과 GR만 뺀 동일 조건 참조 모델을 비교했습니다(분해의 오차는 3 \times 10^{-8} 이내입니다).

결과는 뚜렷합니다. 네 가지 중 정확히 하나만 장거리 경로를 맡고 나머지 셋은 국소적으로 남습니다. 어느 가지가 그 역할을 하는지는 초기화 시점에 가지들이 서로 교환 가능하므로 무작위이지만, 다섯 개 체크포인트 모두에서 그런 가지가 정확히 하나씩 나타났고 평균 건너뛰는 층수는 10.9개(나머지는 3.4~3.9개)였습니다. 구체적인 사례 셋은 다음과 같습니다.

  • 0층 GDN에서 15층 어텐션으로: 참조 모델에서 0.020이던 기여 비중이 GR에서 0.138로 올라갑니다. 10층부터 19층까지 모든 독자(reader)에 대해 0.072에서 0.138 사이를 유지하며 감소 추세가 없습니다. 첫 층이 깊이를 가로질러 정보를 보존하는 역할이 크다는 기존 관찰과 일치합니다.

  • 10층 GDN에서 11층 어텐션으로: 증가폭이 0.117로 위 경로와 맞먹지만 건너뛰는 층은 하나뿐입니다. GR은 장거리만이 아니라 단거리 연결도 강화합니다.

  • 0층 MLP에서 두 가지로 동시에: 장거리 가지를 타고 15층으로 갈 때는 0.008이 0.058로, 국소 가지를 타고 2층으로 갈 때는 0.139가 0.192로 오릅니다. 같은 출력이 가까운 독자와 먼 독자에게 서로 다른 세기로 도달하는데, 감쇠율이 하나뿐인 단일 스트림으로는 표현할 수 없는 동작입니다.

전체 780개 경로를 건너뛴 층수로 묶어 보면 그림이 더 명확합니다. 인접 층 경로가 합계 0.96을 얻고, 12층 넘게 건너뛰는 장거리 경로가 0.91을 얻는 대신, 2층에서 12층 사이의 중거리 경로가 3.21을 잃습니다. 가중 평균 건너뛰기 거리는 3.91에서 3.97로 거의 그대로입니다. 층 간 정보의 총량이 늘어난 것이 아니라 분포가 바뀐 것 이고, GR은 소수의 경로를 골라 증폭하면서 중거리를 희생합니다. 또 GR 가지에서 가장 많이 읽어 가는 서브층이 주로 소프트맥스 어텐션 층이라는 점도 관찰됩니다. GDN이 압축해 버린 명시적 장거리 문맥을 통합하는 허브 역할을 전역 어텐션이 맡는다는 해석입니다.

추론 비용을 줄이려다 배운 것

넓힌 잔차 상태의 메모리 트래픽이 GR의 주된 추론 비용이므로, Qwen 팀은 옮기는 바이트를 줄이는 두 가지 방법을 시도했습니다.

첫 번째는 읽기를 희소화하는 것이었습니다. 학습된 모델에서 GR 층의 쓰기가 대개 두 가지에 몰린다는 관찰을 근거로, 각 블록이 게이트 값이 가장 높은 두 가지만 읽게 해 봤습니다. 사전학습 손실과 벤치마크는 거의 영향을 받지 않았습니다. 그런데 사후학습 이후 품질이 뚜렷하게 나빠졌습니다. 층마다 희소도를 달리하는 등 더 복잡한 변형으로도 해결되지 않아 채택하지 않았습니다. 보고서가 직접 "사전학습 지표만으로는 잘못된 결정에 이르렀을 사례"라고 적어 둔 대목입니다.

두 번째는 성공했습니다. GR과 게이티드 어텐션, GDN의 게이트가 모두 스트림에 기록되는 값의 크기를 묶어 주기 때문에 잔차 값이 좁은 범위에 머물고, 그래서 저정밀도 형식과 잘 맞습니다. 가지들을 FP8 로 저장하면 BF16 대비 잔차 상태의 이동 바이트가 절반으로 줄어드는데 품질 손실은 거의 없었습니다. 여기에 읽기와 쓰기를 각각 단일 커널로 융합하고 그룹 RMSNorm을 읽기 안으로 접어 넣어, 블록마다 넓힌 스트림을 방향당 한 번씩만 훑게 만들었습니다.

N-gram 임베딩: 계산량 없이 용량만 늘리는 축

MoE가 파라미터를 늘리는 축이라면, 임베딩은 성격이 다른 또 하나의 축입니다. 임베딩 테이블은 희소하게 접근되고 조회 위치가 결정적으로 정해지므로, 토큰당 추가 계산이 거의 없이 파라미터를 늘릴 수 있고 가속기 바깥으로 옮기기도 쉽습니다. Gemma 3n의 Per-Layer Embedding이나 DeepSeek Engram, 그리고 임베딩 확장이 전문가 확장을 앞선다는 연구가 같은 계열의 아이디어입니다.

표준 임베딩이 토큰 하나로 조회한다면, N-gram 임베딩은 현재 토큰과 앞선 몇 개 토큰이 이루는 국소 문맥으로 조회합니다. 흔한 구절과 국소 패턴에 대한 추가 표현을 제공하는 셈입니다. Qwen3.8-Flash-Next는 2천만 항목 규모의 바이그램/트라이그램 테이블로 510억 파라미터를 더했는데, 조회 위치를 미리 알 수 있으므로 이 테이블은 호스트 메모리에 두고 모델 계산과 병렬로 비동기 프리페치할 수 있습니다. GPU 메모리를 상시 점유하지 않습니다.

배치 위치에 대한 제거 실험은 명확한 결론을 내지 못했습니다. 1층부터 4층까지의 얕은 위치, 10층과 15층의 중간 위치, 25층의 깊은 위치를 모두 시험했지만 어느 깊이대도 일관되게 우세하지 않았고, 같은 파라미터 예산을 여러 층에 나눠 배치해도 일관된 이득이 없었습니다. 2층과 25층을 조합했을 때의 미미한 손실 감소는 다운스트림 성능으로 이어지지 않았습니다. 결국 한 층이면 충분하다 는 결론과 함께 2층에 배치했는데, 첫 층의 계산과 호스트 메모리 프리페치를 겹칠 수 있기 때문입니다.

어휘 크기 확장에서는 앞서 예고한 지표 불일치가 가장 선명하게 드러납니다.

N-gram 어휘 배수 손실 MMLU MMLU-Pro MATH C-Eval CMMLU MMMLU
없음 1.585 62.78 33.43 32.52 66.91 68.10 54.06
20배 1.553 64.14 34.46 37.38 71.75 72.29 55.94
50배 1.541 64.71 35.80 37.32 72.12 72.48 56.64
100배 1.534 64.70 35.87 36.98 73.75 72.73 56.65
200배 1.526 64.85 35.21 35.34 74.94 73.24 55.82

손실은 20배에서 200배까지 단조롭게 내려가는데, MATH는 20배에서 정점을 찍고 내려오고 MMLU 계열은 사실상 포화합니다. 흥미로운 예외는 중국어 벤치마크로, C-Eval과 CMMLU는 어휘가 커질수록 꾸준히 좋아집니다. 국소 패턴 기억이 형태론적으로 조밀한 언어에 더 잘 맞는다는 해석이 가능합니다.

전체 파라미터 예산을 고정한 채 전문가 수를 줄여 N-gram 슬롯을 늘리는 실험도 따로 진행했는데, 손실은 10배 지점에서 가장 낮았지만 다운스트림 벤치마크는 MoE 전용 베이스라인 대비 뚜렷한 개선을 보이지 않았습니다. Qwen 팀은 여기서 N-gram 임베딩과 MoE 전문가가 용량 확장에서 서로 다른 역할을 한다 고 결론 내리고, 이후로는 MoE 예산을 고정한 채 N-gram만 확장하는 방향으로 실험을 바꿨습니다.

추측 디코딩을 위한 MTP와 그 밖에 유지된 설계

네 축의 변경 외에 나머지 구성 요소는 Qwen3-Next에서 확립되어 Qwen3.5부터 Qwen3.8까지 다듬어져 온 설계를 그대로 이어받았습니다. 앞서 본 초희소 MoE 외에 두 가지가 더 명시됩니다.

다중 토큰 예측(Multi-Token Prediction, MTP) 모듈은 40억 파라미터짜리 한 개 층으로, 여러 스텝에 걸쳐 학습해 학습 시점과 추론 시점의 동작을 일치시킵니다. 이렇게 하면 실제 환경에서 추측 디코딩(speculative decoding) 의 수용률이 올라가고 백본 성능도 함께 좋아집니다. MTP 모듈 안의 전체 어텐션 층도 QSA로 교체됐고, 여기에 더해 GLM-5를 따라 추측 디코딩 스텝 사이에서 top-k 인덱스를 재사용해 초안 모델의 추론 비용을 한 번 더 줄였습니다. 인덱스를 재사용해도 손해가 없다는 것은 4스텝 추측 디코딩 실험으로 확인했는데, MT-Bench와 GSM8K, MATH, HumanEval, MBPP를 걸친 평균 수용 길이가 전체 어텐션 4.06에서 QSA 4.07로 사실상 같았습니다.

학습 안정성 장치 도 이전 세대의 것을 유지합니다. 제로 센터드 RMSNorm에 norm 가중치까지 weight decay를 걸고, 어텐션 출력 게이팅과 정규화된 MoE 라우터 초기화를 그대로 씁니다. 이 설계들은 작은 규모의 제거 실험 결과를 더 믿을 만하게 만들고, 대규모 학습이 매끄럽게 돌아가도록 돕습니다.

최적화: Muon을 대규모에서 실제로 쓰기 위해 필요했던 것들

Muon은 행렬 파라미터의 갱신 방향을 뉴턴-슐츠(Newton-Schulz) 반복으로 직교화해 구하는 옵티마이저로, Moonshot AI의 대규모 검증 이후 널리 쓰이기 시작했습니다. 이 보고서에서 실무적으로 가장 유용한 부분은 Muon을 실제 대규모 학습에 붙일 때 걸리는 세 가지 문제와 그 해법입니다.

:pytorch::kr:Muon 옵티마이저를 프레임워크에서 쓰는 방법에 관심이 있으시다면 다음 게시물을 참고해주세요:

첫째, 직교화 정확도입니다. 뉴턴-슐츠 반복은 \mu = 0.95 의 네스테로프 가속 모멘텀에 적용하고, 결과는 \gamma(A,B) = 0.2\sqrt{\max(A,B)} 로 스케일해 갱신의 RMS가 행렬 모양과 무관해지도록 만듭니다. 반복 계수는 주어진 스텝 예산에서 미니맥스 최적인 Polar Express 스케줄을 따르고, 반복 횟수는 8로 정했습니다. 더 적은 스텝보다 직교화가 정확하고, 스트레스 테스트에서 그래디언트 노름 스파이크의 크기와 빈도를 모두 줄여 주었기 때문입니다.

둘째, 어떤 파라미터에 Muon을 쓸 것인가입니다. 진짜로 선형 사상 역할을 하는 2차원 가중치, 즉 어텐션의 q/k/v와 출력 투영, GDN 입출력 투영, 라우팅 전문가와 공유 전문가의 fc1/fc2, N-gram 임베딩 층의 키/값 투영에만 Muon을 씁니다. 입력 임베딩과 출력 헤드는 AdamW에 남겨 두고, MoE 라우터도 AdamW입니다. 라우터에 Muon을 적용하면 초기 학습 변동이 커지고 라우터가 불안정해졌는데, 라우터의 각 출력 차원이 전문가 하나의 점수에 대응해 서로 거의 독립이므로 직교화가 활용할 공유 선형 구조가 없다는 것이 팀의 해석입니다. GR의 저랭크 투영 두 개도 지나치게 길쭉한 모양 때문에 AdamW 쪽이 나았습니다.

셋째, 융합된 파라미터를 쪼개는 문제입니다. Megatron-LM에서 어텐션 qkv 투영과 SwiGLU의 fc1, GDN 입력 투영은 각각 하나의 융합 행렬로 저장되지만 의미상으로는 독립적인 선형 연산자를 이어 붙인 것입니다. 이 상태로 직교화하면 두 가지가 동시에 잘못됩니다. 반복이 서로 무관한 서브블록 사이에서 특이 방향을 섞어 버리고, 스케일 계수 \gamma(A,B) 도 진짜 연산자 모양이 아니라 이어 붙인 모양에서 계산됩니다. 그래서 융합 그래디언트를 먼저 쪼개고, 서브 행렬마다 독립적으로 반복을 돌린 뒤, 원래 배치로 다시 모읍니다. qkv와 GDN 입력 투영은 헤드 단위로 쪼갤 때 손실과 벤치마크가 함께 좋아졌습니다.

구현 쪽 이야기도 흥미롭습니다. 뉴턴-슐츠 반복은 파라미터 행렬 전체에 대한 통합 갱신을 요구하는데 이것이 Megatron의 샤딩과 두 군데서 충돌합니다. 텐서 병렬(TP) 아래에서는 어느 랭크도 전체 가중치를 갖고 있지 않고, 데이터 병렬(DP) 아래에서는 비용이 짧은 쪽 차원의 세제곱에 비례해 Megatron의 균등 원소 분할이 심각한 낙오자(straggler)를 만듭니다. Qwen 팀은 논리적 옵티마이저 할당과 물리적 파라미터 배치를 분리하는 Canzona 를 만들어, 텐서를 자르지 않고 파라미터 단위로 재할당해 DP 랭크 간 추정 반복 FLOPs를 맞추고 TP 랭크 사이에서는 융합 All-to-All로 행렬을 복원합니다. 여기에 더해, 융합 파라미터를 쪼개고 나면 층 하나가 수백 개 서브 행렬을 만들어 내 옵티마이저 스텝이 산술이 아니라 커널 실행 오버헤드에 묶이므로, 스텝 전체를 CUDA 그래프로 캡처했습니다.

스케일링 법칙을 다시 맞추고 배치 워밍업을 버리다

아키텍처와 옵티마이저가 함께 바뀌면 이전 세대에서 최적이던 레시피는 더 이상 최적이 아닙니다. Qwen 팀은 스케일링 법칙을 다시 적합했고, 새 법칙은 훨씬 큰 배치 크기와 학습률 을 가리켰습니다. 모델 크기가 커질 때 학습률이 감소하는 속도도 이전보다 느려졌습니다.

작은 규모에서 맞춘 법칙이 쓸모 있으려면 외삽이 믿을 만해야 하므로, 두 예측을 각각 가장 민감한 영역에서 따로 검증했습니다. 배치 크기 예측은 작은 모델을 아주 많은 토큰으로 학습해서(20층 10.8B-A0.89B MoE, 4조 토큰), 학습률 예측은 큰 모델을 제한된 예산으로 학습해서(48층 156B-A7B MoE, 4190억 토큰) 확인했습니다.

배치 크기 결과가 특히 깔끔합니다. 마지막 200억 토큰 평균 손실이 이전 레시피(B = 12.6\text{M})에서 1.5774, 새 법칙이 예측한 최적점(B = 25.2\text{M})에서 1.5702로 7.2 \times 10^{-3} 개선됐고, 여기서 1.5배 더 키운 B = 37.7\text{M} 에서는 4.3 \times 10^{-4} 의 미미한 손해만 났습니다. 예측값 아래로는 손실이 가파르게 오르고 위로는 평평합니다. 즉 예측한 배치 크기가 최적에 가까우면서, 이득을 실현할 만큼 충분히 큽니다.

그리고 이 관찰이 대규모 학습의 오랜 관행 하나를 무너뜨립니다. 배치 크기 워밍업(batch-size warmup) 은 학습 초기에 임계 배치 크기가 작다는 이유로 배치를 점진적으로 키우는 방식인데, Muon 환경에서는 예측 최적점 아래로 내려가는 쪽의 손해가 위로 올라가는 쪽보다 크고, Muon이 큰 배치에서도 데이터 효율을 유지합니다. 실제로 630만에서 시작해 5240억 토큰 지점에 목표 2520만에 도달하는 램프를 두 가지 변형으로 시험했지만 어느 쪽도 상수 배치 베이스라인을 이기지 못했고, 같은 토큰 예산에 18.8% 더 많은 옵티마이저 스텝 이 필요했습니다. 학습 안정성에도 차이가 없었습니다. 그래서 최종 레시피는 목표 배치 크기에서 곧장 시작합니다.

학습률 예측 검증: 평평한 바닥 위에 앉은 최적점

학습률 쪽 검증은 48층 156B-A7B MoE를 4190억 토큰으로 돌려 진행했습니다. 예측 최적점과 함께 학습률을 각각 \sqrt{2} 로 나누고 곱한 설정, 배치를 25% 키우고 학습률을 맞춘 설정, 그리고 이전 Qwen3.5 레시피까지 다섯 가지를 같은 토큰 예산으로 비교했습니다.

설정 배치 크기 학습률 다운스트림 평균
새 스케일링 법칙 예측 최적점 8.4M 1.76 \times 10^{-3} 60.55
학습률 \div \sqrt{2} 8.4M 1.24 \times 10^{-3} 59.14
학습률 \times \sqrt{2} 8.4M 2.49 \times 10^{-3} 60.10
배치 \times 1.25 10.5M 2.01 \times 10^{-3} 60.06
이전 Qwen3.5 레시피 4.2M 6.8 \times 10^{-4} 56.41

이전 레시피는 예측 최적점보다 손실이 7.8 \times 10^{-3} 높게 끝난 반면, 최적점 근처 네 설정은 서로 7 \times 10^{-4} 안쪽에 모였습니다. 최적점이 학습률로 \sqrt{2} 배, 배치 크기로 25% 범위에서 평평한 바닥 위에 앉아 있는 것입니다. 다운스트림 평균도 60.55 대 56.41로 4점 이상 벌어졌습니다. 다만 보고서는 이 순위를 관찰치로만 읽어야 한다고 분명히 밝힙니다. 실행당 평가가 한 번뿐이고 상위 설정들 사이의 간격이 좁아서, 최적점 부근의 미세한 차이는 평가 노이즈 범위에 들어간다는 것입니다.

안정성 지표도 함께 좋아졌습니다. 워밍업 이후 다섯 실행 어디에서도 그래디언트 클리핑이 걸리지 않았고, 예측 최적점의 최대 pre-clip 그래디언트 노름은 클리핑 임계의 28%에 머물렀습니다. 배치가 작아 그래디언트가 더 시끄러운 이전 레시피는 같은 값이 51%였습니다. 손실 곡선에서도 국소 중앙값을 0.1 넘게 벗어난 스텝이 다섯 실행 통틀어 한 번도 없었습니다.

학습 안정성: 스트레스 테스트로 미리 확인한 마진

수조 파라미터 규모로 수십조 토큰을 학습하는 영역에서는 작은 실험에서 아예 나타나지 않는 불안정성이 등장합니다. 손실 스파이크나 발산으로 나타나 체크포인트 재시작을 강요하는 종류입니다. Qwen 팀은 학습률을 올리면 작은 모델에서도 대규모 불안정성을 재현할 수 있다는 관찰에 기대어, 학습률을 최적값의 배수로 감쇠 없이 고정 해 프로덕션 실행의 긴 고학습률 구간을 흉내 내는 스트레스 테스트를 설계했습니다. 판정 기준은 명확합니다. 새 레시피는 같은 스트레스 아래에서 이미 성공적으로 확장된 이전 세대(Qwen3.5 구조 + AdamW)보다 최소한 더 안정적이어야 합니다.

28층 MoE에 대한 결과는 다음과 같습니다.

조건 최적 학습률의 2배 최적 학습률의 4배
Qwen3.5 구조 + AdamW 1만 스텝당 손실 스파이크 4.3회 1만 스텝당 183회, 19,932스텝 중 213회 클리핑 임계 초과
Qwen3.5 구조 + Muon 1만 스텝당 0.2회 클리핑 임계 초과 0회
Muon + 게이티드 잔차 1만 스텝당 0.2회 손실 스파이크 0회, 클리핑 임계 초과 0회

그래디언트와 활성화를 들여다보면 마진의 출처가 보입니다. 최적 학습률의 2배 조건에서 Muon 실행들은 AdamW보다 그래디언트 노름의 중앙값도 높고 최대 활성화도 큰데, 정작 손실 스파이크는 훨씬 적게 냅니다. 여기에 GR을 더하면 그래디언트 노름 스파이크의 빈도와 크기, 그리고 활성화 이상치의 크기가 함께 줄어듭니다.

게이트의 기여를 따로 떼어 보기 위해, 옵티마이저와 구조를 고정한 채 GatedNorm만 켜고 끄는 단일 변수 비교도 했습니다. 최적 학습률의 3배 조건에서 게이트를 켜면 스파이크 비율이 1만 스텝당 32.0회에서 3.2회로, 클리핑 임계 초과가 256회에서 20회로 떨어집니다. 학습률 사다리를 태워 보면 게이트가 없는 베이스라인에서는 활성화 이상치(activation outlier)가 학습률에 거의 비례해 자라는 반면 스파이크 비율은 훨씬 빠르게 자랍니다. 그리고 게이트를 켠 상태의 가장 높은 학습률에서 나온 이상치 수준이, 게이트 없는 가장 낮은 학습률보다도 낮습니다.

Qwen 팀은 여기서 다음과 같은 해석을 내놓습니다. 높은 학습률로 학습할 때는 어떤 형태로든 재스케일링 장치가 필요한데, 명시적 게이트가 없으면 네트워크는 활성화 이상치를 키우는 방식으로 그 일을 스스로 해내고 그 상태로 취약해집니다. 곱셈 게이트는 필요한 재스케일링을 직접 공급해 학습을 안정시킵니다.

프로덕션 설정에서도 같은 이득이 확인됩니다. 데이터 순서와 학습률 스케줄, 옵티마이저를 공유하는 세 실행의 처음 2760억 토큰을 비교했을 때, GR을 더하면 손실이 0.026 내려가고 전체 Flash-Next 레시피는 거기서 0.032를 더 낮춰 Muon 베이스라인 대비 총 0.058을 벌었습니다. 그래디언트 노름에서는 Muon 단독이 게이트 적용 실행들의 약 2배 중앙값과 4.2배의 p99.9를 기록했고, 클리핑 임계를 넘은 유일한 실행이었습니다. 그 결과 Qwen3.8-Flash-Next의 실제 전체 학습은 Kimi K2가 도입한 qk-clip이나 SwiGLU-clip 같은 명시적 클리핑 기법 없이도 손실 스파이크나 그래디언트 노름 이상 없이 완주했습니다.

성능: 베이스 모델과 사후학습 모델

베이스 모델 비교부터 보겠습니다. 앞서 언급한 대로 활성 파라미터 1/3, 학습 토큰 1/3, 학습 FLOPs 약 1/9이라는 조건에서 나온 결과입니다.

벤치마크 Qwen3.8-Flash-Next-Base (125B-A6B) Qwen3.8-27B-Base Qwen3.7-Plus-Base (397B-A17B)
MMLU 90.36 87.51 90.43
MMLU-Redux 90.68 87.26 91.47
MMLU-Pro 73.23 68.60 70.90
SuperGPQA 51.36 44.86 48.42
BBH 90.87 89.56 89.41
GPQA 51.42 45.01 51.52
GSM8K 93.29 93.18 92.95
MATH 72.78 60.54 74.38
EvalPlus 78.76 76.05 78.06
MultiPL-E 79.09 74.50 81.68
SWEBench-Pretrain 50.99 41.66 49.24
MGSM 89.33 86.37 85.42
MMMLU 84.86 79.74 84.53
INCLUDE 78.40 74.37 78.90

14개 벤치마크 전부에서 Qwen3.8-27B-Base를 앞서고, 세 배 이상 큰 Qwen3.7-Plus-Base를 8개에서 앞섭니다. 뒤지는 6개도 최대 2.6점 차이입니다.

표의 파라미터 수를 읽을 때 한 가지 주의할 점이 있습니다. 510억 개의 N-gram 임베딩 파라미터는 주소가 결정적으로 정해지는 조회 테이블이라 토큰당 행렬 곱 예산에 들어가지 않습니다. 활성 파라미터 60억이라는 수치가 실제 연산량을 그대로 반영한다는 의미이고, 그래서 125B + 51B라는 총량을 그대로 다른 모델의 파라미터 수와 나란히 놓고 비교하면 오히려 실제 비용 구조를 놓치게 됩니다.

사후학습 모델의 언어 벤치마크는 다음과 같습니다. 비교 대상에는 DeepSeek-V4-Flash와 Claude Opus 4.6이 포함됩니다.

벤치마크 Qwen3.8-Flash-Next Qwen3.8-27B Qwen3.7-Plus DeepSeek-V4-Flash-0731 Claude-Opus-4.6 (Max)
DeepSWE 1.1 (에이전틱 코딩) 58.7 42.2 16.5 54.4 --
SWE-bench Pro 62.5 61.7 55.8 56.0 53.4
SWE-bench Multilingual 81.0 73.8 75.8 -- 77.5
NL2Repo-Bench 48.1 42.3 41.1 54.2 47.6
CoWorkBench (장기 오피스 작업) 73.9 70.7 65.1 45.1 68.2
JobBench (전문 직무 과제) 55.7 33.4 27.6 41.3 36.6
Agents' Last Exam (Pass@1 / Score) 24.3 / 51.2 20.4 / 42.9 13.2 / 33.6 25.2 / -- --
Toolathlon Verified (Pass@1) 73.5 67.1 50.6 70.3 --
IFBench (지시 따르기) 81.3 79.5 79.1 79.2 62.5
GPQA Diamond 91.7 89.2 90.3 90.8 91.3
HLE 35.9 30.8 34.7 33.8 40.0
LiveCodeBench v6 91.9 90.3 89.6 90.6 88.8

에이전틱 코딩과 장기 오피스 작업에서 벌어지는 격차가 특히 큽니다. JobBench에서 55.7 대 27.6으로 Qwen3.7-Plus의 두 배에 달하고, DeepSWE 1.1은 58.7 대 16.5입니다. 다만 각 점수의 해석에는 주의가 필요합니다. 우선 이 표는 Claude-Opus-4.6의 공식 발표 점수를 쓴 SWE-bench Pro를 빼면 전부 Qwen 팀이 직접 돌린 수치입니다. DeepSWE 1.1은 Claude Code와 mini-SWE-agent 두 하니스로 측정한 뒤 더 높은 쪽을 보고했고(Qwen3.8-Flash-Next는 mini-SWE-agent에서 가장 좋았습니다), CoWorkBench와 RecreationBench는 Qwen 팀이 만든 사내 벤치마크입니다. HLE는 GPT-4o가 채점했습니다. Agents' Last Exam은 Pass@1 기준으로는 DeepSeek-V4-Flash가 25.2로 앞섭니다. 하니스와 채점 모델이 다르면 같은 모델도 몇 점씩 움직이므로, 절대 순위보다 항목별 격차의 크기를 보는 편이 안전합니다.

이 모델은 텍스트뿐 아니라 이미지와 영상을 입력으로 받으며, 같은 Qwen3.8 세대의 플래그십인 Qwen3.8-Max와 함께 계열을 이룹니다. 비전 언어 벤치마크에서는 에이전틱 멀티모달 항목이 특히 두드러집니다.

벤치마크 Qwen3.8-Flash-Next Qwen3.8-27B Qwen3.7-Plus Claude-Opus-4.6 (Max)
ClawEval-MM (Pass@3 / 평균) 64.4 / 60.4 57.4 / 56.9 57.4 / 60.1 52.5 / 54.7
RecreationBench 49.9 47.1 30.2 --
AndroidWorld (모바일 조작) 84.5 81.9 81.0 62.0
OSWorld 2.0 (Partial) 52.3 48.0 21.5 --
Vision2Web 64.0 62.9 42.1 --
ERQA (체화 지능) 72.3 65.5 69.8 40.8
LVBench (장편 영상 이해) 76.6 72.4 76.2 63.0
RealWorldQA 88.5 85.9 86.9 73.9
MathVision (코드 인터프리터 사용) 95.7 94.6 88.7 --
CharXiv RQ (코드 인터프리터 사용) 90.6 90.2 85.9 --

이 표에도 읽는 요령이 필요합니다. OSWorld 2.0은 과제 보상을 전부 받은 비율인 binary와 부분 보상까지 합산한 partial 두 가지로 보고되는데, 위에는 partial만 실었습니다. binary 기준으로는 Qwen3.8-Flash-Next와 Qwen3.8-27B가 19.4로 같습니다. MathVision과 CharXiv도 코드 인터프리터를 쓴 점수와 쓰지 않은 점수가 따로 있고, 위 숫자는 쓴 쪽입니다. Claude-Opus-4.6의 빈칸은 해당 조건의 점수가 아직 없다는 뜻이지 0점이 아닙니다. Vision2Web은 프런트엔드와 웹페이지, 웹사이트 세 범주의 평균이며 Claude Code 하니스로 실행하고 GPT-5.4가 채점했습니다. ClawEval-MM 평균에서는 Qwen3.7-Plus가 60.1로 거의 차이가 없습니다.

FlashQLA: GDN 커널을 2~3배 빠르게 만든 별도 라이브러리

아키텍처가 아무리 이론적으로 싸도 커널이 느리면 의미가 없습니다. Qwen 팀은 GDN 커널을 FlashQLA 라는 별도 오픈소스 라이브러리로 분리해 함께 공개했습니다.

FlashQLA는 TileLang 위에 세워진 고성능 선형 어텐션 커널 라이브러리로, GDN Chunked Prefill의 순전파와 역전파에 연산자 융합과 성능 최적화를 적용합니다. NVIDIA Hopper와 Blackwell에서 flash-linear-attention(FLA)의 Triton 커널 대비 순전파 2~3배, 역전파 약 2배 를 냅니다. 사전학습과 엣지 측 에이전틱 추론에서 이득이 특히 큽니다. 핵심 아이디어는 세 가지입니다.

  • 게이트 기반 자동 카드 내 컨텍스트 병렬화: GDN 게이트의 지수 감쇠 성질을 이용해, 텐서 병렬 환경과 긴 시퀀스, 헤드 수가 적은 설정에서 카드 안에서 이뤄지는 컨텍스트 병렬화를 자동으로 켜 GPU SM 활용률을 높입니다.

  • 하드웨어 친화적 대수 재구성: GDN Chunked Prefill의 순방향과 역방향 흐름을 수치 정밀도를 희생하지 않는 선에서 재구성해 Tensor Core, CUDA Core, SFU 오버헤드를 줄입니다.

  • TileLang 융합 워프 특화 커널: 전체 연산을 독립 커널로 잘게 쪼개지도, 하나의 커널에 통째로 융합하지도 않습니다. 컨텍스트 병렬화와 역전파 요구사항을 함께 고려해 핵심 융합 커널 몇 개를 만들고, 워프그룹 특화를 직접 구현해 데이터 이동과 Tensor Core 연산, CUDA Core 연산을 겹칩니다.

벤치마크 조건도 공개되어 있습니다. Qwen3.5와 Qwen3.6 계열이 쓰는 헤드 구성(TP1부터 TP8에 대응하는 h_{k,v} \in \{64, 48, 32, 24, 16, 8\})에서 FLA 0.5.0, Triton 3.5.1, FlashInfer 0.6.9, TileLang 0.1.8을 기준으로 H200과 GB200에서 측정했으며, 원시 수치는 저장소의 benchmark_results_H200.txtbenchmark_results_GB200.txt에 들어 있습니다.

설치와 사용은 간단합니다. SM90, SM100, SM103, SM120 또는 SM121 아키텍처와 CUDA 12.8 이상, PyTorch 2.8 이상이 필요합니다.

pip install flash-qla

고수준 API는 FLA의 표준 인터페이스와 정렬되어 있어 그대로 갈아 끼울 수 있습니다.

import torch
from flash_qla import chunk_gated_delta_rule

o, final_state = chunk_gated_delta_rule(
    q=q,          # [B, T, H_q, K]
    k=k,          # [B, T, H_q, K]
    v=v,          # [B, T, H_v, V]
    g=g,          # [B, T, H_v]
    beta=beta,    # [B, T, H_v]
    scale=scale,
    initial_state=initial_state,   # optional, [B, H_v, K, V]
    output_final_state=True,
    cu_seqlens=cu_seqlens,         # optional, for variable-length sequences
)

2026년 7월 릴리스된 v0.1.2부터는 flash-linear-attention의 GDN 백엔드로도 등록되어, FLA의 표준 API를 통해 별도 코드 수정 없이 가속을 받을 수 있습니다. FlashQLA 자체는 MIT 라이선스로 배포되므로 연구와 상업적 용도 모두 자유롭게 사용 및 수정이 가능합니다.

:pytorch::kr:같은 계열의 선형 어텐션 커널 라이브러리에 관심이 있으시다면 다음 게시물들도 함께 참고해주세요:

직접 실행해 보기

가중치는 Hugging Face Transformers 형식으로 배포되며, 이미 주요 추론 프레임워크가 지원합니다. vLLMSGLang에는 각각 vLLM RecipesSGLang Cookbook 문서가 준비되어 있고, TokenSpeed도 지원합니다.

vllm serve Qwen/Qwen3.8-Flash-Next --port 8000 --tensor-parallel-size 4 --max-model-len 262144 --reasoning-parser qwen3 --enable-auto-tool-choice --tool-call-parser qwen3_coder
sglang serve --model-path Qwen/Qwen3.8-Flash-Next --port 8000 --tp-size 4 --context-length 262144 --reasoning-parser qwen3 --tool-call-parser qwen3_coder

가볍게 확인만 하려면 transformers serve 한 줄로도 OpenAI 호환 API가 뜹니다. 텍스트와 비전 모두 llama.cpp에서 지원되므로 GGUF 양자화(quantization) 모델을 찾아 쓸 수도 있고, Unsloth에는 별도 실행 가이드가 있습니다. 파인튜닝에는 Unsloth, Swift, LLaMA-Factory 등을 권장합니다.

사고 모드와 추론 강도 조절

이 모델은 기본적으로 사고(thinking) 모드로 동작 하며 최종 응답 전에 <think>...</think> 블록을 생성합니다. 동작은 enable_thinking, preserve_thinking, reasoning_effort 세 가지로 조절합니다. reasoning_effortxhigh(기본값), medium, low를 지원합니다.

from openai import OpenAI

client = OpenAI()
completion = client.chat.completions.create(
    model="Qwen/Qwen3.8-Flash-Next",
    messages=[{"role": "user", "content": "Write a Python function to merge two sorted linked lists."}],
    extra_body={
        "chat_template_kwargs": {
            "enable_thinking": True,   # on by default
            "preserve_thinking": True, # on by default
        },
    },
    reasoning_effort="xhigh",  # xhigh by default; supported levels are xhigh, medium, and low
    stream=True,
)

여기서 preserve_thinking이 기본 활성화라는 점이 실무적으로 중요합니다. 이 옵션이 켜져 있으면 대화 이력의 모든 사고 블록이 유지되어 전체 대화에 걸친 추론 흐름이 이어집니다. 결정의 일관성이 중요하고 같은 추론을 반복하지 않아야 하는 에이전트 시나리오에서 유리하고, KV 캐시 활용률도 좋아집니다. 최신 사용자 메시지의 사고만 남기고 싶다면 False로 끄면 됩니다.

Qwen 팀이 덧붙인 주의사항 하나는 반직관적입니다. "멀티턴 에이전틱 작업에서 추론 강도를 낮춘다고 전체 작업 완료 시간이 항상 줄지는 않습니다" 라는 것으로, 턴별 응답은 빨라지지만 분석이 부족해 실패와 재시도가 늘어나면 총 지연 시간과 토큰 소비가 오히려 커질 수 있다는 이야기입니다.

권장 샘플링 파라미터는 모드에 따라 다릅니다.

모드 temperature top_p top_k presence_penalty
사고 모드 1.0 0.95 20 0.0
Instruct (비사고) 모드 0.7 0.80 20 1.5

반복이 끝나지 않는 증상이 보이면 지원하는 프레임워크에서 presence_penalty를 0에서 2 사이로 조정할 수 있습니다. 다만 값을 높이면 간혹 언어가 섞이고 성능이 조금 떨어질 수 있습니다.

에이전틱 작업에서는 출력 길이를 넉넉히 잡을 것을 권합니다. 100만 컨텍스트 안에서 추론 내용은 최대 262,144 토큰, 최종 응답은 최대 131,072 토큰을 권장 설정으로 제시합니다.

100만 토큰까지 늘리기

네이티브 지원은 262,144 토큰이고, 그 이상은 YaRN으로 확장합니다. config.jsontext_configrope_parameters를 다음과 같이 바꾸거나 실행 인자로 넘기면 됩니다.

{
    "mrope_interleaved": true,
    "mrope_section": [11, 11, 10],
    "rope_type": "yarn",
    "rope_theta": 10000000,
    "partial_rotary_factor": 0.25,
    "factor": 4.0,
    "original_max_position_embeddings": 262144
}

주의할 점은 주요 오픈소스 프레임워크가 모두 정적 YaRN 을 구현한다는 것입니다. 스케일링 계수가 입력 길이와 무관하게 고정되므로 짧은 텍스트 성능이 나빠질 수 있습니다. 긴 문맥 처리가 실제로 필요할 때만 켜고, factor도 실사용 길이에 맞춰 조정하는 편이 좋습니다. 예를 들어 통상 524,288 토큰을 다룬다면 factor는 4.0이 아니라 2.0이 적절합니다.

시간 단위 영상을 다룰 때

이 모델은 LVBench에서 76.6을 기록할 만큼 장편 영상 이해가 강점인데, 기본 설정 그대로는 그 성능이 다 나오지 않습니다. 공개된 video_preprocessor_config.jsonsize 파라미터가 텍스트와 이미지 추론 효율을 위해 보수적으로 잡혀 있기 때문입니다. 시간 단위 길이의 영상을 더 높은 프레임 레이트로 샘플링하려면 longest_edge 를 469,762,048(영상 토큰 22만 4천 개에 해당)로 올리기를 권합니다.

{"longest_edge": 469762048, "shortest_edge": 4096}

엔진 시작 파라미터로 덮어쓸 수도 있으며, 구현 세부는 vLLM PR #34330SGLang PR #18467을 참고하면 됩니다.

에이전트 도구와의 연동

Qwen API가 Anthropic API 프로토콜과 OpenAI Responses 프로토콜을 모두 지원하기 때문에, 기존 코딩 에이전트에 모델만 갈아 끼우는 방식이 가능합니다. Claude Code라면 환경 변수 네 개로 끝납니다.

export ANTHROPIC_MODEL="qwen3.8-flash"
export ANTHROPIC_SMALL_FAST_MODEL="qwen3.8-flash"
export ANTHROPIC_BASE_URL=https://dashscope-intl.aliyuncs.com/apps/anthropic
export ANTHROPIC_AUTH_TOKEN=<your_api_key>

이 밖에 Qwen Code, Qoder CLI, OpenClaw, Codex 연동 방법이 원문 블로그에 정리되어 있습니다.

:pytorch::kr:Qwen Code에 대해서는 다음 게시물을 참고해주세요:

한편 알리바바의 AI 업무 플랫폼 QwenWork는 새로 출시하는 "Standard" 모드의 구동 모델로 Qwen3.8-Flash-Next를 채택했습니다. 다만 원문 블로그의 해당 절 제목은 아직 "Coming Soon" 으로 표기되어 있어, 실제 사용 가능 시점은 QwenWork 공식 문서를 확인하는 편이 좋습니다.

라이선스

Qwen3.8-Flash-Next의 가중치는 Qwen Community License 1.0으로 배포됩니다. MIT에 가까운 넓은 허용 범위를 갖지만, 도입 전에 확인해야 할 조건이 두 가지 있습니다.

첫째, 월간 활성 사용자 1억 명 또는 월 매출 2천만 달러를 넘는 상용 제품이나 서비스에 사용하는 경우 해당 제품의 사용자 인터페이스에 모델명을 눈에 띄게 표시해야 합니다. 둘째, Model as a Service 또는 AI Work Assistant 사업 을 하는 경우에는 상업적 사용 전에 Qwen으로부터 별도 라이선스를 받아야 합니다. 여기서 Model as a Service는 제3자가 입력과 파라미터, 학습 데이터를 실질적으로 제어할 수 있는 형태로 추론이나 파인튜닝을 제공하는 것을 뜻하고, AI Work Assistant는 코딩 보조나 오피스 생산성을 주목적으로 하는 독립 제품(Qoder와 QwenWork 같은)을 가리킵니다. 단일 목적 AI 도구나 코딩 및 오피스 이외 도메인을 주목적으로 하는 AI 어시스턴트, 그리고 AI가 주된 목적이 아닌 제품의 한 기능으로 들어가는 AI 어시스턴트는 여기서 제외됩니다. 사내 내부 사용도 모델과 그 출력, 기반 능력을 제3자에게 제공하지 않는 한 예외입니다.

앞서 소개한 커널 라이브러리 FlashQLA는 별개로 MIT 라이선스이므로 이런 제약을 받지 않습니다.

정리하며

Qwen3.8-Flash-Next가 흥미로운 이유는 새로운 컴포넌트 네 개를 소개했기 때문이 아니라, 그 컴포넌트들을 고르는 과정이 문서로 남았기 때문입니다. 보고서의 결론부는 아키텍처와 효율, 최적화가 하나의 결합된 시스템이라는 관점을 강조합니다. 게이티드 잔차가 공급하는 재스케일링이 학습 안정성을 높이고, 그렇게 생긴 안정성 마진이 최적 학습률과 배치 크기를 위로 밀어 올려 처리량과 수렴 속도를 함께 개선합니다. 단계별 비용 회계가 희소 어텐션 설계를 인덱서 쪽으로 이끌었고, 게이티드 잔차의 표현력을 읽기 쪽에 집중시켰습니다.

그리고 어느 한 축을 검증 고리에서 빼면 무해해 보이는 지름길이 하나씩 들어옵니다. 사후학습 이후에 무너지는 희소 쓰기, 사전학습 중에는 없어도 되는 것처럼 보이는 위치 인코딩, 아무 이득 없이 옵티마이저 스텝만 18.8% 늘리는 배치 크기 워밍업이 그 목록입니다. 세 가지 모두 손실 곡선만 봤다면 통과했을 변경입니다. 보고서가 스스로 밝히는 다음 병목도 같은 맥락에 있습니다. 사후학습 이후의 순위를 믿을 만하게 예측하는 저렴한 중간 규모 프로브가 있다면 설계 공간을 훨씬 넓게 탐색할 수 있을 것이라는 이야기입니다.

Qwen4가 이 토대 위에 어떻게 올라갈지는 아직 공개되지 않았지만, 가중치와 기술 보고서가 함께 열려 있으므로 토대 자체는 지금 검증해 볼 수 있습니다.

:scroll: Qwen3.8-Flash-Next 소개 블로그

:page_facing_up: On the Design of Qwen3.8-Next Architecture 기술 보고서

:github: Qwen3.8-Flash-Next GitHub 저장소

:hugs: Qwen3.8-Flash-Next 모델 가중치

:github: FlashQLA GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 초안을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 댓글로 알려주시기를 부탁드립니다. :hugs:

이 글이 유용하셨다면 아래:down_right_arrow:쪽 좋아요:+1:를 눌러주세요. :pytorch:파이토치 한국 사용자 모임:south_korea:이 새로운 소식을 정리하고 공유하는 데 힘이 됩니다! :star_struck:

1개의 좋아요

Qwen과 glm이 한번에...