这一期我们将要学习的就是由LAMINI公司推出的课程——”Finetuning Large Language Models“,也就是我们常说的大语言模型微调。
大语言模型微调可以说是当下大语言模型研究开发中一个比较重要的研究方向。在通过模型预训练后,当我们的base model(基础模型)有了一定的能力后,我们一般都要对其进行微调从而使其能够处理更专业化的场景。
因此在这门课程中,LAMINI的CEO及联合创始人Sharon Zhou将会深入迁出的讲述微调的基础知识、具体的实践方式以及这过程中需要注意的细节。在文章中我们将重点阐述关于理论部分的内容,具体的实战部分大家可以到对于课程的Jupyter Notebook中进行跟随学习。希望大家学习愉快!
为什么我们需要微调模型呢?
在该小节中,我们将会介绍模型微调的基本内容以及与提示词工程的差异,希望能够给大家带来微调模型最基础的认识。
什么是微调模型
在了解怎么来微调模型之前,我们其实心里是不是都有一个疑问,为什么我们需要微调模型呢?模型是不是非得微调才能正常使用呢?
实际上,微调模型的目的其实就是将一个有一定语言能力的模型变成一个特定使用场景的模型,比如将只会词语接龙的模型GPT-3通过各种方式调整为我们熟知的ChatGPT,又比如说将强大且通用的GPT-4调整为专用于代码纠错的GitHub Copilot以及将用于常规诊断的模型PCP变成专业的心脏病查询的专家(Cardiologist)以及皮肤病的专家(Dermatologist)。
假如我们直接使用通用的模型来解答一些特制化的问题,那么我们很有可能得到一些没有什么意义的答案。而假如我们想要使得那些有基本语言能力的基座模型变成我们想要其成为的样子,那么微调必不可缺。
以下面这个例子,当我们问一个专业的医学问题的时候,一个没有经过微调的预训练模型可能无法给我们一些很好的回复(Probably acne——可能有问题)。但是当我们对模型加入了皮肤病(Demoatology)的数据进行微调后,模型会更有效的回答我们的专业问题(详细的回答了出现的问题)。因此,从这两者显著的差异也就能够看出微调的重要性。
另外,对于我们微调而言,很重要的一点就可以让其能够学会某些特定的内容。比如我们去年其实有很多的笑话就是问文心一言或者星火大模型等等这些国产的开源闭源大模型,有一个很大的问题就是它们经常会说自己是由OpenAI训练出来的模型。显然这些国产的开源大模型肯定不是OpenAI训练出来的,产生这个问题最主要的原因就是它们用了OpenAI模型生成的数据来训练他们自己的大模型。这个问题也常被称为是幻觉(Hallucinations)。
那为了解决这个认知问题,我们就需要对模型进行微调。具体做法就是加入很多关于问你是谁然后回答我是XXX大模型的数据集,从而让大模型在遇到类似问题的时候不会还继续回答我是OpenAI训练出来的,进而能够保持模型的一致性(Consistent)。
微调模型及提示词工程的对比
一般来说,假如我们希望对模型进行调整,我们有三种方式。
一种就是我们通过调整自己输入给大模型的话来让其跟随我们的指令完成任务,这也被称为是提示词工程。
还有一种就是我们说的微调,通过特有的领域标注的语料库来对任务进行微调,从而使其从模型参数层面上完全改变。
最后还有一种就是**RAG(检索增强搜索)**的方式,来将语料库与微调或者提示词工程结合,使得模型在输出前先考虑一下语料库里相关的内容再进行输出。
那在这门课中也是对比了提示词工程的优劣之处。
Prompting(提示词工程)
-
优点:
-
不需要数据来开始:你可以直接用提示词来引导模型生成结果,而不需要提前准备或输入大量数据。
-
前期成本较低:设置提示词的成本较低,不需要进行复杂的训练过程。
-
不需要技术知识:只需要知道如何编写提示词即可,不需要深入的技术背景。
-
可以通过检索增强生成(RAG)连接数据:RAG技术可以帮助模型在生成过程中访问外部数据,增强回答的准确性。
-
缺点:
-
可处理的数据较少:提示词的作用有限,模型只能处理少量数据或简单的任务。
-
容易遗忘数据:提示词可能无法有效地保留上下文信息,导致模型忘记之前的信息。
-
可能产生幻觉(Hallucinations):模型可能会生成与提示无关或错误的信息。
-
RAG可能失败或获取错误数据:检索增强生成的成功率依赖于数据质量和检索算法的准确性。
Finetuning(微调)
-
优点:
-
几乎可以适应无限量的数据:通过微调,模型可以学习并处理大量且复杂的数据。
-
学习新信息:微调让模型在特定领域中获得更深入的知识,适应特定任务。
-
纠正错误信息:通过微调,模型能够减少生成错误信息的概率,提高准确性。
-
在使用较小模型时,后续成本更低:微调后的小模型可以在生产环境中更高效地运行,降低长期成本。
-
也可以使用RAG:微调后的模型同样可以结合RAG技术来增强数据访问能力。
-
缺点:
-
需要更多高质量的数据:微调的效果依赖于大量且高质量的训练数据。
-
前期计算成本较高:微调需要大量的计算资源,特别是在训练过程中。
-
需要一些技术知识,尤其是数据处理:微调的过程涉及到机器学习和数据科学的技术,可能需要专业知识。
总的来说提示工程(Prompting) 更适合一般的、简单的项目,如原型设计或侧项目,尤其是在没有大量数据或技术资源的情况下。而微调(Finetuning) 则适合特定领域的应用,如企业级、生产环境下的使用场景,尤其在处理大量数据或需要高精度的任务时更为有效。
为什么我们需要拥有自己的大语言模型
除此之外,假如我们想拥有自己的LLM,想让其为我们自己的某些特定的工作。比如说我一个常见的任务就是角色扮演任务,我希望其能够扮演嬛嬛或者八戒来与我进行对话,那这些可能对于面向于通常任务的大语言模型而言是比较难的事情,因为其内部没有太多的相关数据,而我们输入给大模型的数据又不能够太多。但是这对于微调而言是完成可能做到的,我们只需要准备好高质量并找到一个性能不错的开源大模型,比如InternLM-20B,即可开始微调。
在课程中也总结了在特定的任务下微调自己的大语言模型与未经过微调的基础模型(Base Model)或仅通过提示工程(Prompt Engineering) 使用的模型相比之下的优势。具体对比如下:
-
性能(Performance)
-
阻止幻觉(Stop hallucinations):通过微调,模型可以深入学习特定领域的数据,从而减少生成错误信息的可能性。这意味着在医疗、法律等高风险领域,微调模型可以大大提升决策的准确性。
-
提高一致性(Increase consistency):微调后的模型能够更一致地输出符合预期的答案,特别是在处理重复性或结构化任务时,如财务报表生成或客户支持自动化。
-
减少不相关信息(Reduce unwanted info):在需要简洁和精确的场景中,如生成产品描述或技术文档时,微调有助于模型减少生成多余的、无关的内容,提高内容质量。
-
隐私(Privacy)
-
内部部署或虚拟私有云(On-prem or VPC):微调模型可以部署在内部服务器或虚拟私有云中,确保数据不离开组织的控制范围,适用于对数据敏感度要求极高的行业,如金融服务或政府机构。
-
防止数据泄露(Prevent leakage):在高度监管的环境下,微调模型可以帮助组织避免数据外泄的风险,确保合规性,如在处理客户个人数据时严格遵循GDPR等法规。
-
无数据泄露(No breaches):通过对模型和数据的严格控制,组织能够更好地保护其核心业务数据不被外界非法访问。
-
成本(Cost)
-
每次请求的成本更低(Lower cost per request):随着模型的专用性提升,每次生成请求的计算成本也随之下降,适合大规模、频繁使用模型的企业,例如电商平台的产品推荐系统。
-
增加透明度(Increased transparency):微调模型使得成本和性能更加透明,企业可以更好地控制和预测模型的运营费用,优化预算分配。
-
更大的控制权(Greater control):微调赋予企业对模型的更多掌控权,能够根据需求调整模型的性能,如为特定客户群体提供定制化的体验。
-
可靠性(Reliability)
-
控制正常运行时间(Control uptime):通过内部部署和微调,企业能够更灵活地管理模型的运行时间,确保关键服务的稳定性,如金融交易平台的实时数据分析。
-
降低延迟(Lower latency):微调后的模型可以更好地适应本地环境,从而减少数据传输和处理的延迟,提升用户体验,特别是在实时应用中,如在线游戏或视频会议平台。
-
内容审核(Moderation):微调模型可以根据企业的需求定制化内容审核标准,自动过滤或标记不符合政策的内容,这在社交媒体平台或在线社区管理中尤其重要。
结语
总的来说,微调后的大语言模型在性能、隐私、成本和可靠性方面优于未微调的基础模型或仅靠提示工程的模型。微调能提高模型的准确性和一致性,保护数据隐私,降低运营成本,并增强模型的可靠性,适应高要求和定制化的场景。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。