llama.cpp+qwen3.6-27b 初步测试
-
@rock-shi 那就对了,24G跑128K上下文+MTP资源不够
我27 q4量化,kv均q8_0量化,上下文128k,MTP, 5090laptop 24GRAM,开thinking,50+tps,快的起飞啊
厉害!一样的卡,大哥能给个作业抄吗?14900k,32g内存,llama.cpp,感谢!
-
关于 hermes 接入 llama-server, 这两天有两个观察:
- hermes 新会话的第一条 prompt 大概是不到 20k token, 7900xtx大概需要30~40秒pp, 然后tg. 观察 llama-server 的log, 发现第一条prompt之后紧接着会更一个小 prompt, 这个 prompt 会把前面的 checkpoint (大概每8k个token一个 checkpoint)都冲掉, 这样下一次再接着聊, 前面的~20K prompt 还得重新 pp. 让 hermes 自己检查了一下, 第二个小 prompt 是它发的 title generation request. 为了避免这种情况, 可以禁止 title generation, 或者设一个辅助 aux model来生成 title (比如我让在线的 deepseek-v4-flash 干所有的 aux 工作);
- hermes stream mode 下有一个环境变量
HERMES_STREAM_READ_TIMEOUT, 它 控制收到第一个回复token的 timeout, 缺省为120s. 而在7900xtx 下pp花的时间大概是这样的(q5_1/q5_1 cache quant):
- 20k: 40s - 40k: 100s - 60k: 170s - 80k: 260s - 100k: 360s - 120k: 460s - 140k: 580s - 160k: 710s如果hermes有~50k的prompt, 赶上 llama-server cache checkpoint 刚好都是清空的情况下, pp没有完成之前, hermes就超时了.超时以后 hermes会中断当前请求,再发第二次(共三次). 如果第二次又刚好checkpoint被清空(我碰到过,具体原因还没搞明白),那么三次必然都会失败. 碰到这种情况, 可以把这个环境变量增大一下.
今天更新llama.cpp到最新, 还碰到了 llama-server RSS 超大给 oom-kill的情况, 以及 llama-server/hermes 进入死循环的情况. 具体还没有时间搞清楚. 目前我回到了 b9305.
目前的启动脚本如下:
#!/bin/bash LLAMA_SERVER=/home/bruin/github/llama.cpp/build-vulkan/bin/llama-server TOKEN_PER_CKPT=8192 # token per checkpoint, seems llama.cpp hardcoded NUM_CKPT=32 CTX_SIZE=$((TOKEN_PER_CKPT * NUM_CKPT)) ARGS=( --model /home/bruin/Qwen3.6-27B-Q4_K_M.gguf --mmproj /opt/gguf-models/unsloth/Qwen3.6-27B-MTP-GGUF/mmproj-BF16.gguf #--chat-template-file /opt/gguf-models/froggeric/Qwen-Fixed-Chat-Templates/chat_template.jinja --spec-type draft-mtp --spec-draft-n-max 2 # Max draft tokens --ctx-checkpoints ${NUM_CKPT} # 8k token per ckpt --ctx-size ${CTX_SIZE} # 262144 for 256k context #--swa-full # qwen3.6-27b does not support it --parallel 1 # Single slot --flash-attn on # Enable FlashAttention --n-gpu-layers 999 # All layers to GPU --cache-type-k q5_1 # Quantize KV cache keys --cache-type-v q5_1 # Quantize KV cache values #--fit off # --threads 16 # CPU threads helping tg --threads-batch 16 # CPU threads helping pg --batch-size 2048 # Batch size --ubatch-size 1024 # Micro‑batch size --cache-ram 0 # seems not working --reasoning auto # Auto reasoning --reasoning-format deepseek # Reasoning format --reasoning-budget 1024 # Reasoning budget --log-verbosity 4 # Log verbosity --host 0.0.0.0 --port 8000 # Listen on all interfaces, port 8000 --cont-batching # Continuous batching --no-warmup # Skip warmup --no-mmap # Don’t memory‑map model --mlock # Lock model in RAM --jinja # Jinja chat template --metrics # View metrics by accessing http://<ip:port>/metrics ) # print the cmdline echo "${LLAMA_SERVER}" for ((i=0; i<${#ARGS[@]}; i+=2)); do echo "${ARGS[i]} ${ARGS[i+1]}" done # run the cmd ${LLAMA_SERVER} "${ARGS[@]}" -
关于 hermes 接入 llama-server, 这两天有两个观察:
- hermes 新会话的第一条 prompt 大概是不到 20k token, 7900xtx大概需要30~40秒pp, 然后tg. 观察 llama-server 的log, 发现第一条prompt之后紧接着会更一个小 prompt, 这个 prompt 会把前面的 checkpoint (大概每8k个token一个 checkpoint)都冲掉, 这样下一次再接着聊, 前面的~20K prompt 还得重新 pp. 让 hermes 自己检查了一下, 第二个小 prompt 是它发的 title generation request. 为了避免这种情况, 可以禁止 title generation, 或者设一个辅助 aux model来生成 title (比如我让在线的 deepseek-v4-flash 干所有的 aux 工作);
- hermes stream mode 下有一个环境变量
HERMES_STREAM_READ_TIMEOUT, 它 控制收到第一个回复token的 timeout, 缺省为120s. 而在7900xtx 下pp花的时间大概是这样的(q5_1/q5_1 cache quant):
- 20k: 40s - 40k: 100s - 60k: 170s - 80k: 260s - 100k: 360s - 120k: 460s - 140k: 580s - 160k: 710s如果hermes有~50k的prompt, 赶上 llama-server cache checkpoint 刚好都是清空的情况下, pp没有完成之前, hermes就超时了.超时以后 hermes会中断当前请求,再发第二次(共三次). 如果第二次又刚好checkpoint被清空(我碰到过,具体原因还没搞明白),那么三次必然都会失败. 碰到这种情况, 可以把这个环境变量增大一下.
今天更新llama.cpp到最新, 还碰到了 llama-server RSS 超大给 oom-kill的情况, 以及 llama-server/hermes 进入死循环的情况. 具体还没有时间搞清楚. 目前我回到了 b9305.
目前的启动脚本如下:
#!/bin/bash LLAMA_SERVER=/home/bruin/github/llama.cpp/build-vulkan/bin/llama-server TOKEN_PER_CKPT=8192 # token per checkpoint, seems llama.cpp hardcoded NUM_CKPT=32 CTX_SIZE=$((TOKEN_PER_CKPT * NUM_CKPT)) ARGS=( --model /home/bruin/Qwen3.6-27B-Q4_K_M.gguf --mmproj /opt/gguf-models/unsloth/Qwen3.6-27B-MTP-GGUF/mmproj-BF16.gguf #--chat-template-file /opt/gguf-models/froggeric/Qwen-Fixed-Chat-Templates/chat_template.jinja --spec-type draft-mtp --spec-draft-n-max 2 # Max draft tokens --ctx-checkpoints ${NUM_CKPT} # 8k token per ckpt --ctx-size ${CTX_SIZE} # 262144 for 256k context #--swa-full # qwen3.6-27b does not support it --parallel 1 # Single slot --flash-attn on # Enable FlashAttention --n-gpu-layers 999 # All layers to GPU --cache-type-k q5_1 # Quantize KV cache keys --cache-type-v q5_1 # Quantize KV cache values #--fit off # --threads 16 # CPU threads helping tg --threads-batch 16 # CPU threads helping pg --batch-size 2048 # Batch size --ubatch-size 1024 # Micro‑batch size --cache-ram 0 # seems not working --reasoning auto # Auto reasoning --reasoning-format deepseek # Reasoning format --reasoning-budget 1024 # Reasoning budget --log-verbosity 4 # Log verbosity --host 0.0.0.0 --port 8000 # Listen on all interfaces, port 8000 --cont-batching # Continuous batching --no-warmup # Skip warmup --no-mmap # Don’t memory‑map model --mlock # Lock model in RAM --jinja # Jinja chat template --metrics # View metrics by accessing http://<ip:port>/metrics ) # print the cmdline echo "${LLAMA_SERVER}" for ((i=0; i<${#ARGS[@]}; i+=2)); do echo "${ARGS[i]} ${ARGS[i+1]}" done # run the cmd ${LLAMA_SERVER} "${ARGS[@]}"@laobenxiong 你这套参数接近目前的极限了,还有一个SMITHY可以试试,--cache-ram多轮对话好像有用。
-
@laobenxiong 你这套参数接近目前的极限了,还有一个SMITHY可以试试,--cache-ram多轮对话好像有用。
@John-Ato smithy是什么? 没搜到
-
最近在用这个llama.cp +qwen 35 a3b。 m5 max 蛮好的 百来token