更新时间:2024-05-07 GMT+08:00
分享

创建模型微调流水线

模型微调是指调整大型语言模型的参数以适应特定任务的过程,这是通过在与任务相关的数据集上训练模型完成,所需的微调量取决于任务的复杂性和数据集的大小。在深度学习中,微调用于改进预训练模型的性能。

前提条件

  • 已订购大模型微调-SFT局部调优资源,订购方法请参见购买AI原生应用引擎按需计费资源
  • 已创建同时满足用途为“模型训练”、任务领域为“自然语言处理”、任务子领域为“文本生成”、数据集格式为“对话文本”四个条件的微调数据集

创建微调任务

  1. 在AI原生应用引擎工作台的左侧导航栏选择“模型中心 > 模型微调流水线”。
  2. 在“模型微调流水线”页面右上角单击“创建任务”,进入“创建微调任务”页面。
  3. 参照表1配置基础信息、模型及数据。

    表1 创建微调任务参数说明

    参数名称

    参数说明

    基础信息

    任务名称

    自定义任务名称。

    任务描述(可选)

    自定义任务相关的描述。

    模型配置

    微调前模型

    在下拉列表中选择我创建的或我收藏的模型。

    训练模式

    默认为“LoRA”。

    LoRA(Low-Rank Adaptation,低秩适应),是一种将预训练模型权重冻结,并将可训练的秩分解矩阵注入Transformer架构每一层的技术,该技术可减少下游任务的可训练参数数量。

    微调后名称

    自定义模型微调后的新名称。命名要求:以字母或下划线开头,由字母、数字、下划线(_)、短横线(-)组成,最多100个字符。

    数据配置

    数据集

    在下拉列表中选择数据集。

    训练数据比例

    训练数据比例是指用于训练模型的数据集与测试数据集的比例。通常情况下,会将数据集分成训练集和测试集两部分,其中训练集用于训练模型,测试集用于评估模型的性能。

    在实际应用中,训练数据比例的选择取决于许多因素,例如可用数据量、模型复杂度和数据的特征等。通常情况下,会选择较大的训练数据比例,以便训练出更准确的模型。一般来说,训练数据比例在70%到90%之间是比较常见的选择。

    验证数据比例

    验证数据比例是指在模型训练过程中,将数据集分为训练集、验证集和测试集三部分,其中验证集的比例是指在训练集和验证集的比例中,验证集所占的比例。

    通常情况下,数据集会按照一定比例划分为训练集、验证集和测试集,比如常见的划分比例是60%训练集、20%验证集和20%测试集。在这种情况下,验证集的比例就是20%。

    验证集的比例对于机器学习模型的性能评估非常重要。如果验证集的比例过小,可能导致模型在验证集上表现不够稳定,无法准确评估模型的性能。如果验证集的比例过大,可能会导致训练集的样本量不足,影响模型的训练效果。因此,在选择验证集的比例时,需要根据具体情况进行调整,以保证模型的性能评估和训练效果的准确性。

    测试数据比例

    测试数据比例是指在模型训练中,将数据集分为训练集和测试集两部分,测试数据比例指测试集占总数据集的比例。

    通常,测试数据比例在20%到30%之间较为常见,但具体比例取决于数据集的大小和质量,以及模型的复杂度和训练时间等因素。较小的测试数据比例可能导致过拟合,而过大的比例则可能导致欠拟合。因此,选择适当的测试数据比例对于训练出准确可靠的机器学习模型非常重要。

    任务配置

    资源池

    选择执行任务的资源池,在下拉列表可以看到各资源池的可用卡数,根据实际情况选择。

  4. 单击“下一步”,分别参照表3表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

    验证步数

    每多少步做一次验证。

  5. 单击“创建”。新创建的微调任务显示在任务列表中。

更多操作

创建微调任务完成后,可执行如表4所示的操作。

表4 更多操作

操作

说明

查看任务详情

在“模型微调流水线”页面的任务列表中,单击任务名称或单击“操作”列“更多 > 运行日志”,查看任务的基础信息、参数信息、运行日志和Loss曲线等详情。

重新创建任务

  1. 在“模型微调流水线”页面的任务列表中,单击“操作”列“更多 > 重新创建”。
  2. 在“修改微调任务”页面,参照3~4进行配置。

删除任务

  1. 在“模型微调流水线”页面的任务列表中,单击“操作”列“更多 > 删除”。
  2. 单击“确认”。

启用任务

  1. 在“模型微调流水线”页面的任务列表中,单击“操作”列“启用”。
  2. 单击“确认”。

停用任务

  1. 在“模型微调流水线”页面的任务列表中,单击“操作”列“停用”。
  2. 单击“确认”。

发布任务

运行完成后,点发布完成后,生成更优的新模型,展示在“模型管理 > 我微调的”列表中。

分享:

    相关文档

    相关产品