如何创建LLM应用程序的框架 原创

发布于 2024-9-6 10:42
浏览
0收藏

你在考虑在产品中使用LLM时,可以使用具有三个阶段的框架。这个框架将帮助定义问题、选择适合的模型、创建有效的提示,并确保整个流程在投入生产时有效。

有许多研究和演示表明,大型语言模型(LLM)可以执行令人印象深刻的任务。虽然并没有一种万能的方法,但可以尝试创建一些指南,以帮助人们更好地在LLM所带来的创新和困惑中导航。

在考虑是否以及如何在产品中使用LLM时,可以使用具有以下三个阶段的框架。它可以帮助定义问题,选择适合的模型,创建正确的提示,并确保流程在投入生产时有效。

第一阶段:准备

这个阶段的目标是,开发人员能够很好地理解自己想要完成什么任务,以及最好从哪里开始。

  • 定义任务:随着对LLM的宣传和炒作,很容易认为它们是一般问题的解决者,可以承担复杂的任务并提出解决方案。但是,如果希望获得更好的结果,应该选择一个特定的任务,并尝试将其表述为一个输入-输出问题,该问题可以被分类到已知的类别中(分类、回归、问答、摘要、翻译、文本生成等)。
  • 选择一个与想要解决的问题密切相关的基准:这将帮助开发人员确定良好的提示技巧和模型。例如,如果开发人员正在解决一个推理问题,HellaSwag就是一个很好的基准。对于语言任务,MMLU可以很好地展示不同LLM的表现。来自​Confidence AI的指南​很好地概述了不同的LLM基准。
  • 创建一个基本的测试集:至少创建五个示例以描述想要解决的问题。示例应该人工创建,并且与其产品或行业直接相关。开发人员可以使用基准示例作为如何格式化示例的指南。
  • 选择一个模型:查看LLM排行榜,选择与任务相关的基准测试中表现最好的三个模型。
  • 创建基本提示模板:为测试集创建提示。使用非常简单的提示技术来了解每个模型的基准性能。基本提示通常包括角色、说明和问题。

第二阶段:细化

这一阶段的目标是,让所选LLM在准备集上具有最佳性能。这里对快速推理或低成本不感兴趣,只是想让LLM发挥作用。

  • 使用高级提示技术:如果模型在基本提示上的表现不令人满意,可以尝试采用更高级的技术,例如小样本示例、​思维链推理​​、附加指令和​场景学习​。尝试将问题与回复分开,并逐一解决。
  • 添加场景信息:如果应用程序需要关于产品的专有信息,例如代码和文档,可以将其添加到提示中。对于当今的长场景LLM,无需开始就设置检索-增强生成(RAG)管道,只需将知识作为单独的部分转储到提示中。
  • 使用提示管道:如果任务太复杂,尝试将其分解为几个子任务,其中一个子任务的输出成为另一个子任务的输入。这能够为每个子任务创建和优化单独的提示,并获得更好的结果。
  • 创建更大的测试集:生成至少50~100个例子来测试模型和提示。尝试创建尽可能多的人工提示。邀请将成为产品最终用户的同事帮助创建更多样化的数据集。还可以使用前沿模型通过小样本学习来生成示例。
  • 在大数据集上不断优化提示:对于更大的数据集,可能会看到更多的错误。重复优化过程,直到提示达到可接受的性能。

第三阶段:扩展

这个阶段的前提是已经有了一个高性能的提示管道。其目标是通过降低成本、提高速度和持续改进性能,使基于LLM的产品具有可扩展性。

  • 减少提示符的大小:使用RAG和​提示优化​等技术减少提示中的令牌数量。当每天需要处理数千或数百万个请求时,即使将每个请求的令牌数量减少一小部分,也会产生很大的影响。
  • 提高推理速度:使用​提示缓存​、高级硬件或更好的推理算法等技术来减少生成第一个令牌的时间和应用程序每秒生成的令牌数量。更快的响应速度通常会带来更好的用户体验。
  • 在运行时收集数据:在遵守隐私法律的前提下,当在生产中部署该模式时,尝试收集更多的输入-输出示例。这些数据对于分析用户如何与应用程序交互、发现痛点以及在未来创建更好版本的应用程序的宝贵资源。
  • 微调小型模型:有了足够的例子,可以训练更小的模型,使其在特定任务上的表现与大型LLM一样出色。这有助于将成本降低几个数量级,同时提高速度。
  • 尽可能移除LLM:在很多情况下,LLM并不是解决问题的最佳解决方案。例如,如果使用LLM进行分类,则可以通过使用线性分类模型或BERT分类器获得更准确且成本更低的结果。如果正在使用该模型进行推荐,那么可以尝试更经典的推荐模型。有时,一个简单的正则表达式或基于规则的函数可以取代LLM所执行的任务。当收集到更多的数据并优化管道,需要尝试找出可以移除LLM的地方。

注意事项

  • LLM并不是灵丹妙药:在许多情况下,LLM不是解决问题的最佳方案。在某些情况下,即使是最先进的LLM也不能提供合理的结果。正如在扩展阶段的最后一部分所提到的,一旦应用程序成熟,需要尝试用更可靠的工具替换LLM。
  • 为什么要用LLM?在某些领域,LLM是无与伦比的,例如文本生成。而在其他领域,LLM可以起到很大的促进作用,例如设计和编码。因此,了解想要完成的任务和最终目标至关重要。在许多情况下,即使有一个减少10%~20%劳动力的解决方案也能带来生产力的提升。LLM在需要人工参与的任务中尤其有用,它们可以帮助减少专家在筛选数据方面所需的精力。
  • 使用LLM进行原型设计。LLM是测试假设和创建原型的理想工具。没有技术能力创建机器学习模型的产品经理可以使用LLM来创建所需产品和应用程序的原型,对其进行改进,并找到产品与市场的契合点。一旦进入扩展和部署阶段,他们就可以聘请专家来帮助他们优化应用程序的组件,并采用更有效的解决方案替代LLM。

原文标题:​A framework for creating LLM applications​,作者:Ben Dickson

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2024-9-6 10:46:33修改
收藏
回复
举报
回复
相关推荐