框架调度耗时导致性能劣化
问题现象
同一个环境,其他配置都一样,MindIE 2.0.RC1相比MindIE 2.0.T3.1的服务化性能劣化了很多,需确认是否为版本问题。
如图1所示,上半部分截图为纯模型测试结果,300并发下纯模型Decode阶段平均时延为36ms;下半部分为服务化测试结果,300并发下Decode阶段平均时延约为66ms。
如图2所示,上半部分截图为纯模型测试结果,300并发下纯模型Decode阶段平均时延为35.44ms,与2.0.T3.1性能非常接近;下半部分为服务化测试结果,300并发下Decode阶段平均时延约为95ms,较2.0.T3.1版本性能劣化50%。
解决方案
- 使用预检工具dump对比一下配置,如图3所示,其中“ms_performance_prechecker_dump_20250520_152124.json”为MindIE 2.0.T3版本环境的落盘文件,“ms_performance_prechecker_dump_20250520_152138.json”为MindIE 2.0.RC1版本环境的落盘文件,除日志设置等不影响性能的环境变量外,没有看到明显的配置差异。
- 采集MindIE 2.0.RC1的服务化性能数据进行对比,发现MindIE 2.0.RC1的Decode阶段forward之间的间隙过大,说明CPU侧的前后处理耗时长,如图4所示。
- 开启异步调度,缩短forward间隙后,MindIE 2.0.RC1版本E2E输出吞吐2900->4500,较T3.1提升500token/s。异步调度的开启方式请参见《MindIE Motor开发指南》的“异步调度”章节。图5 开启异步调度

父主题: 服务化性能调优定位案例



