Model summary
Table with columns: Qwen3-0.6B (dense), This model | Qwen3-0.6B (dense) | This model |
|---|
| Architecture | Qwen3ForCausalLM | Qwen3MoeForCausalLM |
| Layers / hidden size / heads (q, kv) | 28 / 1024 / 16, 8 | same |
| MLP per layer | 1 x 3072 | 32 experts x 96, top-16, norm_topk_prob |
| Total parameters | 596.0M | 597.0M (+0.9M router weights) |
| Active parameters per token | 596.0M | 464.9M (309.3M excluding embeddings) |
| Active MLP compute | 100% | 50% |
| Context length used in training / eval | | 512 / 1024 tokens |
Attention, embeddings, norms and the (tied) LM head are the original Qwen3-0.6B weights, unchanged. The same 3072 MLP
neurons per layer are regrouped into the 32 experts, so the total parameter count barely changes; the saving is in
compute per token.
Evaluation
Perplexity: wikitext-2 test (1024-token chunks) and 64 x 1024 tokens of C4 validation. Tasks: zero-shot acc_norm,
1000 items per task (500 for OpenBookQA), scored with this project's own harness by per-character normalised
log-likelihood. These are not lm-evaluation-harness numbers, so compare them only with each other.
Table with columns: Qwen3-0.6B (dense), This model | Qwen3-0.6B (dense) | This model |
|---|
| Wikitext-2 ppl ↓ | 23.88 | 26.98 (+13.0%) |
| C4 ppl ↓ | 31.63 | 36.32 (+14.8%) |
| HellaSwag | 0.480 | 0.458 |
| ARC-Easy | 0.578 | 0.503 |
| ARC-Challenge | 0.339 | 0.283 |
| WinoGrande | 0.571 | 0.558 |
| OpenBookQA | 0.308 | 0.322 |
| Task mean | 0.455 | 0.425 |
On the tasks it keeps about 81% of the dense model's above-chance accuracy. The exported model reproduces the
converted checkpoint (wikitext-2 26.978 vs 26.985). The bf16 GGUF matches transformers to within 0.08%; Q4_K_M
adds +4.1% perplexity (the dense Qwen3-0.6B loses 7.9% at Q4_K_M).
Chat format works: on short chat exchanges it predicts the <|im_end|> that ends its turn with probability 0.75
(dense: 0.79) and the empty <think></think> block of non-thinking mode as the dense model does, and it ends its
turn by itself in greedy generation.
Sample outputs
Greedy decoding, same prompts for both models; chat with enable_thinking=False. Picked to show both what works and
what doesn't.
Chat: "What is the capital of Australia?"
Table with columns: Qwen3-0.6B (dense), This model| Qwen3-0.6B (dense) | This model |
|---|
| The capital of Australia is Canberra. | The capital of Australia is Canberra. |
Chat: "What is 15% of 240?"
Table with columns: Qwen3-0.6B (dense), This model| Qwen3-0.6B (dense) | This model |
|---|
| Converts 15% to 0.15, multiplies, and concludes: So, 15% of 240 is 36. | 15% of 240 is 36. |
Chat: "Give me three tips for sleeping better."
Table with columns: Qwen3-0.6B (dense), This model| Qwen3-0.6B (dense) | This model |
|---|
| 1. Avoid screens before bed … 2. Create a relaxing bedtime routine … 3. Limit caffeine and alcohol … | 1. Immerse yourself in a relaxing environment – Try a warm bath … 2. Limit screen time before bed – Avoid devices that emit blue light … 3. Create a consistent bedtime routine – Establish a regular sleep schedule … |
Chat: "Who painted the Mona Lisa, and when?"
Table with columns: Qwen3-0.6B (dense), This model| Qwen3-0.6B (dense) | This model |
|---|
| The Mona Lisa is a famous painting by Leonardo da Vinci, and it was painted between 1503 and 1506. | The Mona Lisa was painted by Leonardo da Vinci in 1519. (wrong year) |
Chat: "Explain why the sky is blue in two sentences."
Table with columns: Qwen3-0.6B (dense), This model| Qwen3-0.6B (dense) | This model |
|---|
| The sky appears blue because of the way light interacts with the Earth's atmosphere. Short wavelengths of light, such as blue, are scattered more efficiently by the atmosphere than longer wavelengths like red or orange, making the sky appear predominantly blue. | The sky is blue because it contains a mixture of various colors, primarily blue, which is the result of the combination of different pigments in the atmosphere. (wrong) |
Completion: "Once upon a time, in a small village by the sea,"
Table with columns: Qwen3-0.6B (dense), This model| Qwen3-0.6B (dense) | This model |
|---|
| there was a young girl named Lila. She was known for her kindness and her ability to help others. One day, she decided to start a small business that helped the poor and the elderly. … | there was a boy named Sam who loved to play with a small toy boat. The boat was made of a special material, and it could float on water. The village was on the edge of a lagoon … |
Completion: Python
def fibonacci(n): """Return the n-th Fibonacci number."""
Qwen3-0.6B (dense):
if n == 0: return 0 elif n == 1: return 1 else: return fibonacci(n-1) + fibonacci(n-2)
This model:
for n in range(n - 1, n + 1): return n - 1 + 1 return n
In short: fluent text and chat formatting close to the dense model, and common facts and simple arithmetic usually
right. Specific facts (dates, mechanisms) are often confidently wrong, and code is broken; the distillation data was
educational web text with almost no code.
Usage
from transformers import AutoModelForCausalLM, AutoTokenizer repo = "bayliner1980/Qwen3-0.6B-MoE-A0.5B"tok = AutoTokenizer.from_pretrained(repo)model = AutoModelForCausalLM.from_pretrained(repo, dtype="bfloat16", device_map="auto") messages = [{"role": "user", "content": "Write one sentence about the sea."}]ids = tok.apply_chat_template(messages, add_generation_prompt=True, enable_thinking=False, return_tensors="pt", return_dict=True).to(model.device)out = model.generate(**ids, max_new_tokens=128, do_sample=True, temperature=0.7, top_p=0.8)print(tok.decode(out[0, ids["input_ids"].shape[1]:], skip_special_tokens=True))
It was exported and tested with transformers 5.5.0. The config stores the expert count as num_local_experts;
older transformers versions expect num_experts and will not load it correctly. Use it with thinking off
(enable_thinking=False); thinking mode was never trained after conversion.
Limitations
- Quality: it is worse than Qwen3-0.6B: +13% wikitext-2 and +15% C4 perplexity, and 0.425 vs 0.455 task
accuracy. Reasoning-style multiple choice (ARC) suffers most.
- Facts in free generation are unreliable. Asked for the largest planet or the boiling point of water, it
answered fluently and wrongly (Mars; 212.214°F) where the dense model is right. The chat repair taught the format,
not knowledge. Do not rely on it for facts.
- Code generation is broken (see the Fibonacci sample above): the distillation data contained almost no code,
so the conversion's damage to it was never repaired.
- Thinking mode is untested and likely broken; use
enable_thinking=False.
- Little speed-up. At 0.6B, attention and the 156M-parameter embedding / LM head dominate the work per token, and
top-16 activates half of the MLP. In llama.cpp (Q4_K_M, RTX 4060), token generation is 7% slower than dense on
GPU and 8% faster on CPU; prompt processing is slower on both. See the GGUF repository for the numbers.
- Context: trained and evaluated at 512–1024 tokens. Longer contexts use the unchanged Qwen3 attention, but the
MoE layers were never checked there.
- Evaluated on English only, with a small in-house task harness (see above).
Support
If you find this work useful or interesting, any contribution helps.

License
Apache 2.0, the same as the base model Qwen/Qwen3-0.6B.