出品 | 51CTO技术栈(微信号:blog51cto)
围绕使用AI助手减少手动工作、利用代码生成器提高软件开发者生产力和通过生成式AI进行创新,业界正掀起一股热潮。这些商业机遇促使许多开发团队构建知识库,使用向量数据库,并将大型语言模型(LLMs)嵌入到他们的应用中。
构建具有LLM功能的应用程序的一些通用用例包括搜索体验、内容生成、文档摘要、聊天机器人和客户服务应用。行业实例包括在医疗保健领域开发患者门户、在金融服务领域改善初级银行家的工作流程,以及在制造业中为工厂的未来铺平道路。
投资于LLMs的公司面临一些初步挑战,包括改进数据质量方面的数据治理、选择LLM架构、解决安全风险以及制定云基础设施计划。
我更担心的是组织如何计划测试他们的LLM模型和应用。引起关注的问题包括一家航空公司兑现了其聊天机器人提供的退款、因版权侵权而引发的诉讼以及降低“幻觉”风险。
Roadz公司的联合创始人兼首席运营官阿米特·杰恩(Amit Jain)表示:“测试LLM模型需要一种多方面的方法,这超出了技术严谨性的范畴。团队应该进行迭代改进,并创建详细的文档,以记录模型的开发过程、测试方法和性能指标。与研究社区合作,以基准测试和分享最佳实践也是有效的。”
1.嵌入式大型语言模型(LLMs)的四种测试策略
开发团队需要一套针对LLM的测试策略。在为嵌入在自定义应用中的LLMs制定测试策略时,可以考虑以下作为起点的实践方法:
- 创建测试数据以扩展软件质量保证
- 自动化模型质量和性能测试
- 根据用例评估RAG质量
- 制定质量指标和基准
2.创建测试数据以扩展软件质量保证
大多数开发团队不会创建通用的大型语言模型,而是为特定的最终用户和使用场景开发应用。为了制定测试策略,团队需要了解涉及的用户角色、目标、工作流程和质量基准。“测试LLMs的首要要求是了解LLM应能够解决的任务,”Mindbreeze的首席技术官Jakob Praher说,“对于这些任务,人们会构建测试数据集,以建立LLM性能的指标。然后,人们可以系统地优化提示或微调模型。”
例如,一个为客户服务设计的大型语言模型可能包含一个包含常见用户问题和最佳响应的测试数据集。其他LLM用例可能没有直接评估结果的手段,但开发人员仍可以使用测试数据进行验证。“测试LLM最可靠的方法是创建相关的测试数据,但挑战在于创建此类数据集的成本和时间,”Solix Technologies的工程副总裁Kishore Gadiraju说,“与其他软件一样,LLM测试包括单元测试、功能测试、回归测试和性能测试。此外,LLM测试还需要进行偏差、公平性、安全性、内容控制和可解释性测试。”
Gadiraju分享了以下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测试的重要性。”
3.根据用例评估RAG质量
提高LLM准确性的一些技术包括集中内容、用最新数据更新模型以及在查询流程中使用RAG。RAG对于将LLM的强大功能与公司的专有信息相结合至关重要。
在典型的LLM应用中,用户输入提示,应用程序将其发送到LLM,然后LLM生成响应,应用程序再将响应发送回用户。使用RAG时,应用程序首先将提示发送到信息数据库(如搜索引擎或向量数据库),以检索相关和主题相关的信息。应用程序将提示和这种上下文信息发送到LLM,LLM用它来制定响应。因此,RAG将LLM的响应限制在相关和上下文信息范围内。
Pryon公司的创始人兼首席执行官Igor Jablokov表示:“RAG更适用于企业级部署,在这些部署中,需要对源内容进行可验证的归因,尤其是在关键基础设施中。”
研究表明,使用RAG与LLM一起可以减少幻觉并提高准确性。但是,使用RAG也增加了一个新组件,需要对其相关性和性能进行测试。测试的类型取决于评估RAG和LLM响应的难易程度,以及开发团队能够在多大程度上利用最终用户的反馈。
我最近与Forethought公司的首席执行官Deon Nicholas就他公司用于生成式客户支持AI的RAG评估选项进行了交流。他分享了三种不同的方法:
(1)黄金标准数据集,即针对查询的正确答案的人类标注数据集,可作为模型性能的基准;
(2)强化学习,即在真实场景中测试模型,例如在用户与聊天机器人交互后询问其满意度;
(3)对抗网络,即训练一个二级LLM来评估一级LLM的性能,这种方法通过不依赖人类反馈提供自动化评估。
Nicholas表示:“每种方法都有其取舍,需要在人类投入和忽略错误的风险之间取得平衡。最佳的系统会跨系统组件利用这些方法,以最小化错误并促进稳健的AI部署。”
4.制定质量指标和基准
一旦你有了测试数据、新的或更新的大型语言模型(LLM)以及测试策略,下一步就是根据既定的目标验证质量。
ContractPodAi的首席产品官阿提娜·雷哈尼(Atena Reyhani)表示:“为确保开发出安全、可靠和值得信赖的人工智能,制定具体、可衡量的关键绩效指标(KPIs)和建立明确的防护栏至关重要。需要考虑的一些标准包括准确性、一致性、速度和与特定领域用例的相关性。开发人员需要评估目标领域中的整个LLM生态系统和运营模型,以确保其能够提供准确、相关且全面的结果。”
值得借鉴的一个工具是Chatbot Arena,它是一个开放的环境,用于比较LLM的结果。它采用Elo评级系统,这是一种常用于竞技游戏排名玩家的算法,但在评估不同LLM算法或版本产生的响应时,它同样奏效。
Immuta的研究副总裁乔·雷根斯伯格(Joe Regensburger)表示:“人类评估是测试的核心部分,特别是在将LLM强化以适应现实世界中出现的查询时。Chatbot Arena是众包测试的一个例子,这类人类评估者研究可以提供重要的反馈循环,以便整合用户反馈。”
IBM数据与人工智能部门的罗米拉(Romila)分享了根据LLM的不同用例需要考虑的三个指标。
(1)F1分数是精确度和召回率的综合得分,适用于LLM用于分类或预测的情况。例如,客户支持LLM可以通过评估其推荐行动方案的准确性来进行评估。
(2)RougeL可用于测试RAG和LLM在摘要用例中的性能,但通常需要一个由人类创建的摘要作为基准来评估结果。
(3)sacreBLEU原本是一种用于测试语言翻译的方法,现在也被用于对LLM响应进行定量评估,以及其他方法,如TER、ChrF和BERTScore。
一些行业有特定的质量和风险指标需要考虑。Aisera的产品管理和营销副总裁Karthik Sj表示:“在教育领域,评估年龄适宜性和避免毒性内容至关重要,但在面向消费者的应用中,应优先考虑响应的相关性和延迟。”
模型部署后并不意味着测试结束,数据科学家应寻求最终用户的反应、性能指标和其他反馈,以改进模型。Amplitude的工程副总裁兼首席信息安全官Dustin Pearce表示:“部署后,将结果与行为分析相结合变得至关重要,它提供了快速反馈和更清晰的模型性能衡量标准。”
为生产准备的一个重要步骤是在应用程序中使用特性开关。AI技术公司Anthropic、Character.ai、Notion和Brex在构建产品时都使用了特性开关,以便协作测试应用程序,逐步向大量用户引入功能,并针对不同的用户群体进行定向实验。
尽管出现了验证LLM应用的新技术,但这些技术都不易实施或提供确切的结果。目前,与RAG和LLM集成来构建应用程序可能相对容易,但与测试和支持改进工作相比,这仅仅是冰山一角。
https://www.51cto.com/aigc/