引言:为什么需要模型定制与微调 ├── 2. 微调技术体系:从全参数到参数高效 ├── 3. 全参数微调:深度定制的经典路径 ├── 4. 参数高效微调:资源受限下的优化选择 ├── 5. ,资源需求降至原来的5%以下 自动化:微调流程自动化工具成熟,如LLaMA-Factory、XTuner等开源框架 混合化:多种微调技术组合使用,如LoRA+RLHF的混合策略 领域化:针对特定领域的专业化微调方法不断涌现 低资源:在消费级硬件上实现高效微调的技术日益普及 3. 3.1 技术原理 全参数微调的核心思想是在保持模型架构不变的情况下,使用领域特定数据对所有模型参数进行更新: 全参数微调流程: 预训练模型 → 领域数据输入 → 前向传播 → 损失计算 → 反向传播 → 行业应用与最佳实践 9.1 金融领域微调案例 某大型金融机构在2025年实施的领域微调项目: 需求:构建专业的金融分析助手,能够准确理解金融术语,分析市场趋势,生成合规报告。
领域微调的理论基础与挑战 1.1 领域微调的基本原理 领域微调是指在预训练大模型的基础上,使用特定领域的专业语料进行二次训练或微调,以使模型更好地适应特定领域的语言习惯、专业知识和任务需求。 在进行跨领域微调时,可以采用以下领域知识融合技巧: 分阶段微调策略: 先在通用数据上预训练 然后在大规模领域数据上进行领域适应 最后在特定任务数据上进行微调 领域术语增强: 医疗领域:增强对医学术语 主要内容包括: 领域微调基础:详细介绍了领域微调的基本概念、原理和流程 医疗领域微调:实现了医疗数据集构建和医疗领域微调器 法律领域微调:实现了法律数据集构建和法律领域微调器 词汇优化技术:探讨了词汇表优化的重要性和实施方法 领域对比分析:对比了医疗与法律领域微调的异同点 未来,领域微调技术有望在以下方向继续发展: 多模态领域微调:结合文本、图像等多种模态信息进行领域微调 持续学习与知识更新:实现模型在领域知识更新时的高效适应 跨领域知识融合:开发更有效的跨领域知识迁移方法 隐私保护领域微调:在保护敏感数据的前提下进行高效微调 通过不断优化和创新领域微调技术,我们可以更好地发挥大语言模型在特定领域的潜力,为医疗、法律等专业领域提供更智能
我们将使用ORPO和TRL库对新的Llama 3 8b模型进行微调。 ORPO 指令调优和偏好对齐是使大型语言模型(llm)适应特定任务的基本技术。 这涉及一个多阶段的过程:1、监督微调(SFT)指令,使模型适应目标领域;2、偏好校准,如人类反馈强化学习(RLHF)或直接偏好优化(DPO),增加产生首选响应的可能性。 ,所以我们可以直接就拿来用 ORPO微调Llama 3 Llama 3已经发布了两种模型大小:700亿参数模型和较小的80亿参数模型。 model = PeftModel.from_pretrained(model, new_model) model = model.merge_and_unload() 这样,我们就完成了Llama 3的快速微调 usp=sharing orpo作者微调Llama 3的log https://huggingface.co/orpo-explorers/hf-llama3-8b-orpo-v0.0/tensorboard
为什么要微调? 微调的主要目的是通过在特定任务上对预训练模型进行进一步训练,以适应该任务的需求,从而提高模型在该任务上的性能。 注意:ChatGLM3-6B-Base 和 ChatGLM3-6B-32K 模型不支持微调。 啥是泛化能力? 有哪些微调方式? ──────────────── Traceback (most recent call last) ──────────────────────╮ │ /data/llm/llama/ChatGLM3/ 参考文献: https://zhuanlan.zhihu.com/p/646791309 https://github.com/THUDM/ChatGLM3/blob/main/finetune_demo
领域专用AI模型训练指南:医疗、法律、金融三大垂直领域微调效果对比 Hello,我是摘星! 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。 这些差异化需求决定了我们不能简单地使用一套通用的微调策略,而需要针对每个领域的特点制定专门的训练方案。通过对比实验,我发现领域专用模型在专业任务上的表现显著优于通用模型。 3. 法律领域AI模型训练实践3.1 法律文本特征工程法律文本具有严谨的逻辑结构和专业术语,需要特殊的特征提取方法。 5.2 训练成本分析图3:领域专用模型训练成本分布饼图5.3 应用场景适配度图4:领域模型性能对比XY图表6. 参考链接Transformers模型微调最佳实践医疗AI应用伦理指南法律科技发展报告金融AI风险管理框架领域适应学习综述关键词标签#领域专用AI #模型微调 #医疗AI #法律科技 #金融风控
LLaMA Factory是一款开源低代码大模型微调框架,集成了业界最广泛使用的微调技术,支持通过Web UI界面零代码微调大模型,目前已经成为开源社区内最受欢迎的微调框架。 llama3-8B模型尝试一下 安装LLaMA Factory 拉取LLaMA-Factory项目 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git } ] } ] 模型微调 我们不光可以通过命令行进行微调,还可以启动一个webui来微调推理 ! 界面: 数据集使用上述下载的train.json,点击「预览数据集」可以预览一下数据 设置学习率为1e-4,梯度累积为2,有利于模型拟合,其他的可以按需调整; 将输出目录修改为train_llama3, 选择「Chat」栏,确保适配器路径是train_llama3,点击「加载模型」即可在Web UI中和微调模型进行对话。 模型微调之前的对话: 微调之后:
这些方法难以优化不同领域的平衡,无法最大限度地提高多个能力的整体训练效果。目前尚缺乏一种高效的方法,在SFT阶段全面提升LLM在多个领域的多种能力。 C3: 域扩展中的低灵活性。 VersaTune可以在扩展特定领域任务性能的同时,最大限度地降低模型在非目标领域的能力损失(C1, C3)。 稳健性。 假设数据集包括k个不同的域,如算法1所示,作者首先使用准备进行微调的基础模型(Line 3),并以Token 生成一组个数据条目。 这些评分随后用于在组合SFT数据集中微调每个领域的表示,以确保在整个微调过程中各个领域的能力均衡发展(Line 3-7)。同时,模型M_θ的参数根据通过反向传播计算的梯度进行更新(Line 8)。 确定特定领域计数在域扩展过程中的比例阈值。作者考虑对VersaTune的结果与实现特定域的“无条件动态增加”进行比较,其中作者移除了算法3中的第8行。
本节我们简要介绍如何基于 transformers、peft 等框架,对 LLaMA3-8B-Instruct 模型进行 Lora 微调。 Lora 是一种高效微调方法,深入了解其原理可参见博客:知乎|深入浅出 Lora。 这个教程会在同目录下给大家提供一个 nodebook 文件,来让大家更好的学习。 https://www.codewithgpu.com/i/datawhalechina/self-llm/self-llm-LLaMA3 在本节教程里,我们将微调数据集放置在根目录 /dataset 8B-Instruct', cache_dir='/root/autodl-tmp', revision='master') 指令集构建 LLM 的微调一般指指令微调过程。 所谓指令微调,是说我们使用的微调数据形如: { "instruction": "回答以下用户问题,仅输出答案。", "input": "1+1等于几?"
为了有效地让模型掌握这些新知识,本文作者提出了一种名为「检索增强微调(RAFT)」 的方法。这是一种简单而强大的微调方法,只需简单的微调,就可大幅提升模型在“开卷”特定领域下的问答性能。 「RAFT方法关注的是更加细分的特定领域,并在此领域上进行开卷考试」。LLM可以使用所有在这个特定领域内经过微调的信息来回应用户的提问。 本篇文章主要研究的就是这样的特定领域开卷设置,以及如何让预训练的LLM适应这个特定领域,包括如何让它对检索到的文档数量的变化和干扰项更加稳健。 RAFT方法介绍 RAFT(检索增强微调)是一种新方法,用于准备数据微调,以便对模型定制化以适应特定领域的”开卷考试“,也就是领域内的RAG。 如下图所示,RAFT 提高了所有专业领域的 RAG 性能,在下面测试集上可以看到特定领域的微调显着提高了基础模型的性能,但 RAFT 始终优于现有的特定领域微调方法。
06-ChatGLM3-6B-chat Lora 微调 概述 本节我们简要介绍如何基于 transformers、peft 等框架,对 ChatGLM3-6B-chat 模型进行 Lora 微调。 Lora 是一种高效微调方法,深入了解其原理可参见博客:知乎|深入浅出Lora。 本节所讲述的代码脚本在同级目录 ChatGLM3-6B-chat Lora 微调 下,运行该脚本来执行微调过程,但注意,本文代码未使用分布式框架,微调 ChatGLM3-6B-Chat 模型至少需要 21G 指令集构建 LLM 的微调一般指指令微调过程。所谓指令微调,是说我们使用的微调数据形如: { "instrution":"回答以下用户问题,仅输出答案。" 不同模型所对应的格式化输入都不一样,所以需要我们深度模型的训练源码来查看,因为按照原本模型指令微调的形式进行Lora微调效果应该是最好的,所以我们依然遵循原本模型的输入格式。
可以进行微调的模型有哪些?GPT-4的微调目前处于实验性访问计划中 - 符合条件的用户可以在创建新的微调任务时在微调界面上申请访问权限。 要估算特定微调作业的成本,请使用以下公式:每1000个令牌的基本成本 输入文件中的令牌数 训练的纪元数对于一个包含100,000个令牌的训练文件,经过3个纪元的训练,预期成本将约为2.40美元。 目前,仅保存并可用于使用的作业的最后3个纪元的检查点。我们计划在不久的将来发布更复杂和灵活的检查点策略。 step,train_loss,train_accuracy,valid_loss,valid_mean_token_accuracy1,1.52347,0.0,,2,0.57719,0.0,,3,3.63525,0.0 微调可以用于创建一个专注于特定领域的模型,并表现出特定的内在行为模式。检索策略可以通过在生成响应之前为模型提供相关背景来使新信息对模型可用。
本节我们简要介绍如何基于 transformers、peft 等框架,对 Phi-3-mini-4k-Instruct 模型进行 Lora 微调。 Lora 是一种高效微调方法,深入了解其原理可参见博客:知乎|深入浅出 Lora。 这个教程会在同目录下给大家提供一个 nodebook 文件,来让大家更好的学习。 https://www.codewithgpu.com/i/datawhalechina/self-llm/Phi-3-Lora 在本节教程里,我们将微调数据集放置在根目录 /dataset。 mini-4k-instruct', cache_dir='/root/autodl-tmp', revision='master') 指令集构建 LLM 的微调一般指指令微调过程。 所谓指令微调,是说我们使用的微调数据形如: { "instruction": "回答以下用户问题,仅输出答案。", "input": "1+1等于几?"
应用2.1 垂直领域微调医疗法律金融教育科技电商网络安全农业2.2 LangChain应用2.3 其他应用3. 数据集预训练数据集SFT数据集偏好数据集4. LLM训练微调框架5. ChatGLM3-6B地址:https://github.com/THUDM/ChatGLM3图片简介:ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上 ,ChatGLM3-6B 引入了如下特性:更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略;更完整的功能支持 ChatGLM3-6B-Base、长文本对话模型 ChatGLM3-6B-32K。 轩辕在BLOOM-176B的基础上针对中文通用领域和金融领域进行了针对性的预训练与微调,它不仅可以应对通用领域的问题,也可以解答与金融相关的各类问题,为用户提供准确、全面的金融信息和建议。
监督式微调在计算机视觉、自然语言处理等领域中得到了广泛应用。然而监督也存在一些缺点。首先,需要大量的标注数据用于目标任务的微调,如果标注数据不足,可能会导致微调后的模型表现不佳。 随着大语言模型的发展,模型的参数量越来越大,比如 GPT-3 参数量已经高达 1750 亿,因此,微调所有模型参数变得不可行。 当使用自适应优化器时,由于不需要计算梯度以及保存太多模型参数,LoRA 使得微调效果更好,并将微调的硬件门槛降低了 3 倍。 LoRA 与其它多种微调方法不冲突,可以与其它微调方法相结合,比如下节实训将要介绍的前缀调优方法等。 3. 监督微调常见任务:1.用中文预训练BERT模型完成中文实体识别任务 2.训练语言模型GPT3 3.UIE模型在垂直领域的数据集上微调 常见误区:在ImageNet上的预训练的模型再来训练目标检测任务
然而,通用嵌入模型在处理特定领域任务时往往存在性能瓶颈。微调技术为解决这一问题提供了有效途径。本文将深入探讨嵌入模型微调的核心原理,并以AI职位匹配为例,详细阐述基于对比学习的微调实现过程。 基于对比学习的嵌入微调方法 嵌入微调通过在特定任务数据上进行额外训练来调整预训练模型的表示能力。这种方法特别适用于需要匹配不同长度文本(如简短查询与详细文档)或理解领域特定术语的场景。 例如,在云计算领域,"扩展"和"实例"等术语具有专门的技术含义,通用模型可能无法准确表示这些概念。 对比学习是实现嵌入微调的核心技术。 微调后的模型在测试集上实现了100%的准确率,充分证明了针对特定领域进行模型优化的必要性和可行性。 嵌入模型微调不仅解决了通用模型在专业领域表现不佳的痛点,更为构建高质量的语义搜索系统提供了切实可行的技术路径。
指令跟随微调 PATTERN: internlm2 ------------------------------- internlm2_1_8b_full_alpaca_e3 internlm2_1_8b_full_custom_pretrain_e1 xtuner train 命令用于启动模型微调进程。该命令需要一个参数:CONFIG 用于指定微调配置文件。 对于全量微调的模型(full)其实是不需要进行整合这一步的,因为全量微调修改的是原模型的权重而非微调一个新的 Adapter ,因此是不需要进行模型整合的。 增量预训练微调 定义一些基本方法。 在 PART 2 的部分,由于我们复制的配置文件是全参数微调的配置,而我们希望使用 QLoRA 算法进行微调,所以可以添加 QLoRA 算法的配置。
在构建大语言模型应用程序时通常有两种常见的方法来整合专有和特定领域的数据:检索增强生成和微调。检索增强生成通过外部数据增强提示,而微调将额外的知识整合到模型本身中。 本文涉及的是农业研究,目标是生成该特定领域的答案。因此研究的起点是农业数据集,它被输入到三个主要组件中:问答生成、检索增强生成和微调过程。 3、LLMs 在不同行业潜在应用的影响:对于想要建立 RAG 和微调技术在 LLMs 中应用的流程而言,本文走出了开创性的一步,并促进了多个行业之间的创新和合作。 这些实验探索以下领域: 问答质量 上下文研究 模型到度量的计算 组合生成与分别生成对比 检索消融研究 微调 问答质量 该实验评估了三个大语言模型,即 GPT-3、GPT-3.5 和 GPT-4,在不同上下文设置下生成的问答对的质量 当包含上下文时,与 GPT-3 相比,GPT-3.5 的覆盖率略有增加,而 GPT-4 保持了最高的覆盖率。
当时,最先进的领域应用通过监督微调(SFT)构建,即使用标注数据对预训练模型进行进一步训练,以适应自己的领域和下游任务。然而,随着大型模型(>1B 参数)的兴起,微调的问题变得更加复杂。 1.3 处理代表性不足的领域尽管 LLM 经过大量通用数据训练,但它们并不总是能够掌握每个小众领域的细微差别、术语或特定性。在法律、医疗或金融等领域,微调已被证明可以提高下游任务的准确性。 我们提供两个示例:如文章中所述,患者的病历包含高度敏感的数据,通常不在公共领域中出现。因此,基于 LLM 的病历总结系统需要进行微调。 我们提供三个示例:微调 LLM 以更好地使用或忽略来自检索器的上下文微调 LLM 评审模型来评估其他 LLM 的指标,如扎根性、合规性或有用性微调 LLM 来增加上下文窗口2 微调与其他领域适应技术的比较 3 总结请参考上述问题,以指导你是否需要 RAG 和/或微调,并通过内部实验来分析错误并理解可能的指标提升。最后,微调探索确实需要一个稳健的数据收集和数据改进策略,我们建议在开始微调之前进行这一步。
作者 | BroLin 出品 | 对白的算法屋 从 BERT 开始,预训练模型(PLMs)+微调(finetune)已经成为了NLP领域的常规范式。 可以发现仅仅是参数初始化不同,分类器的性能足足有3-4个百分点的变化。 通过比较微调前后不同簇之间的距离,可以量化微调之后的词向量表示的变化。 使用原始train对BERT~small~进行微调,微调前后均只使用subtrain训练分类器。分类器的训练不参与微调。 如下图所示,微调前分类器在subtest和test上的学习曲线一致。 比如,微调前蓝点和红点相距很近,微调后两个类别的距离增大了(L2>L1)。高层Layer12分离不同类别的能力比低层Layer1更强(L3>L2)。
监督式微调在计算机视觉、自然语言处理等领域中得到了广泛应用。然而监督也存在一些缺点。首先,需要大量的标注数据用于目标任务的微调,如果标注数据不足,可能会导致微调后的模型表现不佳。 随着大语言模型的发展,模型的参数量越来越大,比如 GPT-3 参数量已经高达 1750 亿,因此,微调所有模型参数变得不可行。 当使用自适应优化器时,由于不需要计算梯度以及保存太多模型参数,LoRA 使得微调效果更好,并将微调的硬件门槛降低了 3 倍。 LoRA 与其它多种微调方法不冲突,可以与其它微调方法相结合,比如下节实训将要介绍的前缀调优方法等。 3. 监督微调常见任务:1.用中文预训练BERT模型完成中文实体识别任务 2.训练语言模型GPT3 3.UIE模型在垂直领域的数据集上微调 常见误区:在ImageNet上的预训练的模型再来训练目标检测任务