围绕使用AI助手来减少手动工作、通过代码生成器提高软件开发者的生产力,以及利用生成式AI进行创新,这些话题一直为公众所热议。同时,商业机会正推动许多开发团队构建知识库、使用向量数据库,并在其应用中嵌入大型语言模型(LLMs)。
构建具有LLM能力的应用程序的一些通用用例,包括搜索体验、内容生成、文档摘要、聊天机器人和客户支持应用。行业示例包括在医疗保健中开发患者门户、在金融服务中改善初级银行家的工作流程,以及为制造业的未来铺平道路。
投资LLMs的公司面临一些前期障碍,包括改进数据治理、提高数据质量、选择LLM架构、解决安全风险,并制定云基础设施计划。
我对组织如何测试他们的LLM模型和应用程序有更大的担忧。新闻中的问题包括一家航空公司兑现其聊天机器人提供的退款、关于版权侵权的诉讼,以及降低幻觉风险。
Roadz的联合创始人兼首席运营官Amit Jain表示:“测试LLM模型需要一种多方面的方法是超越技术严谨性的。团队应该进行迭代改进,并创建详细的文档以记录模型的开发过程、测试方法和性能指标。与研究社区进行互动,以基准测试和分享最佳实践也是有效的。”
针对嵌入式LLMs的4种测试策略
开发团队需要一个LLM测试策略。作为起点,考虑以下用于测试嵌入自定义应用程序中的LLMs的做法:
1.创建测试数据以扩展软件QA
2.自动化模型质量和性能测试
3.根据用例评估RAG质量
4.开发质量指标和基准
5.创建测试数据以扩展软件QA
大多数开发团队不会创建通用的LLMs,而是为特定的最终用户和用例开发应用程序。为了制定测试策略,团队需要了解用户角色、目标、工作流程和涉及的质量基准。
Mindbreeze的首席技术官Jakob Praher表示:“测试LLMs的第一个要求是了解LLM应该能够解决的任务。”“对于这些任务,人们会构建测试数据集以建立LLM性能的指标。然后,人们可以系统地优化提示或微调模型。”
例如,为客服设计的LLM可能包括常见用户问题和最佳响应的测试数据集。其他LLM用例可能没有直接的方法来评估结果,但开发人员仍然可以使用测试数据进行验证。
Solix Technologies的工程副总裁Kishore Gadiraju表示:“测试LLM最可靠的方法是创建相关的测试数据,但挑战在于创建这样一个数据集的成本和时间。”“像任何其他软件一样,LLM测试包括单元、功能、回归和性能测试。此外,LLM测试需要偏见、公平性、安全性、内容控制和可解释性测试。”
自动化模型质量和性能测试
一旦有了测试数据集,开发团队应该根据质量目标、风险和成本考虑采取几种测试方法。Toloka AI的首席执行官Olga Megorskaya表示:“公司开始向自动化评估方法转变,而不是人类评估,因为它们具有时间和成本效率。”“然而,在关键情况下,公司仍应聘请领域专家,以捕捉自动化系统可能忽视的细微差别。”
对于开发人员或数据科学家来说,找到自动化和人在循环测试之间的正确平衡并不容易。Astronomer的数据和AI高级副总裁Steven Hillion表示:“我们建议对建模过程的每个步骤进行自动化基准测试,然后对端到端系统进行自动化和手动验证的混合”“对于主要应用程序版本,您几乎总是希望对测试集进行最后一轮手动验证。这在您引入了新的嵌入、新模型或新提示,并且您期望提高总体质量水平时尤其如此,因为改进通常是微妙或主观的。”
在有健全的LLM测试平台之前,手动测试是一个谨慎的措施。Relational AI的研究ML副总裁Nikolaos Vasiloglou表示:“没有用于系统测试的最新测试平台。”“当涉及到可靠性和幻觉时,知识图谱问题生成机器人是最好的解决方案。”
Gadiraju分享了以下LLM测试库和工具:
1.AI Fairness 360,一个开源工具包,用于检查、报告和减轻机器学习模型中的歧视和偏见;
2.DeepEval,一个开源的LLM评估框架,类似于Pytest,但专门用于单元测试LLM输出;
3.Baserun,一个帮助调试、测试和迭代改进模型的工具;
4.Nvidia NeMo-Guardrails,一个开源工具包,用于在LLM的输出上添加可编程约束。
IBM Data and AI的数据科学工具和运行时总监Monica Romila分享了企业用例中LLMs的两个测试领域:
1.模型质量评估使用学术和内部数据集评估模型质量,用于分类、提取、摘要、生成和检索增强生成(RAG)等用例。
2.模型性能测试验证模型的延迟(数据传输的经过时间)和吞吐量(在一定时间范围内处理的数据量)。
Romila表示,性能测试取决于两个关键参数:并发请求的数量和生成的令牌数量(模型使用的文本块)。“重要的是要测试各种负载大小和类型,并与现有模型的性能进行比较,以查看是否需要更新。”
DevOps和云架构师应考虑基础设施要求,以进行LLM应用程序的性能和负载测试。SADA解决方案工程董事Heather Sundheim表示:“为大型语言模型部署测试基础设施涉及设置强大的计算资源、存储解决方案和测试框架。”“自动化配置工具如Terraform和版本控制系统如Git在可重复部署和有效协作中发挥关键作用,强调平衡资源、存储、部署策略和协作工具的重要性,以实现可靠的LLM测试。”
根据用例评估RAG质量
提高LLM准确性的一些技术包括集中内容、使用最新数据更新模型,并在查询管道中使用RAG。RAG对于将LLMs的强大功能与公司的专有信息结合起来非常重要。
在一个典型的LLM应用程序中,用户输入一个提示,应用程序将其发送到LLM,然后LLM生成一个响应,应用程序将其发送回用户。使用RAG时,应用程序首先将提示发送到信息数据库,如搜索引擎或向量数据库,以检索相关、主题相关的信息。应用程序将提示和这些上下文信息发送到LLM,后者使用这些信息来制定响应。因此,RAG将LLM的响应限制在相关和上下文信息上。
Pryon的首席执行官和创始人Igor Jablokov表示:“RAG对于企业风格的部署更合理,其中对源内容的可验证归属是必要的,尤其是在关键基础设施中。”
使用RAG与LLM已经显示出可以减少幻觉并提高准确性。然而,使用RAG还增加了一个需要测试其相关性和性能的新组件。测试类型取决于评估RAG和LLM响应的容易程度,以及开发团队在多大程度上可以利用最终用户反馈。
我最近与Forethought的首席执行官Deon Nicholas谈到了他公司生成型客户支持AI中使用的RAG评估选项。他分享了三种不同的方法:
1.黄金标准数据集,或人类标记的正确答案数据集,作为模型性能的基准;
2.强化学习,或在现实世界场景中测试模型,例如在与聊天机器人互动后询问用户的满意度;
3.对抗网络,或训练一个次要LLM来评估主要的性能,这提供了一种不依赖人类反馈的自动化评估。
Nicholas表示:“每种方法都有权衡,平衡了人类努力与忽视错误风险之间的关系。”“最好的系统在系统组件中利用这些方法,以最小化错误,促进健全的AI部署。”
开发质量指标和基准
一旦您有了测试数据、一个新的或更新的LLM和一个测试策略,下一步就是根据既定目标验证质量。
ContractPodAi的首席产品官Atena Reyhani表示:“为了确保开发安全、可靠和值得信赖的AI,创建具体和可衡量的KPI并建立明确的界限非常重要。”“一些需要考虑的标准包括准确性、一致性、速度和与特定领域用例的相关性。开发人员需要评估目标领域中的整个LLM生态系统和运营模型,以确保它提供准确、相关和全面的结果。”
一个学习的工具是Chatbot Arena,一个比较LLM结果的开放环境。它使用Elo评分系统,这是一种经常用于排名竞技游戏中玩家的算法,但当一个人评估来自不同LLM算法或版本的响应时,它效果很好。
Immuta的研究副总裁Joe Regensburger表示:“人类评估是测试的核心部分,特别是在‘野外’环境中强化LLM。”
“Chatbot Arena是众包测试的一个例子,这些类型的人类评估研究可以提供一个重要的反馈循环,以纳入用户反馈。”
IBM Data and AI的Romila根据LLM的用例分享了三个需要考虑的指标。
1.F1分数是精确度和召回率的综合分数,适用于LLM用于分类或预测的情况。例如,客户支持LLM可以根据其推荐行动方案的能力进行评估。
2.RougeL可用于测试RAG和LLM的摘要用例,但这通常需要一个人类创建的摘要来基准测试结果。
3.sacreBLEU是用于定量评估LLM响应的方法之一,最初用于测试语言翻译,现在与其他方法如TER、ChrF和BERTScore一起使用。
一些行业有质量和风险指标需要考虑。Aisera的产品管理和市场营销副总裁Karthik Sj表示:“在教育中,评估适龄性和避免毒性至关重要,但在面向消费者的应用程序中,优先考虑响应的相关性和延迟。”
一旦模型部署,测试就不会结束,数据科学家应该寻找最终用户的反应、性能指标和其他反馈来改进模型。Amplitude的工程和CISO副总裁Dustin Pearce表示:“部署后,将结果与行为分析集成变得至关重要,提供快速反馈和更清晰的模型性能度量。”
准备生产的一个重要步骤是在应用程序中使用功能标志。AI技术公司Anthropic、Character.ai、Notion和Brex在构建其产品时使用功能标志,以协作地测试应用程序,缓慢地向大型群体引入能力,并将实验针对不同的用户细分。
虽然有新兴技术来验证LLM应用程序,但这些技术都不容易实施,也不能提供明确的结果。就目前而言,仅仅构建一个具有RAG和LLM集成的应用程序可能是相对容易的部分,与测试它和支持增强所需的工作相比。