P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。

前言

说实话,我第一次接触大模型的时候,整个人是懵的。

那是2022年底,ChatGPT刚火起来,我一个搞了20多年AI的老程序员,居然被一个小年轻问我:“老哥,这玩意儿咋训练出来的?”

我支支吾吾半天,最后憋出一句:“就…喂数据呗。”

小年轻一脸"你不行"的表情走开了。那天晚上我失眠了——不是气的,是羞愧。搞了这么多年AI,居然连预训练和微调都讲不清楚?

从那以后,我花了整整三个月,把Transformer论文翻了不下十遍,各种技术博客看到眼瞎,终于搞明白了这套东西。今天,我就把这些年踩过的坑、悟到的道理,用最接地气的方式讲给你听。

一、预训练:让AI先当个"书呆子"

1.1 什么是预训练?说白了就是个填字游戏

你有没有玩过那种猜字游戏?给你一句话,遮住最后一个字,让你猜。

比如:“今天天气真____”

你可能会猜"好"、“热”、“蓝”…反正各种词都有可能。

预训练干的就是这事。只不过AI玩的规模有点离谱——它要猜几万亿次!

整个互联网的书、论文、代码、网页,全给它喂进去。每看一段文字,就遮住最后一个词让它猜。猜错了?调整参数。猜对了?也调整参数,让它下次更自信。

就这么简单粗暴的玩法,玩了整整几个月,烧掉几千万美元的电费,一个"书呆子"就诞生了。

这个书呆子有多厉害呢?你问它啥它都能跟你唠两句。从量子力学到怎么煮泡面,从莎士比亚到抖音热梗,它都能说得头头是道。

但问题是——它只是个书呆子。

1.2 书呆子的尴尬:啥都懂,啥都不会

去年我试过让刚预训练完的GPT-3帮我写个Python脚本,处理一下Excel数据。

你猜它咋回的?

它给我背了一段Python的历史,从Guido van Rossum发明这门语言开始讲起,然后列举了Python的十大特性,最后总结了一句:“Python是一门强大的编程语言,广泛应用于数据处理领域。”

我:???

这就是预训练模型的通病——它学会了"说话",但没学会"听话"。你让它写代码,它给你背课文。你让它总结文章,它给你写读后感。

说白了,预训练教给AI的是"知识",不是"技能"。

就像一个读了万卷书但从来没出过门的大学生,你问他啥他都能扯两句,但你让他干点实际的?歇菜。

1.3 预训练到底在烧什么钱?

说到这,你可能会问:既然预训练出来的模型这么"废",为啥还要花那么多钱去搞?

兄弟,这你就不懂了。预训练虽然烧钱多,但它烧得值啊!

我给你们算笔账。2026年最新的GPT-4级别模型,预训练一次要多少钱?

首先,数据方面。要喂进去大约15万亿个token(你可以理解成"词"),这些数据要从Common Crawl、GitHub、维基百科、各种书籍里面扒。光是数据清洗,就得动用几百台服务器跑好几个星期。

然后是算力。训练一个千亿参数的大模型,需要几千张H100显卡(一张大概20多万人民币),连续跑几个月。电费、机房冷却、工程师工资…加起来,一次预训练的成本轻松过亿。

OpenAI的CEO Sam Altman曾经透露,GPT-4的预训练成本超过1亿美元。注意,这只是一次!如果训练失败了,推倒重来,再烧1亿。

所以你看,预训练这活儿,真的是"炼丹"——既烧钱,又看运气。

但为啥大家还前赴后继地搞?因为一旦炼成了,这个"书呆子"的底子就在那儿了。后面要做的,就是怎么把这个书呆子调教成"有用的人"。

二、微调:把书呆子变成"职场人"

2.1 微调的本质:师傅领进门

如果说预训练是"博览群书",那微调就是"师傅领进门"。

预训练完的AI虽然啥都懂,但它不懂"规矩"。你问它问题,它可能给你背定义;你让它干活,它可能给你写论文。这不是我们想要的。

微调干的事,就是给它看大量的"标准答案"。

比如你想让AI当客服,那你就给它看成千上万条"用户问题-标准回答"的配对。问"怎么退货",答"亲,您可以点击订单页面的退款按钮…“问"快递到哪了”,答"请提供您的订单号,我帮您查询…"

看多了,它就学会了:哦,原来用户问问题的时候,我应该这么回答啊!

这就像是带实习生。实习生大学学了四年理论知识(预训练),来到公司啥也不会。这时候老员工带带他,给他示范几个案例,慢慢就上手了。

2.2 全参数微调:土豪专属玩法

最早的时候,微调就是把预训练模型的所有参数都重新训练一遍。

这种方法效果最好,因为模型可以充分适应新任务。但问题是——太烧钱了!

一个70B参数的模型,全参数微调需要多少显存?我给你算一下:

  • 模型参数本身:70B × 2字节(FP16)= 140GB
  • 优化器状态(Adam):2倍参数 = 280GB
  • 梯度:1倍参数 = 140GB
  • 激活值:几十到几百GB不等

加起来,轻轻松松超过500GB!这意味着你需要至少8张A100 80G显卡才能跑起来。

一张A100 80G多少钱?市场价大概10万左右。8张就是80万。再加上服务器、电源、散热…没有100万下不来。

这还只是硬件成本。电费、维护、人工,那都是钱啊!

所以全参数微调,基本上是大厂的专属玩法。小公司、个人开发者?看看就好。

2.3 LoRA:穷人的福音来了

2021年,微软的一帮研究员搞出了一个叫LoRA(Low-Rank Adaptation)的技术,彻底改变了微调的游戏规则。

LoRA的核心思想是啥呢?

它发现,其实不用更新模型的所有参数,只需要在原来的权重矩阵旁边,加两个小矩阵就行了。

具体怎么做的?假设原来的权重矩阵是W,大小是4096×4096。LoRA不直接改W,而是引入两个矩阵A和B,A是4096×8,B是8×4096。

然后,新的权重就是:W’ = W + A × B

看到没?原来要训练1600多万个参数(4096×4096),现在只需要训练6万多个(4096×8 + 8×4096),参数量直接减少了250倍!

更妙的是,训练完了之后,你可以把A×B的结果加到W上,合并成一个新的W。这样推理的时候,速度和原来的模型一模一样,没有任何额外开销。

我第一次看到LoRA的时候,真的拍案叫绝。这简直就是"四两拨千斤"啊!用1%的参数,达到90%以上的效果,这买卖太划算了。

2.4 QLoRA:把省钱进行到底

LoRA已经很省了,但有人觉得还不够。2023年,又有人搞出了QLoRA(Quantized LoRA)。

QLoRA在LoRA的基础上,加了一个"量化"的操作。

啥叫量化?简单说,就是把原来用16位(FP16)表示的参数,压缩成4位(INT4)表示。

16位变4位,体积直接缩小到原来的1/4!

这意味着什么?原来需要80GB显存才能加载的模型,现在20GB就够了。一张RTX 4090(24GB显存)就能跑70B参数的模型!

我自己实测过,用QLoRA在单张RTX 4090上微调Llama-2-7B,显存占用只有8GB左右。这放在以前,想都不敢想。

当然,量化也是有代价的。4位精度毕竟比16位低,可能会损失一些性能。但实测下来,对于大多数任务,QLoRA的效果和LoRA差别不大,也就差个1-2个百分点。

为了省下的几十万硬件成本,这点性能损失完全可以接受。

三、预训练 vs 微调:到底该选哪个?

3.1 一个灵魂拷问

经常有读者问我:“老哥,我想让AI帮我处理公司的内部文档,是该自己预训练一个模型,还是拿开源模型微调一下?”

我的回答永远是:除非你是谷歌、OpenAI、Meta这种级别的大厂,否则别想预训练的事了。

为啥?

第一,成本。前面说了,预训练一次过亿。你有这个预算吗?

第二,数据。预训练需要海量的高质量数据。你知道怎么清洗Common Crawl吗?知道怎么去重、过滤、配比吗?这些活儿,没有几百人的团队搞不定。

第三,技术。预训练过程中会遇到各种奇葩问题——loss spike(损失突然爆炸)、梯度消失、模型崩溃…每一个问题都能让你怀疑人生。

所以,对于绝大多数人来说,微调才是正解。

3.2 微调的几种姿势

现在主流的微调方法有这么几种:

监督微调(SFT):给模型看成对的"问题-答案",让它学会怎么回答。这是最常见的方式,也是ChatGPT训练的核心步骤之一。

指令微调(Instruction Tuning):比SFT更进一步,不仅给答案,还给指令。比如"请用三句话总结这篇文章"、“请把这段话翻译成法语”。这样模型就能学会"听指令"了。

RLHF(人类反馈强化学习):这是ChatGPT的秘密武器。先让人给模型的回答打分,然后用强化学习算法(PPO)优化模型,让它生成更高分的回答。说白了,就是"投其所好"——人类喜欢啥样的回答,它就往那个方向优化。

DPO(直接偏好优化):这是2023年提出的新方法,比RLHF更简单高效。不需要训练奖励模型,直接用人类的偏好数据优化,效果还更好。

我自己试过DPO,说实话,比RLHF好调多了。RLHF那个PPO算法,超参数多得让人头大,一不小心就训崩了。DPO就简单粗暴,效果还稳定。

3.3 实战建议:从LoRA开始

如果你是个刚入门的小白,我的建议是:别折腾,直接上LoRA。

为啥?

第一,成本低。一张消费级显卡(RTX 3090/4090)就能跑7B-13B的模型,成本几千块搞定。

第二,效果好。对于绝大多数垂直领域任务,LoRA的效果能达到全参数微调的90%以上。

第三,生态成熟。现在Hugging Face的PEFT库对LoRA支持得非常好,几行代码就能跑起来。

具体怎么操作?

  1. 选一个开源模型(Llama、Qwen、ChatGLM都行)
  2. 准备你的领域数据(几千到几万条"问题-答案"对)
  3. 用PEFT库配置LoRA参数(rank一般设8或16)
  4. 跑训练,等收敛
  5. 合并权重,部署上线

整个过程,快的话一天就能搞定。

四、一些踩坑经验

4.1 数据质量比数量重要

很多人以为,微调就是拼命堆数据。数据越多越好,几十万条起步。

错!

我自己踩过的坑告诉我,数据质量比数量重要十倍。

有一次,我拿了50万条数据去微调一个模型,训了三天,效果稀烂。后来仔细一看,数据里面有一大半是重复的、错误的、格式混乱的。

清理之后,只剩下5万条高质量数据,重新训练,效果反而好了很多。

所以,别贪多。几千条精心标注的数据,比几十万条垃圾数据强多了。

4.2 学习率别设太高

微调的学习率,一般要比预训练小很多。

预训练的学习率可能是1e-4、1e-5这个量级,微调的话,建议从1e-5甚至1e-6开始。

为啥?因为预训练模型已经学得很好了,你微调的时候,只是做"微调",不是"大改"。学习率太高,容易把原来的知识"洗"掉,导致灾难性遗忘。

我就见过有人把学习率设成1e-3,结果训完之后,模型连"你好"都不会说了…全忘了。

4.3 别盲目追求大模型

很多人有个误区:模型越大越好。

7B的不够,得上13B。13B的还不够,得上70B。

但其实,对于特定领域的任务,小模型微调之后的效果,未必比大模型差。

微软的Phi系列就是典型例子。Phi-2只有2.7B参数,但用高质量数据训练之后,效果能吊打很多7B、13B的模型。

所以,别盲目追求大。先拿7B的模型试试,效果不好再考虑更大的。毕竟,大模型意味着更高的推理成本、更慢的响应速度。

五、写在最后

写到这里,差不多3000字了。

回顾一下,预训练和微调,其实就是培养AI的两个阶段:

预训练是"读万卷书",让AI拥有广博的知识和语言能力。这个阶段烧钱、耗时长,但值得。

微调是"行万里路",让AI学会具体的技能和规矩。这个阶段相对便宜、快速,是大多数人应该关注的。

LoRA和QLoRA的出现,让微调不再是土豪专属。几千块钱的显卡,就能让7B、13B的大模型为你所用。这在几年前,是想都不敢想的事情。

AI的发展速度太快了。2022年ChatGPT出来的时候,我还觉得这东西离普通人很远。现在呢?是个人都能拿开源模型微调一个自己的AI助手。

这就是技术的魅力——它不断降低门槛,让更多人能够参与。

当然,门槛降低不代表没有门槛。要想真正把AI用好,还是需要理解背后的原理。希望这篇文章,能帮你建立起对预训练和微调的基本认知。

有啥问题,评论区见!我尽量回复。

P.S. 目前国内还是很缺AI人才的,希望更多人能真正加入到AI行业,共同促进行业进步,增强我国的AI竞争力。想要系统学习AI知识的朋友可以看看我精心打磨的教程 http://blog.csdn.net/jiangjunshow,教程通俗易懂,高中生都能看懂,还有各种段子风趣幽默,从深度学习基础原理到各领域实战应用都有讲解,我22年的AI积累全在里面了。注意,教程仅限真正想入门AI的朋友,否则看看零散的博文就够了。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐