Lite Cluster资源配置流程
本章节介绍Lite Cluster环境配置详细流程,适用于加速卡环境配置。
前提条件
- 已完成集群资源购买和开通,具体请参见Lite Cluster资源开通。
- 集群的配置使用需要用户具备一定的知识背景,包括但不限于Kubernetes基础知识、网络知识、存储和镜像知识。
配置流程
配置顺序 |
配置任务 |
场景说明 |
---|---|---|
1 |
购买资源池后,需要弹性公网IP并进行网络配置,配置网络后可通过公网访问集群资源。 |
|
2 |
kubectl是Kubernetes集群的命令行工具,配置kubectl后,您可通过kubectl命令操作Kubernetes集群。 |
|
3 |
如果没有挂载任何外部存储,此时可用存储空间根据dockerBaseSize的配置来决定,可访问的存储空间比较小,因此建议通过挂载外部存储空间解决存储空间受限问题。容器中挂载存储有多种方式,不同的场景下推荐的存储方式不一样,您可根据业务实际情进行选择。 |
|
4 |
当专属资源池中的节点含有GPU/Ascend资源时,为确保GPU/Ascend资源能够正常使用,需要配置好对应的驱动。如果在购买资源池时,没配置自定义驱动,默认驱动不满足业务要求,可通过本章节将驱动升级到指定版本。 |
|
5 |
Lite Cluster资源池支持镜像预热功能,镜像预热可实现将镜像提前在资源池节点上拉取好,在推理及大规模分布式训练时有效缩短镜像拉取时间。 |
快速配置Lite Cluster资源案例
下文提供一个快速配置的案例,配置完成后您可登录到节点查看加速卡信息并完成一个训练任务。在运行此案例前,您需要购买资源,购买资源的步骤请参考Lite Cluster资源开通。
- 登录节点。
(推荐)方式1:通过绑定公网IP的方式
客户可以为需要登录的节点绑定公网IP,然后可以通过Xshell、MobaXterm等bash工具登录节点。
- 使用华为云账号登录CCE管理控制台。
- 在CCE集群详情页面,单击“节点管理”页签,在“节点”页签中单击需要登录的节点名称,跳转至弹性云服务器页面。
图2 节点管理
- 绑定弹性公网IP。
单击“购买弹性公网IP”,进入购买页。图4 绑定弹性公网IP
图5 购买弹性公网IP
完成购买后,返回弹性云服务器页面,刷新列表。
选择刚才创建的弹性公网IP,单击“确定”。图6 绑定弹性公网IP
- 绑定完成后,通过MobaXterm、Xshell登录。以MobaXterm为例,填入弹性公网IP,登录节点。
图7 登录节点
方式2:通过华为云自带的远程登录功能
- 使用华为云账号登录CCE管理控制台。
- 在CCE集群详情页面,单击“节点管理”页签,在“节点”页签中单击需要登录的节点名称,跳转至弹性云服务器页面。
图8 节点管理
- 单击“远程登录”,在弹出的窗口中,单击“CloudShell登录”。
图9 远程登录
- 在CloudShell中设置密码等参数后,单击“连接”即可登录节点,CloudShell介绍可参见远程登录Linux弹性云服务器(CloudShell方式)。
- 配置kubectl工具。
登录ModelArts管理控制台,在左侧菜单栏中选择
,进入“弹性集群 Cluster”页面。单击创建的专属资源池,进入专属资源池详情页面,单击对应的CCE集群,进入CCE集群详情页面。
在CCE集群详情页面中,在集群信息中找到“连接信息”。图10 链接信息
使用kubectl工具。- 若通过内网使用kubectl工具,需要将kubectl工具安装在和集群在相同vpc下的某一台机器上。单击连接信息下kubectl后的“配置”按钮,根据界面提示使用kubectl工具。
图11 通过内网使用kubectl工具
- 通过公网使用kubectl工具,可以将kubectl安装在任一台可以访问公网的机器。
选择公网IP后单击“确定”,完成公网IP绑定。如果没有可选的公网IP,单击“创建弹性IP”跳至弹性公网IP页面进行创建。
绑定完成后,单击连接信息下kubectl后的“配置”按钮,根据界面提示使用kubectl工具。
- 若通过内网使用kubectl工具,需要将kubectl工具安装在和集群在相同vpc下的某一台机器上。单击连接信息下kubectl后的“配置”按钮,根据界面提示使用kubectl工具。
- docker run方式启动任务。
Snt9B集群在纳管到CCE集群后,会安装容器运行时,下文以docker举例。仅做测试验证,可以不需要通过创建deployment或者volcano job的方式,直接启动容器进行测试。训练测试用例使用NLP的bert模型,详细代码和指导可参考Bert。
- 拉取镜像。本测试镜像为bert_pretrain_mindspore:v1,已经把测试数据和代码打进镜像中。
docker pull swr.cn-southwest-2.myhuaweicloud.com/os-public-repo/bert_pretrain_mindspore:v1 docker tag swr.cn-southwest-2.myhuaweicloud.com/os-public-repo/bert_pretrain_mindspore:v1 bert_pretrain_mindspore:v1
- 启动容器。
docker run -tid --privileged=true \ -u 0 \ -v /dev/shm:/dev/shm \ --device=/dev/davinci0 \ --device=/dev/davinci1 \ --device=/dev/davinci2 \ --device=/dev/davinci3 \ --device=/dev/davinci4 \ --device=/dev/davinci5 \ --device=/dev/davinci6 \ --device=/dev/davinci7 \ --device=/dev/davinci_manager \ --device=/dev/devmm_svm \ --device=/dev/hisi_hdc \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ -v /etc/hccn.conf:/etc/hccn.conf \ bert_pretrain_mindspore:v1 \ bash
参数含义:
- --privileged=true //特权容器,允许访问连接到主机的所有设备
- -u 0 //root用户
- -v /dev/shm:/dev/shm //防止shm太小训练任务失败
- --device=/dev/davinci0 //npu卡设备
- --device=/dev/davinci1 //npu卡设备
- --device=/dev/davinci2 //npu卡设备
- --device=/dev/davinci3 //npu卡设备
- --device=/dev/davinci4 //npu卡设备
- --device=/dev/davinci5 //npu卡设备
- --device=/dev/davinci6 //npu卡设备
- --device=/dev/davinci7 //npu卡设备
- --device=/dev/davinci_manager //davinci相关的设备管理的设备
- --device=/dev/devmm_svm //管理设备
- --device=/dev/hisi_hdc //管理设备
- -v /usr/local/Ascend/driver:/usr/local/Ascend/driver //npu卡驱动挂载
- -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi //npu-smi工具挂载
- -v /etc/hccn.conf:/etc/hccn.conf //hccn.conf配置挂载
- 进入容器,并查看卡信息。
docker exec -it xxxxxxx bash //进入容器,xxxxxxx替换为容器id npu-smi info //查看卡信息
图13 查看卡信息
- 执行下述命令启动训练任务。
cd /home/ma-user/modelarts/user-job-dir/code/bert/ export MS_ENABLE_GE=1 export MS_GE_TRAIN=1 bash scripts/run_standalone_pretrain_ascend.sh 0 1 /home/ma-user/modelarts/user-job-dir/data/cn-news-128-1f-mind/
图14 训练进程
查看卡占用情况,如图所示,此时0号卡被占用,说明进程正常启动。
npu-smi info //查看卡信息
图15 查看卡信息
训练任务大概会运行两小时左右,训练完成后自动停止。若想停止训练任务,可执行下述命令关闭进程,查询进程后显示已无运行中python进程。
pkill -9 python ps -ef
图16 关闭训练进程
- 拉取镜像。本测试镜像为bert_pretrain_mindspore:v1,已经把测试数据和代码打进镜像中。