启用MTP的vLLM推理性能无提升,寻求优化建议
针对你在2张L40S显卡上运行Qwen3.6-35B模型开启MTP后TPS未提升的问题,给出以下具体优化步骤:
确认MTP配置是否生效
首先检查vLLM版本需≥0.5.0(MTP从该版本开始支持),启动时添加--log-level DEBUG参数,查看日志中是否有Loaded MTP speculative decoder相关输出。若没有,说明MTP未正确加载,核心原因可能是未指定speculative小模型——MTP依赖小模型做token预测,需补充--speculative-model Qwen/Qwen3.6-7B-A3B-FP8参数,同时可根据小模型大小设置--speculative-tensor-parallel-size 1(7B模型单卡即可运行,节省资源)。调整MTP核心参数
你当前设置的num_speculative_tokens:1过小,MTP的性能收益通常在预测4-8个token时才会明显(单token预测的开销可能抵消收益),建议将该值调整为4或8。同时,确保主模型与speculative模型的量化格式一致(均为FP8),避免格式转换开销。优化显存与上下文配置
你设置的max-model-len:130000过大,会导致KV缓存占用大量显存(L40S单卡48GB,2张跑35B FP8本身已占用约35GB显存,加上超长上下文的KV缓存可能触发显存溢出或swap),严重压制性能。建议先将max-model-len降至4096/8192进行测试,确认性能提升后再根据业务需求调整。此外,将--gpu-memory-utilization从默认0.9调至0.95,充分利用显存资源。简化测试环境,排除额外开销
你开启了--enable-auto-tool-choice、--tool-call-parser等工具调用相关参数,这些功能会增加额外的解析开销,在基准测试阶段建议关闭,专注于纯文本生成的性能验证。同时,检查max-batch-size参数(默认64),若你的测试请求batch较小,调大max-num-batched-tokens的收益有限,可根据实际请求量调整该值。验证真实性能统计
客户端感知的TPS可能受网络延迟、请求调度影响,建议查看vLLM内部的性能统计(默认控制台会输出),重点关注throughput指标,确认是否与客户端数据一致。若内部统计有提升但客户端无变化,需排查客户端的请求发送逻辑(如是否存在请求排队、批量发送策略问题)。
内容的提问来源于stack exchange,提问作者Alberto




