AI开发平台MODELARTS-推理性能测试:静态benchmark

时间:2025-01-03 09:39:01

静态benchmark

运行静态benchmark验证脚本benchmark_parallel.py,具体操作命令如下,可以根据参数说明修改参数。

Notebook中进行测试:
conda activate python-3.9.10
cd benchmark_tools 
python benchmark_parallel.py --backend openai --host 127.0.0.1 --port 8080 \
--tokenizer /path/to/tokenizer --epochs 10 --parallel-num 1 2 4 8  --output-tokens 256 256 --prompt-tokens 1024 2048 --benchmark-csv benchmark_parallel.csv

生产环境中进行测试:

python benchmark_parallel.py --backend openai --url xxx --app-code xxx \
--tokenizer /path/to/tokenizer --epochs 10 --parallel-num 1 2 4 8  --output-tokens 256 256 --prompt-tokens 1024 2048 --benchmark-csv benchmark_parallel.csv

参数说明:

  • --backend:服务类型,支持tgi、vllm、mindspore、openai等。本文档使用的推理接口是vllm。
  • --host:服务IP地址,如127.0.0.1。
  • --port:服务端口,和推理服务端口8080。
  • --url:如果以vllm接口方式启动服务,API接口公网地址与"/generate"拼接而成;如果以openai接口方式启动服务,API接口公网地址与"/v1/completions"拼接而成。部署成功后的在线服务详情页中可查看API接口公网地址。
    图1 API接口公网地址
  • --app-code:获取方式见访问在线服务(APP认证)
  • --tokenizer:tokenizer路径,HuggingFace的权重路径。如果服务部署在Notebook中,该参数为Notebook中权重路径;如果服务部署在生产环境中,该参数为本地模型权重路径。
  • --served-model-name:仅在以openai接口启动服务时需要该参数。如果服务部署在Notebook中,该参数为Notebook中权重路径;如果服务部署在生产环境中,该参数为服务启动脚本run_vllm.sh中的${model_path}。
  • --epochs:测试轮数,默认取值为5。
  • --parallel-num:每轮并发数,支持多个,如 1 4 8 16 32。
  • --prompt-tokens:输入长度,支持多个,如 128 128 2048 2048,数量需和--output-tokens的数量对应。
  • --output-tokens:输出长度,支持多个,如 128 2048 128 2048,数量需和--prompt-tokens的数量对应。
  • --num-scheduler-steps: 服务启动时如果配置了--num-scheduler-steps和--multi-step-stream-outputs=false,则需配置此参数与服务启动时--num-scheduler-steps一致。
  • --enable-prefix-caching:服务端是否启用enable-prefix-caching特性,默认为false。
  • --prefix-caching-num:构造的prompt的公共前缀的序列长度,prefix-caching-num值需小于prompt-tokens。
  • --use-spec-decode:是否使用投机推理进行输出统计,不输入默认为false。当使用投机推理时必须开启,否则会导致输出token数量统计不正确。注:由于投机推理的性能测试使用随机输入意义不大,建议开启--dataset-type、--dataset-path,并选择性开启--use-real-dataset-output-tokens使用真实数据集进行测试。
  • --dataset-type:当使用投机推理时开启,benchmark使用的数据类型,当前支持random、sharegpt、human-eval三种输入。random表示构造随机token的数据集进行测试;sharegpt表示使用sharegpt数据集进行测试;human-eval数据集表示使用human-eval数据集进行测试。注意:当输入为sharegpt或human-eval时,测试数据的输入长度为数据集的真实长度,--prompt-tokens的值会被忽略。
  • --dataset-path:数据集的路径,仅当--dataset-type为sharegpt或者human-eval的时候生效。
  • --use-real-dataset-output-tokens:当使用投机推理时开启,设置输出长度是否使用数据集的真实长度,不输入默认为false。当使用该选项时,测试数据的输出长度为数据集的真实长度,--output-tokens的值会被忽略。
  • --num-speculative-tokens:仅当开启--use-spec-decode时生效,需和服务启动时配置的--num-speculative-tokens一致。默认为-1。当该值大于等于0时,会基于该值计算投机推理的接受率指标。
脚本运行完成后,测试结果保存在benchmark_parallel.csv中,示例如下图所示。
图2 静态benchmark测试结果(示意图)
support.huaweicloud.com/bestpractice-modelarts/modelarts_llm_infer_91151.html