Alibaba

Qwen 3.5 4B

Hugging Facetrymirai/Qwen3.5-4B-M
Vendor
Alibaba
Quantization
Mirai-M
Parameters
4B
Size
2.3 GB
$ brew install mirai$ mirai --model trymirai/Qwen3.5-4B-M

Benchmarks

160 tok/s

higher is better

4007 tok/s

higher is better

2.77 GB

lower is better

Mirai Quantization

0.010.030.102.02.22.42.72.93.1Language-model checkpoint size (GB)KL divergence (log scale)MiraiUnsloth / Llama.cppMLXMTPLXGoodMLX 4bitQ3_K_SQ3_K_MUD-Q3_K_XLIQ4_XSIQ4_NLQ4_0Q4_K_SQ4_K_MQ5_K_SMTPLX-Optimized-SpeedMirai • M

Integrate with SDK

1
Choose framework
2
Run the following command to install Mirai SDK
https://github.com/trymirai/uzu
3
Apply code
1import Foundation2import Uzu34public func runChat() async throws {5    let engineConfig = EngineConfig.create()6    let engine = try await Engine.create(config: engineConfig)7    8    guard let model = try await engine.model(identifier: "trymirai/Qwen3.5-4B-M") else {9        return10    }11    for try await update in try await engine.download(model: model).iterator() {12        print(String(format: "\r\u{001B}[2KDownload progress: %.2f%%", update.progress() * 100), terminator: "")13        fflush(stdout)14    }15    print()16    17    let messages = [18        ChatMessage.system().withText(text: "You are a helpful assistant"),19        ChatMessage.user().withText(text: "Tell me a short, funny story about a robot")20    ]21    let session = try await engine.chat(model: model, config: .create())22    let stream = await session.replyWithStream(input: messages, config: .create())23    var message: ChatMessage? = nil24    for try await update in stream.iterator() {25        switch update {26        case .replies(let replies):27            let reply = replies.last28            message = reply?.message29            print("Generated tokens: \(reply?.stats.tokensCountOutput ?? 0)")30        case .error(let error):31            print("Error: \(error)")32        }33    }34    print("Reasoning: \(message?.reasoning() ?? "empty")")35    print("Text: \(message?.text() ?? "empty")")36}37

Details

KL divergence versus language-model checkpoint size

Mirai-M is on the size-KL Pareto frontier: we found no checkpoint that is smaller while also having lower KL divergence.

Evaluation data mixture: 45% public agentic, 30% public SFT/long-context, 25% private chat data.

Quickstart

If you are on macOS, the easiest way is to install the `mirai` Homebrew package and then run the CLI:

sh
brew install mirai
mirai --model trymirai/Qwen3.5-4B-M

Currently only Apple silicon inference is supported. If you want to build things from source, read this overview.


Method

Mirai Medium uses 4-bit asymmetric integer quantization with 4-bit zero points, bfloat16 scales, and group size 32. Block-diagonal Random Hadamard Transforms are used to reduce activation and weight outliers. The checkpoint was prepared with post-training quantization followed by quantization-aware distillation.

Citation

If you find our work helpful, feel free to give us a cite.

bibtex
@misc{mirai-quant,
    title  = {{Mirai Quantization}: Redefining the speed-quality frontier for local LLMs on Apple silicon},
    author = {Artur Chakhvadze and Ryan Mathieu and Roman Knyazhitskiy and Nikolai Voinilenko and Chen-Chen Yeh and Artur Mullakhmetov and Eugene Bokhan and others},
    note   = {In collaboration with others at Mirai Labs},
    month  = {June},
    year   = {2026},
    url    = {https://trymirai.com/blog/quantization}
}

Original model

This is a quantized version of Qwen/Qwen3.5-4B. For architecture details, intended use, evaluations, and limitations, see the original model card.

Explore all local models