【大模型入门指南 11】大模型自动评估理论和实战

news2025/1/14 20:07:59

【大模型入门指南】系列文章:

  • 【大模型入门指南 01】深度学习入门
  • 【大模型入门指南 02】LLM大模型基础知识
  • 【大模型入门指南 03】提示词工程
  • 【大模型入门指南 04】Transformer结构
  • 【大模型入门指南 05】LLM技术选型
  • 【大模型入门指南 06】LLM数据预处理
  • 【大模型入门指南 07】量化技术解析
  • 【大模型入门指南 08】微调和分布式训练
  • 【大模型入门指南 09】LLM和多模态模型高效推理实践
  • 【大模型入门指南 10】LLM 部署
  • 【大模型入门指南 11】大模型自动评估理论和实战
  • 【大模型入门指南 12】LISA微调技术解析
  • 【大模型入门指南 13】从 OpenAI-O1 看大模型的复杂推理能力
  • 【大模型入门指南 14】Agent微调实战
  • 【More…】

本文目录

  • 大模型自动评估理论和实战--LLM Automatic Evaluation
    • 引言
    • LLM评估的方法论
        • 2.1 模型效果评估
        • 2.2 模型性能评估
        • 2.3 问题和挑战
    • LLM评估实战


大模型自动评估理论和实战–LLM Automatic Evaluation

引言

背景

大语言模型(LLM)评测是LLM开发和应用中的关键环节,是评估LLM性能、鲁棒性、偏见、幻觉等方面的重要手段。LLM评测的目标是通过一系列的评测任务和指标,全面、客观地评估LLM的性能,为LLM的研发、应用和部署提供参考。

目前评测方法可以分为人工评测和自动评测,其中,自动评测技术相比人工评测来讲,具有效率高、一致性好、可复现、鲁棒性好等特点,逐渐成为业界研究的重点。

模型的自动评测技术可以分为rule-based和model-based两大类:

  • rule-based方法:

    • benchmark以客观题为主,例如多选题,被测的LLM通过理解context/question,来指定最佳答案

    • 解析LLM的response,与标准答案做对比

    • 计算metric(accuracy、rouge、bleu等)

  • model-based方法:

    • 裁判员模型(e.g. GPT-4、Claude、Expert Models/Reward models)

    • LLM Peer-examination

内容提要

  • LLM自动评估理论

  • 如何评估一个LLM

  • 自动评估的方法

  • 常用的benchmark

  • LLM评估面临的问题和挑战

  • LLM自动评估实战

  • LLMuses自动评测框架介绍

  • 基于客观题benchmark自动评估

  • 基于专家模型的自动评估

  • LLM推理性能评估

LLM评估的方法论

如何评估一个LLM

  • 哪些维度?

    • 语义理解(Understanding)

    • 知识推理(Reasoning)

    • 专业能力(e.g. coding、math)

    • 应用能力(MedicalApps、AgentApps、AI-FOR-SCI …)

    • 指令跟随(Instruction Following)

    • 鲁棒性(Robustness)

    • 偏见(Bias)

    • 幻觉(Hallucinations)

    • 安全性(Safety)

例:GPT-4 vs LLaMA2-7B能力维度对比评测

自动评估方法

2.1 模型效果评估
  • 基准和指标(Benchmarks & Metrics)

  • Rule-based自动评测

基本流程

  • 根据数据集原始question来构建prompt

示例(few-shot)

示例:few-shot with CoT

# Examples in BBH

Evaluate the result of a random Boolean expression.

Q: not ( ( not not True ) ) is
A: Let's think step by step.
Remember that (i) expressions inside brackets are always evaluated first and that (ii) the order of operations from highest priority to lowest priority is "not", "and", "or", respectively.
We first simplify this expression "Z" as follows: "Z = not ( ( not not True ) ) = not ( ( A ) )" where "A = not not True".
Let's evaluate A: A = not not True = not (not True) = not False = True.
Plugging in A, we get: Z = not ( ( A ) ) = not ( ( True ) ) = not True = False. So the answer is False.

Q: True and False and not True and True is
A: Let's think step by step.
Remember that (i) expressions inside brackets are always evaluated first and that (ii) the order of operations from highest priority to lowest priority is "not", "and", "or", respectively.
We first simplify this expression "Z" as follows: "Z = True and False and not True and True = A and B" where "A = True and False" and "B = not True and True".
Let's evaluate A: A = True and False = False.
Let's evaluate B: B = not True and True = not (True and True) = not (True) = False.
Plugging in A and B, we get: Z = A and B = False and False = False. So the answer is False.
  • 模型预测

Generate

# Demo -- model_genereate 直接生成response

def model_generate(query: str, infer_cfg: dict) -> str:

    inputs = tokenizer.encode(query)
    input_ids = inputs['input_ids']
    ...

    # Process infer cfg (do_sample, top_k, top_p, temperature, special_tokens ...)
    generation_config = process_cfg(args)
    ...
  
    # Run inference
    output_ids = model.generate(
        input_ids=input_ids,
        attention_mask=attention_mask,
        generation_config=generation_config,
    )

    response = tokenizer.decode(output_ids, **decode_kwargs)
    return response

Likelihood

# Demo -- model_call方式计算loglikelihood

# context + continuation 拼接,示例:
# Question: 法国的首都是哪里?
# Choices: A.北京  B.巴黎  C.汉堡  D.纽约
  # pair-1: (ctx, cont) = (法国的首都是哪里?,A.北京)
  # pair-2: (ctx, cont) = (法国的首都是哪里?,B.巴黎)
  # pair-3: (ctx, cont) = (法国的首都是哪里?,C.汉堡)
  # pair-4: (ctx, cont) = (法国的首都是哪里?,D.纽约)
# Logits --> 

def loglikelihood(self, inputs: list, infer_cfg: dict = None) -> list:
    # To predict one doc
    doc_ele_pred = []
    for ctx, continuation in inputs:

        # ctx_enc shape: [context_tok_len]  cont_enc shape: [continuation_tok_len]
        ctx_enc, cont_enc = self._encode_pair(ctx, continuation)

        inputs_tokens = torch.tensor(
            (ctx_enc.tolist() + cont_enc.tolist())[-(self.max_length + 1):][:-1],
            dtype=torch.long,
            device=self.model.device).unsqueeze(0)

        logits = self.model(inputs_tokens)[0]
        logits = torch.nn.functional.log_softmax(logits.float(), dim=-1)

        logits = logits[:, -len(cont_enc):, :]
        cont_enc = cont_enc.unsqueeze(0).unsqueeze(-1)
        logits = torch.gather(logits.cpu(), 2, cont_enc.cpu()).squeeze(-1)

        choice_score = float(logits.sum())
        doc_ele_pred.append(choice_score)

    # e.g. [-2.3, 1.1, -12.9, -9.2], length=len(choices)
    return doc_ele_pred
  • 评价指标(Metrics)

  • WeightedAverageAccuracy 加权平均准确率

  • Perplexity 困惑度

  • Rouge (Recall-Oriented Understudy for Gisting Evaluation)

  • Bleu (Bilingual evaluation understudy)

  • ELO Rating System

  • PASS@K

  • Model-based自动评测

  • 中心化评测

    • 中心化评测模式下,裁判员模型只有一个,可靠性高,但容易收到裁判员模型的bias影响
  • 去中心化评测

    • 去中心化评测方式,要求模型之间做peer-examination

    • 特点是公平性好,但计算量大,且鲁棒性不高

裁判员模型

  • GPT-4、Claude、Qwen-Max等 (产品APIs)

  • PandLM、Auto-J (tuned from LLM, like LLaMA)

  • Reward models (Ranking learning)

  • Chatbot Arena -竞技场模式

    • (Battle count of each combination of models, from LMSYS)

  • (Fraction of Model A wins for all non-tied A vs. B battles, from LMSYS)

  • 主观评测和客观评测

  • LLM指令攻防

    • 指令诱导 (诱导模型输出目标答案,from SuperCLUE)

*   有害指令注入 (将真实有害意图注入到prompt中, from SuperCLUE)

  • Agent评测

2.2 模型性能评估

model serving performance evaluation

指标名称说明
Time测试总时间(时间单位均为秒)
Expected number of requests期望发送的请求数,和prompt文件以及期望number有关
concurrency并发数
completed完成的请求数
succeed成功请求数
failed失败请求数
qps平均qps
latency平均latency
time to first token平均首包延迟
throughputoutput tokens / seconds 平均每秒输出token数
time per output token平均生成一个token需要的时间 总output_tokens/总时间
package per request平均每个请求的包数
time per package平均每包时间
input tokens per request平均每个请求的输入token数
output tokens per request平均每个请求输出token数

2.3 问题和挑战
  1. 基准失效&数据泄露
  • 静态数据集与快速演进的LLM能力形成GAP,导致基准失效

  • 公开的benchmark被泄露到LLM的开发PT、CPT、SFT等开发环节

解决思路: 动态数据集

  1. 裁判员模型的能力上限
  • 裁判员模型的存在明显的能力边界,很难胜任更多场景、更强模型的评测工作

  • 泛化性问题

  • LLM幻觉的诊断问题

在添加扰动的情况下,即便是性能强劲的裁判员模型,也会出现性能下降的情况。

LLM评估实战

Eval-Scope框架–轻量化、端到端的大模型自动评估框架

GitHub: https://github.com/modelscope/eval-scope

框架特性

  • 预置常用的测试基准,包括:MMLU、C-Eval、GSM8K、ARC、HellaSwag、TruthfulQA、MATH、HumanEval、BBH、GeneralQA等

  • 常用评估指标(metrics)的实现

  • 统一model接入,兼容多个系列模型的generate、chat接口

  • 客观题自动评估

  • 使用专家模型实现复杂任务的自动评估

  • 竞技场模式(Arena)

  • 评估报告生成与可视化

  • LLM性能评测(Performance Evaluation)

环境安装

# 1. 代码下载
git clone git@github.com:modelscope/eval-scope.git

# 2. 安装依赖
cd eval-scope/
pip install -r requirements/requirements.txt
pip install -e .
  1. 简单评测

    指定模型和数据集
    python llmuses/run.py --model ZhipuAI/chatglm3-6b --template-type chatglm3 --datasets ceval --outputs ./outputs/test --limit 10

  • –model: ModelScope模型id, (https://modelscope.cn/models/ZhipuAI/chatglm3-6b/summary) ,也可以是模型的本地路径

  • –datasets: 数据集的id

  • –limit: (每个sub-task)最大评测样本数

  • –template-type: 模型的template-type,如chatglm3、qwen等

请至钉钉文档查看附件《1.mp4》

  1. 带参数评测

    python llmuses/run.py --model ZhipuAI/chatglm3-6b --template-type chatglm3 --outputs ./outputs/test2 --model-args revision=v1.0.2,precision=torch.float16,device_map=auto --datasets arc --limit 10

  • –model-args: 模型参数,以逗号分隔,key=value形式

  • –datasets: 数据集名称,参考下文`数据集列表`章节

  • –mem-cache: 是否使用内存缓存,若开启,则已经跑过的数据会自动缓存,并持久化到本地磁盘

  • –limit: 每个subset最大评估数据量

  • –template-type: 模型的template-type,如chatglm3、qwen等

请至钉钉文档查看附件《2.mp4》

  1. 竞技场模式–Single mode

Single mode,使用专家模型(GPT-4)对待测LLM进行打分

# Example
# Note: dry-run模式 (模型answer正常生成,但专家模型,如GPT-4,不会被触发,评估结果会随机生成,如需正式评测,请去掉--dry-run参数)
python llmuses/run_arena.py --c registry/config/cfg_single.yaml --dry-run

请至钉钉文档查看附件《4.mp4》

  1. 竞技场模式–Baseline mode

Baseline mode,选定baseline模型,其它待测LLM与该模型进行对比

# Example
# Note: dry-run模式 (模型answer正常生成,但专家模型,如GPT-4,不会被触发,评估结果会随机生成,如需正式评测,请去掉--dry-run参数)
python llmuses/run_arena.py --c registry/config/cfg_pairwise_baseline.yaml --dry-run

请至钉钉文档查看附件《5.mp4》

  1. 竞技场模式–Pairwise mode

Pairwise mode,待测LLM两两组合进行对弈

# Example
# Note: dry-run模式 (模型answer正常生成,但专家模型,如GPT-4,不会被触发,评估结果会随机生成,如需正式评测,请去掉--dry-run参数)
python llmuses/run_arena.py -c registry/config/cfg_arena.yaml --dry-run

请至钉钉文档查看附件《6.mp4》

  1. 效果评测报告

按照预定格式存放数据,使用streamlit启动可视化服务

# Usage:
streamlit run viz.py -- --review-file llmuses/registry/data/qa_browser/battle.jsonl --category-file llmuses/registry/data/qa_browser/category_mapping.yaml
  • 报告可视化

  • Leaderboard: https://modelscope.cn/leaderboard/58/ranking?type=free

  1. 模型性能评测(Perf Eval)

性能评测报告示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2276628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【SOC 芯片设计 DFT 学习专栏 -- DFT 接管 clock 和 reset】

文章目录 OverviewDFT 接管 Clock 和 Reset 的方法Clock 接管方法Reset 接管方法 什么场景下需要 DFT 来接管 Clock 和 Reset?制造测试(Manufacturing Test)静态路径扫描测试(Scan Testing)调试与故障定位(…

从 Conda 到 Pip-tools:Python 依赖管理全景探索20250113

从 Conda 到 Pip-tools:Python 依赖管理全景探索 引言 在 Python 开发中,依赖管理是一个"常见但复杂"的问题:一次简单的版本冲突可能让团队调试数小时;一次不受控的依赖升级可能让生产环境瘫痪。随着项目规模的增加和…

【数学】概率论与数理统计(五)

文章目录 [toc] 二维随机向量及其分布随机向量离散型随机向量的概率分布律性质示例问题解答 连续型随机向量的概率密度函数随机向量的分布函数性质连续型随机向量均匀分布 边缘分布边缘概率分布律边缘概率密度函数二维正态分布示例问题解答 边缘分布函数 二维随机向量及其分布 …

《自动驾驶与机器人中的SLAM技术》ch2:基础数学知识

目录 2.1 几何学 向量的内积和外积 旋转矩阵 旋转向量 四元数 李群和李代数 SO(3)上的 BCH 线性近似式 2.2 运动学 李群视角下的运动学 SO(3) t 上的运动学 线速度和加速度 扰动模型和雅可比矩阵 典型算例:对向量进行旋转 典型算例:旋转的复合 2.3 …

30_Redis哨兵模式

在Redis主从复制模式中,因为系统不具备自动恢复的功能,所以当主服务器(master)宕机后,需要手动把一台从服务器(slave)切换为主服务器。在这个过程中,不仅需要人为干预,而且还会造成一段时间内服务器处于不可用状态,同时数据安全性也得不到保障,因此主从模式的可用性…

苹果手机(IOS系统)出现安全延迟进行中如何关闭?

苹果手机(IOS系统)出现安全延迟进行中如何关闭? 一、设置二、隐私与安全性三、失窃设备保护关闭 一、设置 二、隐私与安全性 三、失窃设备保护关闭

【Oracle专栏】group by 和distinct 效率

Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.背景 查阅资料: 1)有索引情况下,group by和distinct都能使用索引,效率相同。 2)无索引情况下,distinct…

linux:文件的创建/删除/复制/移动/查看/查找/权限/类型/压缩/打包,文本处理sed,awk

关于文件的关键词 创建 touch 删除 rm 复制 cp 权限 chmod 移动 mv 查看内容 cat(全部); head(前10行); tail(末尾10行); more,less,grep 查找 find 压缩 gzip ; bzip 打包 tar 编辑 sed 文本处理 awk 创建文件 格式: touch 文件名 删除文件 复制文…

day01-HTML-CSS——基础标签样式表格标签表单标签

目录 此篇为简写笔记下端1-3为之前笔记(强迫症、保证文章连续性)完整版笔记代码模仿新浪新闻首页完成审核不通过发不出去HTMLCSS1 HTML1.1 介绍1.1.1 WebStrom中基本配置 1.2 快速入门1.3 基础标签1.3.1 标题标签1.3.2 hr标签1.3.3 字体标签1.3.4 换行标…

哥大开发AI模型助力癌症和遗传病研究,近屿智能专注培养AI人才

近日,哥伦比亚大学瓦格洛斯医学院的研究团队在《自然》杂志上发表了一项重大研究成果。他们开发出一种名为“通用表达转换器”(GET)的新型AI模型,能够准确预测任何人类细胞中的基因活性,从而揭示细胞的内部工作机制。 …

9.4 visualStudio 2022 配置 cuda 和 torch (c++)

一、配置torch 1.Libtorch下载 该内容看了【Libtorch 一】libtorchwin10环境配置_vsixtorch-CSDN博客的博客,作为笔记用。我自己搭建后可以正常运行。 下载地址为windows系统下各种LibTorch下载地址_libtorch 百度云-CSDN博客 下载解压后的目录为: 2.vs…

基于spingbott+html+Thymeleaf的24小时智能服务器监控平台设计与实现

博主介绍:硕士研究生,专注于信息化技术领域开发与管理,会使用java、标准c/c等开发语言,以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架…

MySQL社区版下载及其环境配置(msi)

MySQL官网:https://www.mysql.com/ 1、进入官网 点击Downloads 找到MySQL Community (GPL) Downloads   然后点击MySQL Installer for Windows(MySQL Community Server非向导式安装,而MySQL Installer for Windows有向导式安装&#x…

Linux-----进程通讯(消息队列)

目录 相关API 1.相关数据类型 mqd_t struct mq_attr struct timespec 2.相关系统调用接口 mq_open() mq_timedsend() && mq_send() mq_timedreceive() && mq_receive() mq_unlink() clock_gettime() 父子进程使用消息队列通讯 平行进程使用消息队列…

YOLOv8从菜鸟到精通(二):YOLOv8数据标注以及模型训练

数据标注 前期准备 先打开Anaconda Navigator,点击Environment,再点击new(new是我下载anaconda的文件夹名称),然后点击创建 点击绿色按钮,并点击Open Terminal 输入labelimg便可打开它,labelimg是图像标注工具,在上篇…

mac homebrew配置使用

本文介绍mac上homebrew工具的安装、配置过程。homebrew功能类似于centos的yum,用于软件包的管理,使用上有命令的差异。 本次配置过程使用mac,看官方文档,在linux上也可以用,但我没试过,有兴趣的同学可以试试…

《使用 YOLOV8 和 KerasCV 进行高效目标检测》

《使用 YOLOV8 和 KerasCV 进行高效目标检测》 作者:Gitesh Chawda创建日期:2023/06/26最后修改时间:2023/06/26描述:使用 KerasCV 训练自定义 YOLOV8 对象检测模型。 (i) 此示例使用 Keras 2 在 Colab 中…

【Uniapp-Vue3】onShow和onHide钩子的对比和执行顺序

页面生命周期函数的执行顺序是onLoad>onShow>onReady,其中只有onReady中才能获取到DOM节点。 一、onShow函数 每一次的页面切入都会触发onShow函数。 import {onShow} from "dcloudio/uni-app"; onShow(()>{...}) 如果我点击“跳转页面1”再返…

GPT 系列论文精读:从 GPT-1 到 GPT-4

学习 & 参考资料 前置文章 Transformer 论文精读 机器学习 —— 李宏毅老师的 B 站搬运视频 自监督式学习(四) - GPT的野望[DLHLP 2020] 來自猎人暗黑大陆的模型 GPT-3 论文逐段精读 —— 沐神的论文精读合集 GPT,GPT-2,GPT-3 论文精读【论文精读】…

(STM32笔记)十二、DMA的基础知识与用法 第二部分

我用的是正点的STM32F103来进行学习,板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话,用的也是这个板子和教程。 DMA的基础知识与用法 二、DMA传输设置1、数据来源与数据去向外设到存储器存储器到外设存储器到存储器 2、每次传输大小3、传…