构建模型蒸馏训练任务
创建微调训练任务
创建NLP大模型微调任务步骤如下:
- 登录ModelArts Studio平台,在“我的空间”模块,单击进入所需空间。
- 在左侧导航栏中选择“模型开发 > 模型训练”,单击界面右上角“创建训练任务”。
- 在“选择模型”页面,选择“模型广场 > 大语言模型 > 模型”,单击“确定”进入“创建训练任务”页面。
- 在“创建训练任务”页面,参考表1完成训练参数设置,参数默认值在创建训练任务的时候会带出。
表1 NLP大模型微调参数说明 参数分类
训练参数
参数说明
训练配置
选择模型
可以修改如下信息:
- 来源:选择“模型广场”。
- 类型:选择“大语言模型”,并选择训练所用的基础模型和版本。本案例中选择:Pangu-NLP-N1-Reasoner-128K | V3.0.1.1。
训练类型
选择“微调”。
训练目标
选择“全量微调”
- 全量微调:在模型有监督微调过程中,对大模型的全部参数进行更新。这种方法通常会带来最优的模型性能,但需要大量的计算资源和时间,计算开销较高。
- LoRA微调:在模型微调过程中,只对特定的层或模块的参数进行更新,而其余参数保持冻结状态。这种方法可以显著减少计算资源和时间消耗,同时在很多情况下,依然能够保持较好的模型性能。
高级设置
checkpoints:在模型训练过程中,用于保存模型权重和状态的机制。本案例训练步数较少,因此选择关闭,用户可按照需求进行设置。
开启断点续训后对于未训练完成的模型,可以通过单击训练任务名称,进入“训练结果”页签,通过“编辑训练”入口选中需要进行断点续训的checkpoints进行续训。
- 关闭:关闭后不保存checkpoints,无法基于checkpoints执行续训操作。
- 自动:自动保存训练过程中的所有checkpoints。
- 自定义:根据设置保存指定数量的checkpoints。
训练参数
热身比例
本案例中设置为0.1。
热身比例是指在模型训练过程中逐渐增加学习率的过程。在训练的初始阶段,模型的权重通常是随机初始化的,此时模型的预测能力较弱。如果直接使用较大的学习率进行训练,可能会导致模型在初始阶段更新过快,从而影响模型的收敛。
为了解决这个问题,可以在训练的初始阶段使用较小的学习率,然后逐渐增加学习率,直到达到预设的最大学习率。这个过程就叫做热身比例。通过使用热身比例,可以避免模型在初始阶段更新过快,从而有助于模型更好地收敛。
序列长度
本案例中设置为32768。
sequence_length,训练单条数据的最大长度,超过该长度的数据在训练时将被截断。
数据批量大小
本案例中设置为8。
数据集进行分批读取训练,设定每个批次数据的大小。
通常情况下,较大的数据批量可以使梯度更加稳定,从而有利于模型的收敛。然而,较大的数据批量也会占用更多的显存资源,这可能导致显存不足,并且会延长每次训练的时长。
学习率衰减比率
本案例中设置为0.1。
学习率衰减后的比率,用于控制训练过程中学习率的下降幅度。经过衰减后,学习率的最低值由初始学习率和衰减比率决定。其计算公式为:最低学习率 = 初始学习率 * 学习率衰减比率。也就是说,学习率在每次衰减后不会低于这个计算出来的最低值。
权重衰减系数
本案例中设置为0.1。
通过在损失函数中增加一个与模型权重大小相关的惩罚项,来鼓励模型保持权重较小,从而防止模型过于复杂或过拟合训练数据。
优化器
本案例中设置为adamw。
优化器参数指的是用于更新模型权重的优化算法的相关参数,可以选择adamw。
- adamw是一种改进的Adam优化器,它在原有的基础上加入了权重衰减(weight decay)的机制,可以有效地防止过拟合(overfitting)的问题。
学习率
本案例中设置为0.00002。
学习率决定了每次训练时模型参数更新的幅度。选择合适的学习率非常重要:如果学习率太大,模型可能会无法收敛;如果学习率太小,模型的收敛速度会变得非常慢。
训练轮数
本案例中由于在数据处理时已经对数据复制过三份,所以在此处设置为1。
指完成全部训练数据集训练的次数。
模型保存策略
本案例中未开启checkpoints功能,保持默认值即可。
保存训练中间产物策略,支持按照步数或按照训练epoch保存。按需设置,如果设置为save_checkpoint_steps,会使用save_checkpoint_steps参数的设置。如果设置为save_checkpoint_epoch,会使用save_checkpoint_epoch参数的设置。
Checkpoint保存间隔
本案例中未开启checkpoints功能,保持默认值即可。
save_checkpoint_steps,训练过程中每隔多少个训练步长保存一次模型Checkpoint文件。
Checkpoint保存轮数
本案例中未开启checkpoints功能,保持默认值即可。
训练多少epoch的数据保存一份中间训练产物,可以和save_checkpoint_steps同时设置,根据checkpoint_save_strategy判断是否启用。
eg:2表示每训练2个epoch的数据保存一份中间产物
旋转位置编码
本案例中设置为1000000。
rotary_base,位置编码的基底值,增强模型对序列中位置信息的捕捉能力,数值越大,模型能够处理的序列长度更长,泛化能力更好,建议使用默认值。
Agent微调
本案例中设置为关闭。
训练Agent模型时,可以开启此参数。通过调整训练数据中的Prompt来引导模型在特定领域或任务上,生成更符合预期的回答。
使用此参数前,请先联系盘古NLP模型工程师调整Prompt和训练数据。
训练数据配置
训练集
选择训练模型所需的数据集。要求数据集经过发布操作,操作方法请参见构建模型蒸馏数据集。
验证集
- 若选择“分割训练集”,则需进一步配置数据拆分比例。
- 若选择“选择数据集”,则需选择导入的数据集。
资源配置
计费模式
选择训练当前任务的计费模式。
训练单元
选择训练单元数。
单实例训练单元数
选择单实例训练单元数。
实例数
选择实例数。
订阅提醒
订阅提醒
该功能开启后,系统将在任务状态更新时,通过短信或邮件将提醒发送给用户。
发布模型
开启自动发布
开启自动发布后,模型训练完成的最终产物会自动发布为空间资产,以便对模型进行压缩、部署、评测等操作或共享给其他空间。
基本信息
名称
训练任务名称。
描述
训练任务描述。
表格中展示了本案例所需的微调训练参数,不同模型训练参数存在一定差异,请以前端页面展示为准