一、前言
本文主要分享如何通过任务拆解和提示词调优满足业务需要,避免进行模型微调造成巨大的模型训练和 GPU 硬件成本的一个案例。
业务背景大致如下:我们需要设计一个支持用户输入一段信息,然后调用某个大语言模型生成目标内容的功能。然而,我们通过尝试发现无论如何都很难得到令人满意的效果。
因此有人提议对大语言模型进行微调。
但是模型微调的成本相对较高。模型微调需要开发同学构造很多训练集和验证集,需要算法同学在大模型平台进行模型训练,需要对结果进行评估,模型训练好以后还需要专门的 GPU (预计独占 4 张 A 10)上进行部署和后期维护等,成本很高。
那么是否可以有更好的解法? 是否可以不用微调就可以实现预期的功能呢?这是我们待解决的问题。
接下来,我将分享解决思路和具体方法。
二、解法
我们主要采用了两种方法来解决这个问题,其一是任务拆解,其二是提示词调优。
通过任务分解,降低每个步骤的复杂度,让某个环节可以用上大模型,让大模型的表现更好;然后通过提示词调优让用上大模型的环节接近大模型的能力上限,实现更好地业务效果。
需要强调的是,采用任务拆解 + 提示词调优的方式只能解决部分问题,有些情况还是需要依赖模型微调来解决。由于模型微调的成本相对较高,如果通过任务拆解和提示词调优可以满足业务需求获得不错的业务效果,那么可以节约模型微调的成本。如果你的业务场景,在调研和实验后发现模型微调不可避免,还是需要果断进行微调。
2.1 任务拆解
根据教育心理学中的认知负荷理论(Cognitive Load Theory),人的大脑有一个信息处理的“容量”,就像电脑的内存一样,有限的。学习新知识或技能时,如果信息过多或太复杂,超过了这个容量,大脑就会感到“过载”,学习效果就会下降。想要应对认知负荷,需要简化学习内容,尽量将复杂的内容分解成小部分,一次只学一部分,避免信息过载。
将复杂任务拆解成多个更简单的的小任务从而更好地完成,在计算机科学和软件工程领域也有非常多的示例。
① 如工作编译器将高级编程语言的代码转换为机器能够理解的低级语言代码,这也是一个复杂的任务,但可以分解成多个小任务:词法分析、语法分析、语义分析、中间代码生成、优化、目标代码生成,很好地实现了该功能。
② 软件架构中的 MVC 架构,主要包括:视图层、控制层和模型层,通过分离关注点来简化开发和维护,使得每一层都有明确的职责,提高代码的可读性和可维护性。
同样地,对于当前大语言模型无法胜任的任务,我们可以进一步拆解,拆解成大模型更容易完成的任务。
比如我们可以将复杂的任务拆解成多个步骤,我们应根据每个步骤的特点选择最佳的处理方式。比如有些大模型可以胜任的任务优先交给大模型;有些只有人工才能完成的则交给人来完成;有些大模型处理效果都不如采用工程化方式效果好的,则应该采用工程化的方式生成;而有些环节则需要 AI 和人工配合完成最后,我们只需要在产品设计时,将这些步骤自然地串起来即可。
2.2 提示词调优
既然我们不打算进行模型微调,意味着大语言模型处理当前某个任务的上限相对固定。此时,我们可以通过提示词调优的方式不断逼近大语言模型的能力上限,实现更好地业务效果。
我们可以将提示词结构化,让提示词更全面,让大语言模型更容易理解。如在概述中给出大模型需要扮演的角色、当前任务的背景;可以在提示词中给出指导大模型处理的流程和步骤,给出大语言模型推理所需要依赖的知识;给出大语言模型推理时可以参考的示例;我们还可以通过,给出正向和负向的要求来控制模型的输出。
我们还可以使用 GPTs 和 Coze 的 Bot 创建助手来帮我们自动编写提示词。
可以使用 Coze 的自动优化提示词功能,直接对我们的提示词进行优化。
我们还可以拿 Bad Case 和对应的提示词,让模型解释原因并给出建议,进一步调整优化提示词。
实际的业务应用中提示词经常需要变更,大家可以参考我的另外一篇文章 《AI 提示词模板相关的架构设计》提高代码的可修改性、安全性和可靠性以及提高性能。
同时,建议大家在提示词调优时要进行详细的文档记录,包括:提示词调优的时间和轮数、本轮调优的主要 Bad Case、针对每个 Bad Case 的调优方法等。调优之后需要用相同的测试用例对新版的提示词效果进行评分,进行新老版本的评分对比,以增强调优效果的说服力。
由于保密的要求,这里无法给出具体的提示词示例。如果大家想系统学习提示词技巧,可以阅读我的相关文章:《一文掌握大模型提示词技巧:从战略到战术》。
三、总结
对于并不是非要进行模型微调才能解决问题的场景,我们可以优先采用任务分解降低任务的难度,提高业务落地的可能性。任务拆解后我们可以任务的特点,选择让 AI 、人工和工程来完成对应的任务。同时,我们可以通过提示词调优不断逼近模型能力上限,发挥出更好地业务效果。
对于可以通过任务分解和提示词调优就能够满足业务需求的场景,可以有效节约成本。