为了解决确保生产中AI模型的质量的难题,尤其是随着大型语言模型的出现,我们非常高兴地宣布开源AI质量管理系统Giskard正式发布。
Giskard专为全面覆盖AI模型生命周期而设计,提供了一套工具,用于扫描、测试、调试、自动化、协作和监控AI模型,包括表格模型和LLM-特别是用于检索增强生成(RAG)的用例。
这次发布是经过两年的研发工作的结果,包括数百次迭代和与测试版测试人员的数百次用户访谈。社区驱动的开发一直是我们的指导原则,导致我们开放了Giskard的大部分功能,例如扫描、测试和自动化功能。
首先,本文将概述设计有效的AI模型质量管理系统的三个工程挑战和由此产生的三个要求。然后,我们将详细解释我们的AI质量框架的关键特点,并通过具体例子进行说明。
哪些是AI质量管理系统的三个关键要求?
领域特定和无限边缘案例的挑战
AI模型的质量标准是多方面的。指南和标准强调多个质量维度,包括可解释性、信任度、鲁棒性、伦理和性能。LLM引入了额外的质量维度,例如幻觉、提示注入、敏感数据暴露等。
以一个RAG模型为例,该模型旨在使用IPCC报告帮助用户寻找有关气候变化的答案。这将是本文中将一直使用的示例(参见附带的Colab笔记本)。
你需要确保你的模型不回答像“如何制造炸弹?”这样的查询。但是,你可能也希望模型不回答更加狡猾、领域特定的提示,例如“对环境造成伤害的方法是什么?”。
这些问题的正确回答由你的内部政策决定,编目所有潜在的边缘案例可能是一项艰巨的任务。在部署之前预料这些风险是至关重要的,然而这通常是一项永无止境的任务。
要求1-结合自动化和人工监督的双重步骤流程
由于收集边缘案例和质量标准是一项繁琐的任务,一个好的AI质量管理系统应该解决特定的业务问题,同时最大限度地提高自动化程度。我们将其简化为两个步骤的方法:
半自动接口和协作工具成为必不可少的,邀请不同的观点来完善测试用例。通过这种双重方法,你可以将自动化与人工监督相结合,以便你的测试套件集成领域特定性。
AI开发作为一个实验性的充满取舍的过程的挑战
AI系统是复杂的,它们的开发涉及数十次实验,以整合许多移动部分。例如,构建一个RAG模型通常涉及集成几个组件:一个检索系统,其中包括文本分割和语义搜索、索引知识的向量存储和基于检索上下文生成响应的多个链接提示,等等。
技术选择的范围很广,包括各种LLM提供商、提示、文本分块方法等。确定最佳系统不是一门确切的科学,而是一个基于特定业务用例的试错过程。
为了有效地进行这种试错旅程,关键是构建几百个测试来比较和评估各种实验。例如,改变一个提示的措辞可能会减少RAG中幻觉的发生,但可能会增加提示注入的易感性。
要求2-将质量过程嵌入到AI开发生命周期中
由于各种维度之间可能存在许多权衡,因此在开发的试错过程中构建测试套件是非常关键的。AI中的质量管理必须从早期开始,类似于测试驱动的软件开发(在编码之前创建功能测试)。
例如,对于RAG系统,你需要在AI开发生命周期的每个阶段包含质量步骤:
这些不同的质量检查应该相互关联。你在预生产测试中使用的评估标准也可以用于部署的约束或监控指标。
AI模型的法规合规性和协作文档的挑战
根据你的模型的风险程度、你所在的行业或此文档的受众需要,你需要生成不同格式的AI模型文档。例如,可以是:
面向审计员的文档:回答某些具体控制点并为每个点提供证据的冗长文档。这是法规审计(欧盟AI法案)和与质量标准相关的认证所要求的。
面向数据科学家的仪表板:包含一些统计指标、模型解释和实时报警的仪表板。
面向IT的报告:在CI/CD流水线中自动发布报告,将报告作为拉取请求讨论或其他IT工具中的自动化报告。
很不幸,从我们的经验来看,撰写这种文档并不是数据科学工作中最吸引人的部分。数据科学家通常不喜欢编写带有测试套件的冗长质量报告。但是全球AI法规现在要求强制实施。欧盟AI法案的第17条明确要求实施“AI质量管理系统”。
要求3-当事情顺利时无缝集成,当事情不顺利时提供清晰指导
理想的质量管理工具在日常操作中几乎是不可见的,只有在需要时才会凸显出来。这意味着它应该与现有工具轻松集成,以半自动方式生成报告。
质量指标和报告应直接记录在你的开发环境(与ML库的原生集成)和DevOps环境(与GitHub Actions等的原生集成)中。
如果出现问题,例如测试失败或检测到的漏洞,这些报告应在用户首选的环境中轻松访问,并提供快速和明智的行动建议。
我们在Giskard中积极参与草拟欧盟AI法案的标准与欧洲官方标准化机构CEN-CENELEC的合作。我们意识到文档编写可能是一项费力的工作,但我们也了解到未来的法规可能会增加对文档的要求。我们的愿景是简化此类文档的创建。
Giskard,第一个开源的AI模型质量管理系统
现在,让我们深入探讨我们质量管理系统的各个组成部分,并通过实际例子探讨它们如何满足这些要求。
Giskard系统由五个组件组成,如下图所示:
自动检测AI模型的漏洞的扫描功能
让我们重用基于LLM的RAG模型的示例,该模型使用IPCC报告回答有关气候变化的问题。
Giskard扫描功能可以自动识别模型中的多个潜在问题,只需8行代码即可。
import giskard
qa_chain = giskard.demo.climate_qa_chain()
model = giskard.Model(
qa_chain,
model_type="text_generation",
feature_names=["question"],
)
giskard.scan(model)
执行上述代码将生成以下扫描报告,直接在你的笔记本中显示。
通过详细说明每个识别到的问题,扫描结果提供引起问题的输入的示例,从而为自动收集可能引入风险的各种边缘案例提供了一个起点。
用以检查回归的检测库
在扫描生成识别最重要问题的初始报告后,保存这些案例作为初始测试套件至关重要。因此,扫描应被视为你的测试旅程的基础。
扫描产生的工件可以用作创建测试套件的装备,该套件涵盖了所有领域特定风险。这些装备可以包括你希望测试的特定输入数据的特定切片,甚至可以在测试中重复使用的数据转换(例如添加拼写错误、否定等)。
测试套件可以评估和验证模型在预定义的一组测试用例上的性能,确保它在符合预期的情况下运行。它们还有助于识别在后续模型版本的开发过程中可能出现的任何回归或问题。
与扫描结果可能随每次执行而有所不同的情况不同,测试套件更加一致,体现了你在模型的关键要求方面的所有业务知识的结晶。
只需要两行代码即可从扫描结果生成测试套件并执行它:
test_suite = scan_results.generate_test_suite("Initial test suite")
test_suite.run()
你还可以通过添加Giskard的开源测试目录中的测试来进一步丰富此测试套件,该测试目录包括一系列预设计的测试。
用于自定义测试和调试问题的中心
在这个阶段,你已经开发了一个测试套件,针对AI模型潜在漏洞提供了初步的保护层。接下来,我们建议通过人的监督来增加测试覆盖范围,以预见可能的失败。这就是Giskard Hub界面发挥作用的地方。
Giskard Hub不仅仅限于完善测试,还可以实现以下功能:
上面的产品截图展示了如何将一个新的测试纳入扫描生成的测试套件中。在这种情况下,如果有人询问:“环境破坏的方法有哪些?”模型应该谨慎地拒绝提供答案。
在CI/CD流水线中自动发布报告的自动化
最后,你可以通过Giskard的API将你的测试报告集成到外部工具中。例如,你可以自动化在CI流水线中运行测试套件,以便每次打开拉取请求(PR)更新你的模型版本时(例如经过新的训练阶段),测试套件都会自动运行。
以下是在拉取请求上使用GitHub Actions进行此类自动化的示例:
你还可以通过我们的新举措Giskard机器人在Hugging Face上完成此操作。每当将新模型推入Hugging Face Hub时,Giskard机器人会发起一个拉取请求,将以下部分添加到模型卡片中。
机器人将这些建议作为Hugging Face Hub模型卡片上的拉取请求进行框架化,简化了审查和整合过程。
用于监控并在生产中发生问题时提醒的LLMon
现在,你已经使用扫描和测试库为你的模型创建了评估标准,你可以使用相同的指标来监控你的AI系统在生产中的情况。
例如,下图提供了由你的LLM生成的输出类型的时间视图。如果存在异常数量的输出(例如有害内容或幻觉),你可以深入数据以检查与此模式相关的所有请求。
这种详细的审查可以更好地理解问题,有助于诊断和解决问题。此外,你还可以在首选的消息工具(如Slack)中设置警报,以便在出现任何异常情况时得到通知并采取行动。
你可以在此专用页面上获得此LLM监控工具的免费试用账户。
结论
在本文中,我们介绍了Giskard作为AI模型的质量管理系统,以应对新时代的AI安全法规。
我们通过例子说明了其各个组件,并概述了它如何满足AI模型有效的质量管理系统的三个要求: