Instructions to use mlboydaisuke/Qwen2.5-3B-Instruct-LiteRT with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LiteRT-LM
How to use mlboydaisuke/Qwen2.5-3B-Instruct-LiteRT with LiteRT-LM:
# LiteRT-LM runs on various platforms (Android, iOS, Windows, Linux, macOS, IoT, Web/WASM) # and supports many APIs (C++, Python, Kotlin, Swift, JavaScript, Flutter). # For platform-specific integration guides, please refer to the official developer website: # https://ai.google.dev/edge/litert-lm # To try LiteRT-LM, the easiest way is to use our CLI tool. # 1. Install the LiteRT-LM CLI tool: pip install -U litert-lm # 2. Download and run this model locally: # See: https://ai.google.dev/edge/litert-lm/cli litert-lm run \ --from-huggingface-repo=mlboydaisuke/Qwen2.5-3B-Instruct-LiteRT \ --prompt="Write me a poem"
- LiteRT
How to use mlboydaisuke/Qwen2.5-3B-Instruct-LiteRT with LiteRT:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
Qwen2.5-3B-Instruct β LiteRT-LM (GPTQ-calibrated int4, block 128)
Built with Qwen.
Qwen/Qwen2.5-3B-Instruct converted to the
LiteRT-LM (.litertlm) format for on-device inference with Google's
LiteRT-LM runtime (the engine behind the
litert-community/* models).
What makes this build different: the int4 weights are not re-quantized from scratch β they carry
Qwen's official GPTQ calibration
(Qwen/Qwen2.5-3B-Instruct-GPTQ-Int4),
transported losslessly into the LiteRT bundle via ai-edge-quantizer's
dequantized_weight_recovery (blockwise support, nightly β₯ 0.8.0.dev20260703). You get
calibrated-int4 quality at block-128 speed, with no calibration step in the conversion.
| File | model.litertlm β int4 block 128 (~1.75 GB) |
| Quantization | int4 weights (symmetric, blockwise-128) on Qwen's official GPTQ grid; embeddings + lm_head INT8 |
| Compute | integer (dynamic int8 activations) |
| Context (KV cache) | 4096 |
| Base model | Qwen/Qwen2.5-3B-Instruct (36 layers, Qwen2ForCausalLM) |
| Decode speed | ~74 tok/s (Mac M-series, GPU) |
Quality β GSM8K parity
Measured on GSM8K (n=100, greedy, 0-shot chain-of-thought, max_tokens 512, identical prompt and answer-extraction for every row).
| Configuration | GSM8K |
|---|---|
| bf16 (reference) | 81.0% |
| Qwen official GPTQ-Int4, dequantized in PyTorch (n=50) | 82.0% |
| LiteRT int4 β block 128 (this file) | 75.0% (β6 pt vs bf16) |
The official GPTQ calibration itself is lossless on GSM8K (82.0 vs 81.0 = noise), so the β6 pt is the cost of the on-device execution format (integer compute), not of the 4-bit weights. The 8-question smoke gate reads 8/8 (arithmetic, factual, translation β all correct, terse clean answers, no degeneration).
Usage
# build litert-lm from https://github.com/google-ai-edge/litert-lm, then:
litert_lm_main \
--model_path model.litertlm \
--backend gpu \
--input_prompt "Natalia sold clips to 48 friends in April, and half as many in May. How many altogether?"
The .litertlm bundle carries the tokenizer and prompt template (Qwen2 ChatML β
<|im_start|>role\nβ¦<|im_end|>), so no separate tokenizer files are needed.
Run on Android
Update (July 2026): Google AI Edge Gallery v1.0.16+ can import litert-lm models directly from Hugging Face inside the app (tap +) β no computer or
adbneeded. The manual steps below are only required on older builds or for sideloading a local file.
The official Google AI Edge Gallery app runs
.litertlm models on-device:
- Install a recent Gallery (package
com.google.ai.edge.gallery, 1.0.15+ supports.litertlm). - Download
model.litertlmand push it:adb push model.litertlm /sdcard/Download/ - In the app tap +, pick the file, and choose the GPU backend.
- Chat β the bundle already carries the tokenizer and Qwen2 chat template.
Conversion β GPTQ grid pass-through
Converted with the official litert-torch
converter. Instead of a data-free int4 recipe, the quantization stage uses
ai-edge-quantizer's dequantized_weight_recovery algorithm (blockwise support landed
2026-06-11, nightly-only at the time of conversion): the official GPTQ checkpoint is dequantized to
fp32 (exact β fp16 scale Γ int4 is exactly representable in fp32), and recovery re-derives the
per-block scales bit-exactly, so the deployed int4 grid is Qwen's calibrated grid.
[
{"regex": ".*", "operation": "*",
"algorithm_key": "dequantized_weight_recovery",
"op_config": {"weight_tensor_config": {"num_bits": 4, "symmetric": true,
"granularity": "BLOCKWISE_128", "dtype": "INT"},
"compute_precision": "INTEGER"}},
{"regex": ".*", "operation": "EMBEDDING_LOOKUP",
"algorithm_key": "min_max_uniform_quantize",
"op_config": {"weight_tensor_config": {"num_bits": 8, "symmetric": true,
"granularity": "CHANNELWISE", "dtype": "INT"}}},
{"regex": ".*(logits_output|Linear_lm_head).*", "operation": "FULLY_CONNECTED",
"algorithm_key": "min_max_uniform_quantize",
"op_config": {"weight_tensor_config": {"num_bits": 8, "symmetric": true,
"granularity": "CHANNELWISE", "dtype": "INT"}}}
]
(The embedding / tied lm_head is not GPTQ-quantized upstream, so it goes to INT8. KV cache 4096.)
2026-08-29 β default system prompt restored (weights unchanged)
The upstream chat template emits a default system turn whenever the caller sends no system message β for this model: You are Qwen, created by Alibaba Cloud. You are a helpful assistant.. The converter's template probe renders the template with a system message already present, so that block was never seen and never reached the bundle: with no system message the model was running without the default system turn it was tuned with. The chat template in model.litertlm now emits the block exactly once when no system message is given. In model.litertlm, the block is not emitted when you pass a system message. The restored block adds 21 prefill tokens to a conversation that sends no system message, so time-to-first-token grows by that much; per-token speed is unchanged.
Metadata-only change: every section of the bundle except the LlmMetadata block is byte-identical to the previous file (verified by sha256 per section), so the weights, the graph and the tokenizer are unchanged and the speed and memory numbers on this card still describe exactly this file per token β only the file's own sha256 differs. What changed is the input: with no system message, the prompt now renders byte-identical to the upstream chat template's output, verified on the LiteRT-LM runtime. A system message you pass yourself renders as before. Greedy decoding can turn on a single token, so an individual answer can differ from the previous file. Unless a row says otherwise, the accuracy figures on this card were measured on the previous file and have not been re-measured on this one. If you downloaded before 2026-08-29, re-download.
License
Qwen Research License (see LICENSE), inherited from the base model
Qwen/Qwen2.5-3B-Instruct. Non-commercial
(research/evaluation) use only β for commercial use, request a license from Alibaba Cloud.
This repository is a modified distribution of the Qwen materials: the model weights were
quantized (official GPTQ int4 grid, transported via dequantized_weight_recovery) and repackaged
into the LiteRT-LM .litertlm format as described in the Conversion section above. Attribution
notice is in NOTICE. Built with Qwen.
Want a different model on-device? Open a request β free, open weights only; the export and its measured numbers get published publicly.
- Downloads last month
- 451