文本输出质量比同等规模的Qwen好

#1
by chinanet-v1 - opened

相对的推理速度要慢不少,MTP接受率偏低。
llama-server -m xing4_0-29b-IQ4_NL-00001-of-00003.gguf -ctk q4_0 -ctv q4_0 -dev cuda0 --load-mode none --spec-type draft-mtp --spec-draft-n-max 2 --spec-draft-device vulkan1
0.02.305.981 W srv llama_server: -----------------
0.02.307.361 I srv load_model: loading model 'xing4_0-29b-IQ4_NL-00001-of-00003.gguf'
0.04.266.033 W load: special_eos_id is not in special_eog_ids - the tokenizer config may be incorrect
0.15.679.168 W llama_context: setting new yarn_attn_factor = 1.0000 (mscale == 1.0, mscale_all_dim = 1.0)
0.15.701.343 I cmn init: llama threadpool init, n_threads = 12
0.15.845.639 I common_speculative_init_result: creating MTP draft context against the target model 'xing4_0-29b-IQ4_NL-00001-of-00003.gguf'
0.15.845.680 W llama_context: setting new yarn_attn_factor = 1.0000 (mscale == 1.0, mscale_all_dim = 1.0)
0.15.924.565 I srv load_model: initializing, n_slots = 4, n_ctx_slot = 4096, kv_unified = 'true'
0.15.953.144 I srv llama_server: model loaded
0.15.953.151 I srv llama_server: listening on http://127.0.0.1:8080
0.15.953.151 W srv llama_server: NOTICE: server default port will be changed to :9931 in a future release
0.15.953.151 W srv llama_server: ref: https://github.com/ggml-org/llama.cpp/pull/26508
1.31.158.548 I slot get_availabl: id 3 | task -1 | selected slot by LRU, t_last = -1
1.31.159.471 I slot launch_slot_: id 3 | task 0 | processing task, is_child = 0
1.36.028.159 I slot print_timing: id 3 | task 0 | n_gen = 100, tg = 29.21 t/s, tg_3s = 29.50 t/s
1.39.040.759 I slot print_timing: id 3 | task 0 | n_gen = 185, tg = 28.74 t/s, tg_3s = 28.21 t/s
(中略)
3.09.935.681 I slot print_timing: id 3 | task 0 | n_gen = 2878, tg = 29.57 t/s, tg_3s = 30.92 t/s
3.12.826.765 I slot print_timing: id 3 | task 0 | prompt eval time = 1479.24 ms / 364 tokens ( 4.06 ms per token, 246.07 tokens per second)
3.12.826.769 I slot print_timing: id 3 | task 0 | eval time = 100187.98 ms / 2967 tokens ( 33.78 ms per token, 29.60 tokens per second)
3.12.826.770 I slot print_timing: id 3 | task 0 | total time = 101667.22 ms / 3331 tokens
3.12.826.774 I slot print_timing: id 3 | task 0 | graphs reused = 1495
3.12.826.778 I slot print_timing: id 3 | task 0 | draft acceptance = 0.48407 ( 1459 accepted / 3014 generated), mean len = 1.97
3.12.826.871 I slot release: id 3 | task 0 | stop processing: n_tokens = 3330, truncated = 0

XingChen-AGI org

Thanks for the detailed benchmarking — this is exactly the kind of hands-on feedback we appreciate, and it helps us a lot. You've clearly dug into the config, so let me give you a concrete suggestion that should help immediately.

The key thing to check first: make sure you're offloading as many layers as possible to the GPU. Add -ngl 999 to your launch command (if not already there). Without it, llama.cpp may keep a large part of the model on CPU, which directly caps your token/s and can also drag down the MTP draft acceptance you're seeing. On a 24 GB card with the IQ4_NL quant, the full model should fit, so offloading fully tends to give the most meaningful speed-up.

Also worth noting on the draft side — MTP acceptance around 0.48 isn't unusual for a quantized setup with a short draft window, but every bit of latency saved in the draft step compounds on the target speed. If you're still seeing headroom after -ngl 999, it's worth testing without KV-cache quantization as well.

For a complete setup walkthrough (including the recommended flags for your GPU), our official tutorial covers the llama.cpp deployment in detail: https://github.com/XingChen-AGI/Xing4.0-29B-A4B/blob/main/tutorial/llama.cpp/README_EN.md

If you try it and still see it underperforming Qwen at the same size, please share the updated numbers — we genuinely want to know about this and will dig in with you.

Sign up or log in to comment