LLM大模型怎样进行数据和质量测试

news2024/11/26 14:53:36

大型语言模型(LLMs)的四种测试策略        

测试机团队需要一套针对LLM的测试策略。在为嵌入在AI agent应用中的LLMs大模型制定测试策略时,可以考虑以下四点实践方法:

        1)创建测试数据以扩展软件质量保证

        2)自动化模型质量和性能测试

        3)根据用例评估RAG质量

        4)制定质量指标和基准

        LLM大模型的质量测试并不是某一个或者一种单一测试技术就能覆盖的,对于大模型的复杂度需要使用多种维度的测试方法和策略进行质量和准确性测试。

        Roadz公司的联合创始人兼首席运营官阿米特·杰恩(Amit Jain)表示:“测试LLM模型需要一种多方面的方法,这超出了技术严谨性的范畴。团队应该进行迭代改进,并创建详细的文档,以记录模型的开发过程、测试方法和性能指标。与研究社区合作,以基准测试和分享最佳实践也是有效的。”

        

        构建具有LLM功能的应用程序的一些通用用例包括搜索体验、内容生成、文档摘要、聊天机器人和客户服务应用。行业实例包括在医疗保健领域开发患者门户、在金融服务领域改善初级银行家的工作流程,以及在制造业中为工厂的未来铺平道路。

        对于以大模型为基础的应用开发公司或者团队则面临着包括改进数据质量方面的数据治理、选择LLM架构、解决安全风险以及制定云基础设施计划等方面的技术风险,如何保障应用后面嵌入的大模型的回答、推理、以及涉及的某一垂直领域的专业知识回答是准确的,大模型幻觉或者模型准确性这个点如果解决不了,则上层的应用就会被吐槽弱智或者智障^_^

比如:一家航空公司兑现了其聊天机器人提供的退款、因版权侵权而引发的诉讼以及降低“幻觉”风险。

下面我们对上面提到的四个方面逐一进行分析:

一、创建测试数据以扩展软件质量保证

        大多数开发团队不会创建通用的大型语言模型,而是为特定的最终用户和使用场景开发应用。为了制定测试策略,团队需要了解涉及的用户角色、目标、工作流程和质量基准。“测试LLMs的首要要求是了解LLM应能够解决的任务,”Mindbreeze的首席技术官Jakob Praher说,“对于这些任务,人们会构建测试数据集,以建立LLM性能的指标。然后,人们可以系统地优化提示或微调模型。”

        例如,一个为客户服务设计的大型语言模型可能包含一个包含常见用户问题和最佳响应的测试数据集。其他LLM用例可能没有直接评估结果的手段,但开发人员仍可以使用测试数据进行验证。

        “测试LLM最可靠的方法是创建相关的测试数据,但挑战在于创建此类数据集的成本和时间,”“与其他软件一样,LLM测试包括单元测试、功能测试、回归测试和性能测试。此外,LLM测试还需要进行偏差、公平性、安全性、内容控制和可解释性测试。”

二、自动化模型质量和性能测试

经常用到的LLM测试库和工具:

AI Fairness 360,一个开源工具包,用于检查、报告和缓解机器学习模型中的歧视和偏见;

DeepEval,一个类似于Pytest但专用于LLM输出单元测试的开源LLM评估框架;

Baserun,一个用于帮助调试、测试和迭代改进模型的工具;

Nvidia NeMo-Guardrails,一个为LLM输出添加可编程约束的开源工具包。

IBM数据和人工智能部门的数据科学工具和运行时主管Monica Romila分享了企业在使用LLM时的两个测试领域:

模型质量评估使用学术和内部数据集评估模型质量,用于分类、提取、摘要、生成和增强生成(RAG)等用例。

模型性能测试验证模型的延迟(数据传输所用时间)和吞吐量(在特定时间段内处理的数据量)。

Romila表示,性能测试取决于两个关键参数:并发请求的数量和生成的令牌数量(模型使用的文本块)。“测试各种负载大小和类型,并将性能与现有模型进行比较,以查看是否需要更新,这一点很重要。”

DevOps和云架构师应考虑进行LLM应用程序的性能和负载测试所需的基础设施要求。SADA解决方案工程部总经理Heather Sundheim表示:“为大型语言模型部署测试基础设施涉及设置强大的计算资源、存储解决方案和测试框架。自动化配置工具(如Terraform)和版本控制系统(如Git)在可重复部署和有效协作中发挥着关键作用,强调了平衡资源、存储、部署策略和协作工具对于可靠LLM测试的重要性。”

三、根据用例评估RAG质量

       提高LLM准确性的一些技术包括集中内容、用最新数据更新模型以及在查询流程中使用RAG。RAG对于将LLM的强大功能与公司的专有信息相结合至关重要。

 

        在典型的LLM应用中,用户输入提示,应用程序将其发送到LLM,然后LLM生成响应,应用程序再将响应发送回用户。使用RAG时,应用程序首先将提示发送到信息数据库(如搜索引擎或向量数据库),以检索相关和主题相关的信息。应用程序将提示和这种上下文信息发送到LLM,LLM用它来制定响应。因此,RAG将LLM的响应限制在相关和上下文信息范围内。

     RAG更适用于企业级部署,在这些部署中,需要对源内容进行可验证的归因,尤其是在关键基础设施中。

    研究实践表明,使用RAG与LLM一起可以减少幻觉并提高准确性。但是,使用RAG也增加了一个新组件,需要对其相关性和性能进行测试。测试的类型取决于评估RAG和LLM响应的难易程度,以及开发团队能够在多大程度上利用最终用户的反馈。

用于生成式客户支持AI的RAG评估选项的三种不同的方法

(1)黄金标准数据集,即针对查询的正确答案的人类标注数据集,可作为模型性能的基准;

(2)强化学习,即在真实场景中测试模型,例如在用户与聊天机器人交互后询问其满意度;

(3)对抗网络,即训练一个二级LLM来评估一级LLM的性能,这种方法通过不依赖人类反馈提供自动化评估。

        每种方法都有其取舍,需要在人类投入和忽略错误的风险之间取得平衡。最佳的系统会跨系统组件利用这些方法,以最小化错误并促进稳健的AI部署。

四、制定质量指标和基准

        准备好了测试数据、新的或更新的大型语言模型(LLM)以及测试策略,下一步就是根据既定的目标验证质量。

        为确保开发出安全、可靠和值得信赖的人工智能,制定具体、可衡量的关键绩效指标(KPIs)和建立明确的防护栏至关重要。需要考虑的一些标准包括准确性、一致性、速度和与特定领域用例的相关性。开发人员需要评估目标领域中的整个LLM生态系统和运营模型,以确保其能够提供准确、相关且全面的结果。 

        Chatbot Arena工具是一个开放的环境,用于比较LLM的结果。它采用Elo评级系统,这是一种常用于竞技游戏排名玩家的算法,但在评估不同LLM算法或版本产生的响应时,它同样奏效。

        人类评估是测试的核心部分,特别是在将LLM强化以适应现实世界中出现的查询时。Chatbot Arena是众包测试的一个例子,这类人类评估者研究可以提供重要的反馈循环,以便整合用户反馈。

IBM数据与人工智能部门的罗米拉(Romila)分享了根据LLM的不同用例需要考虑的三个指标。

(1)F1分数是精确度和召回率的综合得分,适用于LLM用于分类或预测的情况。例如,客户支持LLM可以通过评估其推荐行动方案的准确性来进行评估。

(2)RougeL可用于测试RAG和LLM在摘要用例中的性能,但通常需要一个由人类创建的摘要作为基准来评估结果。

(3)sacreBLEU原本是一种用于测试语言翻译的方法,现在也被用于对LLM响应进行定量评估,以及其他方法,如TER、ChrF和BERTScore。

一些行业有特定的质量和风险指标需要考虑,在教育领域,评估年龄适宜性和避免毒性内容至关重要,但在面向消费者的应用中,应优先考虑响应的相关性和延迟。

五、质量测试持续跟进和评估

        模型部署后并不意味着测试结束,QA测试保障应寻求最终用户的反应、性能指标和其他反馈,以改进模型。部署后,将结果与行为分析相结合变得至关重要,它提供了快速反馈和更清晰的模型性能衡量标准。

     通过RAG和LLM集成来构建应用程序可能相对容易,但与测试和支持改进工作相比,这仅仅是冰山一角。需要不断的优化测试数据和质量标准,不断的持续测试改进优化,保障大模型达到最优化能力。

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

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

相关文章

C 盘又满了?试试我用的这个方法吧,轻松腾出几十个G,还有好用的工具推荐哟!

如题,作为具有洁癖的程序猿,作为具有容量焦虑症的程序猿,我总是希望C盘保持轻巧状态(看来还是Mac比较省心),奈何我给了它200G的存储,安装的应用都保存到了D盘,可它还是蹭蹭飙升&…

第一个Flutter应用解析(一)

1、创建项目 1.1 新建 1.2 选择Flutter SDK的位置 1.3 项目名称 英文单词加下划线起名规范,其他默认即可。 1.4 点击运行 发生报错显示我们的JAVA版本不符合 1.5 更改版本设置 1.6 再次启动项目 2、分析页面代码 以下是lib/main.dart的源代码(为了阅…

搭建企业私有云

A公司为国内知名大型瓶装饮料合资企业。2019年以前业务系统部署于IBM 的Unix小型机,该机型在IBM结束支持后,一直购买专业公司运维服务。Unix系统软件和运维成本相较Linux X86平台要高很多,不能满足应用轻量化和快速叠代的需求。公司原有的基础…

儿童护眼灯哪个牌子好?儿童护眼灯推荐测评教你选护眼台灯!

​据调查,我国现有盲人500多万,低视力近千万人,尤其是在儿童及青少年当中,患病率极高。全国学生体质健康调研最新数据表明,我国儿童青少年总体近视率为52.7%,其中,小学生为42%,初中生为80.7%&am…

机器学习【医疗领域及其药品搭建】

机器学习【医疗领域及其药品搭建】 1. 个性化医疗与精准治疗2. 药物管理2. 药物研发与创新4. 医疗图像分析与诊断辅助5. 数据安全与隐私保护6. 药物安全与风险管理7. 电子健康记录(EHR)的利用8. 机器人辅助手术 1. 个性化医疗与精准治疗 基因组学&#…

Leetcode 完全平方数

这段代码是用 动态规划(Dynamic Programming, DP)来解决 LeetCode 第279题「完全平方数」的问题,题目要求给定一个整数 n,找出若干个完全平方数(如1, 4, 9, 16等)的和,恰好等于 n,并…

【韩顺平Java笔记】第8章:面向对象编程(中级部分)【314-326】

314. 动态绑定机制 【注】属性没有动态绑定机制 虽然B类sum被注释掉了,但是其父类A类的sum方法没被注释掉,所以调用的是A类的sum方法,A类的sum方法中有个getI()方法,根据动态绑定机制,现在这个a引用的运行类型是B类&a…

【CTF Web】Pikachu getimagesize() Writeup(文件上传+PHP+文件包含漏洞+JPEG图片马+getimagesize绕过)

不安全的文件上传漏洞概述 文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重…

mongodb 数据迁移,亲测成功!

mysql进行数据迁移,最简单的不过是导出sql,然后在运行sql,数据也自然迁移过去了。 可是mongodb里,我们存储的是文件,是怎么做到的呢,当我在翻阅网上博客的时候,并没有发现有这方面的顾虑。 当…

制造业DT数字化之生产制造业务建模

一、工厂建模为何物? 对制造业人员(人)、设备(机)、材料(料)、工艺流程(法)、工厂环境(环)数据化管理的过程就叫工厂建模。 二、制造建模有哪几大…

Math.js 进阶使用:数值比较和数学运算

一. 引言 上篇文章中,我们了解了 Math 工具函数在数值操作方面的妙用,主要包括:取绝对值、向上向下取整以及四舍五入的方法,详细了解请参考上一篇文章: Math 工具函数的妙用:常用的数值操作 本篇文章将继…

【Linux系统编程】第三十弹---软硬链接与动静态库的深入探索

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、软硬链接 1.1、见一见 1.2、特征 1.3、什么是软硬链接?有什么用(为什么)? 2、动态库和静态库 2.…

从 Vim 到 VSCode:提升远程开发效率的秘密武器

1.前言 在 Linux 服务器上进行开发时,我们常常会选择使用 vi 或 vim 这些轻量级的编辑器。虽然它们可以满足基本的编辑需求,但在处理大型项目时,局限性很明显:缺乏现代编辑器的高级功能,比如语法高亮、代码补全以及便…

windows 调整虚拟内存文件大小,释放C盘

Windows 虚拟内存文件(通常是 pagefile.sys)的作用是充当物理内存(RAM)的扩展,当系统内存不足时,它为系统提供一个额外的、基于硬盘的存储空间。这种虚拟内存的机制帮助系统在物理内存耗尽时仍能继续运行程…

数据结构 ——— 单链表oj题:相交链表(链表的共节点)

目录 题目要求 手搓两个相交简易链表 代码实现 题目要求 两个单链表的头节点 headA 和 headB ,请找出并返回两个单链表相交的起始节点,如果两个链表不存在相交节点,则返回 NULL 手搓两个相交简易链表 代码演示: struct Lis…

SpringSecurity(一)——认证实现

一、初步理解 SpringSecurity的原理其实就是一个过滤器链,内部包含了提供各种功能的过滤器。 当前系统中SpringSecurity过滤器链中有哪些过滤器及它们的顺序。 核心过滤器: (认证)UsernamePasswordAuthenticationFilter:负责处理…

LabVIEW提高开发效率技巧----状态保存与恢复

在LabVIEW开发中,保存和恢复程序运行时的状态是一个关键技巧,特别是在涉及需要暂停或恢复操作的应用中。通过使用 Flatten To String 和 Unflatten From String 函数,开发人员可以将程序当前的状态转换为字符串并保存,再在需要时恢…

Vue入门-指令修饰符-事件修饰符

事件修饰符 事件名.stop ->阻止冒泡 demo&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><ti…

【Redis】Set类型常用命令

目录 一. Set集合类型简介.二. 增加元素相关命令2.1 向集合中添加元素(sadd)2.2 从集合中移动元素( smove ) 三. 查询元素相关操作.3.1 查询集合中存在的所有元素.( smembers )3.2 查询集合中是否存在member( sismember ) 四. 随机获取集合中的元素4.1 随机获取集合中的n个元素…

LabVIEW中的非阻塞定时器

在LabVIEW编程中&#xff0c;通常需要在某些任务执行过程中进行非阻塞的延时操作。例如&#xff0c;显示某条信息一段时间&#xff0c;同时继续执行其他任务&#xff0c;并在延时时间结束后停止显示该信息。这类需求通常用于处理优先级不同的信息显示&#xff0c;如错误信息需要…