文档首页/ 应用平台 AppStage/ 快速入门/ 使用AI原生应用引擎完成模型调优
更新时间:2024-11-11 GMT+08:00
分享

使用AI原生应用引擎完成模型调优

模型调优是一种通过对模型进行微调来适应特定任务或数据集的技术,适用于需要个性化定制或在特定任务上追求更高性能表现的场景。在模型调优过程中,用户需要构建一个符合业务场景任务的训练集,这个训练集通常由业务数据和业务逻辑构成。然后,用户需要调整模型的参数,以便模型可以更好地学习这个训练集。最后,用户需要训练模型,让模型可以在业务场景中更好地表现。模型调优的目标是提高模型在特定任务或数据集上的性能。通过模型调优,用户可以让模型更好地适应业务场景,从而提高模型在实际应用中的效果。

本文以AI原生应用引擎预置的baichuan-13B为基座模型,通过微调提升模型的数据分析和指标计算能力,帮助您快速掌握使用AI原生应用引擎完成模型调优并测试效果。

使用流程

通过图1您可以了解如何在AI原生应用引擎创建数据集、创建微调任务、部署推理模型以及在线测试模型效果。

图1 模型调优流程
  1. 创建微调数据集

    数据集是模型微调的基础,首先需要创建用于模型训练的数据集。

  2. 创建模型微调流水线

    通过模型微调任务进行模型训练,微调任务结束后,将生成改进后的新模型。

  3. 部署模型

    模型部署是通过为基座模型(即原模型)和微调后的新模型创建用于预测的模型服务的过程实现。

  4. 测试模型调优效果

    在线测试微调后的模型(输入问题发起请求获取数据分析结果),可检验模型的准确性、可靠性及反应效果。

  5. 清除相应资源

    对于不再需要使用的微调任务和模型服务,及时清除相应资源,避免不必要的扣费。

准备工作

步骤一:创建微调数据集

数据集是模型微调的基础,AI原生应用引擎统一纳管训练模型的数据集,将分散的数据进行集中式管理,从而节省了数据收集和管理的成本。

  1. 在AI原生应用引擎的左侧导航栏选择“知识中心 > 微调数据集”。
  2. 在“微调数据集”页面,单击右上角“创建微调数据集”。
  3. 在“创建微调数据集”页面,参照表1进行相关参数的配置。

    表1 数据集基础配置参数说明

    参数名称

    参数说明

    基础配置

    数据集名称

    自定义数据集名称。支持中英文、数字、下划线(_),长度2-50个字符,以中英文、数字开头。

    本文以创建名称为“智能分析数据集”为例。

    数据集描述

    根据自己的需要对数据集进行描述,例如介绍数据集的用途、样例数据等。

    标签

    根据自己需要选择标识该适用数据集的模型、领域、行业等,例如大语言模型。

    任务领域

    选择“自然语言处理”。

    数据集格式

    选择“对话文本”。

    文件内容要求为标准json数组,例如:

    [{"instruction": "aaa", "input": "aaa", "output": "aaa"},{"instruction": "bbb", "input": "bbb", "output": "bbb"}]

    数据接入

    数据来源

    选择数据集的数据来源。支持以下两种来源:

    • 本地上传
    • OBS接入

    本地上传

    当“数据来源”选择“本地上传”时,需配置此参数。

    单击“文件上传”选择本地JSON格式的文件进行上传(仅支持JSON格式)。

    OBS桶名

    当“数据集来源”选择“OBS接入”时,需配置此参数。

    在下拉列表中选择数据所在的OBS桶名。

    OBS路径

    当“数据集来源”选择“OBS接入”时,需配置此参数。

    在下拉列表中选择数据所在的具体OBS路径。

    调度类型

    可选如下两种类型,其中本地文件上传仅支持一次性调度,OBS接入支持一次性调度或定时调度两种类型。

    • 一次性调度
    • 定时调度

    版本模式

    当“调度类型”选择“定时调度”时,需配置此参数。

    • 覆盖模式:每次调度成功,会覆盖唯一的版本。
    • 多版本模式:每次调度成功,会生成一个新版本。

    执行时间

    当“调度类型”选择“定时调度”时,需配置此参数。

    设置每日执行时间。

    立即执行

    当“调度类型”选择“定时调度”时,需配置此参数。

    选择是否立即执行。

  4. 单击“提交”。创建的数据集显示在“我创建的”页签的数据集列表中,创建数据集完成。

步骤二:创建模型微调流水线

模型微调任务是指调整大型语言模型的参数以适应特定任务的过程,通过在与任务相关的数据集上训练模型来完成。所需的微调量取决于任务的复杂性和数据集的大小。在深度学习中,微调用于改进预训练模型的性能。操作本步骤前请确保以下两点:

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

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

    参数名称

    参数说明

    基础信息

    任务名称

    自定义任务名称,例如“baichuan-13b-chat-sft-nl2sql”。

    任务描述(可选)

    自定义任务相关的描述。

    模型配置

    微调前模型

    选择微调的模型,本文案例选择“baichuan”。

    训练模式

    默认选择“LoRA”。

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

    微调后名称

    自定义模型微调后的新名称。支持英文、数字、中划线(-)、下划线(_),长度1-64个字符,仅支持字母或下划线开头。

    例如“baichuan-13b-chat-sft-nl2sql”。

    数据配置

    数据集

    在下拉列表中选择步骤一:创建微调数据集创建的“智能分析数据集”。

    数据集版本

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

    训练数据比例

    填写训练数据比例,如果填为0,则任务不执行训练阶段。

    训练数据比例是指用于训练模型的数据在完整数据集中所占的比例。

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

    验证数据比例

    填写验证数据比例,如果填为0,则任务不执行验证阶段。

    验证数据比例是指模型训练过程中,用于验证模型当前训练效果的数据在完整数据集中所占的比例。

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

    测试数据比例

    填写测试数据比例。如果填为0,则任务不执行测试阶段。

    测试数据比例是指模型训练结束之后,用于测试模型训练效果的数据在完整数据集中所占的比例。

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

    任务配置

    资源池

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

  4. 单击“下一步”,参照表3表4以及模型、数据集等实际情况配置模型微调任务的基础参数、LoRA参数。

    表3 基础参数配置说明

    参数英文名

    参数中文名

    参数说明

    global_bs

    各设备batch size综合

    表示多个设备上使用的总样本数量。

    num_train_epochs

    训练epoch数

    优化算法在完整训练数据集上的工作轮数。

    learning_rate

    学习率

    学习率是每一次迭代中梯度向损失函数最优解移动的步长。

    weight_decay

    权重衰减因子

    对模型参数进行正则化的一种因子,可以缓解模型过拟合现象。

    warmup_ratio

    学习率热启动比例

    学习率热启动参数,一开始以较小的学习率去更新参数,然后再使用预设学习率,有效避免模型震荡。

    表4 LoRA参数配置说明

    参数英文名

    参数中文名

    参数说明

    lora_rank

    LoRA微调中的秩。

    lora_alpha

    缩放系数

    LoRA微调中的缩放系数。

    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

  5. 配置完成后,单击“创建”。新创建的微调任务显示在“微调任务”页面的任务列表中。
  6. 在任务列表中“操作”列单击“启用”开始训练模型。

    单击任务名称,进入任务详情界面查看运行日志和Loss曲线。
    • 观察日志是否出现Error信息,如果有则表示训练失败,请根据日志提示定位原因并解决。
    • 根据Loss曲线观察损失值的下降情况,据此调整训练的超参数来寻找一组最优参数。

  7. 微调任务执行完成后,单击“操作”列的“发布”,发布模型。

步骤三:部署模型

部署模型是将模型部署为在线服务,通过创建部署服务实现,创建成功后,可以对在线服务可以进行预测和调用。本文需要为基座模型(原模型)和微调后的新模型分别创建模型服务。由于在线运行需消耗资源,请确保账户未欠费。

  1. 在AI原生应用引擎的左侧导航栏选择“模型中心 > 我的模型服务”。
  2. 在“我的模型服务”页面右上角单击“部署模型服务”。
  3. 在“创建部署服务”页面,参照表5配置模型信息。

    表5 模型信息参数说明

    参数名称

    参数说明

    模型来源

    选择模型来源,本文以选择“微调的模型”为例。

    选择模型

    在下拉列表选择相应来源的具体模型。本文选择在步骤二:创建模型微调流水线中微调后的新模型。

    服务名称

    自定义服务名称,支持中英文、数字、中划线(-)、下划线(_)、点(.),长度2-36个字符,仅支持以中英文开头。此处以创建“baichuan-13b-chat-sft-nl2sql-s”为例。

    模型服务描述

    根据需要填写服务相关描述。

    标签

    为模型服务选择标签分类。可从以下几个维度选择(支持多选):

    • 行业
    • 适用领域
    • 通用

  4. 配置部署模型参数,参数说明如表6所示。

    表6 微调的模型部署参数说明

    参数名称

    参数说明

    实例个数

    设置模型服务部署的实例个数。

    不同的模型部署1个实例需要的推理单元个数不同,比如,ChatGLM3-6B需要2个实例。

    不同的模型因为模型参数量不同,模型参数量越多,需要消耗的资源越多,因此需要的推理单元个数越多。

    推理单元资源

    在下拉列表可以查看已购买的推理单元的可用个数,根据实际情况选择。

    如果推理单元个数不足以满足实例个数,则需减少实例个数以使推理单元资源满足需求。

    说明:

    在推理单元到期后,部署的模型将被下架,可通过购买推理单元资源恢复。

    流控配置

    超出流控值,则触发限流,用户的请求会因为流控而失败。

    • 无限制
    • 10次/秒
    • 50次/秒
    • 100次/秒
    • 200次/秒

  5. 单击“保存”,部署模型服务,新部署的服务显示在“我部署的”页签中以查看模型服务的部署情况。
  6. 参照2~5,为基座模型创建名称为“baichuan-13b-chat-s”的模型服务。

步骤四:测试模型调优效果

通过在线测试模型服务,可检验模型的准确性、可靠性及反应效果,发现模型中存在的问题和局限性,确保模型能够在实际应用中正常运行,并且能够准确地预测和处理数据。调测模型前请确保部署模型服务已成功,即模型服务状态处于“运行中”。

  1. 在AI原生应用引擎的左侧导航栏选择“模型中心 > 模型调测”,进入“模型调测”页面。
  2. 在“模型类型”下选择“文本对话”并配置表7所示参数。

    表7 调测文本对话类型模型参数说明

    参数名称

    参数说明

    模型服务

    选择要调测的模型服务,在下拉列表选择步骤三:部署模型中部署的模型服务。

    输出方式

    可选非流式、流式。二者区别如下:

    • 非流式:调用大语言模型推理服务时,根据用户问题,获取大语言模型的回答,大语言模型完整生成回答后一次性返回。
    • 流式:调用大语言模型推理服务时,根据用户问题,获取大语言模型的回答,逐个字词的快速返回模式,不需等待大语言模型生成完成。

    输出最大token数

    表示模型输出的最大token数。

    温度

    较高的数值会使输出更加随机,而较低的数值会使其更加集中和确定。建议该参数和“多样性”只设置1个。

    多样性

    影响输出文本的多样性,取值越大,生成文本的多样性越强。建议该参数和“温度”只设置1个。

    存在惩罚

    介于-2.0和2.0之间的数字。正值会尽量避免重复已经使用过的词语,更倾向于生成新词语。

    频率惩罚

    介于-2.0和2.0之间的数字。正值会尽量避免使用常见的单词和短语,更倾向于生成较少见的单词。

  3. 在右侧“效果预览”区域,可通过以下两种方式进行模型测试。

    • 在对话输入框输入测试语句后按Enter键或单击进行模型测试。
    • 单击“引用已有提示语模板”,弹出“选择模板”面板,可通过分类筛选我创建的、我收藏的或平台预置的提示语模板,然后按Enter键或单击进行模型测试。

    输入相同的问题,可以看到微调前模型返回结果是错误的,而微调后模型返回了正确的计算指标数据的关键要素。

步骤五:清除相应资源

对于不再需要使用的微调任务和模型服务,建议及时清除相应资源,避免产生不必要的费用。

  • 删除不需要的微调任务
    1. 在AI原生应用引擎的左侧导航栏选择“模型中心 > 模型微调流水线”。
    2. 在“模型微调流水线”页面的任务列表中,单击任务状态为“已完成”的微调任务所在行的“操作”列“更多 > 删除”,删除不需要的微调任务。
  • 停用或删除不需要的模型服务
    1. 在AI原生应用引擎的左侧导航栏选择“模型中心 > 我的模型服务”。
    2. 在“我的模型服务 > 我部署的”页面的服务列表中,单击目标模型服务所在行的“操作”列的“停用”或“更多 > 删除”,停用或删除不需要的模型服务。

相关文档