如何在-3-步中分析和优化你的-LLM
如何在 3 步中分析和优化你的 LLM
towardsdatascience.com/how-to-analyze-and-optimize-your-llms-in-3-steps/
在这篇文章中,我将讨论你已经有一个运行的 LLM 并想分析和优化其性能的场景。我将讨论我用来揭示 LLM 工作良好和需要改进的地方的方法。此外,我还会讨论我用来提高我的 LLM 性能的工具,例如 Anthropic 的提示优化器。
简而言之,我遵循三步流程来快速提高我的 LLM 性能:
-
分析 LLM 输出
-
逐步改进价值与努力最匹配的领域
-
评估和迭代
目录
-
动机
-
第 1 步:分析 LLM 输出
-
手动检查原始输出
-
根据分类法分组查询
-
将 LLM 作为黄金数据集上的裁判
-
-
第 2 步:迭代改进你的 LLM
-
第 3 步:评估和迭代
-
结论
动机
我写这篇文章的动机是我经常发现自己处于引言中描述的场景。我的 LLM 已经启动并运行;然而,它并没有按预期或达到客户期望的表现。通过无数分析我的 LLM 的经验,我创建了一个简单的三步流程,我总是用它来提高 LLM。
第 1 步:分析 LLM 输出
提高你的 LLM 的第一步始终应该是分析它们的输出。为了在你的平台上实现高可观察性,我强烈建议使用 LLM 管理工具进行跟踪,例如 Langfuse 或 PromptLayer。这些工具使你能够轻松地将所有 LLM 调用汇总到一个地方,以便进行分析。
我现在将讨论我应用的一些不同的方法来分析我的 LLM 输出。
手动检查原始输出
分析你的 LLM 输出的最简单方法是通过手动检查你许多 LLM 调用。你应该收集你最后的 50 个 LLM 调用,阅读你输入到模型中的整个上下文,以及模型提供的输出。我发现这种方法在揭示问题方面非常有效。例如,我发现:
-
重复上下文(由于编程错误,我的上下文中有一部分被重复了)
-
缺失上下文(我没有将我期望的所有信息输入到我的 LLM 中)
-
等。
数据的手动检查不应被低估。彻底手动检查数据可以让你了解你正在工作的数据集,这是任何其他方式都难以获得的。此外,我还发现我应该手动检查比最初打算花时间评估更多的数据点。
例如,假设手动检查一个输入-输出示例需要 5 分钟。我的直觉常常告诉我可能需要花 20-30 分钟,因此检查 4-6 个数据点。然而,我发现你通常需要在这个过程上花费更长的时间。我建议至少将时间增加到 5 倍,所以与其花 30 分钟手动检查,不如花 2.5 小时。最初,你会认为花这么多时间在手动检查上是不必要的,但通常你会发现这会在长期上节省你大量的时间。此外,与整个 3 周的项目相比,2.5 小时的时间是微不足道的。
根据分类法分组查询
有时候,你不会从简单的数据手动分析中获得所有答案。在这些情况下,我会转向对我数据的更定量分析。这与第一种方法相反,我认为它是定性的,因为我正在手动检查每个数据点。
根据分类法分组用户查询是一种有效的方法,可以帮助你更好地理解用户对你 LLM 的期望。我将提供一个例子来使这一点更容易理解:
想象一下你是亚马逊,你有一个处理客户服务 LLM 来处理客户问题的系统。在这种情况下,分类法可能看起来像这样:
-
退款请求
-
与人类交流的请求
-
关于单个产品的疑问
-
…
我会查看最后 1000 个用户查询,并将它们手动标注到这个分类法中。这将告诉你哪些问题最普遍,哪些问题你应该最专注于正确回答。你通常会发现,每个类别中的项目分布会遵循Pareto 分布,大多数项目都属于几个特定的类别。
此外,你还需要标注客户请求是否得到了成功解答。有了这些信息,你现在可以找出你在哪些问题上遇到困难,以及你的 LLM 擅长哪些问题。也许当请求将客户查询转交给人类时,LLM 可以轻松处理;然而,当被询问有关产品细节时,它却遇到了困难。在这种情况下,你应该专注于提高你在最困难的问题组上的能力。
在黄金数据集上作为评判者的 LLM
我用来分析我的 LLM 输出的另一种定量方法是创建一个黄金数据集的输入-输出示例,并利用 LLM 作为评判者。这将在你修改你的 LLM 时有所帮助。
继续从之前的客户支持示例,你可以创建一个包含 50 个(真实)用户查询及其期望响应的列表。每次你对 LLM 进行更改(更改模型版本、添加更多上下文等),你都可以自动在黄金数据集上测试新的 LLM,并让一个 LLM 评委确定新模型的响应是否至少与旧模型的响应一样好。这将节省你大量手动检查 LLM 输出的时间。
如果你想了解更多关于 LLM 作为评委的信息,你可以在这里阅读我的 TDS 文章。[我的 TDS 文章关于这个主题在这里。]( https://towardsdatascience.com/how-to-use-llms-for-powerful-automatic-evaluations/#:~:text=You simply provide the LLM ,the%20quality%20is%20deemed%20lower.)
第 2 步:迭代改进你的 LLM
你已经完成了第一步,现在你想使用这些见解来改进你的 LLM。在本节中,我讨论了我是如何处理这一步以有效地提高 LLM 性能的。
如果我发现重大问题,例如在手动检查数据时,我总是首先修复这些问题。例如,这可能包括发现被添加到 LLM 上下文中的不必要噪声,或者我在提示中的错误。当我完成这些后,我继续使用一些工具。
我使用的一个工具是提示优化器,例如Anthropic 的提示改进器。使用这些工具时,你通常输入你的提示和一些输入输出示例。例如,你可以输入你为客服代理使用的提示,以及 LLM 失败的客户互动示例。提示优化器将分析你的提示和示例,并返回改进后的提示。你可能会看到以下改进:
-
在你的提示中改进结构,例如使用 Markdown
-
处理边缘情况。例如,处理用户向客户支持代理询问完全不相关主题的情况,比如询问“今天纽约的天气怎么样?”。提示优化器可能会添加类似“如果问题与亚马逊无关,告诉用户你只设计用来回答关于亚马逊的问题”的内容。
如果我有更多定量数据,例如从根据分类对用户查询进行分组或一个黄金数据集,我也会分析这些数据,并创建一个价值努力图。价值努力图突出了你可以做出的不同改进,例如:
-
在系统提示中改进边缘情况处理
-
使用更好的嵌入模型以改进 RAG
然后,你将这些数据点绘制在二维网格中,如下所示。你应该自然地优先考虑位于左上象限的项目,因为它们提供了大量价值且所需努力很少。然而,通常情况下,项目位于对角线上,其中改进的价值与所需努力高度相关。

此图展示了一个价值努力图。价值努力图显示了您可以对产品进行的不同改进。改进根据其价值和构建所需的努力程度在图中显示。图由 ChatGPT 提供。
我将所有改进建议放入价值努力图中,然后逐渐挑选出价值尽可能高、努力程度尽可能低的项。这是一种超级有效的方法,可以快速解决您 LLM 最紧迫的问题,在给定努力程度的情况下,对尽可能多的客户产生积极影响。
第 3 步:评估和迭代
我的三步法中的最后一步是评估我的 LLM 并进行迭代。您可以使用大量技术来评估您的 LLM,其中很多我在我的关于该主题的文章中进行了介绍。
最好为您的 LLM 性能创建一些量化指标,并确保这些指标从您在步骤 2 中应用的变化中有所改善。在应用这些更改并验证它们改善了您的 LLM 之后,您应该考虑模型是否足够好,或者是否应该继续改进模型。我通常遵循 80%原则,该原则表明在几乎所有情况下,80%的性能就足够好了。这并不是字面上的 80%,而是在于强调您不需要创建一个完美的模型,而只需要创建一个足够好的模型。
结论
在这篇文章中,我讨论了您已经有一个正在生产的 LLM,并且想要分析和改进 LLM 的情况。我通过首先分析模型输入和输出,最好是进行全面手动检查来处理这种情况。在确保我真正理解数据集和模型行为后,我也转向了更量化的指标,例如将查询分组到分类法中,并使用 LLM 作为评判者。在此之后,我根据上一步的发现实施改进,最后评估我的改进是否按预期工作。
👉 我的免费电子书和网络研讨会:
👉 在社交平台上找到我:
📩 订阅我的通讯
🧑💻 取得联系
✍️ Medium

浙公网安备 33010602011771号