更新时间:2024-12-16 GMT+08:00
分享

使用MaaS调优模型

在ModelArts Studio大模型即服务平台完成模型创建后,可以对模型进行调优,获得更合适的模型。

场景描述

“我的模型”中选择一个模型进行调优,当模型完成调优作业后会产生一个新的模型,呈现在“我的模型”列表中。

约束限制

表1列举了支持模型调优的模型,不在表格里的模型不支持使用MaaS调优模型。
表1 支持模型微调的模型

模型名称

全参微调

LoRA微调

增量预训练

Baichuan2-13B

x

ChatGLM3-6B

x

GLM-4-9B

x

Llama2-13B

x

Llama2-70B

x

Llama2-7B

x

Llama3-70B

x

Llama3-8B

x

Qwen-14B

x

Qwen-72B

x

Qwen-7B

x

Qwen1.5-14B

x

Qwen1.5-32B

x

Qwen1.5-72B

x

Qwen1.5-7B

x

Qwen2-72B

x

Qwen2-72B-1K

x

Qwen2-7B

x

Qwen2-1.5B

x

Qwen2-0.5B

x

Qwen2.5-72B

x

Qwen2.5-32B

x

Qwen2.5-14B

Qwen2.5-7B

x

Qwen2.5-72B-1K

x

支持的数据集格式

请按数据集格式要求准备数据,否则会导致调优作业失败。

  • jsonl格式
    一行数据就是数据集中的一条样本,建议总的数据样本不少于2000条,如下所示是一行数据集的示例,单轮对话也可以复用此格式。
    {"conversation_id": 1, "chat": {"turn_1": {"Human":"text","MOSS":"text"},"turn_2": {"Human":"text","MOSS":"text"}}}
    • “conversation_id”是样本编号。
    • “chat”后面是多轮对话的内容
    • “turn_n”表示是第n次对话,每次对话都有输入(对应Human角色)和输出(对应MOSS角色)。其中Human和MOSS仅用于角色区分,模型训练的内容只有text指代的文本。

    单击下载,获取示例数据集“simple_moss.jsonl”,该数据集可以用于文本生成类型的模型调优。

    Qwen2.5系列的模型调优,如果使用jsonl数据集,仅支持Alpaca格式的数据集。格式如下:

    {
      "instruction": "计算这些物品的数量之和。 ",
      "input": "输入:汽车 - 3,衣服 - 100,书 - 20。",
      "output": "汽车、衣服和书的数量之和为 3 + 100 + 20 = 123。"
    }
    如果是用于增量预训练的数据集,则格式如下:
    [
      {"text": "document"},
      {"text": "document"}
    ]
  • xlsx和csv格式

    表格里的一行数据就是一条样本。表格中仅有3个字段:conversation_id、human和assistant。

    • conversation_id:对话ID,可以重复,但必须是正整数。若有多组Human-assiant对话使用同一个ID,则会按照文件中的顺序,将这几组对话编排成一个多轮对话。
    • human:对话输入,内容不能为空。
    • assistant:对话输出,内容不能为空。

    当前xlsx和csv格式数据集只支持微调,暂不支持增量预训练。

前提条件

  • “我的模型”页面存在已创建成功的模型。
  • 已准备好训练数据集,并存放于OBS桶中,OBS桶必须和MaaS服务在同一个Region下。
  • 当需要永久保存日志时,需要准备好存放日志的OBS路径,OBS桶必须和MaaS服务在同一个Region下。

创建调优作业

  1. 登录ModelArts管理控制台。
  2. 在左侧导航栏中,选择“ModelArts Studio”进入ModelArts Studio大模型即服务平台。
  3. 在ModelArts Studio左侧导航栏中,选择“模型调优”进入作业列表。
  4. 单击“创建调优作业”进入创建页面,完成创建配置。
    表2 创建调优作业

    参数

    说明

    任务设置

    任务名称

    自定义调优任务名称。

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

    描述

    调优任务简介。支持1000字符。

    模型设置

    来源模型

    单击“选择模型”,选择“模型广场”“我的模型”下面的模型。

    调优类型

    • 全参微调:直接在模型上训练,影响模型全量参数的微调训练,效果较好,收敛速度较慢,训练时间较长。
    • LoRA微调:冻结原模型,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数,效果接近或略差于全参训练,收敛速度快,训练时间短。
    • 增量预训练:在现有预训练模型基础上,利用新数据或特定领域的数据增强模型的能力和性能。允许模型逐步适应新的任务和数据,避免过拟合和欠拟合问题,进一步提高模型的泛化能力。

    调优后模型名称

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

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

    数据设置

    添加数据集

    选择存放训练数据集的OBS路径,必须选择到文件。

    说明:

    数据集必须满足要求(请参见约束限制),否则调优会失败。

    调优后模型权重保存路径

    选择存放调优后的模型权重文件的OBS路径。

    说明:

    权重文件要存放在空文件夹中,否则会覆盖原有文件。

    超参设置

    数据条数

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

    迭代轮次/Epoch

    训练过程中模型遍历整个数据集的次数。不同量级数据集的建议值:百量集4~8;千量集2~4;更大数量级1~2。

    迭代步数/Iterations

    设置模型参数/权重更新的次数。在调优过程中,Qwen2-72B-1K模型的每一个Iterations会消耗512条训练数据,其他模型的每一个Iterations会消耗32条训练数据。

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

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

    取值范围:1~100000

    学习率/learning_rate

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

    取值范围:0~0.1

    默认值:0.00002

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

    Checkpoint保存个数

    训练过程中保存Checkpoint的个数。最小值为1,最大值为“迭代步数/Iterations”的参数值,不超过10。Checkpoint会自动存储到“调优后模型权重保存路径”的OBS路径下。

    资源设置

    资源池类型

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

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

    规格

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

    计算节点个数

    当计算节点个数大于1,将启动多节点分布式训练。详细信息,请参见分布式训练功能介绍

    更多选项

    永久保存日志

    选择是否打开“永久保存日志”开关。

    • 开关关闭(默认关闭):表示不永久保存日志,则任务日志会在30天后会被清理。可以在任务详情页下载全部日志至本地。
    • 开关打开:表示永久保存日志,此时必须配置“日志路径”,系统会将任务日志永久保存至指定的OBS路径。

    事件通知

    选择是否打开“事件通知”开关。

    • 开关关闭(默认关闭):表示不启用消息通知服务。
    • 开关打开:表示订阅消息通知服务,当任务发生特定事件(如任务状态变化或疑似卡死)时会发送通知。此时必须配置“主题名”“事件”
      • “主题名”:事件通知的主题名称。单击“创建主题”,前往消息通知服务中创建主题。
      • “事件”:选择要订阅的事件类型。例如“创建中”“已完成”“运行失败”等。
    说明:
    • 需要为消息通知服务中创建的主题添加订阅,当订阅状态为“已确认”后,方可收到事件通知。订阅主题的详细操作请参见添加订阅
    • 使用消息通知服务会产生相关服务费用,详细信息请参见计费说明

    自动停止

    当使用付费资源时,可以选择是否打开“自动停止”开关。

    • 开关关闭(默认关闭):表示任务将一直运行直至完成。
    • 开关打开:表示启用自动停止功能,此时必须配置自动停止时间,支持设置为“1小时”“2小时”“4小时”、6小时或“自定义”。启用该参数并设置时间后,运行时长到期后将会自动终止任务,准备排队等状态不扣除运行时长。

    自动重启

    选择是否打开“自动重启”开关。

    • 开关关闭(默认关闭):表示不启用自动重启。
    • 开关打开:表示当由于环境问题导致训练作业异常时,系统将自动修复异常或隔离节点,并重启训练作业,提高训练成功率。

      打开开关后,可以设置“最大重启次数”和是否启用“无条件自动重启”

      • 重启次数的取值范围是1~128,缺省值为3。创建调优任务后不支持修改重启次数,请合理设置次数。
      • 开启无条件自动重启后,只要系统检测到训练异常,就无条件重启训练作业。为了避免无效重启浪费算力资源,系统最多只支持连续无条件重启3次。

    如果训练过程中触发了自动重启,则平台会自动获取最新的Checkpoint,并从该点重启任务。

  5. 参数配置完成后,单击“提交”“计费提醒”对话框,确认调优作业的信息和预计消耗费用无误后,单击“确定”创建调优作业。

    在作业列表,当“状态”变成“已完成”时,表示模型调优完成。

模型调优时长估算

调优时长表示调优作业的“状态”处于“运行中”的耗时。由于训练吞吐有上下限,因此计算出的调优时长是个区间。
  • 计算公式:调优时长 = 经验系数 x Iterations ÷(卡数 x 实例数 x 吞吐)+ 前后处理时间
  • 单位:小时
表3 参数说明

参数

说明

经验系数

经验系数与模型训练迭代过程中处理的序列长度和批次大小有关。

Qwen2-72B-1K模型的经验系数 = 512 x 1024 ÷ 3600 ≈ 146

其他模型的经验系数 = 32 x 4096 ÷ 3600 ≈ 36

Iterations

创建调优任务时设置的“迭代步数/Iterations”超参值。

卡数

和创建调优任务时选择的“规格”相关,例如,“规格”选择的是“Ascend: 2*ascend-snt9b2(64GB) ”,*号前面的数字是2,则卡数就是2。

实例数

创建调优任务时设置的“节点个数”。

吞吐

吞吐表示每秒每卡处理的Tokens数量,吞吐值的上下限可以参考表4获取。

单位:tokens/s/p

前后处理时间

调优时长还包括训练前的数据预处理、训练后格式转换等调优之外的耗时,统称为前后处理时间。

调优任务的前后处理时间和模型参数量相关,不同参数量的时间估值如下:

  • 72B : 1.35小时
  • 32B:0.58小时
  • 14B:0.25小时
  • 7B:0.15小时
表4 各模型的吞吐数据参考

模型名称

调优类型

吞吐下限取整

吞吐上限取整

Baichuan2-13B

全参微调

1200

1600

LoRA微调

1300

1800

ChatGLM3-6B

全参微调

2000

2700

LoRA微调

2300

3100

GLM-4-9B

全参微调

1800

2100

LoRA微调

2400

2800

Llama2-13B

全参微调

1300

1800

LoRA微调

1400

1900

Llama2-70B

全参微调

300

400

LoRA微调

400

500

Llama2-7B

全参微调

3100

4200

LoRA微调

3500

4700

Llama3-70B

全参微调

300

400

LoRA微调

300

500

Llama3-8B

全参微调

2100

2800

LoRA微调

2300

3100

Qwen-14B

全参微调

1200

1600

LoRA微调

1400

1900

Qwen-72B

全参微调

300

400

LoRA微调

300

500

Qwen-7B

全参微调

2100

2900

LoRA微调

2200

3000

Qwen1.5-14B

全参微调

1300

1700

LoRA微调

1400

1800

Qwen1.5-32B

全参微调

600

800

LoRA微调

700

900

Qwen1.5-72B

全参微调

300

400

LoRA微调

300

500

Qwen1.5-7B

全参微调

2200

3000

LoRA微调

2600

3600

Qwen2-0.5B

全参微调

12800

17300

LoRA微调

12800

17300

Qwen2-1.5B

全参微调

7300

9800

LoRA微调

7300

9900

Qwen2-72B

全参微调

300

300

LoRA微调

300

400

Qwen2-72B-1K

全参微调

300

300

LoRA微调

300

400

Qwen2-7B

全参微调

2300

3200

LoRA微调

2600

3500

Qwen2.5-72B

全参微调

100

120

LoRA微调

280

330

Qwen2.5-32B

全参微调

340

410

LoRA微调

480

570

Qwen2.5-14B

全参微调

1120

1320

LoRA微调

1410

1660

增量预训练

1120

1320

Qwen2.5-7B

全参微调

2459

2890

LoRA微调

3180

3750

Qwen2.5-72B-1K

全参微调

250

300

LoRA微调

340

400

查看调优作业详情

  1. 登录ModelArts管理控制台。
  2. 在左侧导航栏中,选择“ModelArts Studio”进入ModelArts Studio大模型即服务平台。
  3. 在ModelArts Studio左侧导航栏中,选择“模型调优”进入作业列表。
  4. 单击作业名称,进入调优作业详情页面,可以查看作业详情和日志。
    • “详情”:可以查看作业的基本信息,包括作业、模型、数据等设置信息。
    • “日志”:可以搜索、查看和下载作业日志。
      • 查看loss:当作业进入训练流程之后,会按照Step进行loss打印,因此在日志中搜索关键字段“lm loss”即可查看loss。
      • 获取训练吞吐数据:在打印的loss日志中搜索关键字段“elapsed time per iteration”获取每步迭代耗时,总的Token数可以用日志中的“global batch size”“SEQ_LEN”相乘获得,训练的每卡每秒的吞吐=总Token数÷每步迭代耗时÷总卡数。

暂停和重启调优作业

只有作业“状态”处于“运行中”“等待中”“告警”“创建中”,才支持暂停调优作业。

  1. 在ModelArts Studio左侧导航栏中,选择“模型调优”进入作业列表。
  2. 选择调优作业,单击操作列的“停止”,在弹窗中单击“确定”,暂停调优作业,作业“状态”变成“已停止”
  3. 当调优作业处于“已停止”状态时,单击操作列的“继续”,在弹窗中单击“确定”,即可从最新的Checkpoint启动作业,作业“状态”变成“启动中”

删除调优作业

删除操作无法恢复,请谨慎操作。

  1. 在ModelArts Studio左侧导航栏中,选择“模型调优”进入作业列表。
  2. 选择调优作业,单击操作列的“删除”,在弹窗中输入“DELETE”,单击“确定”,删除作业。

相关文档