云原生AI套件:一键训练大模型及部署GPU共享推理服务
1. 计费说明
必看!!必看!!必看!!本实验为付费体验,需要消耗账号费用。体验后若不再需要使用,请及时释放资源,避免持续产生费用。
计费说明
产品名 |
计费类型 |
预估费用 |
计费链接 |
按量付费 |
0.64元/小时 *1个 |
||
按量付费 |
本实验免费 (8张GPU卡及以下免费) |
||
按量付费 |
10.345元/小时 * 1台 |
||
免费 |
免费 |
免费 |
|
按量付费 |
0.75元/小时 * 1个 |
||
按量付费 |
0.03元/小时 * 2个 (流量费:0.8元/GB) |
||
按量付费 |
0.195元/CU * 2个 |
||
按量付费 |
0.22元/小时 * 2个 (流量费:0.8元/GB) |
打开一键配置模板链接前往ROS控制台,系统自动打开使用新资源创建资源栈的面板。在页面设置配置项,单击创建。
配置项 |
配置项 |
示例 |
资源栈名称 |
支持自定义。 |
stack_2023-06-12_cBesTX8FB |
集群名称 |
支持自定义。说明 不能与现有ACK集群重名。 |
ai-test |
可用区 |
选中可用区。如果当前可用区下为空,请切换地域重新选择。 |
可用区K |
设置节点登录密码 |
设置节点登录密码。 |
请自行设置。 |
打开自动刷新,将每隔5秒自动刷新一次,方便您观察资源创建情况。
在资源栈信息页签中,显示状态为创建成功,表示快速创建成功。
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群ai-test,然后在左侧导航栏,选择应用>云原生AI套件。
在云原生AI套件页面,单击一键部署。
在部署页面,参考下图所示完成设置。然后单击部署云原生AI套件。
一、查找NAS实例的挂载点
登录文件存储NAS控制台,在左侧导航栏,选择文件系统 > 文件系统列表,在页面顶部选择NAS实例所在地域华东1(杭州)。
在文件系统列表页面,找到系统自动ROS自动创建的NAS实例,即在文件系统ID列包含ack-ai-nas的NAS文件系统。
单击目标文件系统ID进入文件详情页面,单击挂载使用,悬浮鼠标至 ,查看NAS实例的挂载地址,并记录此处的挂载地址和挂载命令以备后续使用。
二、 配置目标ai-test集群的存储卷PV和存储声明PVC
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群ai-test,然后在左侧导航栏,选择存储 > 存储卷。
在存储卷页面右上方,单击创建。
在创建存储卷对话框中,参考如下图示进行参数配置,选择挂载点域名为您上一步查询的挂载点地址,然后单击创建,创建名为training-data的存储卷。
然后在左侧导航栏,选择存储 > 存储声明。
在存储声明页面右上方,单击创建。
在创建存储声明对话框中,参考如下图示进行参数配置,然后单击创建,创建名为training-data的存储声明。
三、 下载数据到NAS中
在左侧导航栏,选择节点管理 > 节点。
在节点页面,单击节点名称进入节点的实例详情页面。记录此处节点的弹性公网IP为121.41.XX.XX。
在控制台顶部单击云命令行入口,通过以下命令登录GPU节点。登录密码为创建集群时,设置的节点登录密码。
ssh root@121.41.XX.XX
复制之前记录的NAS文件挂载命令,输入终端。(下方命令为示意,请替换成您自己的NAS文件挂载命令,如果您忘记了怎么查看,请见上方 1-c 步骤)。
sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 0bbfb4915a-sdm14.cn-hangzhou.nas.aliyuncs.com:/ /mnt
执行以下命令,下载bloom模型和训练数据。
cd /mnt/ wget http://ai-training-data.oss-cn-hangzhou.aliyuncs.com/bloom-560m-sft-data.tar tar -xvf bloom-560m-sft-data.tar
四、 在GPU节点上配置集群证书
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群ai-test进入集群信息页面,单击连接信息,在内网访问页签下,复制内网访问凭证。
在cloudshell中执行以下命令
mkdir -p ~/.kube vi ~/.kube/config
将ai-test集群的内网访问的证书内容复制到节点的config文件中。保存并退出(按下键盘ESC键,然后输入:wq,即可完成保存并退出 )。
五、在GPU节点上安装arena客户端
执行如下命令,在GPU节点上安装arena客户端。# 下载arena客户端并安装 cd /root && wget https://aliacs-k8s-cn-hongkong.oss-cn-hongkong.aliyuncs.com/arena/arena-installer-0.9.9-ce4a78d-linux-amd64.tar.gz tar -xzvf arena-installer-0.9.9-ce4a78d-linux-amd64.tar.gz cd arena-installer bash install.sh --only-binary
执行以下命令,提交一个Bloom模型的微调训练任务。训练任务大概需要运行8分钟。
arena submit pytorchjob \ --name=bloom-sft \ --gpus=1 \ --image=registry.cn-hangzhou.aliyuncs.com/acs/deepspeed:v0.9.0-chat \ --data=training-data:/model \ --tensorboard \ --logdir=/model/logs \ "cd /model/DeepSpeedExamples/applications/DeepSpeed-Chat/training/step1_supervised_finetuning && bash training_scripts/other_language/run_chinese.sh /model/bloom-560m-sft"
执行以下命令,查看当前通过Arena提交的所有作业。
arena list
NAME STATUS TRAINER DURATION GPU(Requested) GPU(Allocated) NODE bloom-sft RUNNING PYTORCHJOB 17m 1 1 192.168.26.152
执行以下命令,获取作业详情。
arena get bloom-sft
Name: bloom-sft Status: RUNNING Namespace: default Priority: N/A Trainer: PYTORCHJOB Duration: 1m CreateTime: 2023-07-20 15:06:19 EndTime: Instances: NAME STATUS AGE IS_CHIEF GPU(Requested) NODE ---- ------ --- -------- -------------- ---- bloom-sft-master-0 Running 1m true 1 cn-hangzhou.192.168.XX.XX Tensorboard: Your tensorboard will be available on: http://192.168.XX.XX:32560
将上一步记录的端口号加入GPU实例的入方向安全组,例如32560。
通过浏览器访问Tensorboard。在浏览器中输入http://112.124.XX.XX:32560,此处将IP地址替换为GPU节点公网IP。
执行以下命令,在GPU节点上查看目录。
# 进入微调后的模型目录, training.log 为训练日志 cd /mnt/bloom-560m-sft/ # 目录内容如下 . ├── config.json ├── merges.txt ├── pytorch_model.bin ├── training.log └── vocab.json
使用中文数据集对bloom-560m模型进行了监督微调,接下来可以通过GPU显存共享的能力,将多个推理服务部署在同一块GPU卡上以提高GPU的利用率。下文介绍如何使用Arena,将步骤一微调后的模型部署成推理服务。
执行以下命令,开启GPU共享调度能力和显存隔离能力,替换下列节点为您的GPU节点名称。
kubectl label node cn-beijing.192.168.XX.XX ack.node.gpu.schedule=cgpu
执行以下命令,查看集群GPU资源。
arena top node
NAME IPADDRESS ROLE STATUS GPU(Total) GPU(Allocated) cn-beijing.192.168.x.xxx 101.xx.xx.162 <none> Ready 1 0 --------------------------------------------------------------------------------------------------- Allocated/Total GPUs of nodes which own resource nvidia.com/gpu In Cluster: 0/1 (0.0%)
执行以下命令,提交一个bloom的推理服务,部署2个副本,每个副本使用8G显存。
arena serve custom \ --name=bloom-infernece \ --gpumemory=8 \ --version=alpha \ --replicas=2 \ --restful-port=8080 \ --data=training-data:/model \ --image=registry.cn-hangzhou.aliyuncs.com/acs/djl-serving:v0.23.0 \ "djl-serving -m /model/bloom-inference"
查看提交的任务的详细信息。
arena top node
arena serve get bloom-infernece
等待推理服务启动后,在GPU节点上执行以下命令,在本地调用推理服务。您需要将下列IP替换为上一步记录的Address地址。
curl -X POST http://172.16.xxx.xxx:8080/predictions/bloom_inference -H "Content-type: text/plain" -d "四川美食"
"generated_text":"四川美食》介绍四川的特色小吃,包括美食、名菜、小吃、酒馆、小吃一条街等,这些小吃构成了四川的饮食文化。<|endoftext|>"
7. 释放资源
一、释放NAS文件存储系统
登录文件存储NAS控制台,在左侧导航栏选择文件系统 > 文件系统列表,在页面顶部选择NAS实例所在地域华东1(杭州)。
在文件系统列表页面,找到系统自动ROS自动创建的NAS实例,即在文件系统ID列包含ack-ai-nas的NAS文件系统。然后在页面右侧的操作列,单击 图标,然后单击删除。
二、删除资源栈
登录资源编排控制台。
在左侧导航栏单击资源栈。
在资源栈列表页面,找到需要删除的资源栈,单击右侧操作列中的删除。
在删除资源栈对话框,选中释放资源,然后单击确定。
输入手机验证码,然后单击确定。
5. 实验链接:https://developer.aliyun.com/adc/scenario/99e00d4dea0e4fbf952780b30136209d