-
Notifications
You must be signed in to change notification settings - Fork 578
longbench_zh
iMountTai edited this page Dec 25, 2023
·
7 revisions
LongBench是一个多任务、中英双语、针对大语言模型长文本理解能力的评测基准,覆盖了多个长文本应用场景。本项目在LongBench上测试了相关模型效果。
接下来将介绍LongBench数据集的预测方法。也可参考Colab notebook:
按照官方的requirements.txt
配置环境。相关文件已被复制到本项目的scripts/longbench
目录下:
pip install -r scripts/longbench/requirements.txt
无需单独下载数据。预测脚本会自动从 🤗 Datasets下载所需数据。
运行以下脚本进行推理:
model_path=path/to/chinese_llama2_or_alpaca2
output_path=path/to/output_dir
data_class=zh
with_inst="true" # or "false" or "auto"
max_length=3584
cd scripts/longbench
python pred_llama2.py \
--model_path ${model_path} \
--predict_on ${data_class} \
--output_dir ${output_dir} \
--with_inst ${with_inst} \
--max_length ${max_length}
-
--model_path ${model_path}
:待评测模型所在目录(完整的Chinese-LLaMA-2或Chinese-Alpaca-2模型,非LoRA) -
--predict_on {data_class}
: 指定待预测的任务,可以为en
,zh
,code
,或它们的组合,以逗号分隔,如en,zh,code
-
--output_dir ${output_dir}
:评测结果的输出目录 -
--max_length ${max_length}
:指令的最大长度。注意此长度不包括system prompt以及任务相关prompt在内。 -
--with_inst ${with_inst}
:在构建模型的输入指令时是否使用Chinese-Alpaca-2的prompt及模版:-
true
:所有任务上都使用prompt及模版 -
false
:所有任务上都不使用prompt及模版 -
auto
:只在部分任务上使用prompt及模版(LongBench官方的策略) 建议在使用Alpaca模型时,设置为auto
;使用LLaMA模型时,设置为false
。
-
-
--gpus ${gpus}
:如需指定特定的GPU,请使用此参数,如0,1
。 -
--alpha ${alpha}
: NTK上下文扩展方法系数。一般设为待处理文本长度 / 模型上下文长度 * 2 - 1
。或更方便地设为auto
即可。 -
--e
:在LongBench-E数据集上进行预测。参考LongBench官方文档以了解LongBench-E的详细说明。 -
--use_flash_attention_2
: 适用flash_attention_2进行推理加速 -
--use_ntk
: 适用dynamic_ntk方法扩展上下文窗口。不适用于64K版长上下文模型。
待模型运行结束后,在${output_dir}/pred/
或${output_dir}/pred_e/
下(取决于是否在LongBench-E上测试,即是否使用了-e
)将生成各对应任务的预测文件(jsonl格式)。执行以下命令计算效果指标:
python eval.py --output_dir ${output_dir}
如果在上一步预测时使用了-e
,在eval时也需提供-e
参数:
python eval.py --output_dir ${output_dir} -e
计算结果存放在${output_dir}/pred/result.json
或${output_dir}/pred_e/result.json
下。例如在LongBench中文任务上测试(--predict_on zh
) Chinese-Alpaca-2-7B,结果为:
{
"lsht": 20.5,
"multifieldqa_zh": 32.74,
"passage_retrieval_zh": 4.5,
"vcsum": 11.52,
"dureader": 16.59
}