Skip to content

Commit

Permalink
更新文档 (#614)
Browse files Browse the repository at this point in the history
  • Loading branch information
Dobiichi-Origami authored Jun 27, 2024
1 parent bd9dacc commit 9180bab
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 11 deletions.
44 changes: 33 additions & 11 deletions cookbook/evaluation/opencompass_evaluator.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"# 在千帆 Python SDK 使用 OpenCompass 提供的评估器\n",
"# 在千帆 Python SDK 使用 OpenCompass 提供的功能\n",
"\n",
"OpenCompass是由上海人工智能实验室开源的大模型评测平台。它涵盖了学科、语言、知识、理解、推理等五大评测维度,能够全面评估大模型的能力。OpenCompass作为一个评测工具,对于研究和开发大模型的人员来说,是非常有价值的资源。通过使用OpenCompass,用户可以更准确地了解他们的大模型在各项任务上的表现,从而进行针对性的优化和改进。\n",
"\n",
"千帆 Python SDK 中内置的评估模块,支持用户使用 OpenCompass 提供的评估器,对模型的推理结果进行评估\n",
"千帆 Python SDK 中内置的评估模块,支持用户使用 OpenCompass 提供的评估器和 `TEXT_POSTPROCESSORS` 对象,对模型的推理结果进行评估前的预处理,以及评估\n",
"\n",
"# 前置准备\n",
"\n",
Expand All @@ -27,9 +27,7 @@
{
"name": "stdout",
"output_type": "stream",
"text": [

]
"text": []
}
],
"source": [
Expand All @@ -55,9 +53,7 @@
{
"name": "stdout",
"output_type": "stream",
"text": [

]
"text": []
}
],
"source": [
Expand Down Expand Up @@ -88,6 +84,34 @@
"\n",
"在本教程编写时,用户应可以直接使用上面列表所列的评估器。\n",
"\n",
"而为了使用来自 OpenCompass 的 `TEXT_POSTPROCESSORS` 模块,用户应该首先对其进行一层封装:大多数 `TEXT_POSTPROCESSORS` 函数都只支持传入一个 `str` 参数作为入参。我们需要对 `TEXT_POSTPROCESSORS` 模块进行包装,使其能够额外接收 `**kwargs` 作为入参。\n",
"\n",
"例如,手动编写一个 `wrapper` 函数"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"vscode": {
"languageId": "shellscript"
}
},
"outputs": [],
"source": [
"def open_compass_text_post_processor_wrapper(fn: Callable) -> Callable:\n",
" def wrapper(*args, **kwargs) -> str:\n",
" return fn(*args)\n",
"\n",
" return wrapper"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"用户可以根据自身的需求,调整实际传入给 `TEXT_POSTPROCESSORS` 参数的入参。例如,有些 `TEXT_POSTPROCESSORS` 参数需要传入 `option` 参数。\n",
"\n",
"下面我们演示如何使用其中的 `PassRateEvaluator` 评估器,`BleuEvaluator` 评估器和 `JiebaRougeEvaluator` 评估器来进行一次评估。\n",
"\n",
"## 导入数据集\n",
Expand Down Expand Up @@ -144,9 +168,7 @@
{
"name": "stderr",
"output_type": "stream",
"text": [

]
"text": []
}
],
"source": [
Expand Down
12 changes: 12 additions & 0 deletions docs/evaluation.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,18 @@ em = EvaluationManager(local_evaluators=local_evaluators)
result = em.eval([Model(version_id="amv-qb8ijukaish3")], ds)
```

### 评估前预处理 Hook

`EvaluationManager` 对象提供了 `pre_processors` 成员,用户可以设置包含 `Callable` 对象或者 `BaseLocalMapOperator` 对象的数组,以在拿到模型输出之后、评估开始之前,进行一些简单的预处理操作。例如:在大模型输出中提取选择题的答案,方便后续判断是否与选择题的答案一致。

`pre_processors` 数组的对象必须能够接收一个 `str` 对象作为入参,这个对象表示大模型的输出。同时,我们还以命名参数的形式提供了 `input``reference` 两个入参,代表大模型的输入,以及预期的输出。

调用如下所示:

`pre_processor(single_output, input=single_input, reference=reference)`

预处理器应该返回被处理后的模型输出。

### 获取评估结果

和在线评估一样,完成离线评估后,评估得到的数据集会被保存在返回的 `EvaluationResult` 对象的 `result_dataset` 成员中。
Expand Down

0 comments on commit 9180bab

Please sign in to comment.