Qwen3.5-4B on AX8860 (llama.cpp + ggml-axera)

ๅœจ็ˆฑ่Šฏ AX8860 ็š„ NPU ไธŠ็”จ llama.cpp ่ฟ่กŒ Qwen3.5-4B๏ผšๆ–‡ๆœฌ + ๅ›พๅƒ่พ“ๅ…ฅ๏ผŒๅฏ้€‰ MTP ๆŠ•ๆœบ่งฃ็ ๏ผŒOpenAI ๅ…ผๅฎนๆœๅŠกใ€‚ Qwen3.5-4B on the Axera AX8860 NPU with llama.cpp: text + image input, optional MTP speculative decoding, OpenAI-compatible server.

ๆ€ง่ƒฝ / Performance

decode 62.3 tokens/s
decode๏ผŒMTP ๆŠ•ๆœบ่งฃ็  / with MTP ๆœ€้ซ˜ / up to 128.0 tokens/s๏ผˆ2.05x๏ผ‰
4k prompt๏ผŒMTP / MTP on 4k 58.8 โ†’ 99.7 tokens/s๏ผˆ1.70x๏ผŒaccepted 42/61๏ผ‰
4k prompt prefill 5040 tokens/s๏ผˆ3908 token 0.78 s๏ผ‰
ไธŠไธ‹ๆ–‡ / context ๆœ€้•ฟ / up to 16384

MTP๏ผˆMTP=1๏ผ‰ๆŒ‰ๅ†…ๅฎน / by content:

ๅ†…ๅฎน / content ๆ™ฎ้€š / plain MTP ๅŠ ้€Ÿ / speed-up ๆŽฅๅ—็އ / accept
ไปฃ็  / code 62.4 84.7 1.36x 0.481
ไธญ่ฏ‘่‹ฑ / translation 60.5 84.9 1.40x 0.598
Markdown ่กจๆ ผ / table 62.5 128.0 2.05x 0.816
ๆ•ฐๅญฆ่งฃ้ข˜ / maths 62.6 98.5 1.57x 0.563
ไธญๆ–‡็Ÿญๆ–‡ / Chinese essay 61.6 62.7 1.02x 0.274
่‹ฑๆ–‡ๆ•…ไบ‹ / English story 61.2 63.3 1.03x 0.302
ไปฃ็ ๏ผŒๆŽจ่้‡‡ๆ ท / code, sampled 61.3 87.4 1.43x 0.481
ไธญๆ–‡็Ÿญๆ–‡๏ผŒๆŽจ่้‡‡ๆ ท / essay, sampled 60.6 66.2 1.09x 0.269

ๅ•ไฝ tokens/s๏ผ›ๆฏ้กนๆœ€ๅคš็”Ÿๆˆ 256 token๏ผŒๆœชๆณจๆ˜Ž็š„ไธบ่ดชๅฟƒ่งฃ็  / tokens/s; up to 256 tokens each, greedy unless noted.

sh bench.sh ๅค็Žฐ / reproduce๏ผˆ็”Ÿๆˆ 128 token / 128 generated tokens๏ผ›็Ÿญ prompt ไป…ๅˆ—่€—ๆ—ถ / short prompts report time only๏ผ‰๏ผš

prompt -c prompt ่€—ๆ—ถ / time decode tokens/s
5 token 8192 0.08 s โ€”
47 token 8192 0.09 s โ€”
3908 token 8192 0.78 s 59.8
5 token 16384 0.09 s โ€”
47 token 16384 0.09 s โ€”
3908 token 16384 0.77 s 59.9
3908 token๏ผŒๆŽจ่้‡‡ๆ ท / sampled 8192 0.78 s 58.6

ๅฟซ้€Ÿๅผ€ๅง‹ / Quick start

sh run.sh "The capital of France is" 64           # ๆ–‡ๆœฌ / text
sh run.sh -i bus.jpg "Describe this image." 256   # ๅ›พๅƒ / image
sh run.sh -c                                      # ๅ‘ฝไปค่กŒๅฏน่ฏ / chat
sh run.sh -s 8080                                 # OpenAI ๅ…ผๅฎนๆœๅŠก / server
MTP=1 sh run.sh -s 8080                           # MTP ๆŠ•ๆœบ่งฃ็  / speculative decoding
sh bench.sh                                       # ๆ€ง่ƒฝๅค็Žฐ / benchmark

้œ€่ฆ AX8860๏ผŒSDK V0.5.1 ๆˆ–ๆ›ดๆ–ฐ๏ผ›HF ไธ‹่ฝฝ็š„ๆ–‡ไปถๆฒกๆœ‰ๆ‰ง่กŒๆƒ้™๏ผŒ็”จ sh ่ฐƒ็”จๅณๅฏ / needs an AX8860 with SDK V0.5.1+; call the scripts with sh.

ๆ–‡ไปถ / Files

ๆ–‡ไปถ / File ่ฏดๆ˜Ž / Description
qwen3.5-4b-mxfp4.gguf ๆจกๅž‹ๆƒ้‡ / weights๏ผŒ2.66 GB๏ผŒmd5 e82f054c77152821eb8edd5ae572f2eb
mmproj-qwen3.5-4b-bf16.gguf ่ง†่ง‰็ผ–็ ๅ™จ / vision encoder๏ผŒ676 MB๏ผŒmd5 d64c1da66e6bd59ecbec5d57ccc13ec7
bin/ llama.cpp ๆฟ็ซฏ็จ‹ๅบ๏ผˆ้™ๆ€้“พๆŽฅ๏ผ‰/ board programs (static)
kernels/ NPU kernel + manifest.json
run.sh๏ผŒchat_template.jinja ่ฟ่กŒ่„šๆœฌไธŽๆœๅŠก็ซฏๅฏน่ฏๆจกๆฟ / run script and the server's chat template
bench.sh ๅŠ prompt ๆ€ง่ƒฝๅค็Žฐ / benchmark

่ฏดๆ˜Ž / Notes

  • MTP ไธบๅฏ้€‰๏ผšMTP=1 ./run.sh -s ๆ˜พๅผๅผ€ๅฏ๏ผŒๆœๅŠก็ซฏไธๅ†็”จ่‡ช้€‚ๅบ”้—จๆŽงๆŠŠๅฎƒๅ…ณๆމ๏ผ›ไธ่ฎพ็ฝฎ MTP ๆ—ถไฟๆŒๆ™ฎ้€š่งฃ็ ใ€‚่ดชๅฟƒ่ฏทๆฑ‚่ฏทๆ˜พๅผๅธฆ presence_penalty: 0 / MTP is opt-in: MTP=1 ./run.sh -s enables it explicitly and bypasses the adaptive gate; without MTP the server stays non-speculative. Greedy requests should set presence_penalty: 0.
  • ๆœๅŠก็ซฏ้ป˜่ฎคไฝฟ็”จๆจกๅž‹ๅกๆŽจ่็š„้‡‡ๆ ทๅ‚ๆ•ฐ๏ผŒๆ–‡ๆœฌ่กฅๅ…จไธŽๅ›พๅƒๆ่ฟฐไธบ่ดชๅฟƒ่งฃ็  / the server uses the model card's recommended sampling; completion and image description are greedy.
  • ๆœๅŠก็ซฏ้ป˜่ฎคๅ…ณ้—ญๆ€่€ƒ๏ผˆ--reasoning off๏ผ‰๏ผŒๅนถๅ…่ฎธๅฏน่ฏไธญๆฎต็š„ system ๆถˆๆฏ๏ผˆCodex ็ญ‰ agent ๅฎขๆˆท็ซฏๅฏ็”จ๏ผ‰/ the server does not think by default and accepts a mid-conversation system message (works with agent clients such as Codex).
  • Prompt cache ้ป˜่ฎคๆ”พๅœจ 4 GB ๅ†…ๅญ˜๏ผ›่ฎพ็ฝฎ CACHE_DIR=<SSD ็›ฎๅฝ•> ๅฏ่ฝ็›˜๏ผŒ้‡ๅฏๅŽไป่ƒฝๅ‘ฝไธญ / the prompt cache lives in 4 GB of host memory; set CACHE_DIR=<an SSD directory> to keep it on disk across restarts.
  • ่ฟ่กŒๆ—ถ็‹ฌๅ  NPU 4 ๆ ธ๏ผ›ๆœๅŠก็ซฏ -np 1 / takes all 4 NPU cores; the server runs -np 1.
  • llama-bench ๅฏ็”จ๏ผŒ่ฏทๅŠ  -b 4096 -ub 4096 / llama-bench works; pass -b 4096 -ub 4096.
  • ไธชๅˆซ็Žฏๅขƒไธ‹่ฟž็ปญ่ฏทๆฑ‚ๅถๅ‘ ret = -3๏ผŒ้‡่ฏ•ๅณๅฏ / in rare cases a back-to-back request fails with ret = -3; retry it.
  • MTP ๆฏ่ฝฎ็Œœ 3 ไธช token๏ผŒ็”ฑ็›ฎๆ ‡ๆจกๅž‹้€ไธช้ชŒ่ฏ๏ผ›่ดชๅฟƒๆ—ถ่พ“ๅ‡บไธŽๆ™ฎ้€š่งฃ็ ไธ€่‡ด / MTP drafts 3 tokens per round, each verified by the target model; greedy output equals plain decoding.

ๆญฃ็กฎๆ€ง / Correctness

  • "The capital of France is" โ†’ "Paris. โ€ฆ"๏ผ›ๅ›พๅƒๆ่ฟฐๆญฃ็กฎ๏ผˆ่ฝฆ่พ†ใ€ๆ–‡ๅญ—ใ€ไบบ็‰ฉ๏ผ‰/ text and image descriptions correct.
  • MTP ้ป˜่ฎคๅ…ณ้—ญ๏ผŒMTP=1 ๅผ€ๅฏ๏ผ›้ป˜่ฎค่กŒไธบไธŽไธŠไธ€็‰ˆไธ€่‡ด๏ผŒ้€Ÿๅบฆๆฒกๆœ‰ๅ›ž้€€ / MTP stays off by default and MTP=1 enables it; default behaviour matches the previous release and speed did not regress.
  • ๆŠ•ๆœบ่งฃ็ ็š„ๆฏไธช่‰็จฟ token ้ƒฝ็ป็›ฎๆ ‡ๆจกๅž‹้ชŒ่ฏ๏ผŒ่ดชๅฟƒ่พ“ๅ‡บไธŽๆ™ฎ้€š่งฃ็ ไธ€่‡ด / every speculative token is verified by the target model; greedy output equals plain decoding.

ๆบ็  / Sources

ๆ›ดๆ–ฐ / Changelog

  • 2026-11-09๏ผš็ปŸไธ€ๆฟ็ซฏ bin๏ผ›MTP ้ชŒ่ฏ้€ป่พ‘ไฟฎๅค๏ผ›้ป˜่ฎค่กŒไธบไธŽ้€Ÿๅบฆไธๅ˜๏ผ›่ดชๅฟƒๅœบๆ™ฏๆ˜พๅผ presence_penalty: 0๏ผ›perplexity ๅ›บๅฎš่ตฐๅ…จ logits / unified board bins; MTP verification fixes; default behaviour and speed unchanged; explicit presence_penalty: 0 in greedy scenes; perplexity keeps the full-logits head.
Downloads last month
200
GGUF
Model size
4B params
Architecture
qwen35
Hardware compatibility
Log In to add your hardware

4-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for AXERA-TECH/Qwen3.5-4B-AX8860-llama.cpp

Finetuned
Qwen/Qwen3.5-4B
Quantized
(650)
this model

Collection including AXERA-TECH/Qwen3.5-4B-AX8860-llama.cpp