首页 > 其他分享 >LLM应用测试策略与方法

LLM应用测试策略与方法

时间:2024-11-24 14:26:44浏览次数:8  
标签:LLM LLMs 功能测试 测试 虚构性 评估 策略

评估LLMs是一个复杂的过程,因为与传统软件开发不同,LLMs的结果不可预测,缺陷也无法像逻辑可以归因于特定代码块那样进行调试。LLMs是一个黑盒,具有无限可能的输入和输出。

然而,这并不意味着传统软件测试中的概念不能应用于测试LLMs。单元测试构成了功能测试、性能测试和可靠性测试,它们共同构成了对LLM的回归测试。

传统测试策略(LLM应用策略)

单元测试(每个节点)

单元测试指的是测试应用程序中最小可测试部分,对于LLMs来说,这意味着根据一些明确定义的标准来评估LLM对给定输入的响应。

例如,对于一个单元测试,目的是评估由LLM生成的摘要的质量,评估标准可以是摘要是否包含足够的信息,以及是否包含来自原始文本的虚构。对评估标准的评分通常由所谓的LLM评估度量来完成。

功能测试(每个工作流)
对LLMs进行功能测试是指在特定任务上评估LLMs的表现。与传统的软件功能测试不同(例如,通过测试整个登录流程来验证用户是否能够登录),LLMs的功能测试旨在评估模型在特定任务(例如文本摘要)范围内的各种输入下的表现能力。换句话说,功能测试是由特定用例的多个单元测试组成的。将单元测试组合在一起进行功能测试

回归测试(标准用例回归)
回归测试是指每次进行迭代时,都对LLM进行相同的测试用例评估,以确保不会引入破坏性变更。使用量化的LLM评估指标进行LLM评估的优点是,我们可以明确地设定阈值,定义什么是“破坏性变更”,并监控LLM在多次迭代中的性能变化。

多种功能测试可以构成回归测试的一部分。例如,我可以评估LLM在进行摘要和代码生成方面的能力,对于回归测试,我可以衡量每次迭代时它是否仍然能够执行这些任务。

性能测试(首token时间等)
当我们说性能测试时,我们并不是指测试LLM是否能够执行给定的任务,而是指一些通用的性能指标,比如每秒生成的词数(推理速度)和每词的成本(推理成本)。性能测试的主要目的是优化成本和延迟。

需要注意的是,性能测试也是回归测试的一部分。

可靠性测试(需求功能之外的处理)
这是唯一一种与传统软件开发中常见的测试方法不同的测试方式。可靠性测试是一种理念,即测试LLM在负可靠性人工智能(Responsible AI)指标如偏见、有毒性和公平性方面的表现,而不管当前的任务是什么。例如,LLM应该在被要求总结一篇有偏见的新闻文章时不这样做。

数据驱动测试(可自动化)

另一种思考LLM测试的方法,而不是像上面描述的那样从传统角度进行测试,而是基于指标标准来测试LLM系统。让我们来看看最常见的三个指标。

准确性测试(标准用例)
其中最直接的一种方法就是准确性性测试。准确性测试就像传统监督式机器学习中的典型测试集,即在给出整个训练数据集的情况下,我们保留一小部分数据,看看新训练的模型是否能够根据目标标签给出正确的答案。

相似度测试(相似问题相似答案)
与准确性一样,相似度也不是传统NLP指标能够轻易评估

虚构性测试(反向case,LLM不虚构回答)

最后,还需要对虚构性进行测试,并且有多种方法可以实现这一点。虚构性可以作为无参考或基于参考的度量标准,其中需要一个“真相”来确定LLM输出的实际准确性。

你可能也注意到我使用了“准确性”这个词。然而,虚构性应该有自己的测试方法,因为虚构性的输出并不一定就是事实错误的。这让你感到困惑了吗?想象一下,如果你的LLM输出的信息不在其训练数据中。虽然在现实世界中它可能是事实正确的,但它仍然被认为是虚构性。

CI/CD中的自动化测试

你需要做的一件事是,为LLM的每次变更(无论是你或你的团队成员所做的变更)提供自动化测试方式。在传统的软件开发中,尤其是在团队环境中,自动化测试对于CI/CD流程至关重要,可以防止未被注意到的破坏性变更。

用模型来测试模型

对于这种大模型场景或者生成式场景来说, 测试人员不可能枚举出所有的问题和答案,这个太不现实了。

虽然我们可以爬取到线上用户提的所有问题, 但是我们没办法把他们作为测试数据, 因为这些问题的答案需要人工来判断。所以测试人员能枚举的情况是有限的。

用一个成熟的模型经过微调后来满足我们的场景。

需要注意的是这种方式不能代替人工测试的,它只能是一种辅助手段,用模型来帮助我们挖掘潜在的问题(毕竟人的精力有限,不可能测试到那么多的样本),所以人工测试,仍然是非常重要的手段。 我们一般可能人工测试 1000~5000 个样本, 机器测试 1W 个或者 10w 个样本甚至更多,用这样的策略让人和机器一起去挖掘潜在的问题。

标签:LLM,LLMs,功能测试,测试,虚构性,评估,策略
From: https://www.cnblogs.com/yjh1995/p/18565756

相关文章

  • AI领域中的RAG:软件测试人员的必备指南
    RAG在软件测试中的角色在传统的软件测试中,测试人员通常会关注功能正确性、性能、安全性和用户体验。然而,当涉及到AI系统时,测试的维度变得更加复杂。RAG提供了一种结构化的方法来评估AI模型的预测能力,尤其是在处理未知数据时的表现。RAG与软件测试人员软件测试人员需要熟悉RAG,因......
  • 【Python】 深入理解Python的单元测试:用unittest和pytest进行测试驱动开发
    《PythonOpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门!单元测试是现代软件开发中的重要组成部分,通过验证代码的功能性、准确性和稳定性,提升代码质量和开发效率。本文章深入介绍Python中两种主流单元测试框架:unittest和pytest,并结合测试驱动开发(TDD)的思想,展示如......
  • 简单好用!营销活动A/B测试 - 智能短链接
    在如今竞争白热化的市场中,活动营销是否有效直接关乎企业成败。AB测试作为有力工具,能助力企业优化活动营销策略,增强营销成效。AB测试关键在于打造多个活动方案版本,同时推送给不同用户群,对比优劣。其一,先明确测试目标,究竟是提升参与度、促进销售额,还是拔高品牌知名度等。设计......
  • 【LLM训练】从零训练一个大模型有哪几个核心步骤?
    【LLM训练】从零训练一个大模型有哪几个核心步骤?⚠︎重要性:★★★NLPGithub项目:NLP项目实践:fasterai/nlp-project-practice介绍:该仓库围绕着NLP任务模型的设计、训练、优化、部署和应用,分享大模型算法工程师的日常工作和实战经验AI藏经阁:https://gitee.com/fas......
  • 【LLM训练】从零训练一个大模型有哪几个核心步骤?
    【LLM训练】从零训练一个大模型有哪几个核心步骤?⚠︎重要性:★★★NLPGithub项目:NLP项目实践:fasterai/nlp-project-practice介绍:该仓库围绕着NLP任务模型的设计、训练、优化、部署和应用,分享大模型算法工程师的日常工作和实战经验AI藏经阁:https://gitee.com/fastera......
  • 【2024最新】渗透测试工具大全(超详细),收藏这一篇就够了!
     黑客/网安大礼包:......
  • 性能测试汇报面向公司决策层业务价值的呈现
    目录对业务价值的呈现对核心业务性能的提升核心业务性能基线性能测试结果汇报给公司决策层,针对业务价值趋向可以参考以下模板:1.明确目的与背景2.测试概述3.结果展示4.业务影响5.建议与行动计划6.互动环节小贴士:随着企业性能测试成熟度的提升,向上汇报是一个......
  • 软件测试面试之项目部分
    1.项目是怎么进行测试的类似题目:给你个项目怎么测?拿到一个项目如何开展测试工作?思路:考虑面试时间一般一个问题在3分钟以内,因此在回答这类问题的时候要以覆盖全面的大点(流程、工具、成绩)为主要思路,顺便留一些“暗示”来引导考官后续的问题。答:1)、进销存项目为B/S架......
  • 大语言模型(LLM)的训练微调 Fine Tuning -- part3 本地调用
    以下代码示范如何调用已经微调后的大语言模型,调用本地模型先决条件已经有了本地训练好的大语言模型,如何训练可以参考我的博文《生成式AI》课程作业6大语言模型(LLM)的训练微调FineTuning--part2-CSDN博客文章浏览阅读148次,点赞2次,收藏2次。代码围绕一个主工作目录展开,......
  • 《生成式 AI》课程 作业6 大语言模型(LLM)的训练微调 Fine Tuning -- part2
    资料来自李宏毅老师《生成式AI》课程,如有侵权请通知下线IntroductiontoGenerativeAI2024Spring来源背景说明该文档主要介绍了国立台湾大学(NTU)2024年春季“生成式人工智能(GenAI)”课程的作业5(GenAIHW5)相关内容,包括任务概述、待办事项、解码参数、提交与评分、参考......