DeepSeek 大模型微调理论详解与参数配置
在大模型的微调过程中,**LoRA(低秩适配)**参数设置是提升训练效率和性能的关键。通过减少需更新的参数量,LoRA 能够在维持模型性能的同时显著降低计算成本。
然而,LoRA 并非唯一影响训练效果的因素。诸如学习率、批次大小以及优化器(如 AdamW)等参数同样在微调过程中起着至关重要的作用。
学习率决定了模型每次更新的幅度,批次大小则影响了每次训练中样本的处理量,而优化器则确保模型参数的平稳更新。了解并灵活调整这些训练参数,不仅能帮助你在微调过程中得心应手,更能快速提升训练效果。
本文将深入探讨多轮对话数据集的微调方法,详细解析 LoRA 参数原理及训练超参数的配置策略。
1. 多轮对话数据构建
多轮对话微调其实和单轮对话(或者说指令数据)差不多,在我看来其实类似于多个指令数据的组合。单轮对话数据处理的时候只需要处理输入和输出即可,训练的时候输入置为 -100,输出不变,而多轮对话微调数据集以及标签的构造方式则更为复杂。
1.1 训练不充分方案
第一种方法是,只把最后一轮机器人的回复作为要学习的标签,其它地方作为语言模型概率预测的 condition,无需学习,赋值为 -100,忽略这些地方的 loss。
inputs = <user1> <assistant1> <user2> <assistant2> <user3> <assistant3>
labels = <-100> <-100> <-100> <-100> <-100> <assistant3>
这种方法由于没有对中间轮次机器人回复的信息进行学习,因此存在着严重的信息丢失,是非常不可取的。
1.2 训练不高效方案
第二种方法是,把一个多轮对话拆解,构造成多条样本,以便对机器人的每轮回复都能学习。
inputs1 = <user1> <assistant1>
labels1 = <-100> <assistant1>
inputs2 = <user1> <assistant1> <user2> <assistant2>
labels2 = <-100> <-100> <-100> <assistant2>
inputs3 = <user1> <>
labels3 = <-100> <-100> <-100> <-100> <-100>


