当前位置: 首页 > news >正文

机器学习从业者大语言模型微调指南

在本文中,您将了解在何时对大型语言模型进行微调是合理的,选择哪些2025年可用的方法和工具,以及如何避免最常见的导致项目失败的错误。

我们将涵盖的主题包括:

  • 一个实际的决策框架:提示工程、检索增强生成(RAG)以及何时微调确实增加价值。
  • 今天的基本方法——LoRA/QLoRA,Spectrum——以及与DPO的对齐,以及何时选择每种方法。
  • 数据准备、评估和确保您不会陷入麻烦的已验证配置。

介绍

微调在2024-2025年变得更加容易,参数高效的方法使得即使70B+参数模型也能在消费级GPU上运行。但是,你真的应该微调吗?如果是的话,如何在数十种新兴技术中进行选择?

本指南适用于希望获得实际成果的从业者,而不仅仅是理论。您将了解在何时进行微调是合适的,使用哪些方法,并如何避免常见的陷阱。

微调与传统的机器学习不同。与其从头开始训练模型,不如使用预训练模型并结合更少的数据和计算来适应特定任务。这使得复杂的自然语言处理(NLP)功能在没有数十亿美元预算的情况下成为可能。

对于机器学习从业者来说,这建立在你已经有的技能之上。数据准备、评估框架和超参数调整仍然是核心。你需要学习新的架构模式和效率技术,但你现有的基础给你带来了巨大的优势。

你将学习:

  • 当微调相比像提示工程或检索增强生成 (RAG) 这样的简单方法能提供价值时
  • 核心参数高效方法(LoRA, QLoRA, Spectrum)及其使用时机
  • 现代对齐技术(DPO,RLHF)使模型能够可靠地遵循指示
  • 数据准备策略是决定你大部分微调成功的关键。
  • 过度拟合和灾难性遗忘的关键陷阱及其避免方法

如果你已经在使用LLM,那你已经有需要的东西了。如果你需要温习,查看我们的指南。LLM应用和提示工程

在进行微调机制之前,您需要了解微调是否是正确的做法。

何时微调以及与替代方法的关系

微调应该是你的最后选择,而不是首选。 推荐的步骤是先进行提示工程,当需要外部知识时升级到RAG,只有在需要深度专业化时才进行微调。

Google Cloud 的决策框架 和 Meta AI 的实用指南 明确了标准:使用提示工程进行基本任务适应。使用 RAG 当你需要来源引用,必须将响应基于文档,或信息频繁变化时。Meta AI 揭示了五种微调提供真正价值的场景:为特定受众定制语气和风格,维护敏感信息的数据隐私,支持低资源语言,通过蒸馏大型模型降低推理成本,以及添加基模型中不存在的全新功能。

数据可用性测试:少于100个示例时,坚持提示工程。有100-1,000个示例和静态知识时,考虑参数高效方法。只有在有1,000-100,000个示例和明确的任务定义时,才尝试微调。

对于新闻摘要或一般问题回答,RAG表现出色。对于需要特定品牌语气或遵循特定模式的代码生成的客户支持,微调是必不可少的。最佳解决方案通常结合两者——针对特定推理模式进行微调,同时使用RAG获取当前信息。

基本参数高效微调方法

全微调更新所有模型参数,需要大量的计算和内存。参数高效微调(PEFT)通过仅更新约0.1%到3%的参数来训练,实现了可比的性能,同时大大减少了需求。

LoRA(低秩适应)成为主导技术。LoRA冻结预训练权重,并在并行中注入可训练的低秩分解矩阵。LoRA不是更新整个权重矩阵,而是将更新表示为低秩分解。在适应过程中,权重更新通常具有低内在秩,通常情况下, rank 8 对许多任务来说已经足够。

内存减少到全微调的2到3倍,检查点大小减少1,000到10,000倍。一个350 GB的模型只需要一个~35 MB的适配器文件。在大型模型上训练可以快~25%。至关重要的是,在部署期间,学习矩阵与冻结权重合并,引入零推理延迟。

QLoRA 通过激进的量化扩展了 LoRA,同时保持准确性。基础权重以 4 位格式存储,计算在 16 位bfloat16格式下进行。结果是显著的:65B 模型在 48 GB GPU 上,33B 在 24 GB 上,13B 在消费者 16 GB 硬件上——同时匹配许多 16 位全微调结果。

Spectrum,一种2024年的创新技术,采用了不同的方法。Spectrum不是添加适配器,而是通过信噪比分析来识别最具信息量的层,并仅选择性地微调最上面的约30%。报告显示,在数学推理方面,使用 comparable 资源时,Spectrum的准确性高于QLoRA。

决策框架:当需要零推理延迟和中等的GPU资源(16-24 GB)时,请使用LoRA。当存在极端内存限制(消费者级GPU,Google Colab)或非常大的模型(30B+)时,请使用QLoRA。在分布式环境中处理大型模型时,请使用Spectrum。

准备实施LoRA和QLoRA了吗? 如何在2025年微调开放LLMPhil Schmid提供当前最佳实践的完整代码示例。为了实际操作,尝试Unsloth的免费Colab笔记本。

现代对齐和指令微调

指令微调将关注完成的基模型转换为指令遵循助手,在对齐之前建立基本能力。该方法在涵盖问答、摘要、翻译和推理的多样指令-响应对上进行训练。质量远比数量重要,通常 ~1,000 个高质量示例就已足够。

直接偏好优化(DPO)已成为首选的对齐方法,通过极大地简化从人类反馈中进行强化学习(RLHF)。关键思想:将奖励重新参数化为在策略本身中隐含,通过监督学习而不是复杂的强化学习来解决RLHF目标。

来自斯坦福大学和其他机构的研究报告称,DPO 可以在单阶段训练下实现与基于 PPO 的 RLHF 相当或更优的性能,计算量减少约 50%,并且更加稳定。DPO 只需要偏好数据(提示、选择的响应、拒绝的响应)、一个参考策略和标准的监督学习基础设施。该方法在 2024-2025 年间已成为训练开源 LLM 的常见方法,包括 Zephyr-7B 和各种基于 Mistral 的模型。

RLHF仍然是基础对齐技术,但带来了高复杂性:在训练期间管理四个模型副本(策略、参考、奖励、价值),实现困难,以及训练不稳定性。OpenAI的InstructGPT表明,一个1.3B的对齐模型在人类评估中可以比175B的基础模型表现更好,突显了对齐的力量。然而,大多数从业者应该使用DPO,除非特定场景需要RLHF的灵活性。

使用Alpaca或Dolly-15k等数据集开始指令微调,然后实现DPO进行对齐,而不是尝试RLHF。TRL(Transformer强化学习)文档提供了关于DPO和RLHF的全面指南,并附有工作代码示例。为了理解概念,请参见Chip Huyen的RLHF:基于人类反馈的强化学习。

数据准备最佳实践

数据质量比任何其他因素都更能决定微调的成功。 随着训练数据中的错误率线性增加,下游模型的错误率可能呈超线性增长——使数据整理成为你的最高杠杆活动。

数据集的大小需求因任务复杂度而异。简单的分类任务需要约200到1000个示例。中等复杂度的任务,如问答,需要约1000到5000个示例。复杂的生成或推理任务可能需要5000到10000个以上。质量比数量更重要:1000个高质量的示例可能比100000个普通的示例表现得更好。

高质量的数据具有五个特征:领域相关性、场景多样性、分布代表性、标注准确性和及时性(对于时间敏感的领域)。

格式对结果有显著影响。 使用结构化的问答对,并在数据集中保持一致的格式,以防止学习虚假模式。标准分割在适用时使用分层抽样分配约80%的训练和约20%的验证。

基本预处理:清理噪声,处理缺失值,使用模型特定的分词器,去除重复项,并标准化文本。优先使用自定义数据而非模型在预训练阶段可能已经遇到的公共数据集。

需要数据准备帮助吗? Meta AI的指南如何微调:专注于有效的数据集 强调专有数据策略并提供实用的整理技术。对于数据集探索,请浏览Hugging Face Datasets以查看优质示例。

避免致命陷阱

过拟合发生在模型记住训练数据而不是学习可泛化的模式时。这是最普遍的微调失败。迹象包括训练损失减少而验证损失增加,高训练准确率但验证性能差,以及损失接近零。

预防需要多种策略。提前停止在验证性能 plateaus 时停止训练。正则化包括 L2 权重衰减、10%–30% 的权重随机删除和权重惩罚。数据增强通过反向翻译和合成生成增加多样性。K 折交叉验证有助于确保在分割之间的一般化。

对于参数高效微调(PEFT)方法,减少LoRA秩(<font style="color:rgb(85, 85, 85);">r</font>参数)和α值以减少可训练参数。在微调时使用学习率1e-4到2e-4。持续监控训练和验证损失。PEFT方法如LoRA通过限制可训练参数到约0.1%–1%来自然减少过拟合。

灾难性遗忘提出了更隐秘的挑战:在训练新任务时会丢失之前学习的信息。模型可能会失去一般推理能力,对之前能回答的问题表现下降,并且过度拟合到特定的输出格式。遗忘可能在微调过程中早期通过格式专业化开始。

预防策略包括弹性权重聚合(EWC),它识别并保护重要的权重;“半微调”,在每轮中冻结大约一半的参数;以及锐度感知最小化(SAM),它使损失景观变得平坦。最易获取:包括混合了领域特定数据的多样化指令数据集。

正在为过拟合或灾难性遗忘而苦恼? 这篇论文 重新审视大型语言模型微调中的灾难性遗忘 提供了具有实证证据的实用缓解策略。对于监控和调试,请使用 Weights & Biases 或 TensorBoard 来持续跟踪训练和验证指标。

拥抱面系统为现代微调提供了基础。Transformers库提供了模型访问,PEFT实现了参数高效方法,TRL处理强化学习和监督微调的训练,以及bitsandbytes实现了量化。

Unsloth 通过定制的 Triton 内核,提供 ~2 倍更快的训练速度,并且最多可节省 80% 的内存,适用于单个 T4 或消费级 GPU。在 Colab 和 Kaggle 上免费。LlamaFactory 已经成为统一的解决方案,支持 100 多个模型,并通过基于配置的训练进行训练。对于非常大的模型,全切片数据并行(FSDP)结合 QLoRA 能够在双消费级 GPU 上训练 70B 模型。

推荐的2025年~8B模型堆栈:QLoRA或Spectrum + FlashAttention-2 + Liger Kernels + 梯度检查点。这使得在单个强大的GPU上训练Llama-3.1-8B大约需要两小时,或者在8个GPU上分布式训练不到半小时(因人而异)。

推荐的初始配置: 选择Llama-3.1-8B或Phi-3-mini作为基础模型,以获得良好的性能和可管理的大小。使用QLoRA进行4位量化,允许在消费者级GPU上训练。实施于Unsloth,免费访问。从512-1,024个令牌序列开始。将学习率设置为2e-4。使用批次大小4-8和梯度累积2-4步。启用梯度检查点和序列打包以提高效率。

用于实践的必备数据集:Alpaca(52K)用于指令微调,Dolly-15k用于高质量的人类示例,OpenAssistant用于对话数据,Anthropic HH-RLHF用于偏好学习。

准备构建您的第一个微调模型了吗? 从 Hugging Face 的 LLM 课程中关于监督微调的章节 开始,该章节逐步介绍了完整的过程。对于生产部署,请探索 LlamaFactory,它支持通过简单的 YAML 配置 100 多个模型。

您的学习路径

对于新接触微调的机器学习从业者,采用系统性地提升技能的渐进学习方法。

从指令微调开始: 在Alpaca数据集上微调基础T5或基础Llama-2。专注于理解指令-响应数据格式,并使用Hugging Face的TRL和LoRA进行高效训练。这为数据准备、训练和评估奠定了基础。<font style="color:rgb(85, 85, 85);">SFTTrainer</font>

进展到DPO: 在类似Anthropic HH-RLHF或UltraFeedback的小偏好数据集上进行训练。 将性能与您的有监督微调基线进行比较。 理解隐含奖励和偏好学习。 DPO的简单性使其成为在没有强化学习复杂性的情况下学习对齐概念的理想选择。

实验生产系统: 从小型模型(1亿到3亿参数)开始,以快速迭代。使用现有实现,而不是从头开始构建。仔细进行消融实验,隔离不同选择的影响。在扩展到更大的模型之前,使用多个指标进行严格的评估。

入门清单: 定义一个明确的任务和成功标准,包括目标指标。选择一个到两个自定义评估指标和两个到三个系统级指标(最多五个)。准备至少1000个示例,优先考虑质量而不是数量,并以80/20的训练/验证分割进行划分。在训练开始之前设置您的评估框架。使用具有已证明超参数的PEFT方法开始微调。持续监控以防止陷阱。借助QLoRA可以在16 GB GPU上启用13B模型,并使用Google Colab等免费平台进行Unsloth优化,您可以从今天开始进行实验。

在寻找评估最佳实践吗? 这本指南 LLM评估指标:终极指南 包括G-Eval、任务特定指标和LLM作为 judge的方法。使用 DeepEval 进行开源评估框架的实现。

该领域继续迅速发展,2024-2025年的进展带来了显著的加速(通常是3-5倍)、改进的效率技术和扩大了的商业可用性。从小型模型和成熟的技巧开始,然后在你熟悉基本原理时进行扩展。

http://www.dtcms.com/a/548907.html

相关文章:

  • Neo4j图数据库:简述增删改查
  • Mac版Color Folder v3.8安装教程(附dmg文件安装步骤和搜索关键词)
  • 金仓KES MongoDB兼容性深度解析与实践
  • Fiddler抓包实战教程 从安装配置到代理设置,详解Fiddler使用方法与调试技巧(HTTPHTTPS全面指南)
  • 对电子商务网站建设的感想4399网页游戏大全
  • 珠海专业医疗网站建设请人做ppt的网站
  • 印团网网站是哪家做的平面设计年终总结
  • 【u-boot】u-boot的I2C驱动框架剖析
  • JFrog vs Nexus vs Hadess,制品管理工具一文纵评
  • 【Docker】容器常用命令
  • Linux《Socket编程UDP》
  • Java IO 流进阶:Buffer 与 Channel 核心概念解析及与传统 IO 的本质区别
  • 【Linux基础开发工具 (一)】详解Linux软件生态与包管理器:从yum / apt原理到镜像源实战
  • 镇江网站营销推广电商怎么做如何从零开始视频
  • opencv 学习: 01 初识图片处理
  • 从 Wot UI 出发谈 VSCode 插件的自动化发布
  • Rust专项——用 Weak 打破引用环:树与图结构实战
  • c#调Lua返回个字符串
  • 单元测试(JUnit、Mockito、PowerMock )
  • 不只是语法糖:解构作为 Rust 安全与清晰度的基石
  • 企业微信消息群发助手(企业微信自建应用)winform.netcore实现(详细配置)
  • 基于Vue的教育学习网站04y8688l(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 移动端网站生成器中国电商平台排行榜前100
  • Excel正则表达式.获取字符
  • K8s 资源管理与操作
  • 如何在 Azure 虚拟机上部署 Elasticsearch
  • Go切片的赋值
  • Go语言设计模式:原型模式详解
  • 泉州网站建设-泉州网站建设石家庄网站建设招聘
  • [MySQL]表——权限控制