模型微调:从理论到实践的深度解析
myzbx 2025-07-28 19:12 46 浏览
在人工智能领域,模型微调已成为提升模型性能、使其适应特定任务的关键技术。本文将全面系统地介绍模型微调的各个方面,帮助读者深入理解这一重要技术。
一、什么是模型微调
模型微调是指在已经训练好的预训练模型基础上,进行进一步的调整和优化,以使模型的输出更加符合特定的应用需求。从本质上讲,微调也是模型训练的一种形式,其过程与训练一个全新的模型有诸多相似之处。
谁来做微调
微调工作通常需要由具备丰富经验的研发人员或算法工程师来承担。这一过程不仅需要扎实的技术功底,还离不开两个核心要素:代码实现能力和充足的算力支持。值得一提的是,虽然目前有一些平台提供了可视化界面来辅助微调,但这些界面的功能往往较为有限,只能起到一定的辅助作用。
什么样的模型可以微调
并非所有模型都适合进行微调,以下两类模型是比较常见的微调对象:
- 大部分开源模型,例如 LLaMA、qwen、glm 等。这些模型具有开放的架构和参数,为用户进行个性化调整提供了便利。
- API 中开放微调接口的闭源模型或平台,如文心、智谱 AI 等。不过,开源模型和闭源模型在微调时存在明显差异:开源模型经过微调后可以生成新的模型;而闭源模型的微调过程则是在平台的服务器上进行,用户无法直接获取模型的原始参数。
影响微调的核心因素
微调的效果受到多个因素的综合影响,其中最为核心的包括:
- 基座模型的选择:基座模型的性能和特性在很大程度上决定了微调的上限。
- 微调方式的选择:不同的微调方法适用于不同的场景和需求。
- 数据质量:高质量的数据是确保微调成功的关键基础。
二、模型微调工作流程
第一步:需求分析与目标设定
这一阶段主要由项目组或产品经理主导,是微调工作的起点和关键。
什么情况下需要微调
在实际应用中,以下几种情况通常需要考虑对模型进行微调:
- 项目性质要求:例如甲方明确提出需求、出于资本化考虑或为了完成政绩工程等。此外,微调也是快速获得符合特定领域需求的大模型的常见手段,如矿山大模型、领域大模型等。
- 沟通方式和语言风格有特殊要求:当基座模型通过 prompt 控制无法稳定实现特定的沟通方式或语言风格时,如 AI 儿童讲故事场景。
- 基座模型缺少垂直领域数据:在医疗、军事等对专业知识要求较高的领域,由于互联网公开数据可能无法满足需求,导致基座模型无法完成专业任务。
- 基座模型无法完成特定任务:例如需要模型实现自动化操作电脑、手机等功能。
微调之前需要考虑的问题
在决定进行微调之前,需要全面评估以下几个方面:
- 是否已经充分尝试了 prompt(包括 few-shot、cot 等方式)和 RAG 技术?
- 是否能够保障微调所需的数据量级和数据质量?
- 由于基座模型会不断推出新版本,其能力也会不断提升,是否考虑过需要重新微调的情况?
核心工作步骤
1)明确业务需求和微调模型的目标:
- 仔细审视所选的基座模型在实际场景中的表现,判断是否真的需要微调。
- 检查是否已经尝试了各种 prompt 方法。
- 考虑是否对任务进行了合理拆解。
- 确认是否已经完善了 RAG 系统。需要注意的是,在大多数情况下,可能并不需要进行微调。
2)确定需要解决的具体问题。
3)设定预期的性能提升目标。
4)明确特定的业务指标或限制条件。
第二步:数据收集与准备
数据收集与准备工作主要由产品经理主导,这是微调工作的基础。
数据收集
根据具体的需求,从企业的数据库、日志文件、用户交互记录等多种来源收集相关数据。需要强调的是,在真实场景中收集真实数据至关重要,这将直接影响到微调的效果。
数据清洗
对收集到的数据进行清洗,去除其中的噪声、错误和不一致性,确保数据的质量。高质量的数据是模型能够有效学习的前提。
数据标注
如果采用监督学习方法进行微调,则需要对数据进行标注。这一步可能需要雇佣外部团队或利用内部资源来完成。准确的标注数据对于模型的训练和性能提升具有重要意义。
数据划分
将数据集划分为训练集、验证集和测试集,以便对模型的性能进行评估:
- 训练集:占比 70-80%,用于模型的实际训练和学习。
- 验证集:占比 10-15%,用于评估模型在训练过程中的表现,以便及时做出调整。
- 测试集:占比 10-15%,在模型训练完成后用于最终评估模型的性能。
模型微调的数据量(LoRA 微调)
模型尺寸与微调数量级之间存在一定的大致关系,如下表所示:
数据质量标准
以智能客服系统的对话场景模型微调为例,数据质量标准可以包括以下多个维度:
第三步:模型选择
模型选择通常由算法主导,产品经理也应积极参与。
前提考虑
在选择模型之前,同样需要考虑以下几个问题:
- 是否已经充分尝试了 prompt(包括 few-shot、cot 等方式)和 RAG 技术?
- 是否能够保障微调所需的数据量级和数据质量?
- 由于基座模型会不断更新,是否考虑过需要重新微调的情况?
选择模型的原则和方法
- 开源和闭源的选择:原则上优先选择开源模型,但最终决策需要根据具体的业务场景来确定。
- 基座模型公司的选择:例如智谱 AI 的 glm 系列模型,其中 glm4 的最强模型不开源,而阿里系的 qwen 模型是一个值得推荐的选择。
- 模型尺寸的选择:需要从效果和成本两个方面综合考虑,在项目中,可能需要根据不同的场景选择不同尺寸的模型。一般来说,可以先尝试最大尺寸的模型以获取最佳效果,然后再根据实际需求降到最小可行尺寸。
基于场景的模型选择
在实际项目中,模型的选择需要综合考虑效果和成本。一个项目可能包含多个场景,因此可能需要选择不同的模型。通常需要通过实验和经验来确定最佳的模型选择和微调方式,例如:
- 对于一些复杂任务,可能需要采用 33b + 的模型进行全量微调。
- 而对于另一些任务,可能采用 110 + 的模型并冻结部分参数进行微调更为合适。
第四步:模型微调
模型微调由算法工程师实施,是整个工作流程的核心环节。
模型微调方式(本质上是 SFT)
1)全模型微调:对整个模型的所有参数进行调整。
2)轻量化微调(Parameter-Efficient Fine-tuning,PEFT):
- 低秩适应微调(Low-Rank Adaptation,LoRA):这是最常用的微调技术之一。
- prompt tuning。
- P-Tuning。
- Prefix-Tuning。
3)冻结部分参数微调:只对模型的部分参数进行调整,其余参数保持冻结。
4)渐进微调:逐步调整模型的参数,以提高微调的效果和稳定性。
5)多任务微调:同时对多个任务进行微调,以提高模型的泛化能力。
LoRA 微调原理
LoRA 微调的核心原理是只选择原始模型的部分参数作为目标微调参数(通常 r 取 4、8、16、32 等),不更改模型的原始参数,而是在原始参数的基础上增加一个偏移量,从而得到一套新的参数。这种方法具有高效、节省算力等优点,因此在实际应用中最为常用。
QLoRA 微调
QLoRA 微调的主要目的是解决显存占用量过大的问题。显存占用量的计算方法如下:参数量 ×4×4 倍(装进来 + 转起来)/(1024×1024×1024)=xG 显存。以 7B 模型为例,其参数量为 7000000000,计算可得显存占用约为 11200000000 字节,即约 104G,这需要 5 张 NVIDIA 4090 显卡(每张 24G)。QLoRA 通过将 4 个字节的浮点数改成 1 个字节的整数,直接将显存占用降低到原来的四分之一,大大提高了模型微调的可行性。
第五步:模型评估
模型评估由产品经理主导,是确保模型满足预期需求的关键环节。
评估手段:支持率
在特定场景下评估微调后的模型能力,支持率是一个重要的指标。通用领域的评估往往没有实际意义。具体评估方法如下:
1)设计问答任务,使用微调前和微调后的模型分别回答问题,然后由人工在不知道回答来源的情况下进行偏好选择。
2)评估标准:
- 如果微调后的模型支持率低于 50%,说明这次微调不仅没有提升模型能力,反而破坏了原有模型的能力。
- 如果支持率在 50% 左右,说明微调几乎没有取得进步。
- 如果支持率在 50%-70% 之间,微调的成果不够理想。
- 如果支持率在 70%-80% 之间,说明这次微调是成功的。
- 如果支持率超过 80%,表明在大多数场景下,这次微调都取得了显著的提升。
第六步:模型部署
一旦模型通过评估,就可以由研发人员将其部署到生产环境中,使其能够为实际业务提供服务。
第七步:监控与维护
模型部署到生产环境后,需要由产品经理负责进行监控与维护:
- 性能监控:定期检查模型的性能,确保其持续满足业务需求。
- 更新与再训练:随着新数据的获取或业务环境的变化,可能需要对模型进行再次训练或微调,以适应新的情况。
第八步:反馈循环
产品经理需要设计反馈和监督机制,建立一个有效的反馈循环:收集模型使用过程中的反馈信息,用于指导未来的改进和优化工作,使模型能够不断进化和完善。
三、数据工程
需要明确的是,微调不是一次性工程,持续的数据收集和体系化的数据处理比微调技术本身更为重要。
如何收集偏好数据(相当于人工标注)
- 点赞点踩:通过用户对模型输出的点赞或点踩行为来收集偏好数据。
- 多选项选择:例如一次性给用户展示 4 张图,让用户选择偏好的选项;或者让模型生成两个答案,让用户进行选择。
- 客服工作台辅助:在客服工作台中,模型生成 4 个辅助回复,其中 2 个来自原模型,2 个来自微调后的模型,让客服选择一个最合适的回复,从而收集偏好数据。
产品功能设计
- 数据收集能力:在产品功能设计上,一定要具备数据收集能力,以便及时获取用户反馈和偏好数据。
- 定向数据收集:针对特定场景,在产品功能上设计定向数据收集的机制,提高数据的针对性和有效性。
设计好数据管理平台
- 利用 LLM 能力:让数据管理平台具备一定的智能,提高数据管理的效率和质量。
- 参考案例:如百度智能云的数据管理和数据标注平台。
数据管理平台产品框架
- 数据来源管理:管理自有数据、公开数据、用户生成数据、专家撰写的数据、模型合成数据、众包收集数据等多种数据来源,并实现在线系统数据的直接导入和数据平台与在线系统的实时对接。
- 体系化标注:包括标签定义、标签层次构建、打标任务管理和打标任务分层等,支持用户打标、服务人员打标、专家打标、AI 打标、交叉打标、交叉复检和专家抽检等多种标注方式。
- 数据去重与增强:通过 prompt 的相似度计算、数据来源整体质量分级等方法进行数据去重,同时采用同义词替换、词序打乱、反向翻译、数据混合等技术进行数据增强。例如,将 200 条问答数据通过模型生成相同的提问,可扩展为 400 条数据;将数据翻译成其他语言再翻译回原语言,可实现表达方法的多样性。
- 数据打包:实现训练集、验证集和测试集的自动化划分,建立数据集与模型版本、模型评估结果的关联,并按标签评估数据的可用性和复用性。
- 模型评估:支持偏好打标、专家打分、用户偏好收集等评估方式,并按标签产出评估结果,实现评估与打标数据的复用。
- 多利用能力强大的模型辅助工作:例如利用强大的模型进行数据过滤、自动打标、交叉复检、prompt 的相似度计算、response 质量对比、数据增强和模型评估等工作,提高数据工程的效率和质量。
四、后记
原则
- 如果没有高质量的数据,微调实操的意义不大。数据质量是决定微调效果的关键因素,即使采用最先进的微调技术,若没有高质量的数据支撑,也难以取得理想的效果。
- 不强调数据量的大小,但是数据质量一定要高。在数据工程中,应更加注重数据的质量而非数量,高质量的数据能够使模型更加有效地学习到所需的知识和模式。
通过以上对模型微调的全面介绍,相信读者已经对模型微调有了深入的理解。在实际应用中,需要根据具体的业务需求和场景,合理选择微调方法和数据处理方式,以实现模型性能的有效提升。
本文由 @李雨田 原创发布于人人都是产品经理。未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
相关推荐
- 如何设计一个优秀的电子商务产品详情页
-
加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品电子商务网站的产品详情页面无疑是设计师和开发人员关注的最重要的网页之一。产品详情页面是客户作出“加入购物车”决定的页面...
- 怎么在JS中使用Ajax进行异步请求?
-
大家好,今天我来分享一项JavaScript的实战技巧,即如何在JS中使用Ajax进行异步请求,让你的网页速度瞬间提升。Ajax是一种在不刷新整个网页的情况下与服务器进行数据交互的技术,可以实现异步加...
- 中小企业如何组建,管理团队_中小企业应当如何开展组织结构设计变革
-
前言写了太多关于产品的东西觉得应该换换口味.从码农到架构师,从前端到平面再到UI、UE,最后走向了产品这条不归路,其实以前一直再给你们讲.产品经理跟项目经理区别没有特别大,两个岗位之间有很...
- 前端监控 SDK 开发分享_前端监控系统 开源
-
一、前言随着前端的发展和被重视,慢慢的行业内对于前端监控系统的重视程度也在增加。这里不对为什么需要监控再做解释。那我们先直接说说需求。对于中小型公司来说,可以直接使用三方的监控,比如自己搭建一套免费的...
- Ajax 会被 fetch 取代吗?Axios 怎么办?
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!今天给大家带来的主题是ajax、fetch...
- 前端面试题《AJAX》_前端面试ajax考点汇总
-
1.什么是ajax?ajax作用是什么?AJAX=异步JavaScript和XML。AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实...
- Ajax 详细介绍_ajax
-
1、ajax是什么?asynchronousjavascriptandxml:异步的javascript和xml。ajax是用来改善用户体验的一种技术,其本质是利用浏览器内置的一个特殊的...
- 6款可替代dreamweaver的工具_替代powerdesigner的工具
-
dreamweaver对一个web前端工作者来说,再熟悉不过了,像我07年接触web前端开发就是用的dreamweaver,一直用到现在,身边的朋友有跟我推荐过各种更好用的可替代dreamweaver...
- 我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊
-
接下来你看到的将是全网最详细的Java知识点总结,全文分为三大部分:Java基础、Java框架、Java+云数据小编将为大家仔细讲解每大部分里面的详细知识点,别眨眼,从小白到大佬、零基础到精通,你绝...
- 福斯《死侍》发布新剧照 "小贱贱"韦德被改造前造型曝光
-
时光网讯福斯出品的科幻片《死侍》今天发布新剧照,其中一张是较为罕见的死侍在被改造之前的剧照,其余两张剧照都是死侍在执行任务中的状态。据外媒推测,片方此时发布剧照,预计是为了给不久之后影片发布首款正式预...
- 2021年超详细的java学习路线总结—纯干货分享
-
本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。纯干货,良心推荐!第一阶段:Java基础重点知识点:数据类型、核心语法、面向对象...
- 不用海淘,真黑五来到你身边:亚马逊15件热卖爆款推荐!
-
Fujifilm富士instaxMini8小黄人拍立得相机(黄色/蓝色)扫二维码进入购物页面黑五是入手一个轻巧可爱的拍立得相机的好时机,此款是mini8的小黄人特别版,除了颜色涂装成小黄人...
- 2025 年 Python 爬虫四大前沿技术:从异步到 AI
-
作为互联网大厂的后端Python爬虫开发,你是否也曾遇到过这些痛点:面对海量目标URL,单线程爬虫爬取一周还没完成任务;动态渲染的SPA页面,requests库返回的全是空白代码;好不容易...
- 最贱超级英雄《死侍》来了!_死侍超燃
-
死侍Deadpool(2016)导演:蒂姆·米勒编剧:略特·里斯/保罗·沃尼克主演:瑞恩·雷诺兹/莫蕾娜·巴卡林/吉娜·卡拉诺/艾德·斯克林/T·J·米勒类型:动作/...
- 停止javascript的ajax请求,取消axios请求,取消reactfetch请求
-
一、Ajax原生里可以通过XMLHttpRequest对象上的abort方法来中断ajax。注意abort方法不能阻止向服务器发送请求,只能停止当前ajax请求。停止javascript的ajax请求...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 简介 (30)
- HTML 响应式设计 (31)
- HTML URL 编码 (32)
- HTML Web 服务器 (31)
- HTML 表单属性 (32)
- HTML 音频 (31)
- HTML5 支持 (33)
- HTML API (36)
- HTML 总结 (32)
- HTML 全局属性 (32)
- HTML 事件 (31)
- HTML 画布 (32)
- HTTP 方法 (30)
- 键盘快捷键 (30)
- CSS 语法 (35)
- CSS 轮廓宽度 (31)
- CSS 谷歌字体 (33)
- CSS 链接 (31)
- CSS 定位 (31)
- CSS 图片库 (32)
- CSS 图像精灵 (31)
- SVG 文本 (32)
- 时钟启动 (33)
- HTML 游戏 (34)
- JS Loop For (32)
