资讯 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

在线服务压测指南

千帆ModelBuilder Python SDK 提供了基对推理服务V2版本大模型服务进行压测以及性能评估功能。

使用场景

千帆ModelBuilder给用户提供标准的压测工具,可以在以下或其他场景使用:

  • 测试sft模型部署到算力单元后,实际的性能效果
  • 对比模型压缩后的性能效果
  • 测试预置服务的性能

压测流程

步骤一:安装相关依赖。

步骤二:准备压测数据。

步骤三:启动压测

安装相关依赖

压测需要使用以下方式进行依赖安装:

pip install 'qianfan[dataset_base]'

准备压测数据

用于压测的数据集,目前支持jsonl格式。

  • jsonl格式示例

注意:如果导出千帆ModelBuilder data数据集,可直接作为压测数据集。

主要用于多轮对话的场景,其中一个括号就是一段对话。最后的回答会在输入中被忽略。示例如下:

[{"prompt": "请根据下面的新闻生成摘要, 内容如下:国家发展改革委、外交部、商务部联合发布《推动共建丝绸之路经济带和21世纪海上丝绸之路的愿景与行动》,省交通运输厅有关负责人表示,我省将统筹规划,全力打造海口、洋浦、三亚港口群,建成21世纪海上丝绸之路的“桥头堡”。\n生成摘要如下:"}]
[{"prompt": "请根据下面的新闻生成摘要, 内容如下:国家发展改革委、外交部、商务部联合发布《推动共建丝绸之路经济带和21世纪海上丝绸之路的愿景与行动》,省交通运输厅有关负责人表示,我省将统筹规划,全力打造海口、洋浦、三亚港口群,建成21世纪海上丝绸之路的“桥头堡”。\n生成摘要如下:"}]

启动压测

注意以下事项:

  • 压测入口在Dataset对象的stress_test方法中。
  • 对大模型服务进行性能测试,需要在导入 qianfan 模块之前设置环境变量 QIANFAN_ENABLE_STRESS_TEST 为 true
import os

# 设置环境变量,固定值如下
os.environ['QIANFAN_ENABLE_STRESS_TEST'] = "true"
# 设置API Key值,开发者需替换成实际值,如何获取请查看https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Um2wxbaps#步骤二-获取api-key
os.environ["QIANFAN_BEARER_TOKEN"] = "bce-v3/*******"
# 设置平台地址,固定值如下
os.environ["QIANFAN_CONSOLE_API_BASE_URL"] = "https://qianfan.baidubce.com"
# 设置调用接口,例如对话Chat固定值如下
os.environ["QIANFAN_CHAT_V2_API_ROUTE"] = "/v2/chat/completions"

from qianfan.dataset import Dataset

# 需要初始化一个数据集对象
ds = Dataset.load(data_file="./stress_test_data.jsonl")

ds.stress_test(
    users=20,
    workers=20,
    spawn_rate=20,
    #model="ep-20240529142309-kqf6s", # doubao-pro-32k
    model="ernie-speed-pro-128k", # doubao-lite-4k
    model_type="ChatCompletion",
    log=True,
    runtime="10m", # 可选参数
    hyperparameters={
        "headers": {"appid": "app-hq***pQ1"},# 选填,如何获取请查看V2版本应用ID,https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Fllg87pck#v2版本应用id
        "safety_level":"none",# 选填
        "safety": {"input_level": "none"},
        "_no_extra_parameters": True, # openai 不允许多余的参数,extra_parameters 默认会被传入千帆API,此处关闭SDK自动增加的extra_parameters
        "stream_options":{
            "include_usage":True
        }
    },
    version=2,
)

函数列表

初始化数据集对象

  • 示例
Dataset.load(data_file="./stress_test_data.jsonl")
  • 请求参数
参数 类型 必填 描述
data_file str 压测数据集,支持以下数据格式:
· jsonl
  • 调用结果

完成初始化数据集对象。


发起压测

ds.stress_test()
  • 请求参数
名称
类型 必填 描述
users int 指定发压使用的总user数,也就最终的发压并发数。说明:
(1)建议值:100
(2)users必须大于等于workers数目
(3)每个worker负责模拟${users}/${workers}个虚拟用户
workers int 指定发压使用的worker数目,说明:
(1)建议值:10
(2)每个worker为1个进程
spawn_rate int 指定每秒真实启动的user数目,一直增长到users大小以后,不再新增启动。说明:建议值为5
runtime str 指定发压任务的最大运行时间,说明:
(1)格式为带时间单位的字符串,例如:300s,20m,3h,1h,30m
(2)压测任务启动后会一直运行到数据集内所有数据都请求完毕,或到达该参数指定的最大运行时间
(3)默认值为0,表示不设最大运行时间
model_type str 指定被测服务的模型类型,说明:
(1)针对推理服务API V2版本,当前支持 ChatCompletion
endpoint str 用于指定用户自行发布的模型服务,该参数与model只能填写一个,说明:
· 如果是平台训练模型,可以通过查看服务地址获取该字段值,详情请查看新手指南-平台使用快速开始:model值为在创建服务时对应的API地址,如下图所示:
image.png
model str 指定需要压测服务的模型名称,说明:该参数与endpoint只能填写一个
hyperparameters Optional[Dict[str, Any]] 说明:指定压测时使用的超参数,例如:hyperparameters={"temperature":0.5}
  • 调用结果

启动压测。


上一篇
模型精调V1
下一篇
最佳实践