Qwen/Qwen3-0.6B
Run locally on Apple devices with Mirai
- Type
- local
- From
- Alibaba
- Quantization
- No
- Parameters
- 600M
- Size
- 1.1 GB
Qwen3-0.6B is an ultra-compact causal language model from Alibaba's Qwen team, part of the third-generation Qwen series. Despite its small footprint — just 0.6 billion parameters (0.44B non-embedding) — it inherits several flagship capabilities from the broader Qwen3 family, making it a compelling option for resource-constrained environments.
Key Capabilities
The model's standout feature is its dual-mode reasoning system, allowing seamless switching between a *thinking mode* for complex logical reasoning, math, and code, and a *non-thinking mode* for efficient general-purpose dialogue. Users can toggle between modes at inference time — or even mid-conversation — using simple `/think` and `/no_think` commands, giving fine-grained control over the cost-quality tradeoff.
Beyond reasoning, Qwen3-0.6B offers:
- Agent and tool-calling support, with structured integration for external tools via frameworks like Qwen-Agent and MCP configurations.
- Multilingual coverage across 100+ languages and dialects, including strong instruction-following and translation performance.
- 32,768-token context length, generous for a model of this size.
Architecture
Built on a dense transformer architecture with 28 layers and grouped-query attention (16 Q heads, 8 KV heads), Qwen3-0.6B is derived from the Qwen3-0.6B-Base model through both pretraining and post-training stages. It is compatible with Hugging Face Transformers (v4.51.0+), as well as serving frameworks like vLLM and SGLang, and local tools such as Ollama, LMStudio, and llama.cpp.
Best For
This model is well-suited for edge deployment, on-device inference, and latency-sensitive applications where a full-scale LLM would be impractical. Its thinking/non-thinking toggle makes it especially versatile — able to handle both quick Q&A and multi-step problem solving within a single lightweight package.
Licensed under Apache 2.0.
spm https://github.com/trymirai/uzu.git
| 1 | import Uzu |
| 2 | |
| 3 | public func runChat() async throws { |
| 4 | let engineConfig = EngineConfig.create() |
| 5 | let engine = try await Engine.create(config: engineConfig) |
| 6 | |
| 7 | guard let model = try await engine.model(identifier: "Qwen/Qwen3-0.6B") else { |
| 8 | return |
| 9 | } |
| 10 | for try await update in try await engine.download(model: model).iterator() { |
| 11 | print("Download progress: \(update.progress())") |
| 12 | } |
| 13 | |
| 14 | let messages = [ |
| 15 | ChatMessage.system().withText(text: "You are a helpful assistant"), |
| 16 | ChatMessage.user().withText(text: "Tell me a short, funny story about a robot") |
| 17 | ] |
| 18 | let session = try await engine.chat(model: model, config: .create()) |
| 19 | let stream = await session.replyWithStream(input: messages, config: .create()) |
| 20 | var message: ChatMessage? = nil |
| 21 | for try await update in stream.iterator() { |
| 22 | switch update { |
| 23 | case .replies(let replies): |
| 24 | message = replies.last?.message |
| 25 | case .error(let error): |
| 26 | print("Error: \(error)") |
| 27 | } |
| 28 | } |
| 29 | print("Text: \(message?.text() ?? "empty")") |
| 30 | } |