本文从大模型微调技术概要出发,结合秋招面试高频问题,详细解析了LoRA微调原理、Prompt微调技术以及参数高效微调PEFT和指令微调SFT等核心知识点。文章还涵盖了微调技术选型、Loss计算、数据集收集、避免灾难性遗忘等实用技巧,并介绍了fp16和bf16在大模型训练中的使用。最后,分享了一个关于微调过程中遇到的困难及解决方法的开放性面试题。对于想要在大模型领域提升技能的程序员来说,本文提供了全面且实用的学习资料。
随着大模型的迅速发展,笔者在刚经历的秋招面试中,深感会大模型已经从原来的加分项变成了如今的必须项。
大数据岗位包括数据开发、数据科学、数据分析、数据挖掘等岗位,由于大数据涉及到底层的数据平台、数据仓库,赋能到下游应用层的用增、风控等具体业务,也映射到数据科学、推荐策略等等,因此,这里统一归纳为大数据岗位。
在2024年,如果你会大模型,尝试用大模型做过一些小项目,那么面试官会眼前一亮。
在2026年,如果你不会大模型,没有实际的生产项目,那么面试官会认为你没有学习能力。
今天,笔者从大模型的微调技术概要出发,结合秋招面试过程中被问到的高频问题,进行总结,形成如下文字。
微调
基本问题引出
面试官:有自己动手尝试做一下大模型微调方面的内容吗?例如 LoRA 微调之类的。
候选人:。。。
LoRA篇
这一部分的核心出发点就是考察 LoRA 原理。
Q1:讲一讲 LoRA 微调吧?
它的核心理论依据是‘内在秩假说’,即预训练大模型在适配下游任务时,权重的更新量存在一个极低的‘内在维度’。
基于此,LoRA 的做法是:冻结预训练模型的主干权重 ,在旁边增加一个旁路。
这个旁路由两个降维和升维的矩阵相乘构成:
假设输入维度和输出维度分别是 和 ,LoRA 会引入一个降维矩阵 和一个升维矩阵 ,其中秩 。在前向传播时,原来的输出是 ,加入 LoRA 后变成 。通过这种方式,我们只需要训练 和 这两个小矩阵,从而将可训练参数量降低了几个数量级,大幅减少了显存消耗并提高了训练速度。
Q2:LoRA 的 A 矩阵和 B 矩阵在初始化时有什么区别?为什么要这样设计?
矩阵A采用随机数初始化(例如随机高斯分布、kaiming初始化),矩阵B采用全零初始化,或者使用极小的随机数初始化。
保证在训练刚开始(Step 0)时,旁路的增量权重 W=AB=0。这意味着加上 LoRA 模块后的模型初始输出,和原本未经微调的预训练模型输出完全一致。这样可以避免在训练初期引入随机噪声导致模型表现突然崩溃,保证了微调过程的稳定起步。
Q3:LoRA 微调完成后,如何将旁路权重合并到主干模型中?合并后对模型的推理延迟有影响吗?
权重的合并本质上是一个线性相加的数学过程。因为预训练权重 和 LoRA 增量权重 的形状完全相同(都是 ),所以在微调结束后,我们直接计算 ,将合并后的新矩阵作为模型最终的权重保存即可。
合并后,对推理延迟没有任何影响。因为合并后的模型结构和参数量与原始预训练模型完全一样。这正是 LoRA 优于早期串联式 Adapter(会增加网络深度,从而增加前向传播时间)的关键优势之一。
Q4:除了基础的 LoRA,你了解过 QLoRA 或 AdaLoRA 吗?它们分别解决了什么痛点?
QLoRA:基础 LoRA 虽然减少了优化器状态的显存,但主干模型依然是以 FP16 甚至 FP32 加载的,对单卡(如消费级显卡)还是太大。QLoRA 引入了4位正态浮点数(NF4)来加载主干模型,并结合双重量化和分页优化器(Paged Optimizers)。它的核心贡献是能在单张 48G 甚至 24G 显卡上微调 65B 级别的模型,同时基本不损失模型性能。
AdaLoRA:基础 LoRA 给所有层分配了相同的秩,但实际上模型不同层对下游任务的重要性是不同的。AdaLoRA 基于奇异值分解的思路,动态且自适应地分配 Rank 预算。对于对任务重要的权重矩阵,分配更高的秩;对不重要的层,分配更低的秩甚至剪枝,从而在相同的总参数量预算下,获得比基础 LoRA 更好的微调效果。
Prompt 篇
这一部分个人认为考察的是看你有没有真正动手微调过大模型,有没有思考过如何优化之类的。
Q5:讲一讲基于 Prompt 的微调吧?
传统的“硬提示”是人类编写的离散文本,大模型很难通过梯度下降直接去优化它。基于 Prompt 微调的核心原理,是引入了连续的“软提示”。
具体而言,它会将庞大的预训练基座模型的所有权重完全冻结,只在模型的输入层或内部结构中,拼接一小段可训练的连续向量。在反向传播训练时,梯度只更新这些新增的少量向量参数。
其本质是:利用基座模型强大的通用表征能力,通过优化这些微小的外部特征向量,在隐空间中将模型的注意力引导至特定的下游任务上,从而实现防遗忘且低算力成本的参数高效微调(PEFT)。
每种方法的大致原理如下:
Prompt Tuning:只在输入层的起始处插入可训练的向量。
Prefix Tuning:在所有层的起始处插入可训练的向量。
P-Tuning:旨在输入层的某些位置插入可训练的向量。
Q6:参数高效微调 PEFT 和 指令微调 SFT,两者各代表什么含义?有什么联系?
参数高效微调 PEFT:将庞大的预训练基座模型的所有权重完全冻结,只在模型的输入层或内部结构中,拼接一小段可训练的连续向量。
指令微调 SFT:通过精心设计的指令对,来训练大模型,让大模型能够学习到符合特定领域的回答方式。
联系:PEFT 的训练数据集不仅仅可以是指令对,也可以是翻译、情感分类等数据集,具体关注的是如何低成本地更新参数。SFT 关注的是数据,教模型如何回答。因此,SFT 可以使用 PEFT 中的 LoRA、Prompt Tuning等方法实现。
SFT——学什么?
PEFT——如何学?
Q7:你怎么做微调技术选型的呢?
资源与数据足够的话,上全参微调。
资源不足,数据足够,上 LoRA 。
资源不足,数据不足,上 Promtp 或者 QLoRA。
除此之外,如果是想保留模型的泛化能力,尽量不要使用全参微调。如果是想训练一个垂直领域的大模型,则可以考虑全参微调。
Q8:讲一讲微调的 Loss 是怎么计算的吧?
基于交叉熵进行计算。即真实标签与模型预测概率分布之间的交叉熵损失。
具体计算方式可总结成如下步骤:
拼接文本——构建 Labels——Mask Prompt——左移——交叉熵。
Q9:在 SFT 阶段,计算 Loss 时通常是对整个输入(Prompt + Response)计算,还是只对 Response 部分计算?在 PyTorch 中,具体是如何通过代码实现只对部分 Token 计算 Loss 的?
在 SFT 阶段,只针对 Response 阶段计算Loss。Prompt 只是用户给定的上下文或指令,属于条件,微调的目的是让模型学会在给定的 Prompt 条件下,如何生成高质量的 Response。
具体步骤如下:
- 拼接文本,将 Prompt 和 Response 拼接成完整的输入 input_ids。
- 构建 Labels,克隆一份 input_ids,作为 Labels。
- Mask Prompt,找到 Prompt 的长度,将 Labels 中对应 Prompt 位置的值全部替换为 -100。
- Shift 处理,在计算 Loss 之前,将模型的输出向左 Shift 一位,将 Labels 向右 Shift 一位对齐。
- 计算 Loss,传入损失函数,PyTorch 会自动忽略值为-100的位置,只对 Response 部分计算梯度。
Q10:怎么收集微调数据集呢?
微调数据集一般来源于四个部分:
- 人工标注,质量天花板。
- 使用更强的模型进行数据合成,但是需要人工进行校验,适合冷启动阶段。
- 真实对话产生,但是要注意用户隐私。
- 从社区论坛或百科等进行爬虫,同样需要人工进行校验。
Q11:在垂直领域微调时,模型经常会出现“灾难性遗忘”(即通用能力下降)。你在构建数据集或训练时,会采取哪些策略来缓解这个问题?
模型主要通过预训练获取知识,而SFT的作用是教会模型更有效地利用这些知识,即对齐格式和激发能力,如果强行注入新的知识,可能会增加模型的幻觉风险。即避免引入过多新知识,以防引入过多幻觉。
为了避免产生通用性下降的能力,可以在垂直领域数据集的基础之上,引入10%到20%的通用指令。对于动态的、深度的行业知识,可以采用 RAG 的方式,让模型拥有垂直领域的知识。再者全参微调很容易破坏预训练权重导致遗忘,可以使用 LoRA 等参数高效微调的方式,通过冻结原本的 Base Model 权重,只在旁路更新极少量的参数。
Q12:大模型训练中常提到 fp16 和 bf16,你能讲讲 bf16 相比于 fp16 的优势是什么吗?为什么大模型训练现在更倾向于使用 bf16?
bf16 解决了深度学习训练中极其致命的数值溢出问题,即表示的数值范围远远超过 fp16。这是因为神经网络的权重对动态范围极其敏感,而对绝对的数值精度具有很强的鲁棒性。
- FP32(单精度):1 位符号位,8 位指数位,23 位尾数位(精度)。
- FP16(半精度):1 位符号位,5 位指数位,10 位尾数位。最大只能到 65504。
- BF16(Brain Float 16):1 位符号位,8 位指数位,7 位尾数位。最大能到 10的38次方。
Q13:模型微调好之后,你怎么判断好不好?
- 训练过程中的一些指标可以判断,例如损失值、准确值之类的。
- 挂载到 BaseModel 上的时候,可以通过 10-20 个最关心,或容易引发幻觉的 Prompt 进行测试。
- 使用开源客观 Benchmark 进行测试。
- 使用更强的模型做裁判。
开放性试题分享
最后,老规矩,分享一个典型的开放性面试题,这也是笔者面试被问到的一个问题,欢迎大家在评论区发表想法。
Q6:微调过程中,有没有遇到什么困难?你是怎么解决的?后续是怎么进行复盘的?有没有什么收获之类的?
这题个人认为来源于一个经典的面试题,即你实习过程中,遇到的最大的一个技术难点是什么?你是如何解决的?你有什么收获?
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线科技企业深耕十二载,见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套AI 大模型突围资料包:
- ✅ 从零到一的 AI 学习路径图
- ✅ 大模型调优实战手册(附医疗/金融等大厂真实案例)
- ✅ 百度/阿里专家闭门录播课
- ✅ 大模型当下最新行业报告
- ✅ 真实大厂面试真题
- ✅ 2026 最新岗位需求图谱
所有资料 ⚡️ ,朋友们如果有需要《AI大模型入门+进阶学习资源包》,下方扫码获取~
① 全套AI大模型应用开发视频教程
(包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点)
② 大模型系统化学习路线
作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!
③ 大模型学习书籍&文档
学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。
④ AI大模型最新行业报告
2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
⑤ 大模型项目实战&配套源码
学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。
⑥ 大模型大厂面试真题
面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
以上资料如何领取?
为什么大家都在学大模型?
最近科技巨头英特尔宣布裁员2万人,传统岗位不断缩减,但AI相关技术岗疯狂扩招,有3-5年经验,大厂薪资就能给到50K*20薪!
不出1年,“有AI项目经验”将成为投递简历的门槛。
风口之下,与其像“温水煮青蛙”一样坐等被行业淘汰,不如先人一步,掌握AI大模型原理+应用技术+项目实操经验,“顺风”翻盘!
这些资料真的有用吗?
这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。