Qwen/Qwen3-32B
Run locally on Apple devices with Mirai
- Type
- local
- From
- Alibaba
- Quantization
- No
- Parameters
- 32B
- Size
- 61.0 GB
Qwen3-32B is a 32.8-billion-parameter dense causal language model from Alibaba's Qwen team, representing the latest generation in the Qwen series. It introduces a distinctive dual-mode architecture that seamlessly switches between thinking mode — for complex reasoning tasks like math, coding, and logic — and non-thinking mode — for fast, general-purpose dialogue — all within a single model.
Architecture & Specifications
- Parameters: 32.8B total (31.2B non-embedding)
- Layers: 64
- Attention: Grouped-Query Attention (GQA) with 64 query heads and 8 key-value heads
- Context Length: 32,768 tokens natively; up to 131,072 tokens via YaRN RoPE scaling
- Training: Full pretraining and post-training pipeline
- License: Apache 2.0
Key Capabilities
Hybrid Reasoning: In thinking mode, the model generates chain-of-thought reasoning wrapped in `<think>...</think>` blocks before producing a final response, delivering performance that surpasses the earlier QwQ model. Users can toggle thinking on or off per turn using `/think` and `/no_think` commands, or disable it entirely at the API level.
Agent & Tool Use: Qwen3-32B excels at agentic workflows, with precise tool-calling capabilities in both thinking and non-thinking modes. It integrates well with the Qwen-Agent framework, supporting MCP configuration and built-in tools out of the box.
Multilingual Breadth: The model supports over 100 languages and dialects, with strong multilingual instruction-following and translation capabilities.
Human Preference Alignment: Notable improvements in creative writing, role-playing, multi-turn dialogue, and instruction following make it well-suited for natural, engaging conversational experiences.
Deployment
Qwen3-32B is compatible with Hugging Face Transformers (v4.51.0+), vLLM, SGLang, Ollama, LM Studio, llama.cpp, and other popular inference frameworks. OpenAI-compatible API endpoints can be created via SGLang or vLLM with built-in reasoning parser support.
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-32B") 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 | } |