<aside>

本文由人类手动撰写

</aside>

1. 背景

在 Agent 深入进入研发循环的今天,我们面临着这样一个问题:我们从某一时刻,从 SGLang 社区Day 0 适配的代码基础上,进行封板,将其送入我们内网团队进行迭代开发交付。但是也说了,目前 Agent + 人 提供的优化思路都差不多,比如算子融合(极致一点就是 MEGA),算子 PDL 调优,框架层减负,并行策略探索等等,我们会发现内外的优化点差异不大。这时,如果可以利用上前文说的,利用 Agent 将社区版本补全场内环境后,就可以做成每日的性能的评比,这样可以很直观地展示出,场内研发的节奏是慢还是快,两边的性能收益来自于哪里,最终汇聚到哪里。

2. 相关工作

提到性能评比,自然离不开 inferenceX 这个平台,其提供的细致的,多平台多框架的对比,给我们很方便地浏览当前推理引擎的发展速度。

image.png

如上图所示,可以很直观地选择要对比的模型,框架和指标。也可以选择随着时间变化的对比。

inferenceX 的所有代码都是开源的,包括它的测速方式,数据是怎么来的,都有可视化的对比。我们研究一下他的逻辑:如下图所示,基本逻辑是调用 github 的 actions 功能,每日定时跑流水线,去触发具体机器集群上的测试进程。然后逐一按照预定好的配置,只更换框架镜像,去挨个打流,同时记录性能,而 actions 统计得到的性能指标,会放入 PR 内,如果 PR 被人类确认 review 可以使用,就流入另一个 dashboard 的仓库内,再次处理后,成为面板上的一个指标点。

image.png

3. 对我的启发

这个测试其实不太需要 AI 的介入(除了搭建和不断的每日 rebase 版本),只需要每日晚上定时找好机器开始测试就完事了。但是场内需要的东西还蛮多的,这里列一下:

  1. 压测手法肯定和 inferencex 不一致了,会用到我们的 aiak perf 压测工具,可能需要性能大图?(性能大图太重了?)
  2. 监控保存问题,我们可能不止要看 TTFT 吞吐等等数据,还有 MTP 接受率等等细碎的东西。这时厂里的 Grafana 监控面板就很有用了。只是这个面板的保存时间不是一直保存的?可能得想个办法持久化
  3. 部署一个前端 dashborad,并且透明化每一次的压测脚本和数据集和镜像版本等等,做到完全可复现。
  4. 日后可能会有多个框架对比?比如VLLM/DeepInfer 等等?