更新时间:2025-11-19 GMT+08:00
分享

大语言模型推理性能PD配比仿真

acs-advisor基于python simpy实现了对vllm的轻量化仿真,支持针对PD混合、PD分离两类部署形态进行性能仿真,在给定请求负载和SLO约束下仿真出最优的实例数(混合实例、预填充推理实例,增量推理实例)。acs-advisor中实现了vllm内部的请求调度逻辑,从而近似还原了vllm中请求组batch的情况。对于模型执行耗时,acs-advisor中基于vllm服务的真实打点数据构建模型单步推理耗时的预测模型,从而屏蔽掉不同模型推理耗时对仿真的影响。注意,仿真工具当前没有适配前缀缓存,针对开了前缀缓存的场景,prefill实例的TTFT仿真偏差会较大。

安装acs-advisor工具

昇腾云6.5.910及以后版本的配套镜像中默认已经安装acs-advisor工具的whl包acs_advisor-xxx-py3-none-any.whl,无需单独安装。

可以通过如下命令查看是否已经安装acs-advisor工具。

$ pip show acs-advisor

如果需要安装acs-advisor工具,请参考以下步骤执行。

  1. 获取acs-advisor工具的whl包。whl包存放在软件包AscendCloud-LLM-xxx.zip > llm_tools目录中。acs-advisor工具安装在具备python的环境即可。
  2. 在已经安装python的环境中如windows机器(打开Windows PowerShell)或者linux服务器中,执行如下命令安装acs-advisor工具。(可选)
    $ pip install llm_tools/acs_advisor-*-py3-none-any.whl

获取仿真数据源

使用acs-advisor进行实例数或者PD配比仿真,需要提前获取到vllm服务的真实service profiler打点数据作为工具输入。因此需要真实启动vllm服务,然后基于acs-bench工具 触发性能测试并导出服务的性能打点数据。样本量较少时会导致仿真得出的TTFT/TPOT等指标偏差较大,建议使用acs-bench采集性能打点数据时确保请求数在200以上。

仿真工具参数说明

下述命令表示,针对PD分离部署,在给定service profiler数据路径、预填充推理实例数(prefill实例数)范围[1, 4]和增量推理实例数(decode实例数)范围[1, 2]时,寻找满足P90 TTFT不超过3000ms且P90 TPOT不超过50ms的最优实例数。
$ acs-advisor simulate infer -i {{仿真数据源文件路径}} -ttft 3000 -tpot 50 -pmax 4 -pmin 1 -dmax 2 -dmin 1 -percent 90 -dt service_profiler -ds pd-disagg
下述命令表示,针对PD混合部署,在给定service profiler数据路径和推理实例数范围[1, 4]时,寻找满足P90 TTFT不超过3000ms且P90 TPOT不超过50ms的最优实例数。
$ acs-advisor simulate infer -i {{仿真数据源文件路径}} -ttft 3000 -tpot 50 -mmax 4 -mmin 1 -percent 90 -dt service_profiler -ds pd-mix
表1 acs-advisor 仿真工具参数介绍

字段

是否必填

可选值

说明

-i/--input_path

service profiler文件夹路径

-dt/--datasource-type

默认为metrics,可选值包括service_profiler和metrics

service_profiler,需要先启动服务,基于acs-bench和service profiler采集服务内部信息,然后基于该数据进行仿真。离线使用acs-advisor工具进行仿真时需要使用service_profiler数据源。

metrics为vllm的metrics指标,通常在在线扩缩容场景使用,当前暂不支持。

-ttft/--slo-ttft

任意正整数

期望的首token时延,单位为毫秒ms

-tpot/--slo-tpot

任意正整数

期望的token间时延,单位为毫秒ms

-percent/--slo-percent

-1或者1到100的任意正整数

当取值为正整数时表示百分比,如90表示百分之90(P90)的请求。-1表示所有请求的指标取均值。

-ds/--deployment-strategy

默认为pd-disagg,可选pd-disagg和pd-mix

仿真 "PD分离" 或者 "PD混合"

-pmax/--prefill-max-replicas

默认为1,任意正整数

prefill 最大实例数

-pmin/--prefill-min-replicas

默认为1,任意正整数

prefill最小实例数

-dmax/-decode-max-replicas

默认为1,任意正整数

decode最大实例数

-dmin/--decode-min-replicas

默认为1,任意正整数

decode最小实例数

-mmax/--mix-max-replicas

默认为1,任意正整数

mix最大实例数(非PD分离)

-mmin/--mix-min-replicas

默认为1,任意正整数

mix最小实例数(非PD分离)

-rdt/--rate-distribution-type

默认为None,可选包括poisson或者uniform

默认不指定请求分布,将采集的请求负载信息在仿真系统中重放。仅当指定rdt时,-rc / -r / -il / -ol 参数才生效

-rc/--request-count

默认为300,可选值为任意正整数

仿真请求数,默认将采集的请求负载信息在仿真系统中重放。仅当指定 -rdt 参数时 -rc 参数才会生效

-r/--request-rate

默认为5,可选值为任意正整数

默认值为-1表示不指定请求速率,将采集的请求负载信息在仿真系统中重放。仅当指定 -rdt 参数时 -r 参数才会生效

-il/--input-length

默认为1024,可选值为任意正整数

仿真时请求的输入token长度,默认将采集的请求负载信息在仿真系统中重放。仅当指定-rdt参数时 -il参数才会生效

-ol/--output-length

默认为512,可选值为任意正整数

仿真时请求的输出token长度,默认将采集的请求负载信息在仿真系统中重放。仅当指定-rdt参数时 -ol参数才会生效

-pdp/--prefill-dp-size

默认为-1,可选值为任意正整数

默认为-1表示使用service profiler数据中采集到的dp参数,注意ascend-vllm v0版本中必须手动指定该参数。prefill实例的数据并行参数,在当前vllm的部署形态中,Prefill的数据并行通常为1

-ddp/--decode-dp-size

默认为-1,可选值为任意正整数

默认为-1表示使用service profiler数据中采集到的dp参数,注意ascend-vllm v0版本中必须手动指定该参数。decode实例的数据并行参数,在当前vllm的部署形态中,decode的数据并行通常为16/32/64

-cb/--communication-bandwidth

默认为20,可选值为任意正整数

PD分离部署形态时,decode pull kv cache的带宽大小,单位为GB/s,这个参数会轻微影响时延。通常使用默认值即可。

-vv/--vllm-version

默认为v1,可选值包括v0和v1

默认为vllm v1版本。不同版本的vllm,其调度逻辑不一样,会影响ttft和tpot。

-mtpar/--mtp-accept-rate

默认为0,可选值为0到1之间的任意浮点数

mtp接收率,deepseek通常为0.8,不同模型需要评估对应的mtp接受率。指定该参数后,仿真过程中会概率性一次生成2个token。

-nss/--num-scheduler-steps

默认为1,可选值为1-8之间的正整数

调度一次前向推理多次,在ascend-vllm v1中通常为4。

-profile/--profile

默认为False,bool类型参数。

指定该参数表示生成仿真系统内部的trace图,可用于白盒化展示仿真系统的内部逻辑。指定该参数时会导致仿真速度变慢,因此通常仅debug阶段打开。

-l/--lite-mode

默认为False,bool类型参数

对于data-parallel-size大于1的场景,仿真耗时会随data-parallel-size参数增加而线性增加。指定该参数时将会使能轻量化仿真,即仅针对部分dp实际触发仿真任务,从而减少耗时,使用该参数后可能导致tpot的偏差增大1ms左右。

-seed/--seed

默认为3,可选值为任意正整数

仿真时,工具内部生成请求速率和机器学习模型的随机种子

表2 acs-advisor 仿真工具环境变量介绍

字段

是否必填

可选值

说明

ADVISOR_LOG_LEVEL

默认为info,debug, info, warning, error, critical

advisor工具日志等级。

MAX_PADDING_LIMITS

默认为50000,可选值为任意正整数

ascend-vllm v0中特有环境变量。这个参数会影响请求调度逻辑,需要根据ascend-vllm v0部署服务的参数配置确定。

PREFILL_STOP_SCHEDULE_TOKENS

默认为-1,可选值为任意正整数

ascend-vllm v1中特有环境变量。这个参数会影响请求调度逻辑,需要根据ascend-vllm v1部署服务的参数配置确定。

输出示例

下述截图为工具输出示例,表示不同P实例(预填充推理)和D实例(增量推理)数量下的TTFT、TPOT和输出吞吐,以及在P90 TTFT不超过5000ms且P90 TPOT不超过50ms下的有效输出吞吐-goodput。最后给出最佳的PD实例数为3P1D。

仿真系统可视化

当指定--profile参数时,会在当前路径下生成simulate_profile文件夹,文件夹中包含不同配比下的仿真可视化文件。拖拽下述任意json文件至chrome://tracing(浏览器中输入该地址)中即可可视化仿真系统内部请求的推理过程。

可视化示例如下所示:

相关文档