大模型微调技术调研

部署运行你感兴趣的模型镜像

微调技术调研

一、技术对比

(一)长文本处理、知识库与微调对比

对比维度长文本处理知识库微调
核心目标理解和生成长篇内容,适用于需要连贯叙述的任务提供背景知识,增强回答能力,通过外部信息补充提升回答准确性优化模型在特定任务或领域的表现,通过调整模型参数使其适应特定需求
优点连贯性强,适合复杂任务,能够处理大量信息灵活性高,可随时更新知识库,快速适应新信息性能提升,定制化强,能够针对特定任务进行优化
缺点资源消耗大,上下文限制,处理长文本时可能超出内存依赖检索,实时性要求高,检索系统性能影响回答质量需要标注数据,硬件要求高,训练成本大
适用场景写作助手、阅读理解,需要处理大量文本信息的任务智能客服、问答系统,需要基于外部知识库提供答案的任务专业领域、特定任务、风格定制,需要模型具备特定能力的任务
额外数据不需要,但可能需要优化上下文长度,调整模型以适应长文本需要知识库数据,外部结构化或非结构化信息需要特定领域的标注数据,用于模型训练的有监督数据
重新训练不需要,但可能需要优化模型,调整参数以适应长文本处理不需要,只需更新知识库,保持检索系统的实时性需要对模型进行进一步训练,通过多轮迭代提升性能
技术实现扩大上下文窗口,调整模型的注意力机制检索+生成(RAG),结合检索技术和语言生成调整模型参数,通过有监督微调或强化学习优化
数据依赖无需额外数据,依赖模型自身的语言知识依赖结构化知识库,外部信息的准确性和完整性至关重要需要大量标注数据,高质量的有监督数据是性能提升的关键
实时性静态(依赖输入内容),处理速度受文本长度影响动态(知识库可随时更新),检索速度决定实时性静态(训练后固定),模型响应速度相对稳定
资源消耗高(长文本计算成本高),内存需求大中(需维护检索系统),检索和生成的计算资源平衡高(训练算力需求大),尤其是大规模模型的训练和部署
灵活性中(适合单次长内容分析),任务适应性有限高(可扩展多知识库),能够快速切换和扩展知识领域低(需重新训练适应变化),模型调整成本较高

(二)微调与RAG选择

  • 微调
    • 适合:拥有充足的数据集,能够进行大规模有监督训练的任务
    • 优势:能够直接提升模型的固有能力,无需依赖外部检索,模型性能更加稳定和可靠
    • 缺点:硬件成本高,训练周期长,需要大量的计算资源和时间投入
  • RAG
    • 适合:非结构化数据、动态更新的数据,需要快速响应和知识更新的任务
    • 缺点:每次回答问题前需耗时检索知识库,回答质量依赖于检索系统的性能,实时性要求高
  • 总结
    • 少量企业私有知识:最好微调和 RAG 都做,实现模型性能和知识更新的双重保障;资源不足时优先 RAG,快速构建知识驱动的应用
    • 动态、非结构化知识场景,应对复杂多变的运维知识需求(会动态更新的知识):RAG,能够实时获取最新信息,保持回答的时效性和准确性
    • 高频结构化任务,适合大量重复、规律性强的知识(垂直领域知识):微调,通过深度训练提升模型在特定任务上的性能和效率

二、训练分类

(持续)预训练(CPT) +有监督微调训练(SFT)+强化学习(DPO)

(一)(持续)预训练(CPT)

  1. 收集大量无标签的数据,构建广泛的数据集以覆盖各种语言模式和知识领域
  2. 定义自监督任务,如预测被掩盖的部分或生成下一个词,通过掩码语言模型等技术让模型学习语言的内在规律
  3. 使用这些任务训练模型,让模型学习数据中的模式和结构,不断提升其语言理解和生成能力

(二)有监督微调训练(SFT)

  1. 加载预训练模型,将其作为基础模型进行进一步的定制化训练
  2. 准备特定任务的有标签数据集,针对具体应用场景收集和标注高质量的训练数据
  3. 调整模型的输出层以适应新任务,根据任务需求修改模型的结构和参数
  4. 使用有标签数据对模型进行训练,优化模型参数,通过反向传播和梯度下降等算法调整模型权重

(三)强化学习(DPO)

  1. 定义奖励函数,明确哪些行为会获得奖励,根据任务目标设计合理的评价指标
  2. 模型生成多个候选响应,通过采样或束搜索等方法产生多样性的输出
  3. 使用奖励模型对这些响应进行打分,评估每个候选响应的质量和相关性
  4. 根据奖励信号调整模型参数,优化策略,通过强化学习算法更新模型,提升其生成优质响应的能力

三、有监督微调(SFT)

通过提供人工标注的数据,进一步训练预训练模型,让模型能够更加精准地处理特定领域的任务,适应复杂的业务场景和专业需求

(一)微调算法分类

  • 全参数微调(Full Fine-Tuning)
    • 对整个预训练模型进行微调,会更新所有参数,使模型能够全面适应新任务
    • 优点:因为每个参数都可以调整,通常能得到最佳的性能,能够适应不同任务和场景,充分利用训练数据进行深度优化
    • 缺点:需要较大的计算资源并且容易出现过拟合,尤其是在数据量有限的情况下
  • 部分参数微调(Partial Fine-Tuning)
    • 只更新模型的部分参数(例如某些层或模块),选择性地调整模型的关键部分
    • 优点:减少了计算成本,加快训练速度;减少过拟合风险,在数据量较小的任务中表现更稳定;能够以较小的代价获得较好的结果,平衡性能和资源消耗
    • 缺点:可能无法达到最佳性能,若选择的参数调整范围不合理,可能限制模型的优化空间
    • 最著名算法:LoRA(Low-Rank Adaptation),通过低秩分解高效地调整模型参数,既降低了计算复杂度,又保持了模型的性能提升潜力

四、微调基本流程

(一)选定预训练模型

根据任务需求和资源情况,选择合适的预训练模型,考虑模型的规模、性能和适用领域等因素

(二)准备数据集(训练集、验证集)

收集和标注高质量的训练数据,并合理划分训练集和验证集,确保数据的代表性和多样性

(三)设定超参数

  • 修改其他训练相关参数,如学习率、训练轮数、截断长度、验证集比例等,根据任务特点和模型特性进行调整
超参数类型默认值(以7B为例)描述
learning_ratefloat5e-6学习率,用于控制模型参数的调整幅度,影响模型的收敛速度和稳定性
num_train_epochsint6训练数据量被重复使用的次数,决定了模型对训练数据的学习深度
per_device_train_batch_sizeint2每个GPU在一次训练迭代中处理的样本数量,较大的批次大小可以提高效率,但会增加显存需求,需根据硬件资源合理设置
gradient_accumulation_stepsint2梯度累积步骤数,用于在有限显存下模拟更大的批次大小,增强训练效果
max_lengthint1024模型在一次训练中处理的最大token长度,限制输入文本的长度以适应内存限制
lora_rankint8LoRA维度,决定了参数调整的规模和效率,影响模型的适应能力和计算成本
lora_alphaint16LoRA权重,控制参数更新的强度,调节模型对新任务的敏感度
lora_dropoutfloat0LoRA训练的丢弃率,通过在训练过程中随机丢弃神经元防止过拟合,增强模型的泛化能力
lorap_lr_ratiofloat16LoRA+学习率比例(λ = ηβ/ηA),ηA、ηβ分别是adapter matrices A与B的学习率。LoRA+可为关键部分使用不同学习率以提升性能和加快收敛,且不增加计算需求。当lorap_lr_ratio设为0时,表示使用普通LoRA而非LoRA+。
  • 学习率(Learning Rate):决定了模型每次更新时权重改变的幅度。过大可能会错过最优解;过小会学得很慢或陷入局部最优解
    • 调整太小(低学习率):虽然稳定但进步缓慢,训练时间长
    • 调整适中(理想学习率):快速掌握正确解法,平衡收敛速度和模型性能
    • 调整太大(高学习率):容易矫枉过正,导致模型不稳定
  • 训练轮数(Epochs):太少模型会欠拟合(没学好),太大会过拟合(学过头了),需根据数据量和模型复杂度合理设置
  • 最大梯度范数(Max Gradient Norm):当梯度的值超过这个范围时会被截断,防止梯度爆炸现象,稳定训练过程
  • 最大样本数(Max Samples):每轮训练中最多使用的样本数,控制训练的数据规模,避免内存溢出
  • 计算类型(Computation Type):在训练时使用的数据类型,常见的有 float32 和 float16。在性能和精度之间找平衡,根据硬件支持和任务要求选择合适的数据格式
  • 截断长度(Truncation Length):处理长文本时如果太长超过这个阈值的部分会被截断掉,避免内存溢出,同时尽量保留关键信息
  • 批处理大小(Batch Size):由于内存限制,每轮训练我们要将训练集数据分批次送进去,这个批次大小就是 Batch Size,需根据显存容量合理设置
  • 梯度累积(Gradient Accumulation):默认情况下模型会在每个 batch 处理完后进行一次更新一个参数,但你可以通过设置这个梯度累计,让他直到处理完多个小批次的数据后才进行一次更新,模拟更大的批次大小,提升训练效果
  • 验证集比例(Validation Set Proportion):数据集分为训练集和验证集两个部分,训练集用来学习训练,验证集用来验证学习效果如何,评估模型的泛化能力
  • 学习率调节器(Learning Rate Scheduler):在训练的过程中帮你自动调整优化学习率,根据训练进度和模型表现动态调节学习率,加速收敛并提升性能

(四)执行模型微调训练

  • 选择微调算法 Lora,根据任务需求和模型特性确定是否使用LoRA+等变体
  • 添加数据集,确保数据格式正确和路径配置无误
  • 在训练过程中注意观察损失曲线,尽可能将损失降到最低,监控模型的学习进度和性能表现
    • 如损失降低太慢,尝试增大学习率,但需防止模型震荡
    • 如训练结束损失还呈下降趋势,增大训练轮数确保拟合,但要注意过拟合风险

(五)测试微调后模型效果

  • 观察损失曲线的变化;观察最终损失,评估模型在训练集和验证集上的性能
  • 在交互页面上通过预测/对话等方式测试微调好的效果,实际应用场景中验证模型的表现
  • 若微调效果不理想,可以:
    • 使用更强的预训练模型,提升模型的初始性能和学习能力
    • 增加数据量,提供更多样化的训练样本,增强模型的泛化能力
    • 优化数据质量(数据清洗、数据增强等,可学习相关论文如何实现),提高数据的准确性和代表性
    • 调整训练参数,如学习率、训练轮数、优化器、批次大小等等,根据模型反馈进行参数微调

五、微调工具链

(一)微调常见实现框架/技术

  • Llama-Factory:https://github.com/hiyouga/LLaMA-Factory,提供灵活的微调框架和丰富的配置选项,支持多种模型架构和任务类型
  • Unsloth:https://github.com/unslothai/unsloth,专注于高效微调和模型优化,具备快速训练和部署的能力
  • 阿里云ModelGallery : https://help.aliyun.com/zh/pai/use-cases/one-click-fine-tuning-of-deepseek-r1-distill-models?spm=a2c4g.11186623.0.0.27237cdciWi8uN,提供一站式微调解决方案,集成丰富的模型资源和优化工具,简化微调流程

(二)在线微调工具

  • 硅基流动:https://cloud.siliconflow.cn/fine-tune,云端微调平台,具备便捷的数据管理、模型训练和效果评估功能,适合快速实验和开发
  • colab:https://colab.research.google.com/,在线Jupyter笔记本环境,支持GPU加速,可灵活搭建和运行微调实验,便于代码调试和结果展示

(三)微调参数曲线图

  • https://wandb.ai/2608794661-?product=models,提供详细的训练参数变化曲线和模型性能指标,辅助分析和优化微调过程

(四)模型库&&数据集库

  • huggingface:https://huggingface.co/datasets,丰富的开源模型和数据集资源,涵盖多种语言和领域,为微调提供广泛的基础支持
  • modelscope:https://modelscope.cn/datasets,专业的模型和数据集平台,提供高质量的预训练模型和行业数据集,助力高效微调

六、面临的难点

(一)数据集整理(数据质量高)

1. 数据标注
  • 分类任务:为文本数据添加类别标签。例如,在情感分析任务中,将文本标记为“正面”、“负面”或“中性”,通过人工标注或自动化工具实现
  • 序列标注:为文本中的每个词或字符添加标签。例如,在命名实体识别任务中,为每个词标注是否为人名、地名等,构建详细的标注体系
  • 生成任务:为输入文本提供对应的输出文本。例如,在机器翻译任务中,为源语言句子提供目标语言的翻译,建立平行语料库
2. 数据清洗
  • 去除重复数据:删除数据集中的重复样本,避免模型过拟合,提高数据的多样性和有效性
  • 处理缺失值:通过删除、填充或插值等方法处理数据中的缺失值,确保数据的完整性
  • 纠正错误数据:修正数据中的错误值,如错误的拼写、不合理的数值等,提升数据的准确性
  • 统一数据格式:将数据转换为一致的格式,如统一日期格式、数值格式等,便于模型处理和训练
  • 敏感信息:人名、服务器地址、ip、设备号等敏感信息剔除,保护用户隐私和数据安全
3. 数据去噪
  • 去除无关内容:删除文本中的无关字符、符号、HTML 标签等,净化文本内容
  • 拼写检查:纠正文本中的拼写错误,提高文本质量,增强模型的理解能力
  • 正则表达式清理:使用正则表达式去除特定模式的噪声,如 URL、邮箱地址等,精准提取有效信息

(二)硬件要求

微调周期长,对计算资源要求高

示例:

  • GPU:2X3090 (24G显存),提供强大的并行计算能力,加速模型训练
  • CPU:i7-12700kf,高性能处理器,处理数据加载和预处理等任务
  • 内存:128G,充足的内存空间,支持大规模数据和模型的加载
  • 磁盘: 2T ,大容量存储,保存数据集、模型参数和训练日志
  • 基础模型:Qwen-2.5-7b-instruct,选择合适的预训练模型作为基础
  • 数据量: 6GB,足够的训练数据,确保模型学习到丰富的模式和知识
  • 训练次数: 3.0轮*3(三阶段),多轮训练,逐步优化模型性能
  • 耗时: 7天,较长的训练周期,需合理安排时间和资源

PAI-Model Gallery 支持六种蒸馏模型的 LoRA 监督微调训练,下表中给出了在默认参数和数据集的情况下,所推荐的最低配置:

蒸馏模型基模型支持的训练方式最低配置
DeepSeek-R1-Distill-Qwen-1.5BQwen2.5-Math-1.5BLoRA 监督微调1 卡 A10(24 GB 显存)
DeepSeek-R1-Distill-Qwen-7BQwen2.5-Math-7BLoRA 监督微调1 卡 A10(24 GB 显存)
DeepSeek-R1-Distill-Llama-8BLlama-3.1-8BLoRA 监督微调1 卡 A10(24 GB 显存)
DeepSeek-R1-Distill-Qwen-14BQwen2.5-14BLoRA 监督微调1 卡 GU8IS(48 GB 显存)
DeepSeek-R1-Distill-Qwen-32BQwen2.5-32BLoRA 监督微调2 卡 GU8IS(48 GB 显存)
DeepSeek-R1-Distill-Llama-70BLlama-3.3-70B-InstructLoRA 监督微调8 卡 GU100(80 GB 显存)

(三)微调效果磨合

  • 微调效果评估:通过多种指标和方法全面评估微调后模型的性能,包括准确率、召回率、F1值等
  • 参数调整重新微调训练:根据评估结果,针对性地调整超参数,如学习率、批次大小等,进行多轮训练以进一步提升模型效果

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值