LLMs:MMLU基准(大规模多任务语言理解)的简介(MMLU-ZS/MMLU-FS)、安装、使用方法之详细攻略
目录
MMLU基准的简介
1、两种特定的测试设置—衡量泛化能力和知识迁移能力:MMLU-ZS、MMLU-FS
MMLU基准的安装
1、数据集下载
MMLU基准的使用方法
1、基础用法
(1)、使用MMLU基准对一个预训练的语言模型进行评估
2、进阶用法
(1)、QLoRA中的MMLU评估代码
MMLU基准的简介
9月7日,Dan Hendrycks, Collin Burns, Steven Basart等人提出了一种新的测试方法,用于衡量文本模型的多任务准确性。该测试涵盖了57个任务,包括基本数学、美国历史、计算机科学、法律等多个领域。为了在这个测试中获得高准确性,模型必须具备广泛的世界知识和问题解决能力。
我们发现,尽管大多数最近的模型准确率接近随机猜测,但最大的GPT-3模型平均提高了近20个百分点的准确率。然而,在这57个任务中的每一个任务上,最好的模型仍然需要大幅改进,才能达到专家级的准确性。模型的性能也存在不平衡,经常不知道自己的错误。更糟糕的是,它们在一些社会重要的主题(如道德和法律)上的准确率仍然接近随机。通过全面评估模型在学术和专业理解上的广度和深度,我们的测试可以用于分析模型在多个任务上的表现,并发现重要的不足之处。
MMLU(Massive Multitask Language Understanding,大规模多任务语言理解)是一个由Hendrycks等人在《Measuring Massive Multitask Language Understanding》中提出的新基准,旨在通过仅在零样本和少样本设置下评估模型来衡量预训练期间获得的知识。这使得基准更具挑战性,更类似于我们评估人类的方式。该基准涵盖了57个科目,包括STEM(科学、技术、工程、数学)、人文科学、社会科学等领域。它的难度从初级水平到高级专业水平不等,测试的内容既涵盖世界知识,又涉及问题解决能力。科目涵盖传统领域(如数学和历史)以及更专业的领域,如法律和伦理学。基准的细粒度和广度使其能够发现模型的盲点。
官网:/dataset/mmlu
大模型排行榜:/sota/multi-task-language-understanding-on-mmlu
1、两种特定的测试设置—衡量泛化能力和知识迁移能力: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、数据集下载
地址:/dataset/mmlu
MMLU基准的使用方法
1、基础用法
(1)、使用MMLU基准对一个预训练的语言模型进行评估
# 何使用MMLU基准对一个预训练的语言模型进行评估import transformersfrom 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、进阶用法
(1)、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',})