参数说明#
执行 evalscope eval --help 可获取全部参数说明。
模型参数#
--model: 被评测的模型名称。指定为模型在ModelScope中的
id,将自动下载模型,例如Qwen/Qwen2.5-0.5B-Instruct;指定为模型的本地路径,例如
/path/to/model,将从本地加载模型;评测目标为模型API服务时,需要指定为服务对应的模型id,例如
Qwen2.5-0.5B-Instruct。
--model-id: 被评测的模型的别名,用于报告展示。默认为model的最后一部分,例如Qwen/Qwen2.5-0.5B-Instruct的model-id为Qwen2.5-0.5B-Instruct。--api-url: 模型API端点,默认为None;支持传入本地或远端的OpenAI API格式端点,例如http://127.0.0.1:8000/v1。--api-key: 模型API端点密钥,默认为EMPTY--model-args: 模型加载参数,以逗号分隔的key=value形式;或以json字符串格式传入,将解析为字典。默认参数:revision: 模型版本,默认为masterprecision: 模型精度,默认为torch.float16device_map: 模型分配设备,默认为auto
--model-task: 模型任务类型,默认为text_generation,可选text_generation,image_generation--chat-template: 模型推理模板,默认为None,表示使用transformers的apply_chat_template;支持传入jinjia模版字符串,来自定义推理模板
模型推理参数#
--generation-config: 生成参数,以逗号分隔的key=value形式;或以json字符串格式传入,将解析为字典:timeout: 可选整数,表示请求超时时间(单位:秒)。stream: 可选布尔值,是否以流式方式返回响应(取决于模型)。max_tokens: 可选整数,最大生成的token数量(取决于模型)。top_p: 可选浮点数,采用nucleus采样,模型只考虑概率质量为top_p的token。temperature: 可选浮点数,采样温度,范围0~2,越高输出越随机,越低越确定。frequency_penalty: 可选浮点数,范围-2.0~2.0,正值惩罚重复token,减少重复。仅OpenAI、Google、Grok、Groq、vLLM、SGLang支持。presence_penalty: 可选浮点数,范围-2.0~2.0,正值惩罚已出现token,鼓励谈论新话题。仅OpenAI、Google、Grok、Groq、vLLM、SGLang支持。logit_bias: 可选字典,映射token id到偏置值(-100~100),如"42=10,43=-10"。仅OpenAI、Grok、vLLM支持。seed: 可选整数,随机种子。仅OpenAI、Google、Mistral、Groq、HuggingFace、vLLM支持。do_sample: 可选布尔值,是否采用采样策略,否则为贪婪解码。仅Transformers模型支持。top_k: 可选整数,从top_k最可能的词中采样下一个词。仅Anthropic、Google、HuggingFace、vLLM、SGLang支持。logprobs: 可选布尔值,是否返回输出token的对数概率。支持OpenAI、Grok、TogetherAI、HuggingFace、llama-cpp-python、vLLM、SGLang。top_logprobs: 可选整数,返回每个位置概率最高的前top_logprobs个token及其概率(范围0~20)。仅OpenAI、Grok、HuggingFace、vLLM、SGLang支持。parallel_tool_calls: 可选布尔值,工具调用时是否支持并行(默认True)。仅OpenAI、Groq支持。max_tool_output: 可选整数,工具输出的最大字节数。默认16*1024。extra_body: 可选字典,向OpenAI兼容服务发送的额外请求体。extra_query: 可选字典,向OpenAI兼容服务发送的额外查询参数。extra_headers: 可选字典,向OpenAI兼容服务发送的额外请求头。height: 可选整数,图像生成模型专用,指定图像高度。width: 可选整数,图像生成模型专用,指定图像宽度。num_inference_steps: 可选整数,图像生成模型专用,推理步数。guidance_scale: 可选浮点数,图像生成模型专用,指导尺度。
传参示例:
# 例如用key=value形式传入
--model-args revision=master,precision=torch.float16,device_map=auto
--generation-config do_sample=true,temperature=0.5
# 或者用json字符串传入更复杂的参数
--model-args '{"revision": "master", "precision": "torch.float16", "device_map": "auto"}'
--generation-config '{"do_sample":true,"temperature":0.5,"chat_template_kwargs":{"enable_thinking": false}}'
数据集参数#
--datasets: 数据集名称,支持输入多个数据集,使用空格分开,数据集将自动从modelscope下载,支持的数据集参考数据集列表--dataset-args: 评测数据集的设置参数,以json字符串格式传入,将解析为字典,注意需要跟--datasets参数中的值对应:dataset_id(或local_path): 可指定数据集本地路径,指定后将尝试从本地加载数据。review_timeout: 可选浮点数,表示评测样本的超时时间(单位:秒),默认为None,表示一直等待,对于代码类任务,建议设置较短的超时时间。prompt_template: 评测数据集的prompt模板,指定后将使用模板生成prompt。例如gsm8k的模版为Question: {query}\nLet's think step by step\nAnswer:,数据集的问题将填充到模板query字段中。system_prompt: 评测数据集的系统prompt。subset_list: 评测数据子集列表,指定后将只使用子集数据。few_shot_num: few-shot的数量。few_shot_random: 是否随机采样few-shot数据,默认为False。shuffle: 是否在评测前打乱数据,默认为False。shuffle_choices: 是否在评测前打乱选项顺序,默认为False,仅多选题数据集支持。metric_list: 评测数据集的指标列表,指定后使用给定的指标评测,目前支持acc,Pass@k等。例如humaneval数据集可指定["Pass@1", "Pass@5"],注意此时需要指定repeats=5让模型在同一个样本上推理5次。filters: 评测数据集的过滤器,指定后将使用给定的过滤器过滤评测结果,可用来处理推理模型的输出,目前支持:remove_until {string}: 过滤掉模型输出结果中指定字符串之前的部分。extract {regex}: 提取模型输出结果中指定正则表达式匹配的部分。 例如ifeval数据集可指定{"remove_until": "</think>"},将过滤掉模型输出结果中</think>之前的部分,避免影响打分。
extra_params: 数据集相关的额外参数,具体参数参考各个数据集的说明,例如hle数据集的include_multi_modal参数。
--dataset-dir: 数据集下载路径,默认为~/.cache/modelscope/datasets--dataset-hub: 数据集下载源,默认为modelscope,可选huggingface--limit: 每个数据集最大评测数据量,不填写则默认为全部评测,可用于快速验证。支持int和float类型,int表示评测数据集的前N条数据,float表示评测数据集的前N%条数据。例如0.1表示评测数据集的前10%的数据,100表示评测数据集的前100条数据。
传参示例:
--datasets gsm8k arc ifeval hle \
--dataset-args '{
"gsm8k": {
"few_shot_num": 4,
"few_shot_random": false
},
"arc": {
"dataset_id": "/path/to/arc"
},
"ifeval": {
"filters": {
"remove_until": "</think>"
}
},
"hle": {
"extra_params": {
"include_multi_modal": false
}
}
}'
评测参数#
--eval-type: 评测类型,根据模型推理方式选择,默认为llm_ckpt:llm_ckpt:本地模型推理,默认从modelscope下载模型,并用transformers进行推理。openai_api:在线模型服务推理,支持任意与OpenAI API兼容的服务。text2image:本地文本转图像模型推理,默认从modelscope下载模型,并用diffusers的Pipeline进行推理。mock_llm:模拟大语言模型推理,一般用于验证功能是否正常。
--eval-batch-size: 评测批量大小,默认为1;在eval-type=service时,表示并发评测的请求数,默认为8--eval-backend: 评测后端,可选Native,OpenCompass,VLMEvalKit,RAGEval,ThirdParty,默认为Native--eval-config: 使用非Native评测后端时,需要传入该参数
Judge参数#
LLM-as-a-Judge评测参数,使用裁判模型来判断正误,包括以下参数:
--judge-strategy: 使用裁判模型的策略,可选:auto: 默认策略,根据数据集是否需要judge来决定是否使用裁判模型llm: 总是使用裁判模型rule: 不使用裁判模型,使用规则判断llm_recall: 先使用规则判断,若规则判断失败再使用裁判模型
--judge-worker-num: 裁判模型并发数,默认为1--judge-model-args: 设置裁判模型参数,以json字符串格式传入,将解析为字典,支持如下字段:api_key: 模型API端点密钥,未设置时将从环境变量MODELSCOPE_SDK_TOKEN中读取,默认为EMPTYapi_url: 模型API端点,未设置时将从环境变量MODELSCOPE_API_BASE中读取,默认为https://api-inference.modelscope.cn/v1/model_id: 模型ID,未设置时将从环境变量MODELSCOPE_JUDGE_LLM中读取,默认为Qwen/Qwen3-235B-A22B参见
关于ModelScope的模型推理服务的更多信息,请参考ModelScope API推理服务
system_prompt: 评测数据集的系统promptprompt_template: 评测数据集的prompt模板generation_config: 模型生成参数,与--generation-config参数相同。score_type: 预置的模型打分方式,可选:pattern: (默认选项)直接判断模型输出与参考答案是否相同,适合有参考答案评测。默认prompt_template
Your job is to look at a question, a gold target, and a predicted answer, and return a letter "A" or "B" to indicate whether the predicted answer is correct or incorrect. [Question] {question} [Reference Answer] {gold} [Predicted Answer] {pred} Evaluate the model's answer based on correctness compared to the reference answer. Grade the predicted answer of this new question as one of: A: CORRECT B: INCORRECT Just return the letters "A" or "B", with no text around it.numeric: 判断模型输出在prompt条件下的打分,适合无参考答案评价。默认prompt_template
Please act as an impartial judge and evaluate the quality of the response provided by an AI assistant to the user question displayed below. Your evaluation should consider factors such as the helpfulness, relevance, accuracy, depth, creativity, and level of detail of the response. Begin your evaluation by providing a short explanation. Be as objective as possible. After providing your explanation, you must rate the response on a scale of 0 (worst) to 1 (best) by strictly following this format: \"[[rating]]\", for example: \"Rating: [[0.5]]\" [Question] {question} [Response] {pred}
score_pattern:解析模型输出的正则表达式,pattern模式默认为(A|B);numeric模式默认为\[\[(\d+(?:\.\d+)?)\]\],用于提取模型打分结果。score_mapping:pattern模式下的分数映射字典,默认为{'A': 1.0, 'B': 0.0}
--analysis-report: 是否生成分析报告,默认为false;如果设置该参数,将使用judge model生成分析报告,报告中包含模型评测结果的分析解读和建议。报告输出语言将根据locale.getlocale()自动判断。
Sandbox参数#
--use-sandbox: 是否使用Sandbox进行模型评测,默认为false;如果设置该参数,将启用ms-enclave来隔离代码运行环境,提升安全性。目前仅对代码评测任务(如humaneval)有效。--sandbox-manager-config: Sandbox管理器配置参数,以json字符串格式传入,将解析为字典,支持如下字段:base_url: Sandbox管理器的基础URL,默认为None,表示使用本地管理器,配置该参数将使用远程管理器。
--sandbox-type: Sandbox类型,默认为docker。--sandbox-config: Sandbox配置参数,以json字符串格式传入,将解析为字典,支持如下字段:image: Docker镜像名称,默认为python:3.11-slim。network_enabled: 是否启用网络,默认为true。tools_config: 工具配置字典,默认为空字典{'shell_executor': {},'python_executor': {}},表示启用shell和python执行器。
其他参数#
--work-dir: 模型评测输出路径,默认为./outputs/{timestamp},文件夹结构示例如下:. ├── configs │ └── task_config_b6f42c.yaml ├── logs │ └── eval_log.log ├── predictions │ └── Qwen2.5-0.5B-Instruct │ └── general_qa_example.jsonl ├── reports │ └── Qwen2.5-0.5B-Instruct │ └── general_qa.json └── reviews └── Qwen2.5-0.5B-Instruct └── general_qa_example.jsonl--use-cache: 使用本地缓存的路径,默认为None;如果为指定路径,例如outputs/20241210_194434,将重用路径下的模型推理结果和评测结果,若未完成推理则会继续推理,之后进行评测。--rerun-review: 布尔值,若想重用模型推理结果,只重新运行评测,设置为True。默认为False,本地存在评测结果时会跳过。--seed: 随机种子,默认为42--debug: 是否开启调试模式,默认为false--ignore-errors: 是否忽略模型生成过程中的错误,默认为false--dry-run: 预检参数,不进行推理,只打印参数,默认为false