Qwen3.8-Flash-Next
Qwen3.8-Flash-Next
Qwen3.8-Flash-Next는 Qwen4가 구축되는 아키텍처의 조기 프리뷰로 공개된 멀티모달 Mixture-of-Experts 모델이에요 — Qwen3.5에서 이어진 Qwen3-Next, 그리고 Qwen3.5, Qwen3.6, Qwen3.7, Qwen3.8 시리즈 전체를 관통한 하이브리드 Gated DeltaNet + Gated Attention 설계와 같은 역할을 해요. Qwen은 커뮤니티가 아키텍처를 독립적으로 평가할 수 있도록 정식 Qwen4 제품군에 앞서 아키텍처 변경을 공개하고 있어요.
총 176B 파라미터 — 그중 51B는 N-gram 임베딩 테이블 — 그리고 토큰당 6B 활성 파라미터를 갖고 있어요. Qwen3.7-Plus에 비해 학습과 추론 비용을 크게 줄이고(학습은 대략 1/9 수준), 전반적 품질은 비슷하게 유지해요. 텍스트와 이미지를 입력받으며, 호스팅된 프로덕션 변형은 QwenCloud에서 qwen3.8-flash로 서빙돼요.
출처: 문서
본문
1. 모델 소개
업그레이드는 네 축에 걸쳐 있어요:
- 어텐션 — GDN + QSA 하이브리드. 네 레이어 중 세 개는 Gated DeltaNet을 사용하는데, 이는 히스토리를 고정 크기 순환 상태로 압축해요. 네 번째는 Qwen Sparse Attention (QSA) 을 실행하는 글로벌 어텐션이에요. 가벼운 인덱서가 시퀀스를 마이크로-블록으로 집계하고, 블록 수준에서 중요도를 점수화하며, 관련 영역을 선택해요 — 그래서 인덱싱 오버헤드가 어텐션 자체와 함께 줄어들어요. 인덱스를 레이어에 걸쳐 재사용하는 접근과 달리, QSA는 레이어마다 독립적으로 압축해서 GDN과 어텐션을 인터리브하는 아키텍처에 잘 맞아요. Qwen은 1M 토큰에서 QSA 어텐션 커널의 prefill 최대 10.2배, decode 6.6배 속도 향상을 측정했어요.
- 잔차 — Gated Residual (GR). 단일 잔차 스트림이 네 개의 병렬 브랜치로 넓어지고, 원소별 동적 게이트가 각 레이어가 각 브랜치에서 읽고 쓰는 양을 제어해요. Qwen은 한 브랜치가 자연스럽게 장거리 버스가 된다고 보고해요. 게이트는 또한 활성화 이상값을 억제하며, 잔차 상태는 FP8로 유지될 수 있어요.
- 임베딩 — N-gram Embedding. 단일 토큰이 아니라 로컬 컨텍스트(현재 토큰 + 몇 개 앞선 토큰)를 키로 하는 룩업으로, 거의 추가 토큰당 계산 없이 51B 파라미터를 더해요. 룩업 주소를 미리 알 수 있기 때문에 테이블은 호스트 메모리에 살면서 모델 계산과 함께 비동기로 프리페치될 수 있어요. 최종 모델은 네트워크 시작 근처에서 단일 레이어를 사용해요.
- 최적화 — Muon. 진짜 2-D 선형 맵(어텐션, GDN, MoE expert 가중치)에는 Muon을, 임베딩, MoE 라우터, GR의 저랭크 파라미터에는 AdamW를 사용하고, fused QKV / SwiGLU / GDN 프로젝션을 직교화 전에 분할해요. 스케일링 법칙은 새 아키텍처에 맞게 재조정됐고 배치-사이즈 워밍업은 제거됐어요 — 18.8% 더 많은 옵티마이저 스텝을 쓰면서 결과는 개선되지 않았기 때문이에요.
Qwen3-Next에서 이어져 Qwen3.5–Qwen3.8 시리즈를 거쳐 정제된 것: 초희소 MoE(큰 expert 풀, 토큰당 몇 개의 라우팅된 expert + 하나의 공유 expert)와 전역 로드 밸런싱; 자기 어텐션 레이어도 QSA인 멀티-스텝 학습된 MTP 모듈(그래서 실제로 추측 수용률이 높게 유지돼요); 그리고 영점 중심 RMSNorm과 norm 가중치의 weight decay, 어텐션 출력 게이팅, 정규화된 MoE 라우터 초기화의 학습-안정성 집합.
컨텍스트 길이: 네이티브 262,144, YaRN으로 1,000,000 토큰까지 확장 가능. 라이선스: 모델 카드의 LICENSE 참조.
권장 생성: Qwen은 이 프리뷰에 대한 샘플링 권장사항을 게시하지 않았어요. SGLang은 체크포인트 자체의 generation_config.json을 적용하므로, 측정된 이유가 없는 한 temperature / top_p를 설정하지 않은 채 두세요.
각 정밀도는 별도 저장소예요:
| Precision | Repository | Where it runs |
|---|---|---|
| BF16 | Qwen/Qwen3.8-Flash-Next | H200, B200, B300, GB300, MI350X, MI355X |
| FP8 | Qwen/Qwen3.8-Flash-Next-FP8 | H200, B200, B300, GB300, MI350X, MI355X |
| NVFP4 (RDXA) | RadixArk/Qwen3.8-Flash-Next-NVFP4 | B200, B300, GB300, RTX PRO 6000, 1x or 2x DGX Spark (Blackwell only) |
| NVFP4 (NVDA) | nvidia/Qwen3.8-Flash-Next-NVFP4 (ModelOpt MIXED_PRECISION) | RTX PRO 6000, 1x or 2x DGX Spark (needs #38121: the dev-qwen38-next-local image or the Python install path) |
리소스: Qwen의 발표.
2. 고급 사용
Note: 아래 예제의
model인자는 BF16 repo id예요. 각 정밀도는 별도 repo이므로,model은 서버가 실제로 띄운 체크포인트여야 해요 —…-Flash-Next-FP8또는…-Flash-Next-NVFP4. Deploy 패널의 cURL 스니펫은 선택한 셀에 맞는 올바른 id를 항상 보여줘요.
2.1 추론
Qwen3.8-Flash-Next는 항상 추론하며, thinking을 끌 수 없어요. --reasoning-parser auto(위 Playground의 Parsers 카드에서 Reasoning Parser 토글)를 사용하면 SGLang이 체크포인트의 chat template에서 일치하는 파서를 고르고, thinking을 reasoning_content로 분리해 content는 답변만 남겨요. 나중에 명시적으로 고정하고 싶다면 해결된 이름이 시작 시 로그로 기록돼요.
깊이는 reasoning_effort로 요청해요. Qwen은 호스팅 모델에 대해 xhigh(기본값), medium, low를 문서화해요. SGLang은 무엇을 전달하든 체크포인트의 chat template으로 전달해요.
추론 예제 (Python)
from openai import OpenAI
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")
resp = client.chat.completions.create(
model="Qwen/Qwen3.8-Flash-Next",
messages=[{"role": "user", "content": "What is 15% of 240?"}],
reasoning_effort="xhigh", # xhigh (default) | medium | low
)
msg = resp.choices[0].message
print("Reasoning:", getattr(msg, "reasoning_content", None))
print("Answer:", msg.content)
예제 출력
Pending update — a sample transcript will be added here once the weights are public.
2.2 툴 호출
--tool-call-parser auto(위 Playground의 Parsers 카드에서 Tool Call Parser 토글)를 추가해 message.tool_calls를 통해 구조화된 툴 호출을 노출하세요. reasoning 파서와 마찬가지로 SGLang은 시작 시 chat template에서 구체적 검출기를 해결해요. 어떤 Deploy 셀도 이를 설정하지 않으므로 이는 옵트인(opt-in)이에요: 생성된 명령에 플래그를 추가하거나 Playground에서 칩을 켜세요.
이 모델은 항상 생각하므로, 마지막 assistant 턴은 content가 아니라 reasoning_content에 텍스트를 넣을 수 있어요 — 둘 다 출력해 빈 None이 당신을 오도하지 않게 하세요.
툴 호출 예제 (Python)
from openai import OpenAI
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city name"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
},
}
]
resp = client.chat.completions.create(
model="Qwen/Qwen3.8-Flash-Next",
messages=[{"role": "user", "content": "What's the weather in Beijing?"}],
tools=tools,
)
msg = resp.choices[0].message
print("Reasoning:", getattr(msg, "reasoning_content", None))
print("Content:", msg.content)
print("Tool calls:", msg.tool_calls)
예제 출력
Pending update — a sample transcript will be added here once the weights are public.