从一月份开始更新这个系列的文章,隔了好多好多天,终于要更新完了!我大大松了一口气。废话少说,今天要说的内容是:怎么用提示词工程发挥出大语言模型(LLM)的最大性能。
LLM(大语言模型)的问题?
LLM(大语言模型)的通用性很高,用大模型搞个演示用的demo应用很容易,但是遇到实际使用的场景时,需要不断选代和改进LLM应用时暴露的问题,包括:使用成本较高、垂直能力不足、性能表现不稳定、难以优化。
大部分LLM应用优化实际上在做的事情,就是提升LLM在某一场景下的表现。说的学术一点,就是提升大模型的专用能力,在商业领域上喜欢用的词叫垂直领域,即提升大模型在垂直领域的表现。
为了解决上面我提到的那些问题,就需要进行LLM应用优化。我们在这里谈的LLM应用优化主要是指让大模型工作得更好,但在具体的实践中优化LLM的性能很难,主要有以下这些原因
-
从通用信息中稳定的萃取出专用信息很难:也可以理解为从噪声中稳定的获取有用信息很难;
-
性能难以评估:大模型生成的内容的质量难以准确地进行定量和定性评估;
-
问题分析不准和优化策略针对性不足:在大模型表现未达到预期时,不知道问题出现在哪,更不知如何着手优化,有哪些技术工具可以帮助解决问题。
我写的这篇文章,主要也是想要跟大家探讨解决的思路和框架,虽然说是优化LLM的性能,但是也不失为在当下构建生产级LLM应用的最佳路径。
三种优化LLM性能的技术
总的来说,优化LLM的输出性能,主要有以下三种技术:
-
Prompt engineering(提示词工程),说人话:不断调整提示词
-
RAG(Retrieval-Augmented-Generation)基于检索增强的生成,说人话:外挂知识库,检索+生成
-
fine-tuning(微调),说人话:浅浅地再训练一下模型
Prompt 工程
Prompt-engineering(提示词工程)这个事儿大家应该都比较熟悉了,现在相关的教程铺天盖地,在这个系列中我所提出的结构化提示词也是在构建生产级应用起步阶段的一个好的抓手,在此我就不再整述。
RAG
RAG概括起来就是知识检索+内容生成。这么说太抽象,可以理解为大模型的开卷考试,既然是开卷考试,那么谁带的书和资料内容更全,谁翻书翻的更快更准,谁开卷考试的结果就往往更好。
下面RAG的主要组成,依次是:数据提取–embedding(向量化)–创建索引–检索–自动排序(Rerank)–LLM归纳生成。当然这里少了使用环节,我们可以暂时先忽略。
在开卷考试时,大家的参考资料都差不多,如何在有限的考试时间内又快又准地锁定问题在书上的相关内容更为重要。RAG做的好不好也是如此,核心就看能不能将内容检索的又快又准。如果抄错了书上(知识库)内容,往往大模型给出的答案也南辕北辙。
Fine-tuning微调
微调(Fine-tuning)是指在已经训练好的模型基础上,进一步调整,让你模型的输出能够更符合你的预期。Finetune、fine-tuning是两种常用的英文写法,请大家注意。
微调是我们在一个较小的、针对特定任务的标注数据集上进一步训练已经预训练过的LLM的过程。通过这种方式,我们可以调整部分LLM语义模型参数,以优化其在特定任务或任务集上的性能。
在全面微调过程中,所有模型参数都会更新,这与预训练过程类似,只不过是在标注的、小得多的数据集上进行的。
打个比喻,你有一个大学生朋友,在一学期轻松的大学生活之后,迎来了期末考试。幸好他的的老师和室友给他划了重点,因此他只要在期末考前把这些考试重点学到脑子里面,就能避免不及格。
借助上面这个不大恰当的比喻,可以简单地理解为:微调就是一种让AI大模型(脑子)在特定任务(考试重点)上进一步训练(学习记忆),以加强性能(考试表现)的方式。这种方法和前面两种都不一样,涉及到对模型参数的调整,难度最大,成本也高。
怎么用好优化路径?
在对上面三种技术有了初步了解之后,我们谈谈LLM应用的优化路径。即这三种技术如何综合运用?推荐的技术应用路径是什么?
Prompt工程是上手难度最低的,一切LLM应用推荐先从Prompt工程着手建立原型,在原型建立后,进一步优化Prompt,若Prompt工程无法满足实际需求,再分析性能瓶颈原因,采取进一步策略。那么我们又该如何分析造成LLM性能瓶颈的原因呢?可以从以下两个维度来进行分析。
如上图所示,主要从下面两个维度考虑问题:
-
Context-optimization(上下文优化):模型是否缺失必知信息?如企业内部的业务数据、流程等;
-
LLM-optimization(大模型优化):模型是否准确率不足,输出内容未能很好的遵循特定风格或格式?
Context-optimization(上下文优化)
所创建的LLM应用如果需要了解特定的数据、系统和流程,而这是预训练LLM中不存在(或者有缺失)的知识和信息,则需要进行所谓上下文优化,将依赖的这部分信息提供给模型。
如企业内部智能问答机器人,针对企业内部员工提供内部知识服务,需要了解企业知识库、规章制度、系统流程、甚至业务数据。而这些信息正是大模型所不知道的知识,无法通过Prompt工程解决,应该考虑将相关知识提供给大模型。
RAG就是很好的解决该问题的技术,首先在知识库检索相关内容,然后将内容和提示词组装起来一起提供给大模型作为输入,得到理想的结果。
LLM-optimization(大模型优化)
在进行了足够的Prompt工程后,如果所创建的LLM应用如果在垂直领域的表现仍然不足,或者LLM所输出的内容依旧不及预期时,可以考虑大模型优化。
这里所说的大模型优化通常是指微调,但即使用微调,也要和Prompt工程结合起来才能更有效的发挥作用,所以前期基于Prompt工程打好地基很重要。
广义上的大模型优化还包括完整训练一个大模型,相信搞一个行业大模型出来是诸多老板梦寐以求的事情,虽然在战略上是势在必行,但从策略上还是建议先从提示词工程—>微调开始,毕竟只要涉及大模型训练,真的太太烧钱了,没有足够的钱和高质量的行业数据,建议慎重考虑。
在分析出了问题所在后,我们可以考虑使用相应的技术进行性能优化,缺失知识可以考虑用RAG,准确度不足或结构遵循度不足可以考虑微调。
实际应用中RAG和微调并不是非此即彼的关系,也不是递进关系,他们都是解决特定问题的手段,按需选用即可,也可以综合运用以实现最优性能。
优化路径的最佳实践
如上图给出了LLM应用性能优化的推荐路径。
英文版:
Prompt -> Add few shot -> Add simple retrieval -> fine-tune model -> Add HyDE retrieval + fact-checking step -> Add RAG content totraining examples.
翻译版:
Prompt工程—>进阶Prompt工程—>简单RAG—>微调模型—>进阶 RAG—>带着RAG样本微调模型。说人话:先从prompt工程开始把LLM应用快速跑起来。
如遇到各种各样的问题,如表现性能不足?可以试着使用思维链、添加参考示例等进一步的Prompt工程去提升性能;如果Prompt过长,需要精简,把Prompt工程做实做深。
还有些读者用LangGPT结构化提示词搭建了LLM应用,但发现结构化提示词占用的上下文过长,这时候可以将不必要的部分删除,把提示词缩短;如果发现指令遵循度不足,可以在提示词中添加指令进行约束。
如果在这个过程中,能够满足使用要求,则可以到此为止,若不能,可以按前面两个维度去分析问题。
如果缺失知识,可以先搭建一个简单的知识库RAG,在RAG之后如果想让大模型表现更收敛更稳定,可以尝试一下微调模型,模型的测试表现变好。则可以使用更多高级RAG技术,构造输入输出的样本,进一步用于微调模型,构建正向迭代循环。
但是,在使用以上优化路径的时候,还有一些需要注意事项。
-
优化路径有个隐藏前提:如果LLM应用依赖外部的知识?则需要RAG。如果不需要外部知识,则不需要。可以直接进入Prompt工程<—>微调的正向迭代循环。
-
从简单到复杂,每一步都需要做扎实:好的Prompt工程,是后续性能优化的基础,先从简单的Prompt工程做起,基于实际需要和条件按需进行优化迭代,循序渐进积累经验。
-
构建正向迭代循环:LLM应用优化是个迭代过程,应该不断尝试:尝试—>验证—>验证—>再尝试—>再迭代。通过Prompt工程结合RAG,获取第一批高质量的输出数据,再微调模型,待性能提升后,数据质量进一步提升,再将这部分数据用于训练,如此循环往复,构建正向迭代循环。
-
Prompt工程贯穿始终:Prompt始终是调用大模型能力的接口,所以在各个阶段,调整提示词以获得更好的数据,即进行Prompt工程是必要的。
它为前期的性能优化打好了基础,RAG阶段需要考虑的是如何将知识组装为Prompt,微调模型后可以进一步精简Prompt。同时,构建微调数据集也要用到Prompt工程的知识,提示词工程,贯穿始终。
—
最后的最后,我上面说是优化路径的最佳实践,但其实也是最坏的情况下的最好情况,为什么这么说呢?因为!
最坏的情况是指:你刚好遇到了一个LLM的性能边界问题:LLM刚好能解决,但是很费劲儿,问题再难一点就解决不了了,问题再简单一点,你不用费这么大劲儿就搞定了。
最好的情况是指:不论你是否遇到了最坏的情况,按这么走踩的坑最少,解决问题最快。自己懵头乱撞的话,可能折腾了一圈问题还没解决。
- End -
AI大模型学习路线
如果你对AI大模型入门感兴趣,那么你需要的话可以点击这里大模型重磅福利:入门进阶全套104G学习资源包免费分享!
扫描下方csdn官方合作二维码获取哦!
这是一份大模型从零基础到进阶的学习路线大纲全览,小伙伴们记得点个收藏!
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
100套AI大模型商业化落地方案
大模型全套视频教程
200本大模型PDF书籍
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
LLM面试题合集
大模型产品经理资源合集
大模型项目实战合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
