大模型调优的方法主要包括以下几个方面:
从产品视角考虑大模型调优,主要从以下两个维度分析问题:
大模型的安全保障可通过对齐,也叫指令调优实现,包括监督微调、获取 reward model 与进行强化学习调整输出分布。但即使如 GPT-4 和 Claude 等模型已几乎不回复危险问题,Alignment 仍不足以防护所有安全问题,存在越狱现象。LLAMA2 专门使用安全有监督微调确保语言模型安全。强化学习能让模型根据人类反馈调整分布,面对训练分布外数据也可能学会拒绝不当回答。
开发:产品视角的大模型RAG应用[heading1]调优实践[content]基于以上的分析,我们先选取了实现成本最小的方式进行调优,结果如下:1、更换大模型:从ChatGLM2-6B替换成baichuan2-13b,发现针对我们的场景,后者的性能可以提升一倍左右。2、更换embedding模型:将embedding模型从LangChain Chatchat默认的m3e-base替换为bge-large-zh,发现后者优于前者3、测试不同Top k的值:比较Top 5、Top 10、Top 15的结果,发现Top 10时效果最优。4、对文档名称进行处理:由于原来的政策文件,在导出时文件名会进行简化,如too_long_发展行动方案。因此,人工对文件进行重命名,上传相同文件构建知识库,同时在构建知识库时勾选【开启中文标题加强】选项,发现重命名文件对结果的提升效果不明显,但勾选【开启中文标题加强】选项后,回答的无关信息减少,效果有所提升。目前来看,尽管效果有所提升,但仍未达到可用水平,后续我们也将尝试其他的调优策略。
如图所示,主要从下面两个维度考虑问题:Context optimization(上下文优化):模型是否缺失必知信息?如内部业务数据,流程等。LLM optimization(大模型优化):模型是否准确率不足,输出内容未能很好的遵循特定风格或格式?1.Context optimization(上下文优化)所创建的LLM应用如果需要了解特定的数据、系统和流程,而这是预训练LLM中不存在(或者有缺失)的知识和信息,则需要进行所谓上下文优化,将依赖的这部分信息提供给模型。如企业内部智能问答机器人,针对企业内部员工提供内部知识服务,需要了解企业知识库、规章制度、系统流程、甚至部分业务数据。而这些信息正是大模型所不知道的知识,无法通过单纯的prompt工程解决,应该考虑将相关知识提供给大模型。RAG就是很好的解决该问题的技术,首先在知识库检索相关内容,然后将内容和提示词组装起来一起提供给大模型作为输入,得到理想的输出。1.LLM optimization(大模型优化)在进行了足够的prompt工程后,如果所创建的LLM应用如果在垂直领域的表现仍然不足,或者我们希望其输出内容保持特定的格式风格等的稳定性依然不及预期,可以考虑进行大模型优化。这里所说的大模型优化通常是指微调。需要注意的是,即使用微调,也要和良好的prompt工程结合起来才能更有效的发挥作用,所以前期基于prompt工程打好地基很重要。下文中我们还会进一步说明。
这张图来自于OpenAI()于2022年发布的论文,正是这篇论文造就了我们所熟知的ChatGPT。通过对齐,也叫做指令调优,使得语言模型更好的理解人类意图,同时也对语言模型增加了安全保障,确保语言模型不会输出有害的内容和信息。对于对齐任务来说,我们可以拆解为两部分第一个部分是图中的Step-1.监督微调第二个部分则是图中的二和三,通过Step2获取reward model与通过Step3进行强化学习,调整语言模型的输出分布。这两种方法都能用于保证语言模型的安全LLAMA2()是当前使用最广泛的开源大型语言模型,在其技术报告中提到他们专门使用了安全有监督微调用于确保语言模型的安全.通过给定危险的问题和拒绝的回答,语言模型就像背诵一样,学会了对危险的查询生成拒绝的响应强化学习通过引入带有人类反馈的数据对模型进行强化学习,根据人类的偏好和反馈,语言模型在调整分布的过程中,需要更细粒度的思考,究竟什么样的答案是更好的,更安全的.并且由于引入了类似思考的过程,语言模型在面对训练分布外的数据,也有可能学会举一反三的拒绝掉不该回答的内容,更少的胡编乱造,产生幻觉性的输出那么Alignment就足够防护所有的安全问题了吗?毕竟现在的大型语言模型如GPT-4和Claude()等已经几乎不会回复危险的问题了.不,并不安全,就像测试工程师经常苦恼的问题一样,用户们的创造力是无穷的.,他们会用各种各样难以想象的方法试图得到他们想要的”不受束缚的”AI这种技术被统称为越狱,Jailbreak!通过Jailbreak,模型的对齐基本失效,重新变为一个回答各种问题的模型关于越狱部分,我将在文章的后半部分中专门详细讲解。在这里,我们先来讲讲隐私问题。