生成式人工智能正在疾速倒退,许多人正在尝试应用这项技术来解决他们的业务问题。个别状况下有 4 种常见的应用办法:
- Prompt Engineering
- Retrieval Augmented Generation (RAG 检索加强生成)
- 微调
- 从头开始训练根底模型(FM)
本文将试图依据一些常见的可量化指标,为抉择正确的生成式人工智能办法提供倡议。
本文不包含“应用原模型”的选项,因为简直没有任何业务用例能够无效地应用根底模型。按原样应用根底模型能够很好地用于个别搜寻,但对于任何特定的使劲,则须要应用下面提到的选项之一。
如何执行比拟?
基于以下指标:
- 准确性(答复有多精确?)
- 实现复杂性(实现能够有多简单?)
- 投入工作量(须要多少工作的投入来实现?)
- 总成本(领有解决方案的总成本是多少?)
- 灵活性(架构的耦合有多松? 更换 / 降级组件有多容易?)
咱们将对这些度量规范上的每个解决方案办法进行评级,进行一个简略的比照。
准确性
让咱们首先失去探讨最总要的一点: 哪种办法提供最精确的响应?
Prompt Engineering 就是通过提供大量示例提供尽可能多的上下文,以使根底模型更好地理解用例。尽管独自来看,后果可能令人印象粗浅,但与其余办法相比,它产生的后果最不精确。
RAG 产生了高质量的后果,因为它减少了间接来自向量化信息存储的特定于用例的上下文。与 Prompt Engineering 相比,它产生的后果大大改善,而且产生幻觉的可能性非常低。
微调也提供了相当准确的后果,输入的品质与 RAG 相当。因为咱们是在特定畛域的数据上更新模型权重,模型产生更多的上下文响应。与 RAG 相比,品质可能略微好一些,但这取决于具体实例。所以评估是否值得花工夫在两者之间进行衡量剖析是很重要的。一般来说,抉择微调可能有不同的起因,而不仅仅是精度。还包含数据更改的频率、在本人的环境中管制模型实现法规、听从性和可再现性等目标等等。
从头开始的训练产生了最高品质的后果(这是必定的)。因为模型是在用例特定数据上从零开始训练的,所以产生幻觉的几率简直为零,输入的准确率也是比拟中最高的。
实现的复杂性
除了准确性以外,另外一个须要关注的就是实现这些办法的难易水平。
Prompt Engineering 具备相当低的实现复杂性,因为它简直不须要编程。须要具备良好的英语 (或其余) 语言技能和畛域专业知识,能够应用上下文学习办法和少样本学习办法来创立一个好的提醒。
RAG 比 Prompt Engineering 具备更高的复杂性,因为须要编码和架构技能来实现此解决方案。依据在 RAG 体系结构中抉择的工具,复杂性可能更高。
微调比下面提到的两个更简单,因为模型的权重 / 参数是通过调优脚本更改的,这须要数据迷信和 ML 专业知识。
从头开始训练必定具备最高的实现复杂性,因为它须要大量的数据管理和解决,并且训练一个相当大的模型,这须要深刻的数据迷信和 ML 专业知识。
工作量投入
实现的复杂性和工作量并不总是成正比的。
Prompt Engineering 须要大量的迭代致力能力做到正确。根底模型对提醒的措辞十分敏感,扭转一个词甚至一个动词有时会产生齐全不同的反馈。所以须要相当多的迭代能力使其实用于相应的需要。
因为波及到创立嵌入和设置矢量存储的工作,RAG 也须要很多的工作量,比 Prompt Engineering 要高一些。
微调则比前两个要更加费劲。尽管微调能够用很少的数据实现(在某些状况下甚至大概或少于 30 个示例),然而设置微调并取得正确的可调参数值须要工夫。
从头开始训练是所有办法中最费劲的办法。它须要大量的迭代开发来取得具备正确技术和业务后果的最佳模型。这个过程从收集和治理数据开始,设计模型体系结构,并应用不同的建模办法进行试验,以取得特定用例的最佳模型。这个过程可能会很长(几周到几个月)。
总成本
咱们探讨的不仅仅是服务 / 组件破费,而是齐全实现解决方案的老本,其中包含纯熟工程师(人员),用于构建和保护解决方案的工夫,其余工作的老本,如本人保护基础设施,执行降级和更新的停机工夫,建设反对渠道,招聘,进步技能和其余杂项老本。
Prompt Engineering 的老本是相当低的,因为须要保护的只是提醒模板,并在根底模型版本更新或新模型公布时时放弃它们的最新状态即可。除此之外,托管模型或通过 API 间接应用还会有一些而额定的老本。
因为架构中波及多个组件,RAG 的老本要比 Prompt Engineering 略高。这取决于所应用的嵌入模型、向量存储和模型。因为在这里须要为 3 个不同的组件付费。
微调的老本必定要高于前两个,因为调整的是一个须要弱小计算能力的模型,并且须要深刻的 ML 技能和对模型体系结构的了解。并且保护这种解决方案的老本也会更高,因为每次有根本模型版本更新或新数据批次进入时都须要调优。
从头开始训练无疑是老本最高的,因为团队必须领有端到端数据处理和 ML 训练、调优和部署能力。这须要一群高技能的机器学习从业者来实现。保护这种解决方案的老本十分高,因为须要频繁的从新训练周期来放弃模型与用例四周的新信息放弃同步。
灵活性
咱们来看看在简化更新和更改方面的是什么状况
Prompt Engineering 具备十分高的灵活性,因为只须要依据根底模型和用例的变动更改提醒模板。
当波及到架构中的更改时,RAG 也具很最高水平的灵活性。能够独立地更改嵌入模型、向量存储和 LLM,而对其余组件的影响最小。它还能够在不影响其余组件的状况下在简单受权等流程中增加更多组件。
微调对更改的灵活性非常低,因为数据和输出的任何更改都须要另一个微调周期,这可能非常复杂且耗时。同样,将雷同的微调模型调整到不同的用例也须要很多的工作,因为雷同的模型权重 / 参数在其余畛域的体现可能比它所调整的畛域差。
从头开始训练的灵活性最低的。因为模型是从头构建的,对模型执行更新会触发另一个残缺的从新训练周期。咱们也能够微调模型,而不是从头开始从新训练,但准确性会有所不同。
总结
从以上所有的比拟中能够显著看出,没有显著的输赢。因为最终的抉择取决于设计解决方案时最重要的指标是什么,咱们的倡议如下:
当心愿在更改模型和提醒模板方面具备更高的灵活性,并且用例不蕴含大量域上下文时,能够应用 Prompt Engineering。
当想要在更改不同组件 (数据源,嵌入,FM,矢量引擎) 方面具备最高水平的灵活性时,应用 RAG,这样简略并且能够放弃输入的高质量(前提是你要有数据)。
当心愿更好地管制模型工件及其版本治理时,能够应用微调。尤其是畛域特定术语与数据十分特定时(如法律、生物学等),它也很有用。
当以上都不适宜的时候,能够从头开始训练。既然感觉下面的计划准确性都不够高,所以就须要有足够的估算和工夫来做的更好。
总而言之,抉择正确的生成 AI 办法须要深刻思考并评估可承受和不可承受的指标。甚至是依据不同的期间抉择不同的计划。
https://avoid.overfit.cn/post/94751a166b9f49509f7e0b449542733f
作者:Vikesh Pandey