记录模型微调的一些扫盲知识点,方便回头看
相关使用场景
- 场景一:提高模型对企业专有信息的理解、增强模型在特定行业领域的知识-SFT
- 场景二:提供个性化和互动性强的服务-RLHF
- 场景三:提高模型对企业专有信息的理解、增强模型在特定行业领域的知识、获取和生成最新的、实时的信息-RAG
定义介绍
- SFT(supervised FIne-Tuning,有监督微调):
- 通过提供人工标注的数据,进一步训练预训练模型,让模型能够更加精准地处理特定领域的任务。
- 除了有监督微调,还有无监督微调,自监督微调,当大家提高微调时通常是指有监督微调
- RLHF(Reinforcement Learning from human Feedback强化学习)
- DPO(Direct Preference Optimization):通过人类对比选择直接优化生成模型,使其产生更符合用户需求的结果;调整幅度大
- PPO(Proximal Policy Optimization):通过奖励信息(如点赞、点踩)来渐进式调整模型的行为策略;调整幅度小
- RAG(检索增强生成):将外部信息检索与文本生产结合,帮助模型在生成答案时,实时获取外部信息和最新信息。
微调还是RAG?
- 微调:需要拥有充足的数据,能够直接提升模型的固有能力;无需依赖外部检索;
- RAG:数据量少,动态更新的数据,每次回答问题前需检索知识库,回答质量依赖于检索系统的质量。
- 总结:
- 少量企业私有知识:RAG和微调都做,资源不足时优先RAG
- 会动态更新的知识:RAG
- 大量垂直领域知识:微调
SPF
- 预训练模型(基座模型):指已经在大量数据上训练过的模型,也就是我们微调前需要预先下载的开源模型。它具备了较为通用的知识和能力,能够解决一些常见的任务,可以在此基础上进行进一步的微调(fine-tuning)以适应特定的任务和领域
- 微调算法的分类
- 全参数微调(Full Fine-Tuning):
- 对整个预训练模型进行微调,会更新所有参数。
- 优点:因为每个参数都可以调整,通常能得到最佳的性能;能够适应不同任务和场景
- 缺点:需要较大的计算资源并且容易出现过拟合。
- 部分参数微调(Partial Fine-Tuning):
- 只更新模型的部分参数(例如某些层和模块)
- 优点:减少了计算成本;减少过拟合风险;能够以较小的代价获得较好的结果
- 缺点:可能无法达到最佳性能
- 最著名算法:LoRA
- 全参数微调(Full Fine-Tuning):
LoRA微调算法:
- 论文:
- LoRA: Low-Rank Adaptation of Large Language Models
- Attention Is All You Need
- 什么是矩阵的秩:
- 矩阵的秩(Rank of a matrix) 是指矩阵中线性无关的行或列的最大数量。简单来说它本办法反映矩阵所包含的有效信息量。
- LoRA如何做到部分参数微调:矩阵的低秩分解,100100的矩阵= 1002的矩阵 * 2*100的矩阵,微调参数量由10000变为400
- h=W0x+△W0x = △W0x+BAx
- h:模型输出
- W0:预训练模型的原始权重,是一个全秩矩阵
- x:模型输入
- △W0:微调后原始权重的变化量,也是一个全秩矩阵,大小和W0相同
- BA:两个低秩矩阵B和A,他们的乘积BA表示对原始权重的微调变化量△W0
- W0x+△W0x:全参数微调的输出
- △W0x+BAx:LoRA方法对部分参数微调的输出
- h=W0x+△W0x = △W0x+BAx
微调常见实现框架
- 新手入门:https://github.com/hiyouga/LlamaFactory
- Transformers.Traniner:部署和生产环境中表现出色
- DeepSpeed:分布式基座大模型训练
实践
- 框架:llamafactory
- 算法:Lora
- 基座模型:deepseek-1.5B
- 蒸馏技术:通常用于将大模型(教师模型)的知识转移到小模型(学生模型)中,使得小模型能够在尽量保持性能的同时,显著减少模型的参数量和计算需求。
本地走一下微调流程(M1 32g)
intel机子环境不行,折腾半天环境还起不来,回去换m1试一下可以
LLaMa Factory的安装和使用
1 | git clone —depth 1 https://github.com/hiyouga/LlamaFactory.git |
HuggingFace下载基座模型
1 | mkdir Hugging-Face |
页面加载模型即可
数据集准备
- 只要跑通流程的话,直接让ai生成数据集即可
- 真的要微调模型的话,数据集其实才是最重要的,这块后面应该要仔细看,暂时跳过,让ai帮我临时生成了
开启训练
参数很重要,后面再单独学一下界面上配置参数跑就可以了(UI or 命令行)
导出模型
- 导出、直接fastapi开放接口对外调用,这就是常规开发了,此处不再展开
云端走一下微调流程(AutoDL)
- https://www.autodl.com/
- 和本地流程差不多,无非是租了算力,先不跑了,继续学细节。
本文作者:
yd0ng
本文链接: https://blog.yd0ng.top/2026/07/12/AI/%E6%A8%A1%E5%9E%8B%E5%BE%AE%E8%B0%83-%E6%89%AB%E7%9B%B2/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://blog.yd0ng.top/2026/07/12/AI/%E6%A8%A1%E5%9E%8B%E5%BE%AE%E8%B0%83-%E6%89%AB%E7%9B%B2/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!