lm-evaluation-harness:统一评估语言模型的强大工具
项目介绍
lm-evaluation-harness 是一个开源项目,旨在为测试因果(如 GPT-2、GPT-3、GPTNeo 等)和序列到序列(如 T5、T0)语言模型提供一个统一的框架。通过提示评估,用户可以在多种 NLP 任务上测试其语言模型,如 SuperGLUE 的 WiC 任务。这个项目与 promptsource 的 eval-hackathon 分支配合使用,所有数据集来自 Huggingface 的 datasets。
项目技术分析
lm-evaluation-harness 的核心是一个模块化的评估框架,它允许用户通过命令行或库接口轻松地测试不同的语言模型。项目使用了 HuggingFace 的 transformers 库和 accelerate 包来支持并行和混合精度计算,这对于处理大型模型尤为重要。
项目支持以下几种模型API:
hf-causal
:用于因果语言模型。hf-seq2seq
:用于序列到序列模型。openai
:用于 OpenAI 的 GPT-3 模型。
用户可以通过命令行参数 --model_api_name
选择模型API,并通过 --model_args
传递模型构造参数。此外,项目支持任务版本控制,确保结果的可重现性。
项目及技术应用场景
lm-evaluation-harness 适用于以下几种场景:
- 模型基准测试:研究人员可以在标准 NLP 任务上测试其语言模型,以评估模型性能。
- 模型开发:开发人员可以使用该工具来快速迭代和测试新模型或模型变种。
- 教育:教师可以使用这个工具来教授学生如何构建和评估语言模型。
项目特点
lm-evaluation-harness 的主要特点如下:
- 统一的评估框架:支持多种语言模型和 NLP 任务,易于使用和扩展。
- 灵活的模板选择:允许用户选择特定的提示模板进行评估。
- 支持大型模型:通过 HuggingFace 的 accelerate 包,支持并行和混合精度计算。
- 结果可重现性:通过任务版本控制,确保结果可重现。
以下是一个使用 lm-evaluation-harness 的示例:
python main.py \
--model_api_name 'hf-causal' \
--model_args pretrained='gpt2' \
--task_name 'wic' \
--template_names 'same_sense','polysemous' \
--device cpu
此命令将使用预训练的 GPT-2 模型在 WiC 任务上执行评估,并选择 "same_sense" 和 "polysemous" 两种提示模板。
详细使用方法
lm-evaluation-harness 提供了丰富的命令行参数,用户可以根据需要自定义评估过程。以下是一些常用参数:
--model_api_name
:指定模型API名称。--model_args
:传递模型构造参数。--task_name
:指定任务名称。--template_names
:选择特定的提示模板。--num_fewshot
:指定 few-shot 学习的示例数量。--batch_size
:指定批处理大小。--device
:指定模型运行设备。
此外,lm-evaluation-harness 也支持作为库使用,提供了以下函数:
lm_eval.get_model
:创建模型实例。lm_eval.get_task
:创建任务实例。lm_eval.get_task_list
:创建多个任务实例。lm_eval.evaluate
:评估模型在任务上的性能。
通过这些功能,lm-evaluation-harness 成为了语言模型评估的强大工具,适用于研究、开发和教育等多个领域。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考