AI开发平台MODELARTS-推理性能测试:动态benchmark
动态benchmark
- 获取测试数据集。
动态benchmark需要使用数据集进行测试,可以使用公开数据集,例如Alpaca、ShareGPT。也可以根据业务实际情况,使用generate_datasets.py脚本生成和业务数据分布接近的数据集。
公开数据集下载地址:
- ShareGPT: https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json
- Alpaca: https://github.com/tatsu-lab/stanford_alpaca/blob/main/alpaca_data.json
使用generate_dataset.py脚本生成数据集方法:
generate_datasets.py脚本通过指定输入输出长度的均值和标准差,生成一定数量的正态分布的数据。具体操作命令如下,可以根据参数说明修改参数。
cd benchmark_tools python generate_dataset.py --dataset custom_datasets.json --tokenizer /path/to/tokenizer \ --min-input 100 --max-input 3600 --avg-input 1800 --std-input 500 \ --min-output 40 --max-output 256 --avg-output 160 --std-output 30 --num-requests 1000
generate_dataset.py脚本执行参数说明如下:
- --dataset:数据集保存路径,如custom_datasets.json。
- --tokenizer:tokenizer路径,可以是HuggingFace的权重路径。
- --min-input:输入tokens最小长度,可以根据实际需求设置。
- --max-input:输入tokens最大长度,可以根据实际需求设置。
- --avg-input:输入tokens长度平均值,可以根据实际需求设置。
- --std-input:输入tokens长度方差,可以根据实际需求设置。
- --min-output:最小输出tokens长度,可以根据实际需求设置。
- --max-output:最大输出tokens长度,可以根据实际需求设置。
- --avg-output:输出tokens长度平均值,可以根据实际需求设置。
- --std-output:输出tokens长度标准差,可以根据实际需求设置。
- --num-requests:输出数据集的数量,可以根据实际需求设置。
- 执行脚本benchmark_serving.py测试动态benchmark。具体操作命令如下,可以根据参数说明修改参数。
Notebook中进行测试:
conda activate python-3.9.10 cd benchmark_tools python benchmark_serving.py --backend vllm --host 127.0.0.1 --port 8080 --dataset custom_dataset.json --dataset-type custom --tokenizer /path/to/tokenizer --request-rate 0.01 1 2 4 8 10 20 --num-prompts 10 1000 1000 1000 1000 1000 1000 --max-tokens 4096 --max-prompt-tokens 3768 --benchmark-csv benchmark_serving.csv
生产环境中进行测试:
python benchmark_serving.py --backend vllm --url xxx --app-code xxx --dataset custom_dataset.json --dataset-type custom --tokenizer /path/to/tokenizer --request-rate 0.01 1 2 4 8 10 20 --num-prompts 10 1000 1000 1000 1000 1000 1000 --max-tokens 4096 --max-prompt-tokens 3768 --benchmark-csv benchmark_serving.csv
- --backend:服务类型,支持tgi、vllm、mindspore、openai等。本文档使用的推理接口是vllm。
- --host:服务IP地址,如127.0.0.1。
- --port:服务端口。
- --url:若以vllm接口方式启动服务,API接口公网地址与"/generate"拼接而成;若以openai接口方式启动服务,API接口公网地址与"/v1/completions"拼接而成。部署成功后的在线服务详情页中可查看API接口公网地址。
图3 API接口公网地址
- --app-code:获取方式见访问在线服务(APP认证)。
- --dataset:数据集路径。
- --dataset-type:支持三种 "alpaca","sharegpt","custom"。custom为自定义数据集。
- --tokenizer:tokenizer路径,可以是huggingface的权重路径。若服务部署在Notebook中,该参数为Notebook中权重路径;若服务部署在生产环境中,该参数为本地模型权重路径。
- --served-model-name:仅在以openai接口启动服务时需要该参数。若服务部署在Notebook中,该参数为Notebook中权重路径;若服务部署在生产环境中,该参数为服务启动脚本run_vllm.sh中的${model_path}。
- --request-rate:请求频率,支持多个,如 0.1 1 2。实际测试时,会根据request-rate为均值的指数分布来发送请求以模拟真实业务场景。
- --num-prompts:某个频率下请求数,支持多个,如 10 100 100,数量需和--request-rate的数量对应。
- --max-tokens:输入+输出限制的最大长度,模型启动参数--max-input-length值需要大于该值。
- --max-prompt-tokens:输入限制的最大长度,推理时最大输入tokens数量,模型启动参数--max-total-tokens值需要大于该值,tokenizer建议带tokenizer.json的FastTokenizer。
- --benchmark-csv:结果保存路径,如benchmark_serving.csv。
脚本运行完后,测试结果保存在benchmark_serving.csv中,示例如下图所示。图4 动态benchmark测试结果(示意图)
- 性能测试使用教程_性能测试操作步骤_性能测试快速入门-华为云
- 性能测试使用流程_性能测试怎么样_性能测试 CodeArts PerfTest-华为云
- CDN动态加速_动态内容CDN加速_华为云CDN动态加速
- 什么是性能测试_性能测试作用_性能测试 CodeArts PerfTest-华为云
- 性能测试产品优势_性能测试应用场景_性能测试CodeArts PerfTest-华为云
- 全站加速CDN_CDN动态加速_CDN动态加速技术
- ModelArts是什么_AI开发平台_ModelArts功能
- 性能测试有哪些特性_性能测试特点_性能测试 CodeArts PerfTest-华为云
- 性能测试基本概念_性能测试有什么作用_性能测试 CodeArts PerfTest-华为云
- ModelArts计费说明_计费简介_ModelArts怎么计费