自动调优配置协议说明¶
概述¶
配置协议简介¶
自动调优配置协议采用分层结构设计,顶层包含两个核心字段。
- strategy: 调优策略配置,定义量化配置生成策略和量化基础配置。
- evaluation: 评估服务配置,定义模型精度评估的方式和量化模型服务化拉起相关参数。
配置文件位置¶
用户需要自定义调优配置文件,可以参考 example 目录下的配置文件格式进行自定义。
基础配置结构¶
strategy:
type: <strategy_type> # 调优策略类型,如 standing_high、standing_high_with_experience
# 不同策略有不同的配置字段与语义,详见各策略文档
evaluation:
type: service_oriented
demand:
expectations:
# 精度期望列表:用于描述“需要在哪些数据集上达到什么精度要求”
evaluation:
type: aisbench
# 具体字段详见下文 evaluation.evaluation 小节
inference_engine:
# 推理引擎配置
配置字段详解¶
strategy - 调优策略配置¶
作用: 定义调优策略的类型、参数和量化基础配置。
type - 策略类型
作用: 指定调优算法的类型,不同的策略类型对应不同的调优算法。
类型: string
可选值: 根据已实现的调优策略而定,例如 standing_high、standing_high_with_experience。
策略特有配置字段
不同调优策略的配置字段差异较大,详细的配置项请参考相应算法文档的「YAML 配置字段详解」章节。目前已支持的算法如下:
evaluation - 评估服务配置¶
作用: 定义模型精度评估的配置,包括评估服务类型、测评工具配置和推理引擎配置。
核心字段:
| 字段名 | 作用 | 类型 | 必选/可选 | 说明 |
|---|---|---|---|---|
| type | 评估服务类型 | string | 必选 | 当前支持 service_oriented(面向服务的评估,通过服务化方式启动模型进行评估)。 |
| demand | 精度需求配置 | object | 必选 | 定义模型精度评估的精度需求,包括数据集、目标精度和容差 |
| evaluation | 测评工具配置 | object | 必选 | 定义测评工具的配置参数 |
| inference_engine | 推理引擎配置 | object | 必选 | 定义推理引擎的配置参数,用于将量化后的模型以服务化方式启动 |
type - 评估服务类型¶
作用: 指定评估服务的类型。
类型: string
可选值: service_oriented(面向服务的评估,通过服务化方式启动模型进行评估)
demand - 精度需求配置¶
作用: 定义模型精度评估的精度需求,包括数据集、目标精度和容差。
字段说明:
| 字段名 | 作用 | 类型 | 必选/可选 | 说明 |
|---|---|---|---|---|
| expectations | 精度期望列表 | list | 必选 | 精度需求的列表,每个元素包含数据集、目标精度和容差,至少包含一个元素 |
expectations 字段说明:
| 字段名 | 作用 | 类型 | 必选/可选 | 说明 |
|---|---|---|---|---|
| dataset | 指定要评估的数据集 | string | 必选 | 数据集名称,必须是在 evaluation.evaluation.datasets 中配置的数据集名称 |
| target | 设置精度目标值 | number | 必选 | 期望达到的精度目标值,必须大于 0;可写数字(如 0.95)或字符串(如 "0.95") |
| tolerance | 设置精度容差 | number | 必选 | 精度允许的误差范围,必须大于等于 0;可写数字(如 0.95)或字符串(如 "0.95") |
配置示例:
# 单个数据集的精度需求
demand:
expectations:
- dataset: gsm8k
target: 83 # 目标精度 83%
tolerance: 2 # 容差 ±2%
# 多个数据集的精度需求
demand:
expectations:
- dataset: gsm8k
target: 83 # 目标精度 83%
tolerance: 2 # 容差 ±2%
- dataset: aime25
target: 85 # 目标精度 85%
tolerance: 1 # 容差 ±1%
- dataset: bfcl-simple
target: 80 # 目标精度 80%
tolerance: 2 # 容差 ±2%
注意:
- 精度单位说明:不同数据集返回的精度格式可能不同,有些数据集返回小数形式(0.0-1.0,如 0.83 表示 83%),有些数据集返回百分制(0-100,如 83 表示 83%)。
target和tolerance的单位必须与对应数据集返回的精度格式保持一致。请根据测评工具实际数据集返回的精度格式来配置target和tolerance。 - 精度数值设置说明:
target和tolerance在系统内部按 Decimal 进行计算。YAML 中可直接写数字(如0.95),也可写字符串(如"0.95");在需要严格控制小数精度的场景,建议使用字符串写法。 - 精度目标设置说明:文档中给出的精度数据仅供参考,请根据实际浮点模型的精度进行配置。理论上量化后模型不会超过原始浮点模型的精度,因此建议将精度目标设置为略低于或等于浮点模型的精度。
- 支持配置多个数据集的精度需求,每个数据集可以设置不同的目标精度和容差。
evaluation - 测评工具配置¶
作用: 定义测评工具的配置参数。
核心字段:
| 字段名 | 作用 | 类型 | 必选/可选 | 说明 |
|---|---|---|---|---|
| type | 测评工具类型 | string | 必选 | 当前支持 aisbench。 |
| precheck | 预检查配置 | list | 可选 | 定义正式评估前的预检查配置,空列表表示跳过预检查。默认值:[] |
| aisbench | AISBench 测评工具配置 | object | 必选 | AISBench 测评工具的详细配置参数(如 timeout、batch_size、generation_kwargs 等)。 |
| datasets | 数据集配置 | dict | 必选 | 定义需要评估的数据集及其配置,必须至少包含 demand.expectations 中指定的所有数据集。 |
| host | 服务主机地址 | string | 可选 | 测评端连接推理服务的地址。需与推理引擎侧保持一致。默认值:"localhost" |
| port | 服务端口 | int | 可选 | 测评端连接推理服务的端口。需与推理引擎侧保持一致。默认值:1234 |
| served_model_name | 服务化模型名称 | string | 可选 | 测评端请求时使用的模型名称标识,需与推理引擎侧保持一致。默认值:"served_model_name" |
配置示例:
evaluation:
type: aisbench
aisbench:
binary: ais_bench
mode: all
timeout: 7200
request_rate: 1.0
retry: 2
batch_size: 32
max_out_len: 512
trust_remote_code: false
pred_postprocessor: extract_non_reasoning_content
generation_kwargs:
temperature: 0.5
top_k: 10
top_p: 0.9
seed: null
repetition_penalty: 1.03
model_meta:
base_name: vllm_api_general_chat
subdir: vllm_api
abbr: vllm-api-general-chat
attr: service
default_metric_keys:
- final_accuracy
- accuracy
- score
datasets:
gsm8k:
config_name: "gsm8k_gen_0_shot_cot_str"
mode: all
aime25:
config_name: "aime2025_gen_0_shot_chat_prompt"
mode: all
bfcl-simple:
config_name: "BFCL_gen_simple"
mode: all
host: localhost
port: 1234
served_model_name: served_model_name
aisbench - AISBench 测评工具配置¶
作用:配置 AISBench 的命令行与测评运行参数(如 timeout、batch_size、generation_kwargs 等)。
aisbench 字段说明:
AISBench 测评工具的详细配置参数:
| 字段名 | 作用 | 类型 | 必选/可选 | 说明 |
|---|---|---|---|---|
| binary | 指定 AISBench 启动命令 | string | 可选 | 固定值:ais_bench。默认值:"ais_bench" |
| mode | 设置评测模式 | string | 可选 | 评测模式。默认值:"all" |
| timeout | 设置命令执行超时时间 | int | 可选 | 超时时间(秒),必须大于 0。默认值:7200(2小时) |
| cleanup_model_config | 控制是否清理模型配置 | bool | 可选 | 是否清理生成的模型配置文件。默认值:true |
| model_meta | 配置模型元数据 | object | 可选 | 模型配置元数据,详见下方说明。默认值:ModelConfigMeta() |
| request_rate | 设置默认请求速率 | float | 可选 | 默认请求速率,必须大于 0。默认值:1.0 |
| pred_postprocessor | 指定预测后处理器 | string | 可选 | 预测后处理器名称。默认值:"extract_non_reasoning_content" |
| retry | 设置请求重试次数 | int | 可选 | 请求重试次数,必须大于等于 0。默认值:2 |
| batch_size | 设置批处理大小 | int | 可选 | 批处理大小,必须大于 0。默认值:1 |
| max_out_len | 设置最大输出长度 | int | 可选 | 最大输出长度,必须大于 0。默认值:512 |
| trust_remote_code | 控制是否信任远程代码 | bool | 可选 | 是否信任远程代码。默认值:false |
| generation_kwargs | 服务化推理后端配置生成参数 | dict | 可选 | 生成参数配置字典。默认值:{} |
| extra_args | 添加额外命令行参数 | list | 可选 | 额外的命令行参数列表。默认值:[] |
| log_dir | 指定日志目录路径 | string | 可选 | 日志目录路径,空字符串表示使用默认路径。默认值:"" |
model_meta 字段说明:
下面参数主要用于获得服务化推理后端模型配置:
| 字段名 | 作用 | 类型 | 必选/可选 | 说明 |
|---|---|---|---|---|
| directory | 指定模型配置目录路径 | string | 可选 | 模型配置目录的显式路径,空字符串表示使用默认路径。默认值:"" |
| subdir | 指定模型服务化后端配置子目录 | string | 可选 | 模型服务化后端配置子目录。默认值:"vllm_api" |
| base_name | 指定模型服务化后端配置基础名称 | string | 可选 | 模型服务化后端配置基础名称。默认值:"vllm_api_general_chat" |
| name_suffix | 指定模型服务化后端配置名称后缀 | string | 可选 | 模型服务化后端配置名称后缀,auto 表示自动生成。默认值:"auto" |
| abbr | 指定模型配置缩写 | string | 可选 | 模型配置缩写。默认值:"vllm-api-general-chat" |
| attr | 指定模型配置属性 | string | 可选 | 模型配置属性。默认值:"service" |
注意: 上面大部分参数来自于 AISBench 命令行参数与服务化推理后端参数,可以参考 AISBench 详细参数说明 进行配置。
datasets - 数据集配置¶
作用:配置待评估数据集及每个数据集在 AISBench 中的参数;必须至少包含 demand.expectations 中出现的所有数据集。
datasets 字段说明:
该字段指定了不同的数据集键与 AISBench 侧数据集配置的对应关系。下文示例中仅列出三个数据集(gsm8k、aime25、bfcl-simple);更多数据集可参考 AISBench 文档数据集支持列表 自行扩展。
每个数据集的配置字段说明:
| 字段名 | 作用 | 类型 | 必选/可选 | 说明 |
|---|---|---|---|---|
| config_name | 指定 AISBench 中的配置名称 | string | 必选 | 数据集在 AISBench 中的配置名称,非空字符串 |
| mode | 设置该数据集的评测模式 | string | 可选 | 评测模式,空字符串表示使用全局模式。默认值:"" |
| request_rate | 设置该数据集的请求速率 | float | 可选 | 请求速率,0.0 表示使用全局默认值。必须大于等于 0。默认值:0.0 |
| max_out_len | 设置该数据集的最大输出长度 | int | 可选 | 最大输出长度,None 表示使用全局默认值。如果指定则必须大于 0。默认值:None |
| returns_tool_calls | 控制是否返回工具调用 | bool | 可选 | 是否返回工具调用,None 表示不写入该字段。默认值:None |
| api_chat_type | 指定该数据集使用的 API Chat 类型 | string | 可选 | 该字段需与 AISBench 对应数据集配置所要求的 API/请求格式保持一致。默认值:"VLLMCustomAPIChat" |
| extra_args | 添加该数据集的额外命令行参数 | list | 可选 | 额外的命令行参数列表。默认值:[] |
precheck - 预检查配置(可选)¶
作用: 定义正式评估前的预检查配置,用于在每次迭代的模型评估前对量化后的模型进行预验证。
类型: list
说明: precheck 是一个列表,每个元素是一个预检查规则配置,包含 type 字段用于指定预检查类型。如果配置了 precheck 且不为空列表,系统会在正式评估前执行预检查。
支持的预检查类型: expected_answer
expected_answer - 期望答案验证
作用: 验证模型输出是否包含预期的答案内容。
字段说明:
| 字段名 | 作用 | 类型 | 必选/可选 | 说明 |
|---|---|---|---|---|
| type | 指定预检查类型 | string | 必选 | 固定值:expected_answer。 |
| test_cases | 配置测试用例列表 | list | 可选 | 测试用例列表,使用键值对格式(问题: 答案)。如果不配置,默认使用一个测试用例("What is 2+2?": "4")。默认值:[{"What is 2+2?": "4"}] |
| max_tokens | 设置最大 token 数 | int | 可选 | 必须大于零。默认值:512 |
| timeout | 设置超时时间 | float | 可选 | 超时时间(秒),必须大于零。默认值:60.0 |
test_cases 字段说明:
test_cases 使用字典格式(键值对),键为问题,值为答案:
test_cases:
- "What is 2+2?": ["4", "four"] # 期望响应中包含 "4" 或 "four"
- "What is the capital of China?": "Beijing" # 期望响应中包含 "Beijing"
格式说明:
- 键(问题):字符串类型,测试消息
- 值(答案):可以是字符串、字符串列表
- 字符串:如
"4",表示期望响应中包含 "4" - 字符串列表:如
["4", "four"],表示期望响应中包含 "4" 或 "four" 中的任意一个
配置示例:
precheck:
- type: expected_answer
test_cases:
- "What is 2+2?": ["4", "four"]
- "What is the capital of China?": "Beijing"
max_tokens: 1024
timeout: 60.0
注意:
- 预检查功能会在每次迭代的模型评估前执行(在服务化启动后)。系统会依次执行所有配置的预检查规则,如果任何一个预检查失败,系统会跳过本次迭代的正式评估,返回数据集全零结果,直接开启下一次迭代。
- 预检查的目的是快速发现明显的问题,避免浪费时间进行完整的评估。如果所有预检查都通过,系统会继续进行正式的精度评估。
- 仅支持英文问答:预检查功能目前仅支持英文问答,测试消息和期望答案应使用英文。
- 如果不配置
precheck字段或配置为空列表,将跳过预检查直接进行正式评估。
inference_engine - 推理引擎配置¶
作用: 定义推理引擎的配置参数,用于将量化后的模型以服务化方式启动。
字段说明:
| 字段名 | 作用 | 类型 | 必选/可选 | 说明 |
|---|---|---|---|---|
| type | 指定推理引擎类型 | string | 必选 | 当前只支持 vllm-ascend。 |
| entrypoint | 指定服务入口点 | string | 可选 | 服务入口点,非空字符串。默认 vllm.entrypoints.openai.api_server 为 vLLM OpenAI 兼容 API 服务入口;若需其他入口,须与当前安装的 vLLM/vLLM-Ascend 中可 -m 运行的模块一致。 |
| env_vars | 配置环境变量 | dict | 可选 | 环境变量配置。默认值:{} |
| served_model_name | 指定服务化模型名称 | string | 可选 | 推理服务对外使用的模型名称标识,非空字符串。需与测评端(evaluation.evaluation)保持一致。默认值:"served_model_name" |
| host | 指定服务主机地址 | string | 可选 | 推理服务监听地址,支持 localhost、IPv4、IPv6 格式。需与测评端保持一致。默认值:"localhost" |
| port | 指定服务端口 | int | 可选 | 推理服务监听端口,范围:1-65535。需与测评端保持一致。默认值:1234 |
| health_check_endpoint | 指定健康检查端点 | string | 可选 | 就绪探测时请求的 HTTP 路径,须与推理进程实际提供的、可返回成功响应的 URL 一致。默认 "/v1/models" 对应常见 OpenAI 兼容服务的模型列表接口。必须以 / 开头,其它取值无统一列表,可按部署的 vLLM-Ascend 真实路由自定义。 |
| startup_timeout | 设置启动超时时间 | int | 可选 | 启动超时时间(秒),必须大于 0。默认值:600 |
| args | 配置推理引擎启动参数 | dict | 可选 | 推理引擎启动参数,用于添加其他 vLLM-Ascend 参数配置。默认值:{} |
注意: 不同模型拉起服务化时需要的参数可能不同,用户需要根据实际模型调整服务化参数。可以参考 vLLM-Ascend 教程 按模型需求配置参数,启动参数可以在 args 中进行添加,环境变量可以在 env_vars 中添加。
配置示例:
inference_engine:
type: vllm-ascend
entrypoint: vllm.entrypoints.openai.api_server
env_vars:
HCCL_BUFFSIZE: 1024
VLLM_VERSION: 0.11.0
ASCEND_RT_VISIBLE_DEVICES: 0
served_model_name: served_model_name
host: localhost
port: 1234
health_check_endpoint: /v1/models
startup_timeout: 600
args:
enforce-eager: true
served-model-name: served_model_name
trust-remote-code: true
tensor-parallel-size: 1
data-parallel-size: 1
quantization: ascend
enable-prefix-caching: false
max-model-len: 8192
max-num-batched-tokens: 8192
gpu-memory-utilization: 0.9
additional_config:
ascend_scheduler_config:
enable: true
enable_weight_nz_layout: true
使用示例¶
完整的自动调优配置示例请参考:
- standing_high 调优策略配置:standing_high.yaml
- standing_high_with_experience 调优策略配置:standing_high_with_experience.yaml