使用MaaS调优模型
在ModelArts Studio大模型即服务平台完成模型创建后,可以对模型进行调优,获得更合适的模型。
场景描述
从“我的模型”中选择一个模型进行调优,当模型完成调优任务后会产生一个新的模型,呈现在“我的模型”列表中。
约束限制
当选择ChatGLM3-6B、GLM-4-9B、Qwen-7B、Qwen-14B和Qwen-72B模型框架进行模型调优时,在创建模型时需要修改权重配置才能正常运行模型。详细配置请参见修改权重配置。
模型名称 |
全参微调 |
lora微调 |
---|---|---|
Baichuan2-13B |
√ |
√ |
ChatGLM3-6B |
√ |
√ |
GLM-4-9B |
√ |
√ |
Llama2-13B |
√ |
√ |
Llama2-70B |
√ |
√ |
Llama2-7B |
√ |
√ |
Llama3-70B |
√ |
√ |
Llama3-8B |
√ |
√ |
Qwen1.5-14B |
√ |
√ |
Qwen1.5-32B |
√ |
√ |
Qwen1.5-72B |
√ |
√ |
Qwen1.5-7B |
√ |
√ |
Qwen2-72B |
√ |
√ |
Qwen2-72B-1K |
√ |
√ |
Qwen2-7B |
√ |
√ |
Qwen-72B |
√ |
√ |
Qwen-14B |
√ |
√ |
Qwen-7B |
√ |
√ |
Qwen2-1.5B |
√ |
√ |
Qwen2-0.5B |
√ |
√ |
支持的数据集格式
- 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”,该数据集可以用于文本生成类型的模型调优。
- xlsx和csv格式
表格里的一行数据就是一条样本。表格中仅有3个字段:conversation_id、human和assistant。
- conversation_id:对话ID,可以重复,但必须是正整数。若有多组Human-assiant对话使用同一个ID,则会按照文件中的顺序,将这几组对话编排成一个多轮对话。
- human:对话输入,内容不能为空。
- assistant:对话输出,内容不能为空。
请按数据集格式要求准备数据,否则会导致调优任务失败。
前提条件
- 在“我的模型”页面存在已创建成功的模型。
- 已准备好训练数据集,并存放于OBS桶中,OBS桶必须和MaaS服务在同一个Region下。
- 当需要永久保存日志时,需要准备好存放日志的OBS路径,OBS桶必须和MaaS服务在同一个Region下。
创建调优任务
- 登录ModelArts管理控制台。
- 在左侧导航栏中,选择“ModelArts Studio”进入ModelArts Studio大模型即服务平台。
- 在ModelArts Studio左侧导航栏中,选择“模型调优”进入任务列表。
- 单击“创建调优任务”进入创建页面,完成创建配置。
表2 创建调优任务 参数
说明
任务设置
任务名称
自定义调优任务名称。
支持1~64位,以中文、大小写字母开头,只包含中文、大小写字母、数字、中划线、下划线的名称。
描述
调优任务简介。支持1000字符。
模型设置
模型来源
单击“选择模型”,从“我的模型”列表中选择需要调优的模型。
选择调优类型
- 全参微调:直接在模型上训练,影响模型全量参数的微调训练,效果较好,收敛速度较慢,训练时间较长。
- LoRA微调:冻结原模型,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数,效果接近或略差于全参训练,收敛速度快,训练时间短。
调优后的模型名称
设置调优后产生的新模型的名称。
支持1~64位,以中文、大小写字母开头,只包含中文、大小写字母、数字、下划线(_)、中划线(-)和(.)。
数据设置
添加数据集
选择存放训练数据集的OBS路径,必须选择到文件。
说明:数据集必须满足要求(请参见约束限制),否则调优会失败。
调优后模型权重保存路径
选择存放调优后的模型权重文件的OBS路径。
说明:权重文件要存放在空文件夹中,否则会覆盖原有文件。
超参设置
迭代步数/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
默认值:1000
学习率/learning_rate
设置每个迭代步数(iteration)模型参数/权重更新的速率。学习率设置得过高会导致模型难以收敛,过低则会导致模型收敛速度过慢。
取值范围:0~0.1
默认值:0.00002
建议微调场景的学习率设置在10-5这个量级。
资源设置
资源池类型
资源池分为公共资源池与专属资源池。
- 公共资源池供所有租户共享使用。
- 专属资源池需单独创建,不与其他租户共享。
实例规格
选择实例规格,规格中描述了服务器类型、型号等信息,仅显示模型支持的资源
实例数
设置实例数。
更多选项
永久保存日志
选择是否打开“永久保存日志”开关。
- 开关关闭(默认关闭):表示不永久保存日志,则任务日志会在30天后会被清理。可以在任务详情页下载全部日志至本地。
- 开关打开:表示永久保存日志,此时必须配置“日志路径”,系统会将任务日志永久保存至指定的OBS路径。
事件通知
选择是否打开“事件通知”开关。
- 开关关闭(默认关闭):表示不启用消息通知服务。
- 开关打开:表示订阅消息通知服务,当任务发生特定事件(如任务状态变化或疑似卡死)时会发送通知。此时必须配置“主题名”和“事件”。
- “主题名”:事件通知的主题名称。单击“创建主题”,前往消息通知服务中创建主题。
- “事件”:选择要订阅的事件类型。例如“创建中”、“已完成”、“运行失败”等。
自动停止
当使用付费资源时,可以选择是否打开“自动停止”开关。
- 开关关闭(默认关闭):表示任务将一直运行直至完成。
- 开关打开:表示启用自动停止功能,此时必须配置自动停止时间,支持设置为“1小时”、“2小时”、“4小时”、6小时或“自定义”。启用该参数并设置时间后,运行时长到期后将会自动终止任务,准备排队等状态不扣除运行时长。
- 参数配置完成后,单击“提交”,创建调优任务。
在任务列表,当模型“状态”变成“已完成”时,表示模型调优完成。
模型调优时长估算
- 计算公式:调优时长 = 经验系数 x Iterations ÷(卡数 x 实例数 x 吞吐)+ 前后处理时间
- 单位:小时
参数 |
说明 |
---|---|
经验系数 |
经验系数与模型训练迭代过程中处理的序列长度和批次大小有关。 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 |
前后处理时间 |
调优时长还包括训练前的数据预处理、训练后格式转换等调优之外的耗时,统称为前后处理时间。 调优任务的前后处理时间和模型参数量相关,不同参数量的时间估值如下:
|
模型名称 |
训练类型 |
吞吐下限取整 |
吞吐上限取整 |
---|---|---|---|
Baichuan2-13B |
sft |
1200 |
1600 |
lora |
1300 |
1800 |
|
ChatGLM3-6B |
sft |
2000 |
2700 |
lora |
2300 |
3100 |
|
GLM-4-9B |
sft |
1800 |
2100 |
lora |
2400 |
2800 |
|
Llama2-13B |
sft |
1300 |
1800 |
lora |
1400 |
1900 |
|
Llama2-70B |
sft |
300 |
400 |
lora |
400 |
500 |
|
Llama2-7B |
sft |
3100 |
4200 |
lora |
3500 |
4700 |
|
Llama3-70B |
sft |
300 |
400 |
lora |
300 |
500 |
|
Llama3-8B |
sft |
2100 |
2800 |
lora |
2300 |
3100 |
|
Qwen-14B |
sft |
1200 |
1600 |
lora |
1400 |
1900 |
|
Qwen-72B |
sft |
300 |
400 |
lora |
300 |
500 |
|
Qwen-7B |
sft |
2100 |
2900 |
lora |
2200 |
3000 |
|
Qwen1.5-14B |
sft |
1300 |
1700 |
lora |
1400 |
1800 |
|
Qwen1.5-32B |
sft |
600 |
800 |
lora |
700 |
900 |
|
Qwen1.5-72B |
sft |
300 |
400 |
lora |
300 |
500 |
|
Qwen1.5-7B |
sft |
2200 |
3000 |
lora |
2600 |
3600 |
|
Qwen2-0.5B |
sft |
12800 |
17300 |
lora |
12800 |
17300 |
|
Qwen2-1.5B |
sft |
7300 |
9800 |
lora |
7300 |
9900 |
|
Qwen2-72B |
sft |
300 |
300 |
lora |
300 |
400 |
|
Qwen2-72B-1K |
sft |
300 |
300 |
lora |
300 |
400 |
|
Qwen2-7B |
sft |
2300 |
3200 |
lora |
2600 |
3500 |
查看调优任务详情
- 登录ModelArts管理控制台。
- 在左侧导航栏中,选择“ModelArts Studio”进入ModelArts Studio大模型即服务平台。
- 在ModelArts Studio左侧导航栏中,选择“模型调优”进入任务列表。
- 单击任务名称,进入调优任务详情页面,可以查看任务详情和日志。
- “详情”:可以查看任务的基本信息,包括任务、模型、资源等设置信息。
- “日志”:可以搜索、查看和下载任务日志。
- 查看loss:当作业进入训练流程之后,会按照Step进行loss打印,因此在日志中搜索关键字段“lm loss”即可查看loss。
- 获取训练吞吐数据:在打印的loss日志中搜索关键字段“elapsed time per iteration”获取每步迭代耗时,总的Token数可以用日志中的“global batch size”和“SEQ_LEN”相乘获得,训练的每卡每秒的吞吐=总Token数÷每步迭代耗时÷总卡数。
删除调优任务
删除操作无法恢复,请谨慎操作。
- 登录ModelArts管理控制台。
- 在左侧导航栏中,选择“ModelArts Studio”进入ModelArts Studio大模型即服务平台。
- 在ModelArts Studio左侧导航栏中,选择“模型调优”进入任务列表。
- 选择调优任务,单击操作列的“删除”,在弹窗中输入“DELETE”,单击“确定”,删除任务。