Qwen3.5-2B — BPU-native build for D-Robotics RDK S100 / S100P

Compiled, quantised (int8 weights / int16 activations), and board-verified build of Qwen/Qwen3.5-2B for D-Robotics' Nash BPU, running entirely through BLLM — an on-device runtime that talks to the BPU directly (hbDNN/hbUCP), with no GPU/CUDA and no cloud round-trip.

This is a compiled BPU binary, not a transformers-loadable checkpoint — closer in kind to a GGUF quantisation than a HF AutoModel. There is no Inference API widget on this page; see "How to run" below.

New here? Start with BLLM (the runtime) and bllm-model-zoo (how this build was made, full acceptance data, what was tried and rejected). This repo is the downloadable artifact; that repo is the method.

Quick facts

Base model Qwen/Qwen3.5-2B (Apache-2.0)
Architecture Hybrid: 18 Gated-DeltaNet (linear-attention SSM) layers + 6 full-attention layers
Quantisation int8 weight (per-channel) / int16 activation (static, data-free)
Target hardware D-Robotics RDK S100 / S100P (Nash nash-m BPU)
Modality Image + text (vision tower included)
BPU utilization 100% — CPU_inference_time_cost == 0 on the text decoder
Runtime BLLM (native, no libxlm)

This architecture (linear-attention SSM + head_dim=256) is not covered by D-Robotics' official OE-LLM toolchain (libxlm) — this build exists because BLLM's native runtime compiles the graph directly.

Files in this repo

s100p/
  ctx4k/    # cache_len=4096 — default, recommended context
    model.hbm            # text decoder (prefill+decode dual-graph)
    model_prefill.hbm     # chunked-prefill graph (N=32)
    model.json
    embed_tokens.bin
    tokenizer.json
    visual.hbm            # vision tower, 320px bucket, 100 tokens/image
  ctx512/   # cache_len=512 — faster decode, short-context use
    ...same layout

cache_len is a performance knob as well as a capacity one — a larger KV window costs more DDR traffic per decoded token. Pick ctx512 if your prompts/replies genuinely fit in ~512 tokens; it decodes faster than ctx4k.

How to run

conda install -c https://mirrors.ruis.ai/conda -c conda-forge bllm
import bllm
m = bllm.load("s100p/ctx4k")
print(m.chat("这张图里有什么?", images=["photo.jpg"]))

# text-only, without loading the vision tower into memory
m = bllm.load("s100p/ctx4k", vision=False)
print(m.chat("介绍一下你自己"))

Requires D-Robotics RDK S100/S100P, sw >= 4.0.5, and an enlarged ION carveout (hb_switch_ion.sh balanced + reboot) — see BLLM's docs/LLM_ONBOARD.md.

Measured on hardware (S100P, performance mode, 3 repeated runs)

variant decode TTFT (image, coco-cats test photo) prefill↔decode parity ppl image contrast task anchors
ctx4096 13.20 tok/s 1.65 s PASS 51.23 PASS PASS
ctx512 15.29 tok/s 1.51 s PASS 50.87 PASS PASS

Measured against this release's GQA batched-matmul + mask-dedup attention rewrite (replacing an expand_win broadcast) — essentially unchanged from the pre-rewrite baseline (13.22 tok/s), consistent with board output verified bit-identical to that baseline. Full methodology, acceptance protocol (prefill↔decode parity + perplexity + task-coherence anchors + with/without-image contrast — not just cosine similarity, see why in the model-zoo README), and every rejected build are in bllm-model-zoo/models/qwen3.5-2b and .../qwen3.5-vlm.

Known limitations

  • The all-BPU chunked-prefill path (image ingestion, no CPU fallback) is numerically solvable but impractically slow to compile — this build's prefill graph uses a float [C,C] CPU fallback for one small intermediate instead. A compile-time/build-engineering tradeoff, not an accuracy or runtime limitation of the shipped model.
  • int16 activation quantisation is data-free (no calibration set) at this size — verified sufficient at 2B; the 4B sibling needs per-linear calibration (see its model card).

License

The compiled .hbm is a derivative of the upstream Qwen3.5-2B weights and inherits its Apache-2.0 license — check the upstream model card for the current terms. BLLM (the runtime that loads this file) is open source; see its repository for its own license.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for ruisv/bllm-qwen3.5-2b

Finetuned
Qwen/Qwen3.5-2B
Finetuned
(285)
this model