Qwen/Qwen3-4B-Instruct-2507
Run locally on Apple devices with Mirai
- Type
- local
- From
- Alibaba
- Quantization
- No
- Parameters
- 4B
- Size
- 7.5 GB
Qwen3-4B-Instruct-2507 is an updated instruct-tuned language model from the Qwen team, delivering a significant leap in capability over its predecessor within the same compact 4-billion-parameter footprint. It operates exclusively in non-thinking mode — generating direct, efficient responses without intermediate reasoning blocks.

Architecture & Specs
- Parameters: 4.0B total (3.6B non-embedding)
- Architecture: Causal language model with 36 layers, GQA (32 query heads, 8 KV heads)
- Context Length: 262,144 tokens natively
- Training: Full pretraining followed by post-training alignment
Key Improvements
This release brings substantial upgrades across the board compared to the original Qwen3-4B non-thinking variant:
- Reasoning & Math: Dramatic jumps on competition-level benchmarks — AIME25 scores rise from 19.1 to 47.4, and ZebraLogic from 35.2 to 80.2.
- Knowledge: Near-parity with much larger models on MMLU-Pro (69.6) and GPQA (62.0), rivaling Qwen3-30B-A3B.
- Coding: Improved performance on LiveCodeBench and MultiPL-E, outperforming GPT-4.1-nano across most coding tasks.
- Alignment & Creative Writing: Markedly stronger on subjective tasks — Arena-Hard v2 jumps from 9.5 to 43.4, and WritingBench from 68.5 to 83.4.
- Agentic Use: Strong tool-calling results on BFCL-v3 and TAU benchmarks, with native support for MCP-based agent workflows via Qwen-Agent.
- Multilingual Coverage: Enhanced long-tail knowledge across multiple languages, with notable gains on PolyMATH (31.1, up from 16.6).
Use Cases
Ideal for resource-constrained deployments needing strong general-purpose performance — instruction following, code generation, long-document understanding, multilingual tasks, and agentic tool use. Compatible with HuggingFace Transformers, vLLM, SGLang, Ollama, LMStudio, and llama.cpp.
Released under the Apache 2.0 license.
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-4B-Instruct-2507") 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 | } |