笔者最近在对比浏览各种大模型性能时,发现不少机构发布的大模型成绩不是那么详细。排行榜仅存在数据集和分数,对于大多数人来说,可能就看个分数高低就忽略了。因此,本文整理了一些常见的评测数据集和指标说明,希望对于普通读者有所帮助。
常见评测数据集
名称 | 描述 | 类别 | 语言 | 评估指标 | 数量 | 发布机构 |
---|---|---|---|---|---|---|
MMLU | 一个涵盖 57 个主题的多项选择题基准,用于评估大规模语言模型的知识和推理能力。 | 知识问答 | 英语 | Accuracy | 15000 | University of California, Berkeley |
MMLU Pro | MMLU 的专业级别版本,包含更具挑战性的问题,旨在评估模型在专业领域的理解和推理能力。 | 知识问答 | 英语 | Accuracy | 38500 | Berkeley Artificial Intelligence Research |
GSM8K | 一个包含 8500 道小学数学题的基准,用于评估模型的数学推理能力。 | 数学推理 | 英语 | Accuracy | 8500 | |
HumanEval | 一个包含 164 个手写编程问题的基准,用于评估模型生成代码的能力。 | 代码生成 | 英语 | Pass@k | 164 | OpenAI |
MBPP | 一个包含 974 个简单的 Python 编程问题的基准,用于评估模型生成代码的能力。 | 代码生成 | 英语 | Pass@k | 974 | |
HellaSwag | 一个包含 70,000 个多项选择题的基准,用于评估模型的常识推理能力。 | 常识推理 | 英语 | Accuracy | 70000 | University of Washington |
ARC | 一个包含 7787 个多项选择题的基准,用于评估模型的常识推理能力。 | 常识推理 | 英语 | Accuracy | 7787 | Allen Institute for AI |
TruthfulQA | 一个包含 817 个问题的基准,旨在评估模型是否能够生成真实且准确的答案,而不是编造信息。 | 真实性评估 | 英语 | Accuracy | 817 | |
BIG-bench | 一个包含 200 多个不同任务的综合基准,用于评估模型的各种能力,包括推理、语言理解和知识。 | 综合评估 | 多语言 | Varies | 200 | |
C-Eval | 一个涵盖人文社科、理工科等多个学科的中文多项选择题基准,用于评估模型在中文环境下的知识和推理能力。 | 知识问答 | 中文 | Accuracy | 13948 | 清华大学等 |
SuperGLUE | 一个包含 8 个自然语言理解任务的基准,旨在评估模型在复杂的语言理解和推理任务上的性能。 | 自然语言理解 | 英语 | Varies | 8 | NYU & Facebook AI |
DROP | 一个需要模型进行离散推理的阅读理解基准,包括计数、比较和排序等操作。 | 阅读理解 | 英语 | f1 | 96000 | Allen Institute for AI |
MATH | 一个具有挑战性的数学问题数据集,包含代数、微积分、几何、概率等多个领域。 | 数学推理 | 英语 | Accuracy | 12500 | |
BBH | BIG-Bench 的困难子集,包含更具挑战性的任务,用于评估模型的极限能力。 | 综合评估 | 英语 | Varies | 23 | |
HLE | 研究生水平以上的超高难度、覆盖超多学科的大模型评测基准 | 知识问答 | 英语 | Accuracy | 3000 | Center for AI Safety |
GPQA Diamond | 测试模型在多种推理场景下的能力,并推动大模型在更加复杂任务上的改进。 | 常识推理 | 英语 | Accuracy |
198 | CohereAI |
SimpleQA | OpenAI发布的一个针对大模型事实问答的能力评测基准,可以有效检验模型幻觉严重程度 | 真实性评估 | 英语 | Accuracy | 4326 | OpenAI |
SWE-bench | 一个从GitHub上提炼的真实世界的Python代码仓的任务评测数据集 | 代码生成 | 英语 | Accuracy | 2294 | 普林斯顿大学 |
SWE-bench Verified | OpenAI基于SWE-Bench提炼的更加准确和更具代表性的大模型代码工程任务解决能力评测 | 代码生成 | 英语 | Accuracy | 500 | OpenAI |
MATH-500 | OpenAI从MATH评测数据集中精选的500个更具代表性的数学评测基准 | 数学推理 | 英语 | Accuracy | 500 | OpenAI |
大模式日新月异,随着性能不断提升,老的数据集可能也会被逐步替换或淘汰,各种研究机构也会不断推出新的数据集。这里仅展示比较常见的一些数据集,用于研究学习使用,方便读者举一反三。
数据集示例及测试脚本
问答场景
以mmlu为例,该数据集是选择题,用于评估大规模语言模型的知识和推理能力,常用的字段为question,choices,answer
{
"question": "Which of the following is a key function of the Golgi apparatus?",
"choices": ["A) ATP synthesis", "B) Protein modification and sorting", "C) DNA replication", "D) Lipid breakdown"],
"answer": "B",
"subject": "biology",
"source": "https://example.com/bio_questions"
}
基于该数据集的测试代码,构造出一个prompt让模型从上下文选择答案。
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
import json
import numpy as np
from tqdm import tqdm
class ModelEvaluator:
def __init__(self, model_name="mistralai/Mistral-7B-v0.1"):
self.tokenizer = AutoTokenizer.from_pretrained(model_name)
self.model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto"
)
def evaluate_mmlu(self, dataset_path):
"""评估 MMLU 数据集"""
correct = 0
total = 0
with open(dataset_path, 'r') as f:
questions = json.load(f)
for question in tqdm(questions):
prompt = f"问题: {
question['question']}\n选项:\nA. {
question['choices'][0]}\nB. {
question['choices'][1]}\nC. {
question['choices'][2]}\nD. {
question['choices'][3]}\n答案:"
inputs = self.tokenizer(prompt, return_tensors="pt").to(self.model.device)
outputs = self.model.generate(
**inputs,
max_new_tokens=5,
temperature=0.1
)
response = self.tokenizer.decode(outputs[0], skip_special_tokens=True)
predicted_answer = response[-1] # 取最后一个字符作为答案(假设模型只返回选项)
if predicted_answer == question['answer']:
correct += 1
total += 1
return correct / total
推理场景
以HellaSwag为例,该数据集也是选择题,主要用于评估模型的常识推理能力。常用的字段为ctx,endings,label
{
"activity_label": "Removing ice from car",
"ctx": "Then, the man writes over the snow covering the window of a car, and a woman wearing winter clothes smiles. then",
"endings": [
", the man adds wax to the windshield and cuts it.",
", a person boards a ski lift, while two men support the head of the person...",
", the man starts scraping ice off the car window with a scraper.",
", the woman opens the car door and gets inside."
],
"label": 2,
"source_id":