更新时间:2026-02-06 GMT+08:00
分享

创建模型精调作业(推荐)

什么是模型精调

本章节内容仅适用于“西南-贵阳一”站点。控制台界面为新版样式。

在大模型训练中,精调(或“微调”)(Fine-tuning) 是指通过特定领域的数据集对已经做过全量预训练模型(Pre-trained Model, PT)进行二次训练的方法。通过精调能够更新模型权重,使模型能够更有效地应对具体的任务需求。这一阶段使模型能够精确执行如文案生成、代码生成和专业问答等特定场景中的任务。

模型精调使用场景

在模型开发过程中,精调调的主要的使用场景如表1所示。

表1 精调场景

精调场景

场景说明

精调目标

领域适配

基模缺乏垂直领域知识(如医学诊断标准、专用编程语言、企业内部术语)

注入领域Knowledge Graph或术语模式,降低模型幻觉,提升专业度。

指令/格式依从

需要模型严格输出JSON、SQL、XML,或遵循特定的CoT (Chain of Thought)逻辑,而提示词工程稳定性不够。

通过特定精调数据集固化输出结构,降低解析错误率。

风格对齐

需要模型按照特定风格回答问题。如角色扮演、拟人化客服、特定文风的公文写作。

调整logits分布,使其符合特定语料的分布特征。

前提条件

  • 由于精调作业运行需消耗资源,为了避免精调失败请确保账户未欠费。
  • 已经将用于训练作业的数据上传至OBS目录。关于如何创建OBS桶和上传文件,请参见OBS控制台快速入门
  • 已经在OBS目录下创建了至少1个空的文件夹,用于存储训练输出的内容。

    ModelArts不支持加密的OBS桶,创建OBS桶时,请勿开启桶加密。

  • 确保使用的OBS目录与ModelArts在同一区域。
  • 检查是否配置了访问授权。如果未配置,请参见快速配置ModelArts委托授权完成操作

计费影响

在ModelArts进行模型精调时,会产生计算资源和存储资源的累计值计费。计算资源为精调作业运行的费用。存储资源包括数据存储到OBS或SFS的费用。详见模型训练计费项

模型精调流程

创建精调作业的操作步骤如下所示。

步骤一:进入创建训练作业页面:登录控制台,进入训练作业列表。

步骤二:配置精调参数:配置模型精调的各项配置参数。

步骤三:提交精调作业并查看作业状态

步骤一:进入创建训练作业页面

  1. 登录ModelArts管理控制台
  2. 在左侧导航栏中,选择模型开发与训练 > 模型训练进入训练作业列表。
  3. 单击“创建训练作业”,进入创建训练作业页面,默认进入新版页面,以下内容主要介绍新版创建训练页面操作。

步骤二:配置精调参数

表2 创建调优作业参数说明

参数

说明

训练模式

精调作业

适用于基于已有预训练模型(如Qwen系列)进行微调的场景。

此处选择“精调作业”

自定义作业

适用于希望完全自定义训练流程,使用自研代码或特定框架镜像的场景。

基本信息

任务名称

自定义调优作业名称。支持1~64位,以中文、大小写字母开头,只包含中文、大小写字母、数字、中划线、下划线的名称。

描述(可选)

自定义调优作业简介。该字段为可选,支持最大输入256字符。

训练配置

选择模型

单击“请选择模型”,在“选择模型”对话框中选择“预制模型”“我的模型”下面的模型。

说明:

“选择模型”对话框中,可以选择的模型表示支持调优,未显示或置灰的模型表示不支持调优。请以实际环境为准。

训练类型

ModelArts支持全量微调、LoRA微调两种调优类型。不同模型支持的调优类型不同,不支持的调优类型会置灰。

  • 全量微调:直接在模型上训练,影响模型全量参数的微调训练,效果较好,收敛速度较慢,训练时间较长。
  • LoRA微调:冻结原模型,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数,效果接近或略差于全参训练,收敛速度快,训练时间短。

资源配置

资源池类型

资源池分为公共资源池与专属资源池。

  • 公共资源池由所有租户共享使用。
  • 专属资源池需单独创建,不与其他租户共享。

规格

选择规格,规格中描述了服务器类型、型号等信息,仅显示模型支持的资源。

实例数

必填,根据需要选择实例数的个数。默认值为“1”

  • “实例数 = 1”时,创建的是单机训练作业,ModelArts只会在一个节点上启动一个训练容器,该训练容器独享所选规格的计算资源。
  • “实例数 > 1”时,创建的是分布式训练作业,更多分布式训练配置请参见分布式训练功能介绍

数据配置

训练集

在弹出对话框可以选择“预置数据”和“我的数据”。预置数据是平台内置的常用的数据集。“我的数据”是自己的原始或者处理过的数据集。请根据需要选择不同数据集。

说明:

“选择数据集”对话框中,可以选择的数据表示支持调优,未显示或置灰的数据表示不支持调优。请以实际环境为准。

训练参数

学习率/learning_rate

设置每个迭代步数(iteration)模型参数/权重更新的速率。学习率设置的过高会导致模型难以收敛,过低则会导致模型收敛速度过慢。

取值范围:[0, 0.1]

默认值:0.00002

建议微调场景的学习率设置在10-5这个量级。

学习率衰减比率/min_learning_rate

用于控制训练过程中学习率下降的幅度。

计算公式为:最低学习率 = 初始学习率 × 学习率衰减比率。

迭代步数/Iterations

计算得出的模型参数/权重更新的次数。

当数据集是数百量级,则建议迭代4~8个epoch(epoch表示整个数据集被完整地用于一次训练的次数);当数据集是数千量级,则建议迭代2~4个epoch;当数据集是更大数量,则建议迭代1~2个epoch。

总Iterations = 整个数据集完整训练需要的Iterations * epoch。例如,当一个数据集有3200条数据,完整训练一个数据集的Iterations为100,迭代2个epoch,总Iterations就是200。

取值范围:1~100000

训练轮数/Epoch

表示完成全部训练数据集训练的次数。每个轮次都会遍历整个数据集一次。

数据批量大小/batch_size

数据批量是指训练过程中将数据集分成小批次进行读取,并设定每个批次的数据大小。

通常,较大的批量能够使梯度更加稳定,有助于模型的收敛。然而,较大的批量也会占用更多显存,可能导致显存不足,并延长每次训练时间。

序列长度/sequence_length

训练单条数据的最大长度,超过该长度的数据在训练时将被截断。

热身比例/warmup_rate

热身比例是指在模型训练初期逐渐增加学习率的过程。

由于训练初期模型的权重通常是随机初始化的,预测能力较弱,若直接使用较大的学习率,可能导致更新过快,进而影响收敛。为解决这一问题,通常在训练初期使用较小的学习率,并逐步增加,直到达到预设的最大学习率。通过这种方式,热身比例能够避免初期更新过快,从而帮助模型更好地收敛。

数据条数

输入数据集中的总数据条数。

数据类型/data_type

对于部分精炼模型,需要使用开源格式数据集。如Alpaca\ShareGPT格式。

可选参数:AlpacaStyleInstructionHandler, SharegptStyleInstructionHandler,GeneralInstructionHandler

权重衰减系数

通过在损失函数中加入与模型权重大小相关的惩罚项,鼓励模型保持较小的权重,防止过拟合或模型过于复杂。

模型保存策略

save_checkpoint_steps/save_checkpoint_epoch,训练过程中是按迭代步数,还是训练轮数保存Checkpoint文件。

Checkpoint保存间隔

save_checkpoint_steps,训练过程中每隔多少个训练步长保存一次模型Checkpoint文件。

模型保存步数

save_checkpoint_epoch,训练过程中每个多少训练轮数保存一次模型Checkpoint文件。

发布模型

开启自动发布

勾选开关后,模型将自动上传至模型资产模块。

调优后模型名称

设置调优后产生的新模型的名称。

支持2~128位,以中文、大小写字母开头,只包含中文、大小写字母、数字、下划线(_)、中划线(-)和半角句号(.)。

描述

训练后模型的描述信息。该字段可选,最大长度256字符。

更多配置

checkpoints配置

勾选该开关后,系统将在任务状态完成或失败时,通过短信或邮件将提醒发送给用户。

checkpoints:在模型训练过程中,用于保存模型权重和状态的机制。

  • 关闭:关闭后不保存checkpoints,无法基于checkpoints执行续训操作。
  • 自动:自动保存训练过程中的所有checkpoints。
  • 自定义:根据设置保存指定数量的checkpoints。

步骤三:提交精调作业并查看作业状态

当参数配置完成后,单击“提交”,创建精调作业任务。

精调作业一般需要运行一段时间,前往精调作业列表,可以查看精调作业的基本情况。

  • 在精调作业列表中,刚创建的精调作业状态为“等待中”
  • 当精调作业的状态变为“已完成”时,表示精调作业运行结束,其生成模型将存放至模型资产供后续使用。
  • 当精调作业的状态变为“运行失败”“异常”时,可以单击训练作业的名称进入详情页面,通过查看日志等手段处理问题。

精调常见问题

  1. 如何让训练产出的模型具备思考模式?

    如果想要训练带思考模式的模型,需要在Alpaca的output字段的头尾增加<think>和</think>标签,或者在output字段的头增加引导思考的prompt,比如“Let's think step by step”。当前预置数据是Alpaca格式数据,不带<think>标签,训练后的模型大概率只能回答不能思考。

    示例一:

    {
        "instruction": "不要问我从哪里来,我的故乡在青龙山 ",
        "input": "",
        "output": "<think>用户分享了一句歌词:“不要问我从哪里来,我的故乡在青龙山”。首先,我要确认这首歌的出处,xxx,最后xxx\n</think>\n\n“不要问我从哪里来,我的故乡在青龙山”这句话似乎是对经典歌曲《橄榄树》的歌词改编(原词为“不要问我从哪里来,我的故乡在远方”)。"
    }

    示例二:

    {
        "instruction": "Karin 's science class weighed plastic rings for an experiment . They found that the orange ring weighed 0.08333333333333333 ounce , the purple ring weighed 0.3333333333333333 ounce , and the white ring weighed 0.4166666666666667 ounce . What was the total weight of the plastic rings ?",
        "input": "",
        "output": "Let's think step by step. \n\nThe orange ring weighed 0.08333333333333333 ounce. \nThe purple ring weighed 0.3333333333333333 ounce. \nThe white ring weighed 0.4166666666666667 ounce. \n\nTo find the total weight of the plastic rings, we need to add the weights of the orange ring, the purple ring, and the white ring. \n\n0.08333333333333333 + 0.3333333333333333 + 0.4166666666666667 = 0.8333333333333334 \nTherefore, the answer (arabic numerals) is 0.8333333333333334."
    }

相关文档