跳到主要内容

推理性能

本章节提供基于在线服务调用的性能测试结果,以及基于 llama-bench 的离线快速验证命令。本章节的所有测试结果均为在开启性能模式和compute_only模式下获得。

性能测试结果

Qwen3.6-35B-A3B-Q4_K

concurrencyinput_lenoutput_lenTTFT (ms)ITL (ms)TPS(out)
13232.02984.6248.3720.67
1128127.54599.0050.6119.76
110241023.7521381.7753.9818.53
13072872.063574.5870.9113.61
181921024.0202111.5376.0913.14
1163841023.5507777.95100.439.96

Qwen3.5-9B-Q4_K

concurrencyinput_lenoutput_lenTTFT (ms)ITL (ms)TPS(out)
132.032.02653.5787.4311.44
1128.0128.04909.2089.2711.20
11024.01024.030108.1492.8610.77
13072.0896.087600.66116.427.87
18192.01024.0252897.72111.638.96
116384.01024.0581702.43132.057.57

测试前准备

llama.cpp 可使用 llama-bench 进行离线单并发推理性能测试。测试前请确认模型路径正确,并已完成 MUSA 版本编译。

建议测试前清理缓存:

sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"

文本生成快速验证

decode 速度测试

llama-bench -m <model-path> -ngl 999 -fa 1 -p 0 -n 64 -d 64 -r 3 -o json --mmap 0

prefill 速度测试

llama-bench -m <model-path> -ngl 999 -fa 1 -p 1024 -n 0 -r 3 -o json --mmap 0

参数说明

参数说明
-m <model-path>指定 GGUF 模型文件路径。
-ngl 999指定 offload 到 GPU 的模型层数。设置为较大值时,尽可能将模型层放到 MUSA GPU 上执行。
-fa 1开启 Flash Attention。
-p 0prompt token 数。decode 测试中设置为 0,用于聚焦 token 生成阶段性能。
-p 1024prompt token 数。prefill 测试中设置为 1024,用于测试 prompt 处理阶段性能。
-n 64生成 token 数。decode 测试中设置为 64
-n 0生成 token 数。prefill 测试中设置为 0,表示不测试 decode 阶段。
-d 64指定 llama-benchn-depth 参数。decode 测试中设置为 64
-r 3重复测试次数。
-o json以 JSON 格式输出测试结果。
--mmap 0禁用 mmap 加载模型。

输出示例

以Qwen3.5-35B-A3B-Q4_K模型为例

decode 测试输出

MUSA: found 1 device(s)
MUSA: device 0: M1000 (62.0 GB, compute 2.2, shared mem 72 KB)
MUSA: device 0: VMM supported (granularity 4096 bytes)
[
{
"build_commit": "3c7a0aa75",
"build_number": 9171,
"cpu_info": "CPU",
"gpu_info": "M1000",
"backends": "MUSA",
"model_filename": "/home/dev/models/Qwen3.6-35B-A3B-Q4_K.gguf",
"model_type": "qwen35moe 35B.A3B Q4_K - Medium",
"model_size": 19572951552,
"model_n_params": 34660610688,
"n_batch": 2048,
"n_ubatch": 512,
"n_threads": 12,
"cpu_mask": "0x0",
"cpu_strict": false,
"poll": 50,
"type_k": "f16",
"type_v": "f16",
"n_gpu_layers": 999,
"n_cpu_moe": 0,
"split_mode": "layer",
"main_gpu": 0,
"no_kv_offload": false,
"flash_attn": true,
"devices": "auto",
"tensor_split": "0.00",
"tensor_buft_overrides": "none",
"use_mmap": false,
"use_direct_io": false,
"embeddings": false,
"no_op_offload": 0,
"no_host": false,
"fit_target": 0,
"fit_min_ctx": 0,
"n_prompt": 0,
"n_gen": 64,
"n_depth": 64,
"test_time": "2026-06-17T03:01:40Z",
"avg_ns": 3202880822,
"stddev_ns": 30942164,
"avg_ts": 19.983248,
"stddev_ts": 0.191983,
"samples_ns": [ 3238606330, 3185446567, 3184589569 ],
"samples_ts": [ 19.7616, 20.0914, 20.0968 ]
}
]

prefill 测试输出

MUSA: found 1 device(s)
MUSA: device 0: M1000 (62.0 GB, compute 2.2, shared mem 72 KB)
MUSA: device 0: VMM supported (granularity 4096 bytes)
[
{
"build_commit": "3c7a0aa75",
"build_number": 9171,
"cpu_info": "CPU",
"gpu_info": "M1000",
"backends": "MUSA",
"model_filename": "/home/dev/models/Qwen3.6-35B-A3B-Q4_K.gguf",
"model_type": "qwen35moe 35B.A3B Q4_K - Medium",
"model_size": 19572951552,
"model_n_params": 34660610688,
"n_batch": 2048,
"n_ubatch": 512,
"n_threads": 12,
"cpu_mask": "0x0",
"cpu_strict": false,
"poll": 50,
"type_k": "f16",
"type_v": "f16",
"n_gpu_layers": 999,
"n_cpu_moe": 0,
"split_mode": "layer",
"main_gpu": 0,
"no_kv_offload": false,
"flash_attn": true,
"devices": "auto",
"tensor_split": "0.00",
"tensor_buft_overrides": "none",
"use_mmap": false,
"use_direct_io": false,
"embeddings": false,
"no_op_offload": 0,
"no_host": false,
"fit_target": 0,
"fit_min_ctx": 0,
"n_prompt": 1024,
"n_gen": 0,
"n_depth": 0,
"test_time": "2026-06-17T03:05:56Z",
"avg_ns": 15326175489,
"stddev_ns": 72611780,
"avg_ts": 66.814796,
"stddev_ts": 0.315811,
"samples_ns": [ 15271970545, 15408674923, 15297881000 ],
"samples_ts": [ 67.0509, 66.4561, 66.9374 ]
}
]

结果解读

llama-bench 输出中重点关注 samples_ts 字段,该字段记录每次重复测试的 tokens/s 结果。第一次运行可能受到 warmup 影响而偏慢,正式观察性能时建议重点关注第一次之后的数值。

多模态模型快速验证

多模态模型性能测试需要先启动服务,再通过多模态接口访问服务。多模态部分的性能可从服务日志中查看。

服务启动示例:

llama-server --model /home/dev/models/Qwen3.6-35B-A3B-Q4.gguf --mmproj /home/dev/models/mmproj-Qwen3.6-35B-A3B-BF16.gguf --media-path /home/jingyi.wang/projects/llama.cpp/tools/mtmd --host 127.0.0.1 --port 8000 --ctx-size 32768 -ngl 999 --cont-batching --flash-attn on --metrics --parallel 1 --reasoning off --no-mmap

访问服务可参考“服务调用”章节的多模态图片调用示例。访问后,服务日志中会输出多模态处理耗时,例如:

srv process_chun: processing image...
encoding image slice...
image slice encoded in 4800 ms
decoding image batch 1/1, n_tokens_batch = 300

其中 image slice encoded in 4800 ms 表示 ViT 编码时间。按单张图片计算,FPS 为 1000 / 4800 = 0.2