Leyten/Qwen3.5-9B-compute-q4f16_1-MLC
Qwen3.5-9B-compute-q4f16_1-MLC
MLC q4f16_1 web weights for Compute Network. These run in a browser tab through WebGPU and serve jobs on the network's Pro tier.
Converted from Kewk/Heretical-Qwen3.5-9B, a decensored build of Qwen3.5-9B.
What this is
Use with WebLLM
Requires @mlc-ai/web-llm 0.2.84 or newer. Versions below 0.2.83 cannot run this model at all. Qwen3.5 is a hybrid attention model, 24 GatedDeltaNet layers plus 8 full attention layers, and it needs the create_rnn_state path that older runtimes do not have. On 0.2.80 the failure does not name the problem. You get Value attached to scope multiple times, which looks like a memory bug and is not one.
Pair these weights with the prebuilt model library v0_2_84/base/Qwen3.5-9B-q4f16_1_cs1k-webgpu.wasm from mlc-ai/binary-mlc-llm-libs. The parameter list in this repo was checked against that library and matches it exactly, all 581 tensors by name, shape and dtype.
const appConfig = {
model_list: [{
model: "https://huggingface.co/Leyten/Qwen3.5-9B-compute-q4f16_1-MLC",
model_id: "Qwen3.5-9B-compute-q4f16_1-MLC",
model_lib: "https://raw.githubusercontent.com/mlc-ai/binary-mlc-llm-libs/main/web-llm-models/v0_2_84/base/Qwen3.5-9B-q4f16_1_cs1k-webgpu.wasm",
}],
};Config notes
The published Qwen3.5 MLC configs carry three defects. This build fixes all three, so do not diff it against them and assume this one is wrong.
- Stop token ids. Every published Qwen3.5 MLC repo ships
[151643, 151645]. Those are Qwen2 and Qwen3 ids. In Qwen3.5's 248,320 token vocabulary they are ordinary subword pieces, one Korean fragment and one Thai one. This build ships[248046, 248044], which are<|im_end|>and<|endoftext|>. - Context window. The published configs say 262144. WebLLM allocates its KV cache straight from that number, which is 8 GiB and no browser tab survives it. This build ships 4096, which costs 128 MiB.
- Prefill chunk size. The published configs say 2048 and the
cs1klibrary is compiled for 1024. This build ships 1024.
The conversation template is qwen2, not qwen3_5. That is deliberate. The qwen3_5 templates bake the thinking state into the assistant role string, which collides with the way WebLLM toggles thinking per request. With qwen2 and enable_thinking: false, the rendered prompt matches the model's own Jinja template byte for byte.
Safety
This is a decensored derivative. Refusal behavior present in the base model has been deliberately removed, so it will answer requests that the original declines. It has no additional alignment or filtering of its own. Whoever deploys it owns the moderation story. Do not treat it as a safe default for untrusted users.
Capability damage from decensoring is not zero even when it is small. The KL figure above is the source author's measurement against the base model, and KL is a proxy for damage, not a capability benchmark. No capability benchmark has been published for this build.
Provenance
Weights only. The model library is the stock prebuilt wasm, not compiled here.
Converted with mlc-llm built from source at commit 2008fe83 (2026-05-11), against its pinned TVM b628d91f. That is the toolchain the v0_2_84 libraries were built from. Published mlc-llm nightlies could not do this conversion: the 0.26.dev6 wheels segfault in export_tvm for qwen3_5, and the 0.20.dev162 wheel does not import against any released apache-tvm-ffi.
License is Apache 2.0, inherited from Qwen3.5 and the source model.
