跳到主要内容

6.2 炼丹炉纪元:从预训练到SFT指令微调

阅读需 8 分钟
wqz
通识与特长的分野

目前的顶尖超大语言模型(如 GPT-4 或 LLaMA-3)都不是在一个黑盒子里一次闭着眼睛被“炼”出来的。 它们在投胎降世进入你的聊天框前,全都必须在一套极其严苛的由轻到重的流水线中浴火重生。这就好比一个人,要先上完九年义务教育打底(预训练),再去特定技校锤炼专业技能(指令微调),最后还要在毕业前被狠抓思想品德课(对齐)。

本章,我们将拆解这个史诗级炼丹流程的前两站,并重点聚焦于大多数工程师在职场中最为熟知的词汇——SFT (Supervised Fine-Tuning / 有监督指令微调)


1. 创世阶段:Pre-training(预训练)—— 野蛮生长的海王

如果你在 HuggingFace 或者 GitHub 社区闲逛,你会发现某个模型名字经常带着 Base 的后缀(例如 Llama-3-8B-Base)。这就是刚刚从预训练的炼丹炉底爬出来的基座模型

在这个造物主的第一阶段,模型是一块完全白纸黑字的超巨大海绵。

  • 投喂燃料:工程师不会给它任何具体的问答卷子。他们极度残暴地把全世界几十万个机架上的硬盘数据——包括整个维基百科、Reddit 几百年的版聊口水、全量全源的 GitHub 源码、甚至残缺不全的盗版小说TXT文本——一股脑全倒进那个名为 Transformer 的无底洞里。
  • 唯一法则:这时候的训练目标其实极其枯燥且笨拙,叫无监督的“完形填空”(Next Token Prediction)。它只要学会一件事:看到“白日依山”,必须不假思索地在数学层面上押注概率最高的那两个字是“尽,黄”。

1.1 Base 模型的灾难性缺陷:它博学,但是个智障的对话者

在极度野蛮生长了半年、烧了几个亿美金的电费后,这个Base 模型虽然在肚子里背下了全人类文明的图书馆,但它完全不懂人类对话的边界和终止条件!

如果你兴冲冲地用聊天框对一个纯 Base 模型发问:

“你会怎么做番茄炒鸡蛋?”

你期待它一本正经像老妈一样教你放盐。但它极大概率会这样回答:

“...的做法是很多中国家庭面临的第一个难题。番茄炒鸡蛋的历史可以追溯到清朝的一个老兵,在这道菜中,鸡蛋的...我们甚至可以在这首《咏番茄》的诗里...请问你会做酸菜鱼吗?”

你绝望了!因为它根本不知道你是在“提问”! 在它极度宽广的世界观里,它把你敲下的那句话,仅仅当成了一篇正待续写的百科学术长文的开头。它像一台永远刹不住车的自动打字机,毫无感情地把全银河系概率最高的废话一字不落地给你疯狂顺下去,直到把你的 Token 额度刷爆。

如何给这头博闻强识但毫无纪律原则的洪荒猛兽套上“听话”的缰绳?这就迎来了工程师登场的华丽瞬间:SFT 改造手术。


2. 纪律阶段:SFT (指令微调) —— 从野兽到听命的仆从

当大厂花完了烧钱的算力完成了基座大熔炉后,真正的“模型应用工程师”才刚卷起袖口出场。 我们俗称的普通人也能碰的“Fine-Tuning (微调)”,有 99% 都是特指这里的 SFT (Supervised Fine-Tuning / 有监督指令微调)

它是把那个漫无边际的 Base 巨兽,血腥强行扭转为温文尔雅、一问一答的 Instruct / Chat 版本(比如 Llama-3-8B-Instruct)的唯一途径。

2.1 不吃垃圾,只吃精致的米其林问答对

如果第一阶段是吞噬几十万 GB 的垃圾文字汪洋,这一阶段的数据量则被极度锐减到区区几万条甚至几千条。 但这些数据全都是由人类博士专家人工手写、乃至花费极其高昂时薪打造的米其林级别的黄金问答对(Q&A对)

其内部构造如同死板的剧本台词:

【User(人类提问角色)】:请帮我翻译“今天好天气”这句中文到英文。 【Assistant(AI助手机器人角色)】:The weather is lovely today.

当这几万条带着极其规整的 [指令开头][指令结束终止符] 标签的高质量剧本被重新喂进模型时。那头原本只会无限续写的野兽,其底层深处的那些代表着“问答逻辑”以及“听令终止”的高维神经元突触会被瞬间极其暴烈地高压激活!

在被强行重塑了认知反射弧后,它这辈子只要看到属于 User 标签开头的句式,肌肉记忆就会牢牢按捺住乱发散的狂野冲动,极其恭敬地转换到 Assistant 的特定发声轨道里。一板一眼地回答完你的问题,并且极其乖巧地在那一句话说完的句末,精准且体面地吐出一个隐藏的 <|End_of_Sentence|> 这便是我们所见的现在的 ChatGPT。


3. SFT 微调的神奇效应与业务落地

在业务里做 SFT 的本质,是把你们公司独有的“行为准则剧本”,以肌肉记忆的形态刻在这头已经听话的 Chat 兽的额叶里。

3.1 让它披上新皮肤

如果你的产品是一个专注于在小红书发种草笔记的矩阵号,你实在不想每次都在 Prompt 里苦苦哀求它一定要带 Emoji 还要各种用“绝绝子”语气词。 你只需要从爬虫里拖回 1000 篇极具爆款卖点的小红书文案原文,用极其简单的格式包装成 SFT 数据集输入进炼丹炉。半个月后出缸,这个原本极其直男的钢铁模型,只要一接通电源,张嘴闭嘴就会条件反射般完美顺滑地生成极其抓人眼球且带有漫天粉红表情符号的爆款长文。

3.2 强迫它成为无情的机器接口

在第 5 阶段提到的那些在深夜里默默调用本地函数的 Tool Calling(工具调用)大模型,它们都是 SFT 手术最登峰造极的极端改造受害者。 全人类绝没有任何一个人会在聊天时去说大段的嵌套 JSON 代码串。但工程师硬生生地给这些模型灌进去了成百上千条极其死板的工具剧本,在底层强制让它们形成了只要遇到查询动作,绝对不再说客套话废话,而是瞬间哑火冷酷吐出结构代码的铁血肌肉法则。


4. 残酷的算力天堑

虽然我说得极其轻松,但 SFT(全量有监督微调)存在一个极其残忍且被极客们所深恶痛绝的天生原罪:全量更新(Full Fine-Tuning)那极其恐怖高昂的显存爆破成本!

只要你启动最原始传统的 SFT,你就必须要把模型体内那多达 70 亿甚至 700 亿个浮点数参数全盘解冻读入显存,而且甚至还要再额外搭腾出更为极其夸张成倍海量空间去存储名为梯度和优化器状态(Optimizer States)的极其占肚子的计算巨型缓存渣滓残料。 即便是最微小破旧的开源 7B 模型,想要稍微动一下全量微调的手术,光它的显卡准入门槛要求就极易让个人开发者或是初创穷公司面对那一排起购的英伟达 A100/H100 高高筑起的报价显卡墙前当场绝望止步。

难道就没有那种“不碰主机大参数本身”,只插个即插即用的外接小小挂件就能实现同样微调神迹的黑魔法吗?

下一章预告: 欢迎仰望整个现代极客开源AI界、被无数独立草根画师与穷苦研究员捧在神坛上供奉的至高屠龙神技——如何用一张臭打游戏的 4090 显卡就爆改几百亿巨星模型的容颜? 我们将为你解剖出这个被誉为“穷人法拉利”的史诗级技术大跨越:6.3 穷人的法拉利:LoRA参数高效微调解析

分享这篇文章
Loading Comments...