我们什么时候需要对模型进行微调呢?
在该小节中, 我们将从预训练模型出发,一步步的拓展到具体需要模型微调的场景,那就让我们开始学习吧!
预训练模型是什么
一般而言,模型微调的对象都是我们上一门课程所提到的预训练模型。那对于预训练模型的训练而言,其实基于大量的无标注的语料库以及最流行的Transformers的算法来训练模型做词语接龙的事情。从更深入的来说就是预测下一个词是什么,比如说我输入“我爱”,那模型会根据上下文和场景接”你“这个字。在预训练模型训练完后,我们得到的是一个有知识也懂一点点语法的模型。
这里我们所说的大量的无标注的语料库其实包括了很多内容,比如说我们平时阅读的书本,还有就是包括了互联网上所有的文本内容。可以说,假如没有这几十年来在互联网上留下的文本内容,就不可能有今天的大语言模型出现。
预训练模型存在的问题
但是对于预训练的模型而言,有几个问题是显而易见的。首先就是通常来说,由于预训练模型需要花费大量的算力资源,因此一般都是由较大的公司(比如说OpenAI和Google)进行训练而成。虽然Meta开源了LLAMA这样的预训练大语言模型,但是具体如何训练以及用了哪些数据、哪些方法来训练,这些其实都并没有进行开源。因此预训练模型的训练其实是一件非常困难的事情。
并且当我们真正的去使用预训练的大语言模型的时候,我们通常会发现一个很大的问题就是预训练大语言模型经常会答非所问。比如说我问墨西哥的首都在哪里(“What is the capital of Mexico),那大语言模型的回复竟然是匈牙利的首都在哪里(”What is the capital of Hungary”)。这一看就毫无关系对吧,而这对于预训练模型而言是非常普遍的现象。这个问题其实困扰了学术界非常之久,直到2022年OpenAI推出了ChatGPT并发布了相关的论文后,人们才慢慢开始明白如何解决这个问题。
如何解决预训练模型输出的问题
其实产生这个问题的主要原因是我们训练的数据都是一些没有标注过的数据,因此什么样的回答都有可能会出现。比如大语言模型假如读取我们考试的试卷,这里面都是问题而没有正确答案和回复。当其学习到了这部分内容,看到了一个问题了以后,那默认下一个接的内容那就还是一个问题。因此假如我们希望能够解决这部分的问题,就一定要教会大语言模型“说人话”,只有这样才能真正的为我们所用。
因此,在经过预训练后,我们就应该通过一些标注好的数据来对模型进行微调。其实所谓标注好的数据就是一问一答的数据。对于预训练模型而言,其所需要的数据其实就长这样:
input: None output: xxx,xxx,xxx.
其实就是我们没有限制我们输入的内容是什么,而是直接告诉我们你可以这样来进行输出。在这个情况下模型自然也就不懂得在我们问问题的时候给出正确的回复。而我们所谓的标注好的数据其实就是长得这样:
input: 请问你叫什么? output: 我叫李剑锋。
对于微调所需要的数据而言,很显然我们添加了提问的这个过程,并且对应的output也是正确的内容,这其实也就是我们标注过的数据,也就是一个完整且准确的对话对。
对于微调模型而言,我们所需要的数据其实比起预训练而言是少得多的。在基座模型有了基本的语言能力之后,我们只需要再用上高质量的对话对就能够让大语言模型拥有很多的“说人话”的能力了。但是微调并没有改变大语言模型做词语接龙的本质,只不过其接龙得更像正常人说话罢了。
而微调的训练其实也分为很多类,其中就包括了全量微调(所有的参数都发生改变)、部分微调(某些层中的参数发生改变)以及参数高效微调(额外训练一个层加到原模型上)等等。当然参数量改变越大其需要的算力资源自然也就更多,因此我们也需要根据自己的软硬件情况酌情选择。
模型微调的作用
不知道大家有没有思考过,微调能够为我们做什么呢?在该课程中总结了两小点,首先最主要的其实就是行为的变化(比如说回复的语气,角色扮演),第二个就是知识的获取,就是专业知识。
那微调能够使模型的行为发生变化,主要体现在以下几个方面:
-
学习更一致地响应:通过微调,模型可以在处理类似输入时表现得更加一致。就比如我同样问“中国的首都在哪里”,模型会回答“中国的首都在北京”而非是回答“匈牙利的首都在哪里”。
-
对某些任务更加的专注:微调可以帮助模型更好地聚焦于特定任务,例如自动化内容审核从而保证输出是符合我们社会的风序良俗的,避免被坏人所利用。
-
在某些能力上变得更强:微调可以激发模型的潜力,使其在特定任务(如对话生成)中表现得更加出色。
微调还可以帮助模型获取和整合新的知识:
-
增加对新概念的理解:通过微调,模型可以学习并理解新的领域或概念,提升其知识广度。我们在训练的数据集上也未必一定要给其对话对,而是继续向预训练时候一样给予一些新的知识,从而让其进一步拓展学习一些新的知识。
-
纠正旧的错误信息:微调还能更新模型中的过时或错误的信息,提高其回答的准确性。比如国产模型修改模型认为自己的OpenAI训练出来的一样,就是给予很多正确的回复使其改变认知。
微调的任务及流程
那在微调任务中,明确任务目标和输入输出关系是成功的关键。微调任务主要分为两大类:提取任务和扩展任务。在提取任务中,模型接收输入文本,并生成较少的输出文本。这类任务通常涉及“阅读”能力,如关键词提取、主题分类、路由规划、代理任务(如计划、推理、自我批评、工具使用等)。这些任务旨在从复杂的输入中提取出关键信息,因此需要模型具备精确的理解和筛选能力。
相对地,扩展任务则是输入较少的文本并生成更多的输出内容,体现了模型的“写作”能力。此类任务包括对话生成、邮件撰写、代码编写等场景,要求模型不仅能够理解输入内容,还能扩展和发展出更丰富的输出。这种任务需要模型具备较强的创作和表达能力,能够在输出中融入更多的上下文信息和细节。
我们在微调前一定要明确自己的任务,因为假如不够清晰的任务很有可能让模型陷入混乱,不知道到底该输出很长还是很短。总之,微调任务的设计需要根据具体的应用需求进行合理分类和定义,确保任务的明确性和目标导向,从而使得模型在不同的任务类型中都能发挥出最佳效果。
假如我们要微调的话,我们的流程可以如下所示:
-
识别任务:首先,通过提示工程(Prompt Engineering)在大型语言模型(LLM)上识别出可能需要优化的任务。这一步骤的目标是确定哪些任务可能从微调中受益。
-
评估任务表现:接下来,观察大型语言模型在这些任务上的表现,找出模型表现还算可以(“~OK”)但还不够理想的任务。这些任务是微调的理想候选,因为它们有改进空间。
-
选择一个任务:在识别出多个潜在任务后,选择其中一个作为微调的目标任务。这一步骤的关键是专注于一个任务,确保微调的精确性和有效性。
-
收集数据:为了对选定的任务进行微调,需收集大约1000个输入和输出的数据对,这些数据的质量应明显优于模型当前的表现(即“比~OK更好”)。这些数据将用来指导模型的进一步训练。
-
微调小型模型:最后,使用这些高质量的数据对一个小型语言模型进行微调。通过这一步骤,模型将针对特定任务优化其性能,并在实际应用中表现出更高的准确性和有效性。
如何学习大模型 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 的正确特征了。