From 2602c1ad827bac159e818e23aa8a7954abb335d3 Mon Sep 17 00:00:00 2001 From: Mor-Li <2568818204@qq.com> Date: Sat, 26 Apr 2025 13:18:10 +0800 Subject: [PATCH] update needlebench docs for chinese --- .../advanced_guides/needleinahaystack_eval.md | 81 +++++++------------ 1 file changed, 28 insertions(+), 53 deletions(-) diff --git a/docs/zh_cn/advanced_guides/needleinahaystack_eval.md b/docs/zh_cn/advanced_guides/needleinahaystack_eval.md index 74abaa57..d30f7755 100644 --- a/docs/zh_cn/advanced_guides/needleinahaystack_eval.md +++ b/docs/zh_cn/advanced_guides/needleinahaystack_eval.md @@ -16,37 +16,10 @@ - **祖先追溯挑战(Ancestral Trace Challenge, ATC)**:通过设计“亲属关系针”,测试LLM处理真实长文本中多层逻辑挑战的能力。在ATC任务中,通过一系列逻辑推理问题,检验模型对长文本中每个细节的记忆和分析能力,在此任务中,我们去掉了无关文本(Haystack)的设定,而是将所有文本设计为关键信息,LLM必须综合运用长文本中的所有内容和推理才能准确回答问题。 -### 评估步骤 +## 评估步骤 -> 注意:在最新代码中,OpenCompass已经设置数据集从[Huggingface的接口](https://huggingface.co/datasets/opencompass/NeedleBench)中自动加载,可以直接跳过下面的手动下载安放数据集。 +> 注意:在最新的OpenCompass代码中,NeedleBench数据集会自动从[Huggingface接口](https://huggingface.co/datasets/opencompass/NeedleBench)加载,无需手动下载或配置数据集,您可以直接运行评测命令。 -1. 从[这里](https://github.com/open-compass/opencompass/files/14741330/needlebench.zip)下载数据集。 - -2. 将下载的文件放置于`opencompass/data/needlebench/`目录下。`needlebench`目录中预期的文件结构如下所示: - -``` -opencompass/ -├── configs -├── docs -├── data -│ └── needlebench -│ ├── multi_needle_reasoning_en.json -│ ├── multi_needle_reasoning_zh.json -│ ├── names.json -│ ├── needles.jsonl -│ ├── PaulGrahamEssays.jsonl -│ ├── zh_finance.jsonl -│ ├── zh_game.jsonl -│ ├── zh_government.jsonl -│ ├── zh_movie.jsonl -│ ├── zh_tech.jsonl -│ ├── zh_general.jsonl -├── LICENSE -├── opencompass -├── outputs -├── run.py -├── more... -``` ### `OpenCompass`环境配置 @@ -60,13 +33,13 @@ pip install -e . ### 配置数据集 -我们在`configs/datasets/needlebench`中已经预先配置好了关于常见长度区间(4k, 8k, 32k, 128k, 200k, 1000k)的长文本测试设定,您可以通过在配置文件中定义相关参数,以灵活地创建适合您需求的数据集。 +我们在`opencompass/configs/datasets/needlebench`中已经预先配置好了关于常见长度区间(4k, 8k, 32k, 128k, 200k, 1000k)的长文本测试设定,您可以通过在配置文件中定义相关参数,以灵活地创建适合您需求的数据集。 ### 评估示例 -#### 使用`LMDeploy`部署的 `InternLM2-7B` 模型进行评估 +#### 使用`VLLM`部署的 `Qwen2-5-7B` 模型进行评估 -例如,使用`LMDeploy`部署的 `InternLM2-7B` 模型进行评估NeedleBench-4K的所有任务,可以在命令行中直接使用以下命令,该命令会调用预定义好的模型、数据集配置文件,而无需额外书写配置文件: +例如,使用`VLLM`部署的 `Qwen2-5-7B` 模型进行评估NeedleBench-128K的所有任务,可以在命令行中直接使用以下命令,该命令会调用预定义好的模型、数据集配置文件,而无需额外书写配置文件: ##### 本地评估 @@ -74,7 +47,7 @@ pip install -e . ```bash # 本地评估 -python run.py --dataset needlebench_4k --models lmdeploy_internlm2_chat_7b --summarizer needlebench/needlebench_4k_summarizer +python run.py --dataset needlebench_128k --models vllm_qwen2_5_7b_instruct_128k --summarizer needlebench/needlebench_128k_summarizer ``` ##### 在Slurm集群上评估 @@ -83,60 +56,62 @@ python run.py --dataset needlebench_4k --models lmdeploy_internlm2_chat_7b --su ```bash # Slurm评估 -python run.py --dataset needlebench_4k --models lmdeploy_internlm2_chat_7b --summarizer needlebench/needlebench_4k_summarizer --slurm -p partition_name -q reserved --max-num-workers 16 +python run.py --dataset needlebench_128k --models vllm_qwen2_5_7b_instruct_128k --summarizer needlebench/needlebench_128k_summarizer --slurm -p partition_name -q reserved --max-num-workers 16 ``` ##### 只评估子数据集 -如果只想测试原始的大海捞针任务设定,比如可以更换数据集的参数为`needlebench_single_4k`,这对应于4k长度下的单针版本的大海捞针测试: +如果只想测试原始的大海捞针任务设定,比如可以更换数据集的参数为`needlebench_single_128k`,这对应于4k长度下的单针版本的大海捞针测试: ```bash -python run.py --dataset needlebench_single_4k --models lmdeploy_internlm2_chat_7b --summarizer needlebench/needlebench_4k_summarizer --slurm -p partition_name -q reserved --max-num-workers 16 +python run.py --dataset needlebench_single_128k --models vllm_qwen2_5_7b_instruct_128k --summarizer needlebench/needlebench_128k_summarizer --slurm -p partition_name -q reserved --max-num-workers 16 ``` -您也可以进一步选择子数据集,如更换数据集`--datasets`的参数为`needlebench_single_4k/needlebench_zh_datasets`,仅仅进行中文版本的单针4K长度下的大海捞针任务测试,其中`/`后面的参数代表子数据集,您可以在`configs/datasets/needlebench/needlebench_4k/needlebench_single_4k.py`中找到可选的子数据集变量,如: +您也可以进一步选择子数据集,如更换数据集`--datasets`的参数为`needlebench_single_128k/needlebench_zh_datasets`,仅仅进行中文版本的单针4K长度下的大海捞针任务测试,其中`/`后面的参数代表子数据集,您可以在`opencompass/configs/datasets/needlebench/needlebench_128k/needlebench_single_128k.py`中找到可选的子数据集变量,如: ```bash -python run.py --dataset needlebench_single_4k/needlebench_zh_datasets --models lmdeploy_internlm2_chat_7b --summarizer needlebench/needlebench_4k_summarizer --slurm -p partition_name -q reserved --max-num-workers 16 +python run.py --dataset needlebench_single_128k/needlebench_zh_datasets --models vllm_qwen2_5_7b_instruct_128k --summarizer needlebench/needlebench_128k_summarizer --slurm -p partition_name -q reserved --max-num-workers 16 ``` -注意在评估前预先安装[LMDeploy](https://github.com/InternLM/lmdeploy)工具 +注意在评估前预先安装[VLLM](https://docs.vllm.ai/en/latest/getting_started/installation/gpu.html)工具 ```bash -pip install lmdeploy +# Install vLLM with CUDA 12.4. +# For other CUDA versions, please refer to the [official documentation](https://docs.vllm.ai/en/latest/getting_started/installation/gpu.html) +pip install vllm + ``` -这个命令将启动评估流程,参数 `-p partition_name -q auto` 和 `--max-num-workers 32` 用于指定 Slurm 分区名称和最大工作进程数。 +这个命令将启动评估流程,其中参数 `-p partition_name` 用于指定 Slurm 分区名称,`-q auto` 用于指定 quota type(资源队列类型,例如 auto、reserved 等),`--max-num-workers 32` 用于设置最大工作进程数。 #### 评估其他`Huggingface`模型 -对于其他模型,我们建议额外书写一个运行的配置文件以便对模型的`max_seq_len`, `max_out_len`参数进行修改,以便模型可以接收到完整的长文本内容。如我们预先写好的`configs/eval_needlebench.py`文件。完整内容如下 +对于其他模型,我们建议额外书写一个运行的配置文件以便对模型的`max_seq_len`, `max_out_len`参数进行修改,以便模型可以接收到完整的长文本内容。如这里的的`configs/eval_needlebench.py`文件。完整内容如下 ```python from mmengine.config import read_base # 我们使用mmengine.config来import其他的配置文件中的变量 with read_base(): - # from .models.hf_internlm.lmdeploy_internlm2_chat_7b import models as internlm2_chat_7b_200k from .models.hf_internlm.hf_internlm2_chat_7b import models as internlm2_chat_7b - # Evaluate needlebench_4k, adjust the configuration to use 8k, 32k, 128k, 200k, or 1000k if necessary. - # from .datasets.needlebench.needlebench_4k.needlebench_4k import needlebench_datasets - # from .summarizers.needlebench import needlebench_4k_summarizer as summarizer + # Evaluate needlebench_32k, adjust the configuration to use 4k, 32k, 128k, 200k, or 1000k if necessary. + # from .datasets.needlebench.needlebench_32k.needlebench_32k import needlebench_datasets + # from .summarizers.needlebench import needlebench_32k_summarizer as summarizer - # only eval original "needle in a haystack test" in needlebench_4k - from .datasets.needlebench.needlebench_4k.needlebench_single_4k import needlebench_zh_datasets, needlebench_en_datasets - from .summarizers.needlebench import needlebench_4k_summarizer as summarizer + # only eval original "needle in a haystack test" in needlebench_32k + from .datasets.needlebench.needlebench_32k.needlebench_single_32k import needlebench_zh_datasets, needlebench_en_datasets + from .summarizers.needlebench import needlebench_32k_summarizer as summarizer # eval Ancestral Tracing Challenge(ATC) - # from .datasets.needlebench.atc.atc_choice_50 import needlebench_datasets - # from .summarizers.needlebench import atc_summarizer_50 as summarizer + # from .datasets.needlebench.atc.atc_0shot_nocot_2_power_en import needlebench_datasets + # ATC use default summarizer thus no need to import summarizer datasets = sum([v for k, v in locals().items() if ('datasets' in k)], []) for m in internlm2_chat_7b: - m['max_seq_len'] = 30768 # 保证InternLM2-7B模型能接收到完整的长文本,其他模型需要根据各自支持的最大序列长度修改。 - m['max_out_len'] = 2000 # 保证在多针召回任务中能接收到模型完整的回答 + m['max_seq_len'] = 32768 # 保证InternLM2-7B模型能接收到完整的长文本,其他模型需要根据各自支持的最大序列长度修改。 + m['max_out_len'] = 4096 models = internlm2_chat_7b