华为云AI开发平台ModelArtsLLaMA系列模型基于ModelArts的全参数微调训练_云淘科技

本文为您介绍如何通过AI Gallery订阅LLaMA系列算法,并在ModelArts使用昇腾Snt9b芯片进行算法的训练微调和模型的推理部署。

场景介绍

LLaMA是基于Transformer结构的自回归语言模型,提供多种尺寸的LLaMA参数。表1中提供的算法均基于MindSpore引擎做了适配,适用于昇腾Snt9b芯片。

表1 开源大模型(用于训练)

序号

模型

引擎

AI Gallery地址

1

Llama-7B训练

MindSpore

https://developer.huaweicloud.com/develop/aigallery/algo/detail?id=8e3e9e04-d439-4267-854d-9c800e3672fc

2

Llama2-7B训练

MindSpore

https://developer.huaweicloud.com/develop/aigallery/algo/detail?id=d4ca115d-9de4-4a36-86d5-e059bf147649

3

Llama-13B训练

MindSpore

https://developer.huaweicloud.com/develop/aigallery/algo/detail?id=8956ed2f-0fc3-40dc-bad4-027e3653c341

4

Llama2-13B训练

MindSpore

https://developer.huaweicloud.com/develop/aigallery/algo/detail?id=23d07690-654e-4ee5-8b78-68f9543477cd

本文以“Llama-7B”算法为例,介绍如何在AI Gallery上订阅算法,并通过ModelArts进行微调训练和模型推理部署。表1中提供的算法在ModelArts上的使用流程一致,均可参考此教程操作。

约束限制

算法训练和部署模型时建议使用“西南-贵阳一”Region上的昇腾Snt9芯片。

操作流程

开始使用如下样例前,请务必按准备工作指导完成必要操作。

Step1 准备算法:在AI Gallery中订阅算法。
Step2 准备训练数据:准备训练数据。创建OBS桶和文件夹,并将训练数据上传到OBS中。
Step3 全量微调训练:对算法进行全量微调。
Step4 部署模型并推理预测:训练完成后,部署模型并进行推理预测。
Step5 清理资源:运行完成后,停止服务并删除OBS中的数据,避免不必要的资源浪费。

准备工作

开始进行体验前,请仔细阅读以下准备工作,并完成必要操作。

已注册华为帐号并开通华为云,进行了实名认证,且在使用ModelArts前检查帐号状态,帐号不能处于欠费或冻结状态。

注册华为帐号并开通华为云
进行实名认证

个人用户推荐使用人脸识别认证。
若无中国大陆身份证,可使用其他证件认证,并需等待三个工作日审核。

准备一个“西南-贵阳一”Region上的OBS桶。创建OBS桶和文件夹的操作指导请参见创建桶。OBS桶所在区域和ModelArts使用区域必须都选择“西南-贵阳一”。

Step1 准备算法

在AI Gallery的算法页面,申请算法使用权限。具体地址如表1所示,此处以Llama-7B训练为例。单击“申请”,根据提示提交联系方式。预计1-2个工作日完成订阅权限开通。
权限申请通过后,在算法详情页,单击右侧的“订阅”,根据界面提示完成算法订阅。订阅算法完成后,页面的“订阅”按钮显示为“已订阅”。

图1 已订阅算法

单击详情页的“前往控制台”,此时弹出“选择云服务区域”对话框,选择“西南-贵阳一”区域,然后再单击“确定”。

图2 选择云服务区域“西南-贵阳一”

页面将自动跳转至ModelArts的“算法管理 > 我的订阅”中同步对应的算法。

Step2 准备训练数据

以Llama-7B为例,全量微调训练使用的是开源的wiki2048数据集。下载数据集之后,需要将开源数据集转化为MindSpore可以读取的数据格式,然后上传到OBS桶中,用于后续的算法训练。

下载WikiText2数据集到用户本地电脑,并转化数据集格式为MindSpore可以读取的数据格式(xxx.mindrecord.db和xxx.mindrecord),具体操作请参见文档。
请参考以下要求创建OBS桶中的文件夹,并上传数据到OBS桶中,用于后续的算法微调训练。

OBS文件夹目录要求如下:

{OBS桶}                             # OBS对象桶,用户可以自定义名称,例如:llm-mindspore-ma
      -{OBS文件夹}                  # OBS文件夹,用于存放训练输入数据,用户可以自定义名称,例如:wiki2048
          - wiki2048.mindrecord.db  # 训练数据集
          - wiki2048.mindrecord     # 训练数据集
       -{OBS文件夹}                 #训练输出路径,用于存放训练生成的模型文件等,用户可以自定义名称,例如:output
       -{OBS文件夹}                 #作业日志路径,用于存放训练日志,用户可以自定义名称,例如:log           

Step3 全量微调训练

准备好训练数据后,在ModelArts控制台的“算法管理>我的订阅”页面中,使用订阅的“Llama-7B”算法创建训练作业,进行模型全量微调训练。

进入“算法管理 > 我的订阅”页面,选中的“Llama-7B”算法,在页面下方的“版本列表”中单击“创建训练作业”。

由于模型版本在持续迭代更新,此处创建训练作业时,请选择最新版本。

图3 创建训练作业

进入创建训练作业页面,参考如下说明填写关键参数。

“创建方式 > 我的订阅”:系统默认选择订阅的算法,请勿随意修改。
“输入”:选择“数据存储位置”,然后从弹出窗口中选择Step2 准备训练数据中传到OBS的wiki2048数据集,例如:obs://llm-mindspore-ma/wiki2048,其中llm-mindspore-ma是OBS桶名称,需替换成用户自己的桶。
“超参”:设置“run_mode”参数为“finetune”,表示全量微调模式。设置“remote_save_url”参数为OBS中存放训练输出模型的路径,例如:obs://llm-mindspore-ma/output,其中llm-mindspore-ma是OBS桶名称,需替换成用户自己的桶。
“资源池”:选择“公共资源池”。
“资源类型”:选择“Ascend”。
“规格”:选择“Ascend: 8*Ascend-Snt9b(64GB) | ARM: 192 核 14000GB”。
“计算节点个数”:建议采用默认值1。
“作业日志路径”:选择OBS中创建的训练日志存放路径,例如:obs://llm-mindspore-ma/log,其中llm-mindspore-ma是OBS桶名称,需替换成用户自己的桶。
其他参数保持默认值即可。

图4 训练作业参数-训练输入

图5 超参设置

图6 资源池设置

参数填写完成后,单击“提交”,根据界面提示确认规格,单击“确定”,完成训练作业创建。
进入“训练管理 > 训练作业”页面,等待训练作业运行完成。训练作业运行需要30分钟左右,请耐心等待。您可以单击训练作业名称,进入详情页面,了解训练作业的“配置信息”、“日志”、“资源占用情况”等信息。
当训练作业的状态变更为“已完成”时,表示已运行结束。此时,可以在超参“remote_save_url”设置的OBS输出路径下,找到对应的模型文件夹model,如图7所示。确认该路径下存在有模型部署文件,即存在mindir文件夹、config文件、推理脚本文件customize_service.py等。

图7 训练输出模型

Step4 部署模型并推理预测

本节将详细说明模型推理部署的过程。

在训练任务详情页的右上角,单击“创建AI应用”,进入AI应用创建页面。

图8 创建AI应用

在AI应用创建页面,设置如下参数。

“元模型来源”:选择“从对象存储服务(OBS)中选择”。
“选择元模型”:从OBS中选择一个模型包。即Step3 全量微调训练中输出的模型存储路径,例如:obs://llm-mindspore-ma/output/model,其中llm-mindspore-ma是OBS桶名称,需替换成用户自己的桶。

图9 选择元模型

“AI引擎”:默认是“MindSpore”,无需修改。
“动态加载”:必须勾选,否则会出现模型太大无法导入的情况。
“推理代码”:系统会自动加载推理代码路径。
其他参数保持默认值。

图10 创建AI应用

单击“立即创建”,跳转到AI应用列表页,查看AI应用状态,当状态变为“正常”,表示AI应用创建成功。此时单击AI应用名称,进入AI应用详情页面,可以查看AI应用详情信息。

图11 AI应用创建成功

在AI应用详情页面,单击右上角“部署 > 在线服务”,进入服务部署页面,参考如下说明填写关键参数,完成服务部署。

“名称”:自定义一个在线服务的名称,也可以使用默认值。
“资源池”:选择“公共资源池”。
“AI应用来源”:选择“我的AI应用”。
“选择AI应用及版本”:选系统会自动选择。
“计算节点规格”:默认选择“Ascend: 1*xxx”,1表示单卡。
“计算节点个数”:默认设置为“1”,无需修改。当前仅支持单机单卡,暂不支持分布式推理。
其他参数可使用默认值。

图12 部署服务

参数配置完成后,单击“下一步”,确认规格参数后,单击“提交”,提示在线服务的部署任务提交成功。

图13 提交部署任务

如果在线服务提交失败,提示“ModelArts.3520: 在线服务服务数量超限,限制为20”,表示当前已部署的在线服务数量超出配额,请参考FAQ处理。

单击“查看服务详情”,进入“在线服务”详情页面,等待服务状态变为“运行中”时,表示服务部署成功。
在服务详情页面,单击“预测”页签,在输入栏输入JSON Prompt请求体,如{“prompt”:”What are the three primary colors?”},进行服务预测。

图14 服务预测

Step5 清理资源

如果不再需要使用此模型及在线服务,建议清除相关资源,避免产生不必要的费用和资源浪费。

在“在线服务”页面,“停止”或“删除”刚创建的在线服务。
在“AI应用管理”页面,“删除”刚创建的AI应用。
在“训练作业”页面,“删除”运行结束的训练作业。
进入OBS,删除本示例使用的OBS桶及文件夹,以及文件夹的文件。

父主题: 昇腾应用教程

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家