LMFlow 基准测试指南#
我们仓库支持两种添加评估设置的方式:NLL Task Setting 和 LM-Evaluation Task Setting。以下是它们的详细信息:
1. NLL任务设置#
用户可以轻松创建新任务,并在提供的nll (Negative Log Likelihood)指标上评估他们的数据集。
安装#
Fork主仓库,克隆它,并创建一个以你任务名称命名的新分支,然后安装以下内容:
# After forking...
git clone https://github.com/<YOUR-USERNAME>/LMFlow.git
cd LMFlow
git checkout -b <TASK-NAME>
conda create -n lmflow python=3.9 -y
conda activate lmflow
conda install mpi4py
pip install -e .
创建您的任务数据集文件#
运行后,我们在data目录下提供了多个可用数据集
cd data && ./download.sh && cd -
您可以参考一些给定的评估数据集文件并创建自己的数据集。 同时,您也可以查阅我们的 DATASET指南。
在这一步中,您需要确定您的回答类型,如text2text
或text_only(请注意当前的nll实现仅支持这两种回答类型)。我们将选定的回答类型记为。
准备好你自己的DATASET文件后,可以将其放入data目录下,并创建一个TASK目录。
mkdir <TASK>
mv <DATASET> <TASK>
任务注册#
请注意您的数据集路径,data/。
打开文件 examples/benchmarking.py,将您的任务信息添加到
LOCAL_DATSET_GROUP_MAP、LOCAL_DATSET_MAP 和 LOCAL_DATSET_ANSWERTYPE_MAP 中
在LOCAL_DATSET_MAP中,您需要指定DATASET文件的路径:
LOCAL_DATSET_MAP ={
"...":"...",
"<TASK>":"data/<TASK>/<DATASET>",
}
在LOCAL_DATSET_ANSWERTYPE_MAP中,您需要指定任务的
:
LOCAL_DATSET_ANSWERTYPE_MAP ={
"...":"...",
"<TASK>":"<ANSWER_TYPE>,
}
如果只有一个任务,你可以在LOCAL_DATSET_GROUP_MAP中添加类似"的键值对:
LOCAL_DATSET_GROUP_MAP ={
"...":"...",
"<TASK>":"<TASK>",
}
如果想组合多个任务,可以先指定一个组合名称,然后在LOCAL_DATSET_GROUP_MAP中添加类似"的键值对。
请记得用,分隔任务:
LOCAL_DATSET_GROUP_MAP ={
"...":"...",
"<TASK_COMBINATION>":"<TASK_1>,<TASK_2>,..",
}
完成这些项目的修改后,您可以运行自己的例如:
deepspeed examples/benchmarking.py \
--answer_type <ANSWER_TYPE> \
--use_ram_optimized_load False \
--model_name_or_path ${model_name} \
--dataset_name data/<TASK>/<DATASET>\
--deepspeed examples/ds_config.json \
--metric nll \
--prompt_structure "###Human: {input}###Assistant:" \
| tee ${log_dir}/train.log \
2> ${log_dir}/train.err
2. LM评估任务设置#
我们将EleutherAI/lm-evaluation-harness集成到
benchamrk.py中,通过直接执行评估命令。用户
也可以通过简单地修改examples/benchmarking.py中
的两个项目来使用他们自己的评估。
请参考Eleuther的
task-table
获取确切的名称。
同样地,您可以组合多个任务,首先指定一个组合名称,然后在LM_EVAL_DATASET_MAP中添加类似"的键值对。
同时,请记得用,分隔任务:
LM_EVAL_DATASET_MAP ={
"...":"...",
"<TASK_COMBINATION>":"<TASK_1>,<TASK_2>,..",
}