官网:MMLU Dataset | Papers With Code
大模型排行榜:MMLU Benchmark (Multi-task Language Understanding) | Papers With Code
两种特定的测试设置—衡量泛化能力和知识迁移能力:MMLU-ZS、MMLU-FS
MMLU基准的目标是揭示模型在各个任务上的盲点和不足,并推动模型在多任务语言理解方面的进一步改进和发展。mmlu-zs和mmlu-fs测试是MMLU基准中的重要组成部分,用于衡量模型在零样本和少样本学习中的能力。
在MMLU基准中,涉及到了两种特定的测试设置,即mmlu-zs(zero-shot)和mmlu-fs(few-shot)。这些测试设置旨在模拟零样本学习和少样本学习的情况,更接近人类学习的方式。mmlu-zs测试涉及在没有任何训练数据的情况下对模型进行评估,而mmlu-fs测试涉及在有限的训练数据情况下对模型进行评估。
这两种测试设置旨在衡量模型在零样本和少样本情况下的泛化能力和知识迁移能力。
===========================================================
MMLU基准的安装
1、数据集下载
地址:MMLU Dataset | Papers With Code
MMLU基准的使用方法
1、使用MMLU基准对一个预训练的语言模型进行评估
# 何使用MMLU基准对一个预训练的语言模型进行评估
import transformers
from transformers import pipeline
# 加载预训练的语言模型和标记器
model_name = "bert-base-uncased" # 可根据需要选择合适的预训练模型
model = transformers.AutoModelForMaskedLM.from_pretrained(model_name)
tokenizer = transformers.AutoTokenizer.from_pretrained(model_name)
# 定义要评估的任务和输入文本
tasks = [
"mathematics",
"history",
"computer science",
"law",
# 其他任务...
]
texts = [
"What is the square root of 16?",
"Who was the first President of the United States?",
"What is the difference between CPU and GPU?",
"What are the basic principles of contract law?",
# 其他文本...
]
# 创建MMLU基准评估器
# 使用pipeline函数来执行文本分类任务,对每个任务和文本进行评估,并打印出预测的标签和分数。
mmlu_evaluator = pipeline(
"text-classification",
model=model,
tokenizer=tokenizer,
device=0, # 可根据需要选择使用的设备
)
# 对每个任务和文本进行评估
for task in tasks:
print(f"Task: {task}")
for text in texts:
result = mmlu_evaluator(text, task)
print(f"Text: {text}")
print(f"Label: {result[0]['label']}")
print(f"Score: {result[0]['score']}")
print("")
2、QLoRA中的MMLU评估代码
if args.do_mmlu_eval:
# 根据 args.mmlu_dataset 参数的不同值加载相应的 MMLU数据集
if args.mmlu_dataset == 'mmlu-zs':
mmlu_dataset = load_dataset("json", data_files={
'eval': 'data/mmlu/zero_shot_mmlu_val.json',
'test': 'data/mmlu/zero_shot_mmlu_test.json',
})
mmlu_dataset = mmlu_dataset.remove_columns('subject')
# MMLU Five-shot (Eval/Test only)
elif args.mmlu_dataset == 'mmlu' or args.mmlu_dataset == 'mmlu-fs':
mmlu_dataset = load_dataset("json", data_files={
'eval': 'data/mmlu/five_shot_mmlu_val.json',
'test': 'data/mmlu/five_shot_mmlu_test.json',
})