Downloads · 30 days
27
7% of all-time downloads
LudwigBanach/Qwen3.5-0.8B-LiteRT
Qwen3.5-0.8B-LiteRT is a image-text-to-text model from LudwigBanach. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for litert-lm. The card lists the license as apache-2.0.
This repository contains a LiteRT (formerly TFLite) conversion of Qwen/Qwen3.5-0.8B for on-device inference, packaged in the LiteRT-LM .litertlm format. Includes the full multimodal pipeline: language model, vision en…
Downloads · 30 days
27
7% of all-time downloads
All-time downloads
390
Public
Repo size
25 GB
Likes
2
Public
Click a slice to open those files.
.litertlm1.2 GB · 50%
From the Hugging Face model README
This repository contains a LiteRT (formerly TFLite) conversion of Qwen/Qwen3.5-0.8B for on-device inference, packaged in the LiteRT-LM .litertlm format. Includes the full multimodal pipeline: language model, vision encoder, and vision adapter for image understanding.
| Property | Value |
|---|---|
| Base Model | Qwen/Qwen3.5-0.8B |
| Architecture | Hybrid attention (GatedDeltaNet + Full Attention) + ViT vision encoder |
| Parameters | 752M (language) + 675M (vision encoder) + 10M (vision adapter) |
| Quantization | Dynamic INT8 |
| KV Cache Length | 2048 |
| Prefill Signatures | 64, 128, 256, 512 |
| Vision Signatures | 256, 576, 1024, 2304 patches |
| Format | .litertlm (LiteRT-LM container) |
Qwen3.5-0.8B uses a hybrid attention architecture that combines:
The vision encoder is a 27-layer Vision Transformer (ViT):
The model was re-authored from scratch using the LiteRT Generative API. The vision encoder and adapter are exported as separate TFLite models bundled alongside the language model.
| File | Size | Description |
|---|---|---|
qwen35_mm_q8_ekv2048.litertlm | ~1.2 GB | LiteRT-LM bundle (LM + vision encoder + vision adapter + tokenizer) |
qwen35_mm_q8_ekv2048.tflite | ~757 MB | Language model TFLite |
qwen35_vision_encoder_q8.tflite | ~88 MB | Vision encoder TFLite |
qwen35_vision_adapter_q8.tflite | ~12 MB | Vision adapter TFLite |
qwen35_embedder_q8.tflite | ~245 MB | Text embedder TFLite |
tokenizer.json | ~11 MB | HuggingFace tokenizer |
tokenizer_config.json | ~2 KB | Tokenizer configuration |
| Signature | Input Length | Outputs |
|---|---|---|
prefill_64 | 64 tokens | Updated KV cache |
prefill_128 | 128 tokens | Updated KV cache |
prefill_256 | 256 tokens | Updated KV cache |
prefill_512 | 512 tokens | Updated KV cache |
decode | 1 token | Logits + Updated KV cache |
| Signature | Patches | Approx. Image Size |
|---|---|---|
encode_256 | 256 | 256×256 |
encode_576 | 576 | 384×384 |
encode_1024 | 1024 | 512×512 |
encode_2304 | 2304 | 768×768 |
| Signature | Merged Tokens | From Patches |
|---|---|---|
adapt_64 | 64 | 256 |
adapt_144 | 144 | 576 |
adapt_256 | 256 | 1024 |
adapt_576 | 576 | 2304 |
import numpy as np
from ai_edge_litert import interpreter as tfl_interpreter
# Load model
interp = tfl_interpreter.Interpreter(model_path="qwen35_mm_q8_ekv2048.tflite")
interp.allocate_tensors()
# Initialize KV cache (24 layers, mixed shapes)
kv_cache = {} # See inference_tflite.py for full initialization
# Prefill
prefill_runner = interp.get_signature_runner("prefill_64")
tokens = np.array([[...]], dtype=np.int32) # Padded to 64
input_pos = np.arange(64, dtype=np.int32)
output = prefill_runner(tokens=tokens, input_pos=input_pos, **kv_cache)
# Decode loop
decode_runner = interp.get_signature_runner("decode")
for step in range(max_tokens):
output = decode_runner(tokens=next_token, input_pos=pos, **kv_cache)
next_token = np.argmax(output["logits"][0, -1])
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("g-ntovas/Qwen3.5-0.8B-LiteRT")
dynamic_int8).litertlmThis model inherits the Apache 2.0 license from the original Qwen/Qwen3.5-0.8B model.
If you use this model, please cite the original Qwen3.5 paper:
@misc{qwen3.5,
title={Qwen3.5 Technical Report},
author={Qwen Team},
year={2026},
url={https://huggingface.co/Qwen/Qwen3.5-0.8B}
}