大模型微调技巧

写在前面

大家好,我是刘聪NLP。

大模型时代,指令微调曾经成了算法工程师们必无法少的技艺。而在指令微调环节中,咱们往往会从数据数量和数据品质两个维度来对模型启动调优。

当天给大家带来一个新的方法-MoDS,一种面向模型的指令数据选用方法-《MoDS: Model-oriented>

paper: https:github: https:

MoDS方法

MoDS方法关键经过品质、笼罩范畴、必要性三个目的来启动数据的挑选,其中数据品质是为了保障所选的指令数据的疑问和答案都足够好;数据笼罩范畴是为了让所选用的数据中指令足够多样、触及常识范畴更广;数据必要性是选用关于大模型较复杂、较难或不长于的数据以填补大模型才干的空白。全体流程如下图所示,

品质挑选

关于数据启动品质过滤时,驳回OpenAssistant的reward-model-debertav3-large-v2模型(一个基于DeBERTa架构设计的鼓励模型)对数据启动品质打分。讲原始数据的Instruction、Input、Output的三个局部启动拼接,送入到鼓励模型中,失掉一个评分,当评分超越α时,则以为数据品质达标,构建一份高品质数据集-Data1。

多样性挑选

为了防止所选品质数据高度相似,经过K-Center-Greedy算法启动数据挑选,在最大化多样性的状况下,使指令数据集最小。失掉种子指令数据集(Seed Instruction>

在该步骤中,驳回BERT模型为指令数据生成句向量来计算不同数据之间的距离。

必要性挑选

不同的大型言语模型在预训练环节中所学到的常识和具备的才干不同,因此在对不同的大型言语模型启动指令微调时,所需的指令数据也须要不同。

关于一条指令,假设给定的大型言语模型自身能够生成较好的回答,则说明给定的大型言语模型具备解决该指令或许这类指令的才干,反之亦然,并且哪些不能解决的指令关于模型微调来说更为关键。

模型训练

最终应用种子指令数据集和增强指令数据集一同对模型启动指令微调,取得最终模型。

试验结果

训练数据

训练数据有两种,一种是独自的Alpaca数据集(52k),一种时混合数据集(214k),蕴含HC3数据集、Alpaca数据集、Alpaca-evol-instruct数据集、Dolly-v2数据集、InstructWild数据集和LIMA数据集。

测试数据关键蕴含5个测试集,区分为Koala数据集(180)、WizardLM数据集(218)、Self-instruct数据集(252)、Vicuna数据集(80)和LIMA数据集(300)。

训练超参

模型基座驳回LLaMA2-7B模型,训练环节中学习率为2e-5,warmup的比率为0.03,权重衰减为0.0,批大小为128,训练轮数为3。在品质评价和必要性评价环节中,Alpaca数据集的α和β均设置为0.0,混合数据集的α和β区分设置为1.0和-1.0。

在模型测试环节中,驳回ChatGPT和GPT4作为裁判,对模型生成结果从关系性和准确性两个角度启动打分,每个角度的评分从1到10。在评价两个模型胜、平、负时,当两个角度评分都高时为胜;当两个角度评分一高一低时为平;当两个角度评分都低时为负。

结果剖析

在Alpaca数据集中经过MoDS方法失掉1k数据的成果要优于全量数据训练的结果,如下图所示。

在Alpaca数据集中MoDS方法在选用2k数据时,训练成果优于基于IFD的智能选用方法,如下表所示。

在混合数据及中MoDS方法失掉4k数据的成果片面优于全量数据训练的结果,如下图所示。

验证指令多样性选用的关键性,与随机选用启动对比,如下图所示。

验证必要性挑选的关键性,与仅用种子数据训练的模型启动对比,如下图所示。

写在最后

大模型时代,大少数算法工程师曾经变成了数据工程师,如何结构出让模型体现更好地数据,变成了大家的日常上班,但千万不要小看这份上班,往往细节选择成败。

本文转载自​​,作者:

您可能还会对下面的文章感兴趣: