大语言模型的微调策略

news/2025/10/20 16:43:52/文章来源:https://www.cnblogs.com/heyonggang/p/19153028

大语言模型的微调策略

尽管大语言模型展示出强大的能力,但在特定任务领域,它们往往无法达到最佳效果。通过微调,可以将特定领域的数据集输入模型中,使模型学习该领域的知识,从而优化自身在特定领域的 NLP 任务中的表现,如情感分析、实体识别、文本分类和对话生成等。本文章讲大语言模型的微调策略及基于 ChatGPT 的微调。

一.大语言模型的微调策略
微调是让预训练的大语言模型适应特定领域任务的关键技术。根据不同的需求和资源用户可以选择全面微调或参数高效微调。下面详细介绍这两种策略:

1.全面微调
全面微调是指对预训练模型的所有参数进行调整,通过合理的数据准备、训练、评估和策略调整,使模型在特定领域的数据集或任务上表现得更出色。全面微调适用于数据量大、计算资源充足的场景。自从 2018年10月 BERT 以 3.5 亿个参数成为当时最大的 Transformer 模型以来,大语言模型的参数量都在持续增长,如 BLOOM 具有 1760 亿个参数,参数量相比 BERT增加了约 500 倍。而同时期,HBM 的高成本,使得单个 GPU的 RAM 扩大到 80GB,增长了约 10倍。可见模型大小的增速远远超过计算资源的增速,超越了摩尔定律。这使得全面微调对于大部分模型来说不现实,也行不通。然而,参数高效微调可以在计算资源受限的情况下,有效地实现预训练模型的微调。这种微调方法不仅能有效提升模型效果,还能节省训练时间和资源,因而受到广大学者的喜爱和研究。下面我们重点介绍参数高效微调策略。

2.参数高效微调
论文"Scaling Down to Scale Up:A Guide to Parameter-Efficient Fine-Tuning"根据2019年2月至 2023年2月期间发表的 40 多篇论文,对参数高效微调(Parameter-Efficient Five-Tuning,PEFT)方法进行了系统概述,提供了一个涵盖多种方法的分类法,把参数高效微调分为三大类:基于 Addition、基于Selection和基于Reparametrization。其中,在基于 Addition 的方法中,又分出2类:Adapter-like 和 Soft prompts。详细的分类图如图 所示。
image

此外,该论文特别关注不同方法在现实生活中的效率及其对数十亿参数规模的大语言模型的微调效果,并从存储效率、内存效率、计算效率、准确性和推理开销5个方面对不同方法做了比较。下面简单介绍一些经典的参数高效微调方法。

(1)前缀调优(Prefix Tuning)

由于模型对人工设计的模板比较敏感,当模板中的字词增加、减少或者位置发生变化时,模型的性能都会受到显著影响。为了解决这个问题,Prefix Tuning 提出了一种固定预训练模型的方法,通过为模型添加可训练的前缀(Prefix),来调节模型在特定任务上的表现。

Prefix Tuning的核心思想是在不改变原有模型参数的基础上,添加一些可训练的前缀参数。这些前缀参数在模型的输入部分进行拼接,通过训练来适应特定任务的需求。

(2)提示调优(Prompt Tuning)

Prompt Tuning 方法可以看作 Prefix Tuning 的简化版本,传统的方法通常需要人工设计提示词,比如“请帮我把下面一句话翻译成英文”。Prompt Tuning 希望通过反向传播算法自动学习和优化这些提示词,而不是人工设计。

在训练过程中,预训练模型的所有权重都被冻结(保持不变),只有提示词的参数会被更新。这样使得我们不需要重新训练整个模型,就可以提升模型在特定任务上的表现,从而节省大量计算资源和时间。

(3)P-Tuning

在 P-Tuning方法中,提示词可以表示为一组可训练的嵌入向量。具体来说,给定一个离散提示词作为输入,P-Tuning将连续提示词嵌入与离散提示词嵌入拼接起来,并将它们作为输入送到大语言模型中,再通过反向传播更新可训练的提示词,以优化任务目标。经过验证,通过优化提示词嵌入,模型能够适应特定任务的需求,而不需要微调所有模型参数。

(4)LoRA

(Low-Rank Adaptation)通过引入低秩矩阵来实现参数更新。该方法的核心思想是,将原始模型的部分权重矩阵分解为低秩矩阵,从而减少参数量,降低计算开销,同时保持模型的性能。这种方法在计算资源受限的情况下,能够显著提高预训练模型的微调效率,广泛应用于各种自然语言处理任务中。

除了上述方法,如 QLoRA、AdaLoRA、Adapter Tuning、 P-Tuning v2、MAM Adapter和 UniPELT 等,也是目前应用比较多的参数高效微调方法。

二.基于ChatGPT的微调
2023年8月 23日,OpenA宣布对GPT-3.5 开放微调 API,允许 AI开发人员通过专门的数据在专门的任务上实现更高的性能。OpenAI声称,最终的定制模型在某些特定任务上可以匹配或超过GPT-4的能力。也就是说,每个企业或个人将拥有自己的专属OpenAI。

OpenAI 的大语言模型 ChatGPT 已经在大量文本上进行了预训练,而微调可以让其更适合特定的应用场景。微调的步骤包括:准备和上传数据;训练新的微调模型;评估结果,并在需要时继续迭代;微调结束后使用模型。

在准备数据阶段,OpenAI对数据集以及内容格式有一定的要求。首先要求数据集为JSONL 格式,数据格式如下:
image

如果是对话式聊天格式,且预训练模型为 gpt-3.5-turbo、babbage-002 和 davinci-002也可以按照下面的数据格式进行微调。
image

准备好数据集之后,需要将数据集切分成训练数据集和测试数据集。而每条训练数据的大小也受到基础模型的限制。对于 gpt-3.5-turbo-0125,每个训练样本限制为 16385 个Token;对于 gpt-3.5-turbo-0613,每个训练样本限制为 4096个 Token。超过最大长度限制的部分将被截断。

在进行微调之前,可以先使用数据集格式验证工具对数据集进行检查,以验证数据集中的每个对话是否都符合微调接口所要求的格式;还可以通过一些轻量级分析,提前识别数据集中存在的问题,例如缺少系统/用户消息等,并提供对消息数和Token数的统计分析,用来估算微调成本。

下面将通过使用 Fine-Tuning UI、CLI命令和 API的方式来介绍 OpenAl的微调。

1.使用 Fine-Tuning Ul 微调
OpenAl 支持通过 Fine-Tuning UI进行大语言模型的微调。如果要进入 OpenAI 的微调Web 页面,需要打开相应的页面(https://platform.openai.com/finetune),在左侧的导航栏单击"Fine-tuning"即可,如以下图所示 。

image

在 Fine-tuning 页面中,左侧展示可微调的所有任务,右侧展示选中任务的详细信息单击“+Create”按钮就可以创建微调任务,如下图所示。在创建微调任务的页面,完成微调任务的创建需要如下几个步骤:
image

  • 选择基础大模型:OpenAI提供的基础模型有 babbage-002、davinci-002、gpt-3.5-turbo-0125、gpt-3.5-turbo-0613 和 gpt-3.5-turbo-1106。添加训练数据集:可以上传或者选择一个已经存在的json1文件。添加验证数据集:可以上传或者选择一个已经存在的.jsonl 文件。设置模型后缀:给输出的模型添加一个自定义的后缀。

  • 设置随机种子:随机种子用来控制任务的可重复性。如果未设置种子,则会自动生成一个。

  • 配置超参数:超参数需要设置批大小、学习率和训练周期,默认值都是 auto。

  • 创建微调任务:完成上面的步骤后,单击“Create”即可完成训练任务的创建。

  • 评估微调结果:通过监控微调过程,确定使用模型,还是重新迭代。

  • 使用微调模型:完成微调之后,就可以使用微调模型了。

2.使用 CLI 命令微调
OpenAI提供了命令行工具,可以帮助我们快速处理数据集、操作文件、创建微调任务和使用模型等,下面介绍一些常用的命令行工具。

使用命令行工具需要先安装 openai库,代码如下:

pip3 install --upgrade openai

在需要运行的环境(Linux、macOs)中,配置 OpenAl 的 api key,代码如下:

export OPEN_API_KEY="自己的api key"

使用帮助工具查看 tools 和 api 分别支持的相关命令,代码如下:

openai tools-h或openai tools --help 
openai api -h或openai api --help

从帮助工具的查看结果可以发现,命令行工具支持图像、音频、文件和模型等,具体使用方法见表:
image

使用 prepare data 进行数据的准备,参数 -f用于指定本地的数据,代码如下:

openai tools fine_tunes.prepare_data -f ./tmp/data.txt

准备数据的过程,会对本地数据进行分析和处理,最终生成一个新的JSONL格式的文件,如下图所示。
image

使用 fles.create 方法将数据上传到 OpenAI服务器,参数-p用于指定文件的用途(purpose),如fine-tune、answers 和search,代码如下:* *

openai api files.create -f ./training_data.jsonl -p fine-tune

创建微调任务,参数 -t用于指定训练数据集,--model用于指定基础模型,代码如下:

openai api fine_tunes.create -t 训练文件ID --model 选择的基础模型

查看所有微调任务及其状态信息,代码如下:

 openai api fine_tunes.list

根据任务ID,查看微调任务的详细信息,代码如下:

  openai api fine_tunes.get -i 微调任务ID

当微调任务结束并完成模型评估后,就可以使用微调后的模型了,代码如下:

 openai api completions.create -m 模型名称 -p 提示词

还可以添加更多参数来控制文本的生成,如最大生成长度、温度和生成数量等,代码如下:* *

 openai api completions.create -m 模型名称-p 提示词 --max-tokens 100 --temperature 0.7 --n 1

通过上述示例可以看出,使用 OpenAI的 CLI命令工具,用户可以很方便地创建微调任务,包括准备和上传数据集文件、创建微调任务、检查任务状态和使用模型等。

3.使用 API微调
对于大多数开发者而言,使用 Fime-Tuning Ul和 CLI命令微调仅用于测试。在实际的生产环境中,需要通过编程实现微调。为此,OpenAI提供了相关的 API。先初始化 OpenAI的客户端,配置自己的 api key,代码如下:

from openai import OpenAI
api key = "填写自己申请的 OpenAI的 api key"
client = OpenAI(api key=api key)

假设已经准备好微调的数据集为 mydata.jsonl文件,将 mydata.json 文件上传到 OpenAI服务器,并指定目的是fine-tune,代码如下:

data_file_path ="mydata.jsonl"
client.files.create(file=open(data_file_path, "rb"), purpose="fine-tune")

根据数据集返回的文件ID,基于基础模型 gpt-3.5-turbo 创建一个微调任务,代码如下:

file_id ="file-xxx"
client.fine_tuning.jobs.create(training_file=file_id, model="gpt-3.5-turbo", suffix="2024-07-10")

可以对微调任务进行列出、查询和取消等一系列操作,代码如下:

#列出前5个任务
client.fine_tuning.jobs.list(limit=5)
#查询微调任务的状态
fine_tuning_job_id = "ftiob-xxx"
client.fine_tuning.jobs.retrieve(fine_tuning_job_id)
#取消一个微调任务
client.fine_tuning.jobs.cancel(fine_tuning_job_id)
#查询微调任务的5个事件
client.fine_tuning.jobs.list_events(fine_tuning_job_id=fine_tuning_job_id, limit=5)

微调和评估结束后,就可以使用微调出的模型了,代码如下:

model = "ft:gpt-3.5-turbo:demo:suffix:2024-07-10"
completion = client.chat.completions.create(model=model,messages=[{"role": "system", "content": "你是一个虚拟助手。"},{"role": "assistant", "content": "您好。"},{"role": "user", "content": "您好。"}]
)

本节介绍了 3种用于 ChatGPT 微调的方法:Fine-Tuning UI、CLI命令和 API。虽然这三种方法可以满足大部分需求,但它们仅依赖于 ChatGPT。本节内容不仅适用于大多数场景,还可以作为了解和使用 ChatGPT的基础。然而,为了满足更多更复杂的使用场景,接下来我们将探讨一些其他的微调最佳实践。这些实践将帮助你更灵活地利用大语言模型。以实现更出色的性能和更广泛的应用。

注:本文节选自机械工业出版社出版的《Python大模型应用开发:核心技术与项目实战》,略有改动,以纸质书出版为准。

编辑推荐
(1)打通完整Python开发链条:系统梳理大模型应用开发全流程,涵盖分词、词嵌入、向量数据库、提示词工程、模型微调与部署等关键技术,帮助开发者构建成体系的技能框架。

(2)主流工具一网打尽:聚焦Hugging Face、LangChain、RAG等当前最热门的大模型开发框架,讲解其原理与实操方法,配合可运行的代码与实战案例,快速上手、易于应用。

(3)项目实战导向,深度挖掘数字人场景:通过多个数字人电商项目实战,完整展示智能系统构建方式,贴近热门应用场景,增强实战价值与可落地性。

(4)内容循序渐进,初学与进阶开发者友好:全书由浅入深、结构清晰,从基础认知到高级实战,兼顾知识体系构建与动手能力提升,既适合AI开发初学者,也能帮助有经验的工程师补齐短板。

(5)作者技术实力深厚,经验提炼与代码实操双助力:作者倾力总结多年AI架构实战经验,结合真实项目中的痛点问题,提供一线开发技巧与工程化思维,帮助开发者在实践中掌握大模型开发的“术”与“道”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/941347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结对项目—小学四则运算题目生成器

项目成员 汪雨嫣3223003305、沙吉旦乃吉米丁3223004775GitHub地址 https://github.com/wyy517/WYY517/tree/main/math这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience这个作…

阅读笔记一:程序员的自我定位与成长基石

《程序员修炼之道:从小工到专家》开篇便打破了“程序员只是代码编写者”的刻板认知,将职业素养置于核心位置,为技术从业者指明了从“小工”到“专家”的底层逻辑。在数字化浪潮席卷全球的今天,软件已深度融入社会运…

SQL 子查询与多表 JOIN 用法大全(速查版) - 实践

SQL 子查询与多表 JOIN 用法大全(速查版) - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

Excel学习指南

感觉太简单,就边练习边笔记了,根据微信读书的《Excel函数与公式速查手册》来练习,不区分大小写 名称的定义与使用 “名称”就是给一个单元格、单元格区域、公式或常量值起一个易于理解和记忆的别名。 如果引用的数据…

2025 年宁波北仑仓库服务商推荐新世洋集团,港口物流仓储的专业之选宁波北仑仓库推荐

在经济全球化的浪潮下,港口物流仓储行业已成为连接国内外贸易的关键纽带,其重要性不言而喻。随着我国进出口贸易规模的持续扩大,以及电商行业的迅猛发展,对高效、可靠的仓储与物流服务的需求呈井喷式增长。宁波北仑…

2025年聚氨酯厂家权威推荐榜:浇注型聚氨酯/聚氨酯预聚体/聚氨酯胶黏剂/聚氨酯组合料/密封胶/胶辊/制品原料,源头厂家技术实力与产品应用深度解析

2025年聚氨酯厂家权威推荐榜:浇注型聚氨酯/聚氨酯预聚体/聚氨酯胶黏剂/聚氨酯组合料/密封胶/胶辊/制品原料,源头厂家技术实力与产品应用深度解析 行业背景与发展趋势 聚氨酯材料作为高分子材料领域的重要组成部分,近…

02-02串口-单片机发送数据,电脑串口调试助手接收数据

一、硬件准备1块STM32F103C8T6最小系统板 1个ST-LINK烧录器 1个USB-to-TTL 若干杜邦线 二、程序点击查看代码 #include "stm32f10x.h" // Device headervoid My_USART_SendBytes(USART_Typ…

2025年CNC高压清洗机厂家推荐排行榜:CNC全自动/数控高压清洗机、双工位/卧式清洗机、去毛刺/螺纹孔清洗机、工业/欧洲清洗机精选

2025年CNC高压清洗机厂家推荐排行榜:CNC全自动/数控高压清洗机、双工位/卧式清洗机、去毛刺/螺纹孔清洗机、工业/欧洲清洗机精选 一、行业技术发展趋势 随着工业4.0时代的深入发展,CNC高压清洗技术正经历着革命性的变…

2025 矿物铸件源头厂家推荐榜:南通盟鼎新材料 5 星领跑,适配机床 / 电子 / 自动化设备基座需求

随着机床、电子设备、自动化生产线对 “基座稳定性、振动衰减、精度保持” 需求升级,矿物铸件凭借 “高阻尼系数、低热变形、定制化强” 的特性,成为核心结构件优选。结合材料性能、精度控制、场景适配度与用户反馈,…

2025年家纺摄影公司推荐排行榜,南通摄影公司,家纺产品摄影,电商家纺拍摄,品牌家纺视觉策划专业团队

2025年家纺摄影公司推荐排行榜:专业视角下的南通摄影公司深度解析 家纺摄影行业发展趋势与市场格局 随着电商经济的蓬勃发展,家纺行业的视觉营销需求呈现爆发式增长。家纺产品摄影作为连接产品与消费者的重要桥梁,已…

2025 年国内锅炉厂家最新推荐排行榜:聚焦智能控制与稳定可靠的品牌深度解析电/蒸汽/燃气/燃油/电蒸汽锅炉公司推荐

引言 随着工业升级、商业发展及民生供暖需求的持续攀升,锅炉作为核心热能设备,其性能优劣直接关系到企业生产效率、运营成本控制及环保合规性。当前市场中,锅炉制造商数量繁杂,产品质量差异显著,部分品牌存在技术…

遗传算法入门

遗传算法入门目录物种进化的目的案例——背包问题第一步 —— 初始化第二步 — 适应度评估第三步 — 遗传操作(进化核心:选择、交叉、变异)∞ 循环总结遗传算法是什么? 遗传算法是一种受生物进化论(特别是自然选择…

2025年冲压件厂家权威推荐榜:新能源/光伏/精密/异形/五金/铝/汽配/不锈钢/家具冲压件源头实力解析

2025年冲压件厂家权威推荐榜:新能源/光伏/精密/异形/五金/铝/汽配/不锈钢/家具冲压件源头实力解析 行业背景与发展趋势 冲压件作为现代制造业的基础零部件,其技术水平和产品质量直接影响着终端设备的性能和可靠性。随…

3 大 Python 库助力高效 PDF 文件压缩 - E

在日常工作中,压缩 PDF 文件是一项非常常见的任务。无论是为了节省存储空间,还是为了更快地上传、共享文件,控制 PDF 的体积都至关重要。 例如,美国部分电子诉讼系统要求上传的 PDF 文件必须小于 35 MB,而在医疗行…

三麦克风阵列近场定位MATLAB实现(TDOA+GCC方法)

一、系统架构设计 1. 硬件配置参数 % 麦克风阵列参数 c = 343; % 声速(m/s) fs = 48000; % 采样率(Hz) mic_pos = [0,0; 0.1,0; 0.1,0.05](@ref); % 三麦克风坐标(x,y)2. 信号流图 声源 → 麦克风1 → 预处…

Servlet的几种用法? - 教程

Servlet的几种用法? - 教程2025-10-20 16:27 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important;…

2025年UV固化设备厂家推荐排行榜,UV面光源,UV LED点光源,UV LED面光源,UV LED固化机专业选购指南

2025年UV固化设备厂家推荐排行榜,UV面光源,UV LED点光源,UV LED面光源,UV LED固化机专业选购指南 随着工业4.0时代的深入发展,UV固化技术作为现代制造业的关键环节,正经历着从传统汞灯向LED技术的革命性转变。UV…

stm32和Zynq的中断抢占机制 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年食品级润滑油脂厂家最新推荐榜单:聚焦纳米材料技术突破,甄选核心竞争力突出的企业

引言 在食品、制药、饮料等与民生健康紧密相关的行业中,食品级润滑油脂作为生产设备的 “血液”,其安全性、稳定性与适配性直接决定产品质量安全与生产效率。当前市场存在诸多痛点:部分产品难以平衡极端工况适应性与…

2025 年食品级润滑油源头厂家最新推荐排行榜:聚焦国产标杆企业,54 项专利加持,助力企业精准选品食品级润滑油液压油/食品级润滑油齿轮油/食品级润滑油烘焙设备润滑油厂家推荐

引言 当前食品、制药、饮料等行业高速发展,食品级润滑油作为保障设备稳定运转、守护食品安全的关键产品,其品质与供应稳定性直接影响企业生产效率与产品安全。然而,市场上存在国外品牌垄断推高采购成本、部分小型厂…