GenAI应用迭代式Evals构建:告别重资产投入,加速AI项目落地

0

在人工智能(AI)驱动的应用项目中,自动化评估(evals)的重要性日益凸显。然而,许多团队往往在项目后期才开始关注 evals 的构建,或者过度依赖人工评估,这主要是因为构建 evals 被视为一项巨大的投资,需要创建大量的示例并设计和验证指标。本文旨在探讨如何以迭代的方式构建 evals,从而降低前期投入成本,并逐步将评估工作从人工转向自动化。

自动化评估:GenAI应用的关键

对于通用人工智能(GenAI)应用,自动化评估是至关重要的一环。它可以帮助我们快速了解系统的性能,并及时发现和解决问题。然而,传统的 evals 构建方法需要大量的前期投入,这使得许多团队望而却步。因此,我们需要一种新的方法来构建 evals,使其更加高效和灵活。

正如我们在构建 AI 模型时所采取的迭代方法一样,构建 evals 也可以采用类似的策略。从一个快速且粗略的实现开始(例如,少量示例和未优化的指标),然后随着时间的推移进行迭代和改进。这种方法能够让你逐渐将评估的负担从人类转移到自动化 evals。

我之前曾撰文强调了创建 evals 的重要性和难度。假设你正在构建一个客户服务聊天机器人,它可以自由文本回复用户。由于没有唯一的正确答案,许多团队最终不得不让人类仔细检查每次更新的数十个示例输出,以判断系统是否有所改进。虽然像 LLM-as-judge 这样的技术很有帮助,但要使其良好运行的细节(例如,使用什么提示、给法官什么上下文等等)需要仔细调整。所有这些都让人觉得构建 evals 需要大量的前期投资,因此在任何一天,团队都可以通过依赖人类法官而不是弄清楚如何构建自动化 evals 来取得更大的进展。

迭代式Evals构建方法

我鼓励你以不同的方式构建 evals。构建快速 evals 是可以接受的,这些 evals 只是对系统性能的部分、不完整和嘈杂的衡量,并对其进行迭代改进。它们可以作为人工评估的补充,而不是替代品。随着时间的推移,你可以逐步调整评估方法,以缩小 evals 的输出与人类判断之间的差距。例如:

  • 逐步增加示例:从 eval 集中非常少的示例开始(比如 5 个),并随着时间的推移逐渐添加到它们——或者如果你发现某些示例太容易或太难,并且对于区分不同版本的系统性能没有用处,则将它们减去。
  • 关注关键维度:首先使用仅衡量你关心的性能维度子集的 evals,或者衡量你认为与系统性能相关但不完全捕获系统性能的狭窄线索。例如,如果在对话的某个时刻,你的客户支持代理应该 (i) 调用 API 发出退款,并且 (ii) 生成适合用户的消息,你可以首先只衡量它是否正确调用 API,而不用担心消息。或者,如果在某个时刻,你的聊天机器人应该推荐特定产品,则基本 eval 可以衡量聊天机器人是否提及该产品,而无需担心它说了什么。

Cartoon of two coworkers coding; one struggles with evaluations, the other iterates quickly through model updates and test cases.

只要 evals 的输出与整体性能相关,就可以在开始时仅测量你关心的事物的一个子集。

开发过程因此包含两个迭代循环,你可以并行执行它们:

  • 迭代系统以使其性能更好,通过自动化 evals 和人工判断的组合来衡量;
  • 迭代 evals 以使它们更接近人类判断。

与人工智能中的许多事情一样,我们通常不会第一次就做对。因此,最好快速构建一个初始端到端系统,然后迭代以改进它。我们习惯于采用这种方法来构建人工智能系统。我们可以以同样的方式构建 evals。

对我来说,成功的 eval 满足以下标准。假设,我们目前有系统 A,我们可以调整它以获得系统 B:

  • 如果根据熟练的人类判断,A 的效果明显优于 B,则 eval 应给 A 比 B 高得多的分数。
  • 如果 A 和 B 具有相似的性能,则它们的 eval 分数应相似。

每当系统 A 和 B 的一对与这些标准相矛盾时,这就是 eval 存在“错误”的迹象,我们应该调整它以使其正确地对 A 和 B 进行排名。这与构建机器学习算法中的错误分析是一种相似的理念,只是我们不是关注机器学习算法输出的错误(例如当它输出不正确的标签时),而是关注 evals 的“错误”(例如当它们错误地对两个系统 A 和 B 进行排名时),因此 evals 无助于在它们之间进行选择。

纯粹依靠人类判断是开始一个项目的好方法。但对于许多团队来说,将 evals 构建为快速原型并迭代到更成熟的东西可以让你更早地进行 evals 并加快你的进度。

总结与展望

在 GenAI 应用的开发过程中,自动化评估(evals)是不可或缺的一环。通过采用迭代式的构建方法,我们可以降低前期投入成本,并逐步将评估工作从人工转向自动化。这种方法不仅提高了开发效率,还能够更好地保证系统的性能和质量。

因此,我鼓励大家在构建 GenAI 应用时,尽早开始构建 evals,并采用迭代式的方法不断改进。相信通过这种方式,我们能够更好地应对 GenAI 应用开发中的挑战,并取得更大的成功。