创建模型微调流水线
模型微调是指调整大型语言模型的参数以适应特定任务的过程,适用于需要个性化定制模型或者在特定任务上追求更高性能表现的场景。这是通过在与任务相关的数据集上训练模型完成,所需的微调量取决于任务的复杂性和数据集的大小。在深度学习中,微调用于改进预训练模型的性能。
前提条件
- 已订购大模型微调服务API在线调用-SFT局部调优,订购方法请参见购买AI原生应用引擎按需计费资源。
- 已创建格式为“对话文本”的微调数据集。
- 已收藏待微调的预置模型。
- 需要具备AI原生应用引擎管理员或开发者权限,权限申请操作请参见AppStage组织成员申请权限。
创建微调任务
- 在AI原生应用引擎的左侧导航栏选择“模型中心 > 模型微调流水线”。
- 在“模型微调流水线”页面右上角单击“创建任务”,进入“创建微调任务”页面。
- 参照表1配置基础信息、模型及数据。
表1 创建微调任务参数说明 参数名称
参数说明
基础信息
任务名称
自定义任务名称。支持英文、数字、中划线(-)、下划线(_),长度1-64个字符,仅支持字母或下划线开头。
任务描述(可选)
自定义任务相关的描述。
模型配置
微调前模型
在下拉列表中选择我收藏的模型。
训练模式
默认为“LoRA”。
LoRA(Low-Rank Adaptation,低秩适应),是一种将预训练模型权重冻结,并将可训练的秩分解矩阵注入Transformer架构每一层的技术,该技术可减少下游任务的可训练参数数量。
微调后名称
自定义模型微调后的新名称。支持英文、数字、中划线(-)、下划线(_),长度1-64个字符,仅支持字母或下划线开头。
数据配置
数据集
在下拉列表中选择数据集。
数据集版本
在下拉列表中选择数据集版本。
训练数据比例
训练数据比例是指用于训练模型的数据集与测试数据集的比例。通常情况下,会将数据集分成训练集和测试集两部分,其中训练集用于训练模型,测试集用于评估模型的性能。
在实际应用中,训练数据比例的选择取决于许多因素,例如可用数据量、模型复杂度和数据的特征等。通常情况下,会选择较大的训练数据比例,以便训练出更准确的模型。一般来说,训练数据比例在70%到90%之间是比较常见的选择。
验证数据比例
验证数据比例是指在模型训练过程中,将数据集分为训练集、验证集和测试集三部分,其中验证集的比例是指在训练集和验证集的比例中,验证集所占的比例。
通常情况下,数据集会按照一定比例划分为训练集、验证集和测试集,比如常见的划分比例是60%训练集、20%验证集和20%测试集。在这种情况下,验证集的比例就是20%。
验证集的比例对于机器学习模型的性能评估非常重要。如果验证集的比例过小,可能导致模型在验证集上表现不够稳定,无法准确评估模型的性能。如果验证集的比例过大,可能会导致训练集的样本量不足,影响模型的训练效果。因此,在选择验证集的比例时,需要根据具体情况进行调整,以保证模型的性能评估和训练效果的准确性。
测试数据比例
测试数据比例是指在模型训练中,将数据集分为训练集和测试集两部分,测试数据比例指测试集占总数据集的比例。
通常,测试数据比例在20%到30%之间较为常见,但具体比例取决于数据集的大小和质量,以及模型的复杂度和训练时间等因素。较小的测试数据比例可能导致过拟合,而过大的比例则可能导致欠拟合。因此,选择适当的测试数据比例对于训练出准确可靠的机器学习模型非常重要。
任务配置
资源池
选择执行任务的资源池,在下拉列表可以看到各资源池的可用卡数,根据实际情况选择。
- 单击“下一步”,分别参照表2和表3配置基础参数、高阶参数。
表2 基础参数配置说明 参数英文名
参数中文名
参数说明
gradient_accumulation_steps
梯度更新累积步数
使用累积梯度进行模型参数更新时,需要累计的步数。
learning_rate
学习率
学习率是每一次迭代中梯度向损失函数最优解移动的步长。
weight_decay
权重衰减因子
对模型参数进行正则化的一种因子,可以缓解模型过拟合现象。
num_train_epochs
训练epoch数
优化算法在完整训练数据集上的工作轮数。
lr_scheduler_type
学习率调度方法
调整学习率的方法,用于在模型训练时动态调整学习率。
target_modules
LoRA微调层
LoRA微调的layer名关键字。
baichuan系列:down_proj,gate_proj,up_proj,W_pack,o_proj
chatglm系列:dense_4h_to_h,dense_h_to_4h,dense,query_key_value
lora_rank
秩
LoRA微调中的秩。
lora_alpha
缩放系数
LoRA微调中的缩放系数。
lora_dropout
遗忘率
LoRA微调中的dropout比例。
表3 高阶参数配置说明 类别
参数英文名
参数中文名
参数说明
训练阶段超参
per_device_train_batch_size
单批次训练数据条数
训练的batch size。
per_device_eval_batch_size
单批次验证数据条数
验证时的batch size。
max_steps
训练最大步数
模型训练的最大步数。
warmup_ratio
学习率热启动比例
学习率热启动参数,一开始以较小的学习率去更新参数,然后再使用预设学习率,有效避免模型震荡。
warmup_steps
学习率热启动步数
学习率热启动的过程中预设的步数。
bf16
计算精度
是否开启bf16。
fp16
计算精度
是否开启fp16。
gradient_checkpointing
梯度存档
是否开启梯度检查点。
max_seq_length
最大token长度
训练样本最大token长度。
seed
随机因子
随机种子。
LoRA参数
modules_to_save
全量微调的layer名
全量微调时,模型的layer名称。
验证日志及保存策略配置
evaluation_strategy
验证策略
模型验证策略。
logging_strategy
日志策略
训练日志打印策略。
save_strategy
存档策略
保存检查点的策略。
eval_steps
验证步数
每多少步做一次验证。
- 单击“创建”。新创建的微调任务显示在任务列表中。
更多操作
创建微调任务完成后,可执行如表4所示的操作。