Datawhale AI 夏令营第四期之大语言模型微调-学习笔记01
yyfine. 2024-08-27 16:01:27 阅读 51
本人为纯小白,以下为学习过程中的一些笔记,欢迎指正~
附上datawhale夏令营链接Datawhale
https://linklearner.com/activity/14感兴趣的可以戳链接关注哦~
一、基础概念
1、大语言模型
大语言模型即为Large Language Model(简称LLM)。从百科定义上来看,大语言模型是使用大量文本数据训练的深度学习模型,他可以生成自然语言文本或理解语言文本的含义。简单来说就是能够理解人给出的指令要求,并给出回应。例如大家熟悉的ChatGPT、文心一言等都是典型的大语言模型。
2、大语言模型微调
大语言模型微调(fine-tuning)是指在一个已经训练好的LLM的基础上,通过一个小而特定的数据集进行额外的训练,以使该模型可以在特定的领域和要求下表现地更好。
二、微调的步骤
1.选择基础模型:需要选择一个模型作为后续微调的基础。例如本次夏令营项目依托的科大讯飞的比赛中,指定的基础模型为spark-13b。
2.准备数据集:准备我们所需的特定要求下的相应数据作为微调的数据集,一般会较预训练的数据集要小。
3.模型训练:让基础模型在这个新的数据集下进行训练,以满足预设需求。
4.评估和优化:对训练后的模型进行评估,如若效果不理想,则需进一步训练。
这里引用夏令营的一张图片,可对微调过程做详细说明:
三、微调的方法
微调方法主要可以分为全微调和部分微调两大类:
1.全微调(Full Fine-tuning):意即预训练模型中的所有层都参与微调,适用于目的模型与基础模型相差较大或需要高度灵活性的情况,较之部分微调效果更好,但需要更大的计算资源。
2.部分微调:只训练基础模型的顶层或少数几层,而保持底层参数不变,适用于目的模型与基础模相似或数据集较小的情况,较之全微调需要的计算资源较少,但性能可能会有所降低。这样的微调方法有:LORA,Adapter tuning,Prefix-Tuning,Prompt Tuning等。
注:由于本次夏令营项目依托的比赛中,为“零代码微调”,意即在不编写任何代码的情况下,通过可视化操作或简单的配置操作,对LLM进行微调,故第四部分将针对此种情况下可做的微调途径做说明。
四、零代码微调下的微调途径
1、改变训练的“学习率”lr和训练次数
(1)学习率:用于控制模型参数更新的步长或变化速度。学习率过小会导致损失(loss)降低缓慢,而过大会导致损失无法下降到最优值,而在其附近波动。
(2)训练次数:增加训练次数可以有效提高模型的性能,但过高的训练次数会导致过拟合(Overfitting),即在训练过程中过度学习训练数据的特征和噪声。
附上讯飞大模型训练网站上,对于学习率的注解:
2、优化数据集
(1)数据清洗:去除数据集中的噪声,异常值,重复项和无关项,确保数据的准确性和一致性。
(2)数据预处理:包括数据标准化、归一化、离散化等。
(3)数据增强:通过技术手段增加数据量,防止过拟合,提高泛化能力。
(4)数据平衡:通过重采样平衡数据样本,如本次比赛中我们可以通过平衡语文和英语的样本数量进行更好的训练。
3、优化prompt
prompt作为生成模型的输入方式,其设计和优化直接影响模型的输出质量和任务适应性。故在本次比赛中,我们可以根据高考考纲的内容对prompt进行合理优化,或使用开放平台上的prompt优化协助我们的编写。
4、通过大语言模型对微调后的模型进行评估
同时,由于比赛的提交次数限制,仅仅依靠少量的提交返回的分数来评估是不足够的,故我们可以利用大语言模型对微调后的模型进行评估,以便于我们了解模型的效果好坏。
以上,便是此次笔记的全部内容,欢迎大家指正~
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。