# 大模型微调的主流方式、核心区别与底层原理 微调(Fine-tuning)的核心底层共性:基于预训练模型的知识迁移,冻结预训练模型的大部分通用特征参数,仅针对具体任务优化少量参数/引入轻量模块/设计提示特征 核心特点 优点:任务适配性最强,能充分挖掘任务数据的特征,效果理论上最优; 缺点:算力/数据需求极高(需千万级以上任务数据,大模型全量微调需上百张GPU)、易过拟合、模型存储成本高(一个任务一个模型)、 核心特点:效果接近全量微调,是工业级大模型的主流选择,参数量仍控制在5%以内。 无(大模型无实操性) 部分微调 10%-30% 中 十万级以上 无 顶层MLP/嵌入层微调 中模型、中等资源任务 以内,适合工业级两段式端到端模型的落地; 避免全量/部分微调:针对Transformer大模型的两段式端到端架构,全量/部分微调的算力成本极高,且多任务适配时模型存储成本不可接受。
实际上,可以使用预训练的大型语言模型进行新任务的上下文学习并进行微调。 那么,什么是上下文学习?又如何对大模型进行微调呢? 1. 如果无法直接访问模型,例如通过 API 使用模型,上下文学习非常有用。与上下文学习相关的是“硬提示微调”的概念,可以通过修改输入来期望改善输出。 参数高效微调 参数高效微调允许我们在最小化计算和资源占用的同时重复使用预训练模型。 如前所述,微调更多的层通常会导致更好的结果。如果想要微调更大的模型,例如重新生成的LLM,这些模型只能勉强适合GPU内存,该怎么办呢?人们开发了几种技术,只需训练少量参数便可通过微调提升LLM的性能。 ChatGPT中的RLHF 解读Toolformer 知识图谱的5G追溯 图计算的学习与思考 AI系统中的偏差与偏见 面向AI 的数据生态系统 机器学习与微分方程的浅析 神经网络中常见的激活函数 老码农眼中的大模型
但是随着预训练语言模型越来越大,这个范式存在以下问题: ● 当我们 finetune 大模型时,由于训练成本太高,不太可能重新训练所有模型参数 ● 以前的方法(论文发表于 2021 年)都或多或少有其它性能问题 如果是全参数微调,则它的参数量=W0 参数量(如果是 GPT3,则 ΔW≈175B)。从这可以看出要全参数微调大语言模型,小家小户是不可能的。 总结 总的来说,基于大模型的内在低秩特性,增加旁路矩阵来模拟 full finetuning,LoRA 是一个能达成 lightweight finetuning 的简单有效的方案。 目前该技术已经广泛应用于大模型的微调,如 Alpaca,stable diffusion+LoRA,而且能和其它参数高效微调方法有效结合,例如 State-of-the-art Parameter-Efficient Adapter 方法不需要微调预训练模型的全部参数,通过引入少量针对特定任务的参数,来存储有关该任务的知识,降低对模型微调的算力要求。
一、微调流程二、选择微调基础模型如果我们需要进行的是监督指令微调,建议选择带-Instruct后缀的模型,关于模型命名及后缀说明如下截图:三、准备意图识别微调训练集和验证集提醒:从开源平台(如Hugging 然后看情况看模型效果,慢慢调高或者。特别是小数据集的朋友们,一开始不要用特别大的学习率。例如1e-4、2e-4这种的。总的来说,小一点的学习率确实比较好拟合。也有不错的效果。 这样就能实现用小显存实现大 batch size 的效果,类似于 “分期付款” 的效果。 秩的数值越小,模型微调时的参数更新越 “保守”;秩的数值越大,模型能捕捉的特征复杂度越高,但也会消耗更多计算资源。 五、模型微调后验证通过预留的10%的微调数据集用做训练后的模型验证集。模型验证数据集中可以加上对应训练时的提示词,如:你是一个意图识别专家,可以根据用户的问题识别出意图,并返回对应的函数调用和参数。
调整开源大语言模型(LLM)的系列博客的第二篇文章。本文讨论:“什么时候应该进行微调,什么时候应该考虑其他技术?”0 引言在 LLM 出现之前,微调通常用于小规模模型(100M – 300M 参数)。 当时,最先进的领域应用通过监督微调(SFT)构建,即使用标注数据对预训练模型进行进一步训练,以适应自己的领域和下游任务。然而,随着大型模型(>1B 参数)的兴起,微调的问题变得更加复杂。 最重要的是,大型模型的微调需要更大的资源和商业硬件。下表 1 列出了在三种情况下,微调 Llama 2 7B 和 Llama 2 13B 模型的峰值 GPU 内存使用量。 QLoRA 这样的算法使得使用有限资源对大模型进行微调变得更加可行。作为示例,表 1 显示了 Llama 2 7B 的三种微调模式(全微调、LoRA 和 QLoRA)的峰值 GPU 内存。 1.4 成本节约微调可以将 Llama 2 70B/GPT-4 等大模型的技能提炼到较小的模型中,如 Llama 2 7B,从而在不影响质量的情况下降低成本和延迟。
一、引言 这里的Transformers指的是huggingface开发的大模型库,为huggingface上数以万计的预训练大模型提供预测、训练等服务。 Transformers 提供了便于快速下载和使用的API,让你可以把预训练模型用在给定文本、在你的数据集上微调然后通过 model hub 与社区共享。 你可以直接使用一个框架训练你的模型然后用另一个加载和推理。 本文重点介绍如何打印微调参数,以及微调参数占比计算。 二、计算微调参数占比 2.1 概述 基于LoRA进行模型微调时,需要先冻结全部参数,再指定相应的Linear层进行微调,那么如何计算全部参数,如何计算微调参数以及如何计算微调参数占全部参数的比例呢? 2.2 模型参数结构一览 这里以Qwen2为例,在微调前,对大模型结构有所认知,对于QLoRA量化微调算法来说,只微调大模型的线性层(Linear层),后面会看到在LoRAConfig中,仅指定了"q_proj
一、大模型微调的基础理论在探索具体方法之前,我们首先需要建立一个清晰的认知框架,理解大模型微调在整个AI模型生命周期中所扮演的角色。 大模型微调究竟是什么?直观上,大模型微调即是指通过输入特定领域或任务的数据,并有选择性地调整模型参数的技术过程。 为什么大模型微调至关重要?微调的重要性在于它能够“激活”基座模型的潜在能力,为其“装备”上精细化、专业化的功能。没有微调,大模型就像一件未开刃的神兵,空有材质而缺乏锋芒。 四、大模型微调赋能智能未来综上所述,大模型微调是连接通用基座模型强大能力与具体业务需求的关键桥梁。 为此,我特意整理了全套《大模型微调实战进阶宝典》,这份资料凝聚了我多年的实战经验,其中包含:《大模型微调实战避坑指南》:精选20+真实项目经验,解析训练发散、灾难性遗忘等高频难题《十大前沿行业微调白皮书
微调大模型这件事,门槛低到什么程度了? 之前这事儿都可以做成商业模式了,数据、环境、脚本、硬件一套下来,成本极高。 Unsloth 会自动安装依赖、下载模型、开始训练。 你甚至不需要自己有 GPU,用 Google 的免费 T4 就能微调 8B 参数的大模型,真正的零成本入门。 Vision RL、TTS 微调 视觉大模型也能用 GRPO 做强化学习了。 门槛确实低到离谱 总的来说:如果你一直想微调大模型、训自己的推理模型、或者只是想试试「把 Claude 的能力蒸馏到小模型里」,现在就是最好的时机。 DeepSeek V3+R1 满血微调工具一键启动,硬件要求降 10 倍 大模型微调实战,教程 + 代码 微调一个视觉大模型,手写数字识别为例,从零开始,基于 Qwen2.5,附代码!
尽管大语言模型展示出强大的能力,但在特定任务领域,它们往往无法达到最佳效果。 本文章讲大语言模型的微调策略及基于 ChatGPT 的微调。 一.大语言模型的微调策略 微调是让预训练的大语言模型适应特定领域任务的关键技术。根据不同的需求和资源用户可以选择全面微调或参数高效微调。 OpenAI 的大语言模型 ChatGPT 已经在大量文本上进行了预训练,而微调可以让其更适合特定的应用场景。 1.使用 Fine-Tuning Ul 微调 OpenAl 支持通过 Fine-Tuning UI进行大语言模型的微调。 在创建微调任务的页面,完成微调任务的创建需要如下几个步骤: 选择基础大模型:OpenAI提供的基础模型有 babbage-002、davinci-002、gpt-3.5-turbo-0125、gpt
作者:Skanda VIvek翻译:陈之炎校对:zrx 本文约3100字,建议阅读7分钟对开源的大语言模型进行微调的确令人兴奋不已,相比之下,又如何微调非开源的大语言模型呢? 标签:大语言模型 领英(LinkedIn)账号的fork中向我提出了这样一个问题:如何微调诸如LLaMA的开源模型。 人们普遍认为,非开源的模型太贵了,1000个 token需要花费0.002美元,为什么不可以在100个样本上做一下尝试,并评估大语言模型是否为特定应用程序的最佳选择。 其中一个观点是,假设需要回答成千上万份文件中的问题,此时,对这些数据进行训练或微调开源模型,并询问利用这些数据微调模型会不会更容易一些? 这就是微调的作用所在。 微调LLM 在讨论微调大语言模型之前,首先谈谈像BERT这样的小语言模型的微调,这在大语言模型出现之前很常见。
当我们想在用特定领域的数据微调模型时,如果想要full-tuning所有模型参数,看着是不太实际,一来需要相当多的硬件设备(GPU),二来需要相当长的训练时间。 》(2)摘要内容微调是实际上利用大型预训练语言模型执行下游任务的首选方法。 值得一提的是,通过使用T5模型进行模型大小的消融实验,我们展示了提示微调随着规模的增加变得更加具有竞争力:当模型参数超过数十亿时,我们的方法“缩小了差距”并达到了模型微调(即调整所有模型权重)的强大性能 ,无需verbalizer(4) 特点在小、大模型上,效果均优于P-tuning。 随着我们预训练更大的模型,全面微调(即重新训练所有模型参数)变得不太可行。以GPT-3 175B为例,部署独立的微调模型实例,每个实例都有175B参数,成本是极其昂贵的。
一、引言 这里的Transformers指的是huggingface开发的大模型库,为huggingface上数以万计的预训练大模型提供预测、训练等服务。 Transformers 提供了便于快速下载和使用的API,让你可以把预训练模型用在给定文本、在你的数据集上微调然后通过 model hub 与社区共享。 LoRA是一种用于微调大型语言模型的轻量级方法,它通过添加低秩矩阵到预训练模型的权重上来实现适应性调整,从而在不显著增加模型大小的情况下提升特定任务的性能。 target_modules: 指定模型中的哪些模块(层)将应用LoRA适应。这允许用户集中资源在对任务最相关的部分进行微调。 get_peft_model(model, config) print_trainable_parameters(model) 三、总结 本文简要介绍LoraConfig的配置参数情况,具体的机遇peft对大模型进行微调后面单独开一页详细讲解
LoRA模型是小型的Stable Diffusion模型,它们对checkpoint模型进行微小的调整。它们的体积通常是检查点模型的10到100分之一。 LoRA(Low-Rank Adaptation)是一种微调Stable Diffusion模型的训练技术。 虽然我们已经有像Dreambooth和文本反转这样的训练技术。那么LoRA有什么用呢? LoRA对Stable Diffusion模型中最关键的部分进行小的修改:交叉注意力层。研究人员发现,微调这部分模型就足以实现良好的训练。 LoRA模型通过将自己的权重加到这些矩阵上来微调模型。 如果LoRA模型需要存储相同数量的权重,它们的文件怎么会更小呢?LoRA的技巧是将矩阵分解成两个更小的(低秩)矩阵。 第1步:安装LoRA模型 要在AUTOMATIC1111 webui中安装LoRA模型,请将模型文件放入以下文件夹。
微调包括调节通用模型并将其调节为特定模型,它是连接通用预训练模型和特定应用的特定需求之间的桥梁,从而保证大语言模型能够接近人类的预期。 用于微调大语言模型的数据集必须服务于指导的目的。 完整微调会为每个训练的任务提供一个新版本模型,这些新模型和原始模型一样大,因此如果你需要为多个任务进行微调的话,看会导致存储成本问题。 在大语言模型的上下文中,RAG和微调通常被认为是相互竞争的方法,但二者的结合可以显著提升模型的表现。在将微调应用到RAG系统一文中就通过将二者结合来确定和改进模型中较弱的组件。 RAG和微调的对比如下: 微调最佳实践 明确定义任务 定义任务是微调大语言模型的基础步骤。
PEFT,全称是 参数高效微调 (Parameter-Efficient Fine-Tuning),是一套用于调整大型预训练模型(如大语言模型LLM)以适应特定下游任务的方法论,其核心思想是在 极小化计算和存储资源 QLoRA :LoRA的进化版, 结合了4-bit量化技术 ,进一步将模型的基本权重压缩,使得在单张消费级GPU(如24GB显存)上微调650亿参数的大模型成为可能。 3 PEFT的主要作用与优势 PEFT之所以成为大模型应用的关键技术,是因为它解决了全量微调的几大痛点: 极大降低硬件门槛 :由于需要计算和存储梯度的参数极少,对GPU显存的需求大幅下降。 4 应用领域 PEFT的应用早已不限于大语言模型(NLP),它已扩展到AI的各个前沿领域: 多模态模型 :用于微调图像生成模型(如Stable Diffusion)进行风格化训练(如DreamBooth 总的来说,PEFT不是单一的算法,而是一套 让大模型“飞入寻常百姓家”的方法论 。
微调框架概述 模型的微调有多种方式,对于入门的来说,一般都是基于官方的文档微调;最近发现很多开源库,其目的就是支持应用多种微调策略来微调模型,简化模型的微调门槛。 应用 目前绝大多数的大模型都是基于基座模型(GLM、QWen、LlaMa、BaiChuan)等微调训练而来,不过实现的逻辑却是有多种,要么基于官方的微调文档,要么基于开源微调库实现。 CareGPT 就是基于开源微调库LLaMA-Factory实现的医疗领域大模型。 其架构设计如下: 在其架构设计中,有两个部分比较值得关注: 微调框架的集成 通过集成了微调框架,调用底层具备的能力,准备多种格式的数据集微调模型。 在这里面的道道还是蛮多的,有一定的大模型知识再基于这些库去做参考去做应用,将极大的降低LLM的应用门槛。更有甚者可以了解底层的实现逻辑。
LoRA 是目前大模型微调领域最流行的参数高效微调技术之一,核心思想非常巧妙: 在冻结原始预训练模型权重的基础上,通过添加少量可训练的低秩矩阵来模拟模型对特定下游任务的适应过程。 1 原理详解 在预训练模型中,权重矩阵(例如 Transformer 中的 Wq 、 Wk 、 Wv 、 Wo 等)通常都是满秩的,当针对某个下游任务进行全参数微调时,会得到一个权重的更新量 ΔW,微调后的权重就是 尽管预训练模型本身是高维复杂的,但针对特定任务的适应性调整往往是低维的。例如,模型原本已经学会了通用语法和知识,要适应某个特定领域的对话,只需要在几个关键方向上微调即可,这些方向就对应着低秩子空间。 显存占用大幅降低:由于不需要计算和存储大部分参数的梯度,且优化器状态(如 Adam 的一阶和二阶矩)也大幅减少,训练所需的显存可降低 2/3 以上,使得在消费级 GPU 上微调大模型成为可能。 保持基础能力:由于原始权重被冻结,LoRA 微调不会导致灾难性遗忘,模型原有的通用能力得以保留,只在特定任务上进行调整。
这就是大模型,比如今年火爆的DeepSeek。微调与强化学习、模型蒸馏通常情况下,大模型泛指的是通用大模型,也就是说大模型在对知识理解的广度上来说,任何领域,任何学科的知识都懂。 这个时候就需要用到大模型微调了。 大模型微调微调不仅可以显著提高模型在特定领域或任务上的表现,还能使其适应于各种具体应用场景的需求。 这种能力的增强是通过更精细地调整模型内部的权重和偏差,使其在理解和生成信息时更加精准,因此被广泛用于需要高精度和领域适应性的任务中。大模型微调可以分为全量微调和高效微调。 写在最后大模型微调对大模型的影响主要体现在专业化能力提升与通用性权衡:通过注入特定领域数据(如法律文书或医疗诊断),模型能精准适配垂直场景需求,如从全能翻译官转型为医学术语专家;但过度微调可能导致灾难性遗忘
大模型应用性能的提升不仅在于其预训练,而微调的作用也非常显著。对于多数从事大模型应用领域的团队而言,微调是一个核心的工作之一,为专门任务完善大模型并确保其产出符合我们的预期。 1. 例如,对一般数据集上训练的大模型进行微调,以理解医学语言或法律术语的细微差别,使其在这些环境中更相关、更有效。关于微调的更多内容可以参考《解读大模型的微调》。 在 RLHF 中,“回报”是由人的反馈决定的,这意味着模型成功地产生了理想的输出。 2.1 大模型的自我监督预训练 从收集一个庞大而多样化的数据集开始,通常包括广泛的主题、语言和写作风格。 这个步骤可能涉及反馈收集和奖励模型调整的几个迭代,以准确捕获人的偏好。 2.4 使用来自奖励模型的反馈来微调语言模型 从奖励模型中获得的见解被用来微调语言模型。 一句话小结 通过强化学习,利用人类反馈(RLHF)和直接偏好优化(DPO)微调大模型,能够保证相对准确地产生一些关键的见解,使人工智能在适应性、高效率和符合人类价值观方面发挥重要作用。
LLaMA-Factory 「GitHub」: https://github.com/hiyouga/LLaMA-Factory 「特点」: 支持 100+ 种 LLM 的微调(LLaMA、Mistral 、Qwen、ChatGLM 等) 提供 WebUI 界面,零代码微调 支持 LoRA、QLoRA、全参数微调等多种方法 内置数据集处理和评估功能 2. Axolotl 「GitHub」: https://github.com/OpenAccess-AI-Collective/axolotl 「特点」: 配置驱动,通过 YAML 文件定义训练流程 支持多种模型和微调方法 「GitHub」: https://github.com/unslothai/unsloth 「特点」: 训练速度提升 2-5 倍,显存减少 80% 支持 LLaMA、Mistral、Gemma 等模型 快速选择建议 场景 推荐框架 新手入门、零代码 LLaMA-Factory Hugging Face 生态 PEFT 显存有限、追求速度 Unsloth 超大规模分布式训练 DeepSpeed 国产模型微调