检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
LoRA微调训练 前提条件 已上传训练代码、训练权重文件和数据集到SFS Turbo中。 Step1 修改训练超参配置 以llama2-13b LORA微调为例,执行脚本0_pl_lora_13b.sh 。 修改模型训练脚本中的超参配置,必须修改的参数如表1所示。其他超参均有默认值,可以参考表1按照实际需求修改。
查看日志和性能 单击作业详情页面,则可查看训练过程中的详细信息。 图1 查看训练作业 在作业详情页的日志页签,查看最后一个节点的日志,其包含“elapsed time per iteration (ms)”数据,可换算为tokens/s/p的性能数据。 吞吐量(tokens/s/p):global
LoRA微调训练 前提条件 已上传训练代码、训练权重文件和数据集到SFS Turbo中。 Step1 修改训练超参配置 以llama2-13b LORA微调为例,执行脚本0_pl_lora_13b.sh 。 修改模型训练脚本中的超参配置,必须修改的参数如表1所示。其他超参均有默认值,可以参考表1按照实际需求修改。
预训练任务 步骤一 上传训练权重文件和数据集 如果在准备代码和数据阶段已经上传权重文件和数据集到容器中,可以忽略此步骤。 如果未上传训练权重文件和数据集到容器中,具体参考上传代码和权重文件到工作环境和上传数据到指定目录章节完成。训练脚本中会自动执行训练前的权重转换操作和数据处理操作。
LoRA微调训练 步骤一 上传训练权重文件和数据集 如果在准备代码和数据阶段已经上传权重文件和数据集到容器中,可以忽略此步骤。 如果未上传训练权重文件和数据集到容器中,具体参考上传代码和权重文件到工作环境和上传数据到指定目录章节完成。训练脚本中会自动执行训练前的权重转换操作和数据处理操作。
查看日志和性能 单击作业详情页面,则可查看训练过程中的详细信息。 图1 查看训练作业 在作业详情页的日志页签,查看最后一个节点的日志,其包含“elapsed time per iteration (ms)”数据,可换算为tokens/s/p的性能数据。 吞吐量(tokens/s/p):global
准备Notebook(可选) 本步骤为可选操作。ModelArts Notebook云上云下,无缝协同,更多关于ModelArts Notebook的详细资料请查看开发环境介绍。 本案例中,如果用户有自定义开发的需要,比如查看和编辑代码、数据预处理、权重转换等操作,可通过Note
使用SmoothQuant量化工具转换权重 SmoothQuant(W8A8)量化方案能降低模型显存以及需要部署的卡数。也能同时降低首token时延和增量推理时延。支持SmoothQuant(W8A8)量化的模型列表请参见表1。 本章节介绍如何在Notebook使用SmoothQuant量化工具实现推理量化。
SFT全参微调训练任务 Step1 上传训练权重文件和数据集 如果在准备代码和数据阶段已经上传权重文件和数据集到容器中,可以忽略此步骤。 如果未上传训练权重文件和数据集到容器中,具体参考上传代码和权重文件到工作环境和上传数据到指定目录章节完成。训练脚本中会自动执行训练前的权重转换操作和数据处理操作。
SFT全参微调训练任务 步骤1 上传训练权重文件和数据集 如果在准备代码和数据阶段已经上传权重文件和数据集到容器中,可以忽略此步骤。 如果未上传训练权重文件和数据集到容器中,具体参考上传代码和权重文件到工作环境和上传数据到指定目录章节完成。训练脚本中会自动执行训练前的权重转换操作和数据处理操作。
镜像方案说明 准备大模型训练适用的容器镜像,包括获取镜像地址,了解镜像中包含的各类固件版本,配置Standard物理机环境操作。 基础镜像地址 本教程中用到的训练的基础镜像地址和配套版本关系如下表所示,请提前了解。 表1 基础容器镜像地址 镜像用途 镜像地址 配套版本 训练基础镜像
使用kv-cache-int8量化 kv-cache-int8是实验特性,在部分场景下性能可能会劣于非量化。当前支持per-tensor静态量化,支持kv-cache-int8量化和FP16、BF16、AWQ、smoothquant的组合。 kv-cache-int8量化支持的模型请参见支持的模型列表和权重文件。
使用AWQ量化工具转换权重 AWQ(W4A16/W8A16)量化方案能显著降低模型显存以及需要部署的卡数。降低小batch下的增量推理时延。支持AWQ量化的模型列表请参见表1。 本章节介绍如何在Notebook使用AWQ量化工具实现推理量化。 量化方法:W4A16 per-group/per-channel
使用kv-cache-int8量化 kv-cache-int8是实验特性,在部分场景下性能可能会劣于非量化。当前支持per-tensor静态量化,支持kv-cache-int8量化和FP16、BF16、AWQ、smoothquant的组合。 kv-cache-int8量化支持的模型请参见支持的模型列表和权重文件。
类型type、属性properties,必选属性required 、定义definitions等,JSON Schema通过定义对象属性、类型、格式的方式来引导模型生成一个包含用户信息的JSON对象。 若希望使用JSON Schema,guided_json的写法可参考outlines: Structured
使用AWQ量化工具转换权重 AWQ(W4A16/W8A16)量化方案能显著降低模型显存以及需要部署的卡数。降低小batch下的增量推理时延。支持AWQ量化的模型列表请参见支持的模型列表和权重文件。 本章节介绍如何在Notebook使用AWQ量化工具实现推理量化。 量化方法:W4A16
使用kv-cache-int8量化 kv-cache-int8是实验特性,在部分场景下性能可能会劣于非量化。当前支持per-tensor静态量化,支持kv-cache-int8量化和FP16、BF16、AWQ、smoothquant的组合。 kv-cache-int8量化支持的模型请参见支持的模型列表和权重文件。
附录:微调训练常见问题 问题1:在训练过程中遇到NPU out of memory 解决方法: 容器内执行以下命令,指定NPU内存分配策略的环境变量,开启动态内存分配,即在需要时动态分配内存,可以提高内存利用率,减少OOM错误的发生。 export PYTORCH_NPU_ALLOC_CONF
使用基础镜像 通过ECS获取和上传基础镜像将镜像上传至SWR服务后,可创建训练作业,在“选择镜像”中选择SWR中基础镜像。 由于基础镜像内需要安装固定版本依赖包,如果直接使用基础镜像进行训练,每次创建训练作业时,训练作业的图1中都需要执行install.sh文件,来安装依赖以及下载完整代码。命令如下:
训练的权重转换说明 以llama2-13b举例,使用训练作业运行obs_pipeline.sh脚本后,脚本自动执行权重转换,并检查是否已经完成权重转换的过程。 如果已完成权重转换,则直接执行训练任务。如果未进行权重转换,则会自动执行scripts/llama2/2_convert_mg_hf