更新时间:2024-04-30 GMT+08:00
分享

动态benchmark

本章节介绍如何进行动态benchmark验证。

Step1 获取数据集

动态benchmark需要使用数据集进行测试,可以使用公开数据集,例如Alpaca、ShareGPT。也可以根据业务实际情况,使用generate_datasets.py脚本生成和业务数据分布接近的数据集。

公开数据集下载地址

使用generate_datasets.py脚本生成数据集方法:

generate_datasets.py脚本通过指定输入输出长度的均值和标准差,生成一定数量的正态分布的数据。具体操作命令如下,可以根据参数说明修改参数。

cd benchmark_tools 
python generate_datasets.py --datasets 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_datasets.py脚本执行参数说明如下:

  • --datasets:数据集保存路径,如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:输出数据集的数量,可以根据实际需求设置。

Step2 使用数据集测试动态benchmark

  1. 执行脚本benchmark_serving.py测试动态benchmark。具体操作命令如下,可以根据参数说明修改参数。
    cd benchmark_tools
    python benchmark_serving.py --backend vllm --host 127.0.0.1 --port 8085 --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"
    • --host:服务IP地址,如127.0.0.1
    • --port:服务端口
    • --datasets:数据集路径
    • --datasets-type:支持三种 "alpaca","sharegpt","custom"。custom为自定义数据集。
    • --tokenizer:tokenizer路径,可以是huggingface的权重路径
    • --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
  2. 脚本运行完后,测试结果保存在benchmark_serving.csv中,示例如下图所示。
    图1 动态benchmark测试结果
分享:

    相关文档

    相关产品