Qwen4를 이야기할 때 "더 큰 모델"이라는 설명만 보면 중요한 변화가 잘 보이지 않습니다.
Hugging Face Transformers에 들어온 Qwen4-Exp를 보면 Qwen이 손대고 있는 지점은 세 군데입니다.
Attention
→ Qwen Sparse Attention (QSA)
Residual path
→ GatedResidual (GR)
Embedding
→ Per-Layer Embedding (PLE)
세 기술은 서로 다른 문제를 겨냥합니다.
- QSA: 긴 문맥에서 어디를 자세히 볼 것인가
- GR: 깊은 네트워크에서 정보를 어떻게 전달할 것인가
- PLE: 계산량을 크게 늘리지 않고 표현 용량을 어떻게 키울 것인가
Qwen4가 아직 학습 중인 만큼 최종 제품 구조와 완전히 같다고 단정하면 안 됩니다. 하지만 Qwen이 다음 세대에서 무엇을 최적화하려는지는 꽤 선명하게 보입니다.
1. QSA: 모든 토큰을 똑같이 보지 않는다
기본적인 Full Attention은 이전 토큰 전체를 직접 볼 수 있다는 장점이 있습니다.
하지만 문맥이 길어질수록 계산량과 KV Cache 접근 비용이 커집니다.
Qwen4-Exp의 QSA는 압축된 key block을 먼저 평가하고, 중요도가 높은 연속 token block만 선택해 attention을 수행합니다.
개념적으로 단순화하면:
1,000,000 tokens
↓
작은 block 단위로 압축
↓
중요도 계산
↓
관련성이 높은 block 선택
↓
선택 영역에 집중해서 Attention
입니다.
Qwen3.8-Flash-Next에서는 이 구조를 Gated DeltaNet과 섞습니다.
GDN
→ 오래된 정보를 효율적으로 압축해서 기억
QSA
→ 필요할 때 중요한 구간을 정밀하게 검색
Qwen이 공식 글에서 설명하는 방향도 거의 이 두 역할의 분업입니다.
2. GatedResidual: 정보가 지나가는 길 자체를 늘린다
Transformer의 residual connection을 아주 단순하게 보면 이런 흐름입니다.
x
↓
Layer
↓
x + Layer(x)
깊이가 늘어날수록 같은 residual stream에 정보가 계속 섞입니다.
GatedResidual은 하나였던 흐름을 여러 branch로 확장하고, 현재 입력에 따라 어느 branch에서 얼마나 읽고 얼마나 다시 쓸지를 gate로 조절합니다.
Qwen3.8-Flash-Next 공개 구현에서는 네 개의 residual branch를 사용합니다.
개념적으로는:
┌─ branch A ─┐
Input ───────┼─ branch B ─┼─→ next layer
├─ branch C ─┤
└─ branch D ─┘
↑
Gate
처럼 생각할 수 있습니다.
어떤 branch는 가까운 정보 흐름을 담당하고, 다른 branch는 초기 정보를 더 깊은 layer까지 보존하는 경로가 될 수 있습니다.
핵심은 "레이어를 더 많이 쌓는다"가 아니라 정보가 이동하는 통로를 더 유연하게 만든다는 점입니다.
3. PLE: 각 layer가 lexical memory를 더 가진다
Hugging Face의 Qwen4-Exp 문서에서 세 번째 핵심 요소는 Per-Layer Embedding(PLE)입니다.
PLE는 token n-gram에서 만든 lexical feature를 특정 decoder layer에 추가합니다.
예를 들어:
"machine learning system"
unigram
machine
learning
system
bigram
machine learning
learning system
trigram
machine learning system
처럼 주변 token 조합을 embedding lookup에 활용할 수 있습니다.
Qwen4-Exp에서는 hashed token n-gram과 dilated depthwise convolution을 조합해 layer별 lexical feature를 보강합니다.
여기서 흥미로운 점은 모델 용량을 늘리는 새로운 축이라는 것입니다.
큰 dense matrix 연산을 계속 추가하는 대신 lookup 기반 memory를 활용하면 파라미터를 늘리면서도 매 token의 행렬 곱 비용을 상대적으로 억제할 수 있습니다.
그런데 Qwen3.8-Flash-Next에는 PLE 대신 N-gram Embedding이 보입니다
여기서 현재 자료를 읽을 때 주의할 점이 있습니다.
Hugging Face의 Qwen4-Exp 문서는 핵심 요소로 PLE를 설명합니다.
반면 실제 공개 weights인 Qwen3.8-Flash-Next 공식 기술 글은 N-gram Embedding을 사용한다고 설명합니다.
이 모델은 51B 규모의 N-gram embedding parameter를 추가하고, lookup 대상은 미리 알 수 있으므로 host memory에 두고 비동기 prefetch할 수 있게 설계했습니다.
즉 현재는:
Qwen4-Exp implementation
→ PLE
Qwen3.8-Flash-Next released preview
→ single N-gram Embedding layer
처럼 구현이 완전히 동일하지 않습니다.
Qwen4 정식 모델은 아직 학습 중이므로 어느 구성이 최종 제품에 그대로 들어갈지는 공식 model card가 나온 뒤 확인해야 합니다.
이 차이를 무시하고 지금 공개된 모든 내용을 "Qwen4 최종 아키텍처"라고 부르면 과장하기 쉽습니다.
CodeBridge Mini Lab: weights를 받지 않고 config만 확인해보기
거대한 모델을 다운로드하지 않아도 architecture config를 먼저 확인할 수 있습니다.
최신 Transformers 환경에서 다음처럼 시도할 수 있습니다.
from transformers import AutoConfig
config = AutoConfig.from_pretrained(
"Qwen/Qwen3.8-Flash-Next"
)
text = config.text_config
print("model_type:", text.model_type)
print("layers:", text.num_hidden_layers)
print("residual streams:", getattr(text, "hc_count", None))
print("full attention interval:", getattr(text, "full_attention_interval", None))
print("qsa budget:", getattr(text, "indexer_budget", None))
여기서 중요한 것은 숫자를 외우는 것이 아닙니다.
모델 카드를 볼 때:
어떤 layer가 full/sparse/linear attention인가?
residual stream은 몇 개인가?
MoE expert는 몇 개가 활성화되는가?
embedding을 어디서 확장하는가?
를 읽는 습관을 만드는 것입니다.
모델 이름보다 architecture 변화가 훨씬 오래 남습니다.
왜 세 가지가 같이 바뀌고 있을까?
공통 목표는 하나로 묶을 수 있습니다.
모델을 더 크게 만들되 모든 token에 같은 비용을 지불하지 않는다.
QSA는 필요한 context만 정밀하게 봅니다.
GR은 깊은 네트워크의 정보 이동을 효율적으로 만듭니다.
PLE/N-gram embedding은 비교적 저렴한 lookup memory로 용량을 추가합니다.
MoE는 매 token마다 전체 expert를 계산하지 않습니다.
그래서 다음 세대 LLM 경쟁은 단순한 parameter race보다:
Capacity ↑
while
Compute / token ↔ 또는 ↓
Memory traffic ↓
Long-context cost ↓
라는 방향으로 보는 편이 더 정확합니다.
결론: Qwen4의 핵심은 '크기'보다 계산을 아끼는 구조입니다
Qwen4-Exp에서 흥미로운 점은 하나의 혁신적인 layer가 등장했다는 것보다 여러 병목을 동시에 손보고 있다는 점입니다.
긴 문맥은 QSA로 필요한 부분만 보고,
깊은 네트워크에서는 GR로 정보 흐름을 정리하고,
embedding은 별도의 memory 축으로 확장합니다.
정식 Qwen4가 공개되면 가장 먼저 볼 것은 "몇 B인가"보다:
이 세 가지 아이디어가 최종 모델에서 어떻게 조합됐는가?
일 것입니다.