Shortcuts

快速开始

image

概览

在 OpenCompass 中评估一个模型通常包括以下几个阶段:配置 -> 推理 -> 评估 -> 可视化

配置:这是整个工作流的起点。您需要配置整个评估过程,选择要评估的模型和数据集。此外,还可以选择评估策略、计算后端等,并定义显示结果的方式。

推理与评估:在这个阶段,OpenCompass 将会开始对模型和数据集进行并行推理和评估。推理阶段主要是让模型从数据集产生输出,而评估阶段则是衡量这些输出与标准答案的匹配程度。这两个过程会被拆分为多个同时运行的“任务”以提高效率,但请注意,如果计算资源有限,这种策略可能会使评测变得更慢。如果需要了解该问题及解决方案,可以参考 FAQ: 效率

可视化:评估完成后,OpenCompass 将结果整理成易读的表格,并将其保存为 CSV 和 TXT 文件。你也可以激活飞书状态上报功能,此后可以在飞书客户端中及时获得评测状态报告。

接下来,我们将展示 OpenCompass 的基础用法,展示预训练模型 OPT-125MOPT-350MSIQAWinograd 基准任务上的评估。它们的配置文件可以在 configs/eval_demo.py 中找到。

在运行此实验之前,请确保您已在本地安装了 OpenCompass。这个例子可以在一台 GTX-1660-6G GPU 下成功运行。 对于参数更大的模型,如 Llama-7B,请参考 configs 目录 中提供的其他示例。

配置评估任务

在 OpenCompass 中,每个评估任务由待评估的模型和数据集组成。评估的入口点是 run.py。用户可以通过命令行或配置文件选择要测试的模型和数据集。

用户可以使用 --models--datasets 结合想测试的模型和数据集。

python run.py --models hf_opt_125m hf_opt_350m --datasets siqa_gen winograd_ppl

模型和数据集的配置文件预存于 configs/modelsconfigs/datasets 中。用户可以使用 tools/list_configs.py 查看或过滤当前可用的模型和数据集配置。

# 列出所有配置
python tools/list_configs.py
# 列出与llama和mmlu相关的所有配置
python tools/list_configs.py llama mmlu
关于 list_configs

运行 python tools/list_configs.py llama mmlu 将产生如下输出:

+-----------------+-----------------------------------+
| Model           | Config Path                       |
|-----------------+-----------------------------------|
| hf_llama2_13b   | configs/models/hf_llama2_13b.py   |
| hf_llama2_70b   | configs/models/hf_llama2_70b.py   |
| ...             | ...                               |
+-----------------+-----------------------------------+
+-------------------+---------------------------------------------------+
| Dataset           | Config Path                                       |
|-------------------+---------------------------------------------------|
| cmmlu_gen         | configs/datasets/cmmlu/cmmlu_gen.py               |
| cmmlu_gen_ffe7c0  | configs/datasets/cmmlu/cmmlu_gen_ffe7c0.py        |
| ...               | ...                                               |
+-------------------+---------------------------------------------------+

用户可以使用第一列中的名称作为 python run.py--models--datasets 的输入参数。对于数据集,同一名称的不同后缀通常表示其提示或评估方法不同。

没有列出的模型?

如果您想评估其他模型,请查看 “命令行(自定义 HF 模型)”选项卡,了解无需配置文件自定义 HF 模型的方法,或 “配置文件”选项卡,了解准备模型配置的通用方法。

警告

OpenCompass 通常假定运行环境网络是可用的。如果您遇到网络问题或希望在离线环境中运行 OpenCompass,请参阅 FAQ - 网络 - Q1 寻求解决方案。

接下来的部分将使用基于配置的方法作为示例来解释其他特征。

启动评估

由于 OpenCompass 默认并行启动评估过程,我们可以在第一次运行时以 --debug 模式启动评估,并检查是否存在问题。在 --debug 模式下,任务将按顺序执行,并实时打印输出。

python run.py configs/eval_demo.py -w outputs/demo --debug

预训练模型 ‘facebook/opt-350m’ 和 ‘facebook/opt-125m’ 将在首次运行期间从 HuggingFace 自动下载。 如果一切正常,您应该看到屏幕上显示 “Starting inference process”:

[2023-07-12 18:23:55,076] [opencompass.openicl.icl_inferencer.icl_gen_inferencer] [INFO] Starting inference process...

然后,您可以按 ctrl+c 中断程序,并以正常模式运行以下命令:

python run.py configs/eval_demo.py -w outputs/demo

在正常模式下,评估任务将在后台并行执行,其输出将被重定向到输出目录 outputs/demo/{TIMESTAMP}。前端的进度条只指示已完成任务的数量,而不考虑其成功或失败。任何后端任务失败都只会在终端触发警告消息。

run.py 中的更多参数

以下是与评估相关的一些参数,可以帮助您根据环境配置更有效的推理任务:

  • -w outputs/demo:保存评估日志和结果的工作目录。在这种情况下,实验结果将保存到 outputs/demo/{TIMESTAMP}

  • -r:重用现有的推理结果,并跳过已完成的任务。如果后面跟随时间戳,将重用工作空间路径下该时间戳的结果;否则,将重用指定工作空间路径下的最新结果。

  • --mode all:指定任务的特定阶段。

    • all:(默认)执行完整评估,包括推理和评估。

    • infer:在每个数据集上执行推理。

    • eval:根据推理结果进行评估。

    • viz:仅显示评估结果。

  • --max-partition-size 40000:数据集分片大小。一些数据集可能很大,使用此参数可以将它们分成多个子任务以有效利用资源。但是,如果分片过细,由于模型加载时间较长,整体速度可能会变慢。

  • --max-num-workers 32:并行任务的最大数量。在如 Slurm 之类的分布式环境中,此参数指定提交任务的最大数量。在本地环境中,它指定同时执行的任务的最大数量。请注意,实际的并行任务数量取决于可用的 GPU 资源,可能不等于这个数字。

如果您不是在本地机器上执行评估,而是使用 Slurm 集群,您可以指定以下参数:

  • --slurm:在集群上使用 Slurm 提交任务。

  • --partition(-p) my_part:Slurm 集群分区。

  • --retry 2:失败任务的重试次数。

参见

入口还支持将任务提交到阿里巴巴深度学习中心(DLC),以及更多自定义评估策略。请参考 评测任务发起 了解详情。

可视化评估结果

评估完成后,评估结果表格将打印如下:

dataset    version    metric    mode      opt350m    opt125m
---------  ---------  --------  ------  ---------  ---------
siqa       e78df3     accuracy  gen         21.55      12.44
winograd   b6c7ed     accuracy  ppl         51.23      49.82

所有运行输出将定向到 outputs/demo/ 目录,结构如下:

outputs/default/
├── 20200220_120000
├── 20230220_183030     # 每个实验一个文件夹
│   ├── configs         # 用于记录的已转储的配置文件。如果在同一个实验文件夹中重新运行了不同的实验,可能会保留多个配置
│   ├── logs            # 推理和评估阶段的日志文件
│   │   ├── eval
│   │   └── infer
│   ├── predictions   # 每个任务的推理结果
│   ├── results       # 每个任务的评估结果
│   └── summary       # 单个实验的汇总评估结果
├── ...

打印评测结果的过程可被进一步定制化,用于输出一些数据集的平均分 (例如 MMLU, C-Eval 等)。

关于评测结果输出的更多介绍可阅读 结果展示

更多教程

想要更多了解 OpenCompass, 可以点击下列链接学习。

Read the Docs v: latest
Versions
latest
stable
Downloads
epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.
@沪ICP备2021009351号-23 OpenCompass Open Platform Service Agreement