evalscope/docs/zh/get_started/parameters.md

110 lines
8.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 参数说明
执行 `evalscope eval --help` 可获取全部参数说明。
## 模型参数
- `--model`: 被评测的模型名称。
- 指定为模型在[ModelScope](https://modelscope.cn/)中的`id`,将自动下载模型,例如[Qwen/Qwen2.5-0.5B-Instruct](https://modelscope.cn/models/Qwen/Qwen2.5-0.5B-Instruct/summary)
- 指定为模型的本地路径,例如`/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`。
- `--model-args`: 模型加载参数,以逗号分隔的`key=value`形式或以json字符串格式传入将解析为字典。默认参数
- `revision`: 模型版本,默认为`master`
- `precision`: 模型精度,默认为`torch.float16`
- `device_map`: 模型分配设备,默认为`auto`
- `--model-task`: 模型任务类型,默认为`text_generation`,可选`text_generation`, `image_generation`
- `--generation-config`: 生成参数,以逗号分隔的`key=value`形式或以json字符串格式传入将解析为字典:
- 若使用本地模型推理基于Transformers包括如下参数[全部参数指南](https://huggingface.co/docs/transformers/main_classes/text_generation#transformers.GenerationConfig)
- `do_sample`: 是否使用采样,默认为`false`
- `max_length`: 最大长度默认为2048
- `max_new_tokens`: 生成最大长度默认为512
- `num_return_sequences`: 生成序列数量默认为1设置大于1时将生成多个序列需要设置`do_sample=True`
- `temperature`: 生成温度
- `top_k`: 生成top-k
- `top_p`: 生成top-p
- 若使用模型API服务推理`eval-type`设置为`service`),包括如下参数(具体请参考部署的模型服务):
- `max_tokens`: 生成最大长度默认为512
- `temperature`: 生成温度, 默认为0.0
- `n`: 生成序列数量默认为1注意lmdeploy目前仅支持n=1
```bash
# 例如用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}}'
```
- `--chat-template`: 模型推理模板,默认为`None`表示使用transformers的`apply_chat_template`支持传入jinjia模版字符串来自定义推理模板
- `--template-type`: 模型推理模板,已弃用,参考`--chat-template`
**以下参数仅在`eval-type=service`时有效:**
- `--api-url`: 模型API端点默认为`None`支持传入本地或远端的OpenAI API格式端点例如`http://127.0.0.1:8000/v1`。
- `--api-key`: 模型API端点密钥默认为`EMPTY`
- `--timeout`: 模型API请求超时时间默认为`None`
- `--stream`: 是否使用流式传输,默认为`False`
## 数据集参数
- `--datasets`: 数据集名称支持输入多个数据集使用空格分开数据集将自动从modelscope下载支持的数据集参考[数据集列表](./supported_dataset.md#支持的数据集)
- `--dataset-args`: 评测数据集的设置参数,以`json`字符串格式传入,将解析为字典,注意需要跟`--datasets`参数中的值对应:
- `dataset_id` (或`local_path`): 可指定数据集本地路径,指定后将尝试从本地加载数据。
- `prompt_template`: 评测数据集的prompt模板指定后将使用模板生成prompt。例如`gsm8k`的模版为`Question: {query}\nLet's think step by step\nAnswer:`,数据集的问题将填充到模板`query`字段中。
- `query_template`: 评测数据集的query模板指定后将使用模板生成query。例如`general_mcq`的模版为`问题:{question}\n{choices}\n答案: {answer}\n\n`,数据集的问题将填充到模板`question`字段中,选项填充到`choices`字段中,答案填充到`answer`字段中答案填充仅对few-shot生效
- `system_prompt`: 评测数据集的系统prompt。
- `model_adapter`: 评测数据集的模型适配器,指定后将使用给定的模型适配器评测,目前支持`generation`, `multiple_choice_logits`, `continuous_logits`对于service评测目前仅支持`generation`;部分多选题数据集支持`logits`输出。
- `subset_list`: 评测数据子集列表,指定后将只使用子集数据。
- `few_shot_num`: few-shot的数量。
- `few_shot_random`: 是否随机采样few-shot数据默认为`False`。
- `metric_list`: 评测数据集的指标列表,指定后使用给定的指标评测,目前支持`AverageAccuracy`, `AveragePass@1`, `Pass@[1-16]`。例如`humaneval`数据集可指定`["Pass@1", "Pass@5"]`,注意此时需要指定`n=5`让模型返回5个结果。
- `filters`: 评测数据集的过滤器,指定后将使用给定的过滤器过滤评测结果,可用来处理推理模型的输出,目前支持:
- `remove_until {string}`: 过滤掉模型输出结果中指定字符串之前的部分。
- `extract {regex}`: 提取模型输出结果中指定正则表达式匹配的部分。
例如`ifeval`数据集可指定`{"remove_until": "</think>"}`,将过滤掉模型输出结果中`</think>`之前的部分,避免影响打分。
```bash
# 例如
--datasets gsm8k arc
--dataset-args '{"gsm8k": {"few_shot_num": 4, "few_shot_random": false}, "arc": {"dataset_id": "/path/to/arc"}}, "ifeval": {"filters": {"remove_until": "</think>"}}'
```
- `--dataset-dir`: 数据集下载路径,默认为`~/.cache/modelscope/datasets`
- `--dataset-hub`: 数据集下载源,默认为`modelscope`,可选`huggingface`
- `--limit`: 每个数据集最大评测数据量,不填写则默认为全部评测,可用于快速验证
## 评测参数
- `--eval-batch-size`: 评测批量大小,默认为`1`;在`eval-type=service`时,表示并发评测的请求数,默认为`8`
- `--eval-stage`: (已弃用,参考`--use-cache`)评测阶段,可选`all`, `infer`, `review`, 默认为`all`
- `--eval-type`: 评测类型,可选`checkpoint`, `custom`, `service`;默认为`checkpoint`
- `--eval-backend`: 评测后端,可选`Native`, `OpenCompass`, `VLMEvalKit`, `RAGEval`, `ThirdParty`,默认为`Native`
- `OpenCompass`用于评测大语言模型
- `VLMEvalKit`用于评测多模态模型
- `RAGEval`用于评测RAG流程、Embedding模型、Reranker模型、CLIP模型
```{seealso}
其他评测后端[使用指南](../user_guides/backend/index.md)
```
- `ThirdParty` 用于其他特殊任务评测,例如[ToolBench](../third_party/toolbench.md), [LongBench](../third_party/longwriter.md)
- `--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端点密钥默认为`EMPTY`
- `api_url`: 模型API端点默认为`https://api.openai.com/v1`
- `model_id`: 模型ID默认为`gpt-3.5-turbo`
- `system_prompt`: (可选) 评测数据集的系统prompt
- `prompt_template`: (可选) 评测数据集的prompt模板
- `generation_config`: (可选) 生成参数
## 其他参数
- `--work-dir`: 模型评测输出路径,默认为`./outputs/{timestamp}`
- `--use-cache`: 使用本地缓存的路径,默认为`None`;如果为指定路径,例如`outputs/20241210_194434`,将重用路径下的模型推理结果,若未完成推理则会继续推理,之后进行评测。
- `--seed`: 随机种子,默认为`42`
- `--debug`: 是否开启调试模式,默认为`false`
- `--ignore-errors`: 是否忽略模型生成过程中的错误,默认为`false`
- `--dry-run`: 预检参数,不进行推理,只打印参数,默认为`false`