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

LLM服务性能测试(未上线)

功能介绍

千帆 Python SDK 提供了基于locust工具的对大模型服务进行快速压测以及性能评估的功能。

安装准备

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

pip install 'qianfan[dataset_base]'

注意事项

  • 当前无法使用notebook进行压力测试
  • 对于mac用户安装qianfan[dataset_base]可能碰到的以下问题,请在运行的终端中运行以下命令可临时解决:

image.png

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

调用示例

准备好测试用的数据集,调用stress_test接口启动压测任务。

import os
from qianfan.dataset import Dataset
# 压力测试需设置为true
os.environ['QIANFAN_ENABLE_STRESS_TEST'] = "true"

# 使用安全认证AK/SK鉴权,通过环境变量方式初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
os.environ["QIANFAN_ACCESS_KEY"] = "your_iam_ak"
os.environ["QIANFAN_SECRET_KEY"] = "your_iam_sk"

# 需要初始化一个数据集对象

ds = Dataset.load(data_file="...")

ds.stress_test(
    users=1,
    workers=1,
    spawn_rate=128,
    model="ERNIE-Bot",
    model_type="ChatCompletion"
)

返回示例

运行过程中会实时输出已发送请求的聚合指标。 运行结束后会输出任务的日志路径,以及整体的聚合数据。 整体聚合数据内容示例如下:

QPS: 0.35
Latency Avg: 5.39
Latency Min: 4.58
Latency Max: 6.59
Latency 50%: 5.0
Latency 80%: 6.6
FirstTokenLatency Avg: 1.14
FirstTokenLatency Min: 1.12
FirstTokenLatency Max: 1.18
FirstTokenLatency 50%: 1.12
FirstTokenLatency 80%: 1.2
InputTokens Avg: 3.0
OutputTokens Avg: 61.0
SuccessRate: 100.0%

数据格式

可用于stress_test的数据集目前支持以下三种格式:

jsonl格式示例

这种格式主要用于多轮对话的场景,其中一个括号就是一段对话。最后的回答会在输入中被忽略。

[{"prompt": "请根据下面的新闻生成摘要, 内容如下:新华社受权于18日全文播发修改后的《中华人民共和国立法法》,修改后的立法法分为“总则”“法律”“行政法规”“地方性法规、自治条例和单行条例、规章”“适用与备案审查”“附则”等6章,共计105条。\n生成摘要如下:"}]
[{"prompt": "请根据下面的新闻生成摘要, 内容如下:一辆小轿车,一名女司机,竟造成9死24伤。日前,深圳市交警局对事故进行通报:从目前证据看,事故系司机超速行驶且操作不当导致。目前24名伤员已有6名治愈出院,其余正接受治疗,预计事故赔偿费或超一千万元。\n生成摘要如下:"}]

json格式示例

[
    {"prompt": "地球的自转周期是多久?", "response": "大约24小时"},
    {"prompt": "人类的基本单位是什么?", "response": "人类"}
]

txt格式示例

人体最重要的有机物质是什么?
化学中PH值用来表示什么?
第一个登上月球的人是谁?

参数说明

请求参数

名称 类型 必填 描述
workers int 指定发压使用的worker数目,每个worker为1个进程。
users int 指定发压使用的总user数,必须大于worker数目;每个worker负责模拟users/workers个虚拟用户。
runtime string 指定发压任务的最大运行时间,压测任务启动后会一直运行到数据集内所有数据都请求完毕,或到达该参数指定的最大运行时间,格式为带时间单位的字符串,例如('300s', '20m', '3h', '1h30m'),说明:
该参数默认值为'0s',表示不设最大运行时间。
spawn_rate int 指定每秒启动的user数目
model string 指定需要压测服务的模型名称。该参数与endpoint只能指定一个
endpoint string 指定需要压测服务的url路径。该参数与model只能指定一个
model_type string 指定被测服务的模型类型。 目前只支持'ChatCompletion'与'Completion两类',说明:
若不指定,默认值为'ChatCompletion'
hyperparameters list[dict] 指定压测时使用的超参数

返回参数

名称 类型 描述
QPS float 服务每秒实际处理的请求数。
Latency Avg float 全长时延的平均值。
Latency Min float 全长时延的最小值。
Latency Max float 全长时延的最大值。
Latency 50% float 全长时延的50分位值。
Latency 80% float 全长时延的80分位值。
FirstTokenLatency Avg float 首句时延的平均值。
FirstTokenLatency Min float 首句时延的最小值。
FirstTokenLatency Max float 首句时延的最大值。
FirstTokenLatency 50% float 首句时延的50分位值。
FirstTokenLatency 80% float 首句时延的80分位值。
InputTokens Avg float 单次请求输入的token长度平均值。
OutputTokens Avg float 单次请求输出的token长度平均值。
SuccessRate float 请求成功率。