专属资源池最佳实践-线下环境与训练任务联动
本文档是“ModelArts专属池使用”的一个子场景。本场景下,我们使用线下GPU环境来承载调测阶段、ModelArts训练任务来承载批量运行阶段。
场景特点:
线下GPU环境一般以root用户直接登陆使用,使用容器化方式隔离使用时也会默认以root执行容器。
训练任务默认以“ma-user”用户(uid=1000)来启动任务,如果需要支持以root执行,需要申请特殊白名单。
线下容器镜像、文件系统数据需要能够和云上同步。镜像建议使用SWR同步,代码建议用OBS同步。如有可能,可以拉通线下到云上VPC的专线,此时文件同步可以直接通过挂载盘进行。
场景依赖:
已购买ModelArts训练专属资池,完成开发环境初始化操作,NAS VPC已经正确配置。
权限已经合理设置,拥有SFS Turbo服务的挂载权限。
线下有Linux服务器(带GPU),GPU驱动已经正常安装,nvidia-docker已正常安装,节点能够挂载云上SFS盘(需要专线打通)。或者,在SFS同VPC下有一个带GPU的ECS节点,节点的GPU驱动已正常安装,nvidia-docker已正常安装。
注意:如果线下服务器无法挂载云上SFS盘,手工同步一下云盘的内容,保证云上云下一致即可。
实践流程:
1. ECS配置NFS目录
配置华为源
sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.cn@g" /etc/apt/sources.list
安装软件
sudo apt-get update
sudo apt-get install -y nfs-common
mkdir -p /mnt/sfs_turbo
#下条命令在SFS盘的详情页获取
mount -t nfs -o vers=3,nolock 192.168.0.xx:/ /mnt/sfs_turbo
2. 安装docker,下载pytorch基础镜像
docker pull pytorch/pytorch:1.8.1-cuda10.2-cudnn7-devel
运行调试环境
docker run -ti -d --gpus all --shm-size 16G -v /mnt/sfs_turbo/:/sfs_turbo pytorch/pytorch:1.8.1-cuda10.2-cudnn7-devel bash
#notice: '/mnt/sfs_turbo' refers to path in host, '/sfs_turbo' refers to path in container.
安装apt依赖软件
apt-get install -y vim wget zip
开始进行调试
cd /sfs_turbo/demo
mkdir -p dog_cat_case
cd dog_cat_case
wget https://raw.githubusercontent.com/pytorch/examples/main/imagenet/main.py
wget https://ma-sa.obs.cn-north-4.myhuaweicloud.com/yangzilong/demos/dog_cat_1w.zip
unzip dog_cat_1w.zip
启动训练
python main.py -a resnet50 -b 128 --epochs 5 dog_cat_1w/
保存镜像
docker commit -a "yangzilong" -m "demo case" 79e716 swr.cn-north-4.myhuaweicloud.com/masa-poc/pytorch:1.8.1-cuda10.2-cudnn7-devel
3. 上传镜像到华为云SWR服务
docker login -u cn-north-4@xxxxxxxxxx -p c3dc3b8fb75a7b76f02726aa9561e5b83e330f7121d17f8e6bdaf0d9b234eb2f swr.cn-north-4.myhuaweicloud.com
docker push swr.cn-north-4.myhuaweicloud.com/masa-poc/pytorch:1.8.1-cuda10.2-cudnn7-devel
4. 在训练任务里跑通
https://console.huaweicloud.cn/modelarts/#/training
启动命令如:
cd /sfs_turbo/demo/dog_cat_case; /opt/conda/bin/python main.py -a resnet50 -b 128 --epochs 5 dog_cat_1w/
注意:SFS挂载的地址建议和ECS上启动docker中-v参数的后半部分完全一致。
- 点赞
- 收藏
- 关注作者
评论(0)