【CANN训练营2023年第二季】我玩的就是真实!!如何升级镜像库里的镜像来满足算子编程
PS:巨量时间,不断踩坑,悲凉血泪史,总结成的小小见解。
如果各位觉得写的还行,劳请各位老师们三连一波!!各位老师的鼓励是我坚持写作的动力!!
我玩的就是真实!!!我玩的就是真实!!!我玩的就是真实!!!
问:什么是镜像?镜像仓库是什么?
对于镜像,大家应该不陌生,是使用docker手段套用预设环境的一种媒介。
镜像库有很多官方提供的配套镜像。镜像里面预装了很多适配大家不同需求用途的软件。
你可以把镜像当成,90年代CD,VCD,DVD光驱年代,装软件用的windows系统盘或者游戏盘
也可以当做现在的PE安装系统用的ISO文件
问:既然已经有了官方镜像,为什么要进行私人化升级呢?
1.官方更新是有一个验证期的,可能CANN已经推出了新的版本软件,但是镜像还没有适配
2.这个时代是一个个性化时代,而不是通用普适性时代,所以难免会有一些特殊化的需求
比如这个公司需要增加或减少这个软件,另外一个公司需要增加或减少另外一个软件。
如果不进行镜像升级并且适配成私有化镜像,那么每次docker拉取官方镜像后都要花
大量的时间进行在线升级和适配。
问:就拿本次CANN训练营来说,为什么要进行镜像升级呢?
1.CANN算子的编写需要经历一个流程
(1)cpu验证
(2)npu_simulator验证
(3)npu_onboard验证
(4)aclnn的调用验证
上述四项中需要ascend硬件支持的有npu_onboard验证和aclnn的调用验证
cpu验证和npu_simulator验证不需要ascend硬件支持
2.官方提供的能使用到昇腾训练卡的方式就我所知有两种:
(1)华为云ECS 选定鲲鹏920+310P推理卡,但不支持AsendC的算子编写,1小时1块左右
(2)modelarts中使用notebook功能,调用私有镜像,可以使用910A的算力,1小时19块左右
3.cpu验证和npu_simulator验证可以使用codelab进行编写(很好用,如果未来支持ascend就更好)
npu_onboard验证和aclnn的调用验证就需要使用调用方式第二点进行操作
问:既然如此,为什么不使用官方的镜像,然后在镜像中升级呢?
1.首先要跟大家普及一个概念,notebook使用私人镜像登陆默认是使用ma-user登陆的,并非用root账号
如果用ma-user进行安装会涉及很多安装权限问题
2.操作会非常繁琐,每次都需要拉取镜像后花费大量时间安装,特别费精力,杀鸡焉用牛刀呀
3.另外特别费钱,如果你是土豪的话,略过这项。
上文提到使用上述第二种方式一小时的花费是19块左右,代金券很快就会不够用
问:就拿本次CANN训练营来说,如何进行镜像升级呢?
1.本次升级使用的是最朴实无华的3G大小ascend-pytorch-arm-modelarts镜像
具体升级要分两步走,为什么要这么操作呢?
规避权限风险,分别使用ma-user 和 root 进行升级
2.首先需要一个ECS服务器进行镜像的拉取工作,这里使用的是华为云ECS 鲲鹏920+310P
记住系列口令密码:按需计费+鲲鹏计算+AI加速型kai1s+公共镜像+ubuntus镜像+按流量计费+100带宽
3.申请完毕后用MobaXterm登陆ECS服务器,安装docker
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
sudo systemctl daemon-reload
sudo systemctl restart docker复制
4.按照镜像仓库提供的拉取步骤,使用docker拉取对应的镜像
#下面XXXX需要替换个人的
docker login -u XXXX ascendhub.huawei.com
#这里需要下载凭证
docker pull ascendhub.huawei.com/public-ascendhub/ascend-pytorch-arm-modelarts:23.0.0复制
5.使用华为obs服务将需要的升级文件放进OBS桶中
6.编写两个Dockerfile,使用vim Dockerfile,编写的两个Dockerfile中第一个的作用
1.需要以root权限卸载现有toolkit版本
2.安装vim,dpkg
3.更新cmake版本
4.安装sympy,为后续算子做准备
这里注意最后的两行代码中的tag ,push的地址来自于华为云的SWR容器镜像服务
FROM swr.cn-north-4.myhuaweicloud.com/xxxxxx/ascend-pytorch-arm-modelarts:23.0.0
USER root
RUN ["/bin/bash", "-c", "cd /usr/local/Ascend/ascend-toolkit/6.0.1/aarch64-linux/script && ./uninstall.sh"]
RUN sh -c '/bin/echo -e "y" | yum install vim'
RUN sh -c '/bin/echo -e "y" | yum install dpkg'
RUN sh -c '/bin/echo -e "y" | dnf remove cmake'
RUN wget https://xxxxxxxxx.com/cmake-3.27.6-linux-aarch64.tar.gz
RUN chmod 777 cmake-3.27.6-linux-aarch64.tar.gz
RUN tar -xzvf cmake-3.27.6-linux-aarch64.tar.gz
RUN mv cmake-3.27.6-linux-aarch64 /opt/cmake-3.27.6
RUN ln -sf /opt/cmake-3.27.6/bin/* /usr/bin/
RUN rm -rf cmake-3.27.6-linux-aarch64.tar.gz
RUN pip install sympy
docker build -t swr.cn-north-4.myhuaweicloud.com/xxxxxxxx/ascend-pytorch-arm-modelarts:1.1.0 -f Dockerfile .
sudo docker push swr.cn-north-4.myhuaweicloud.com/xxxxxxxx/ascend-pytorch-arm-modelarts:1.1.0复制
7.编写两个Dockerfile,使用vim Dockerfile,编写的两个Dockerfile中第二个的作用
1.安装最新的toolkit
2.安装最新的communitysdk
这里注意最后的两行代码中的tag ,push的地址来自于华为云的SWR容器镜像服务
FROM swr.cn-north-4.myhuaweicloud.com/xxxxxxx/ascend-pytorch-arm-modelarts:1.1.0
USER ma-user
RUN wget https://xxxxxx.com/Ascend-cann-toolkit_7.0.RC1.alpha003_linux-aarch64.run
RUN chmod 777 Ascend-cann-toolkit_7.0.RC1.alpha003_linux-aarch64.run
RUN sh -c '/bin/echo -e "y" | ./Ascend-cann-toolkit_7.0.RC1.alpha003_linux-aarch64.run --full'
RUN rm -rf Ascend-cann-toolkit_7.0.RC1.alpha003_linux-aarch64.run
RUN wget https://xxxxxxx.com/Ascend-cann-communitysdk_7.0.RC1.alpha003_linux-aarch64.run
RUN chmod 777 Ascend-cann-communitysdk_7.0.RC1.alpha003_linux-aarch64.run
RUN sh -c '/bin/echo -e "y" | ./Ascend-cann-communitysdk_7.0.RC1.alpha003_linux-aarch64.run --full'
RUN rm -rf Ascend-cann-communitysdk_7.0.RC1.alpha003_linux-aarch64.run
docker build -t swr.cn-north-4.myhuaweicloud.com/xxxxxxxx/ascend-pytorch-arm-modelarts:1.1.1 -f Dockerfile .
sudo docker push swr.cn-north-4.myhuaweicloud.com/xxxxxxxxx/ascend-pytorch-arm-modelarts:1.1.1
复制
8.在modelarts中注册镜像,并在notebook中使用该镜像
这样就大功告成了!!!
ps:可惜的是由于root权限的问题,以及NPU固件不可以在镜像中进行升级
所以升级完的镜像的NPU固件或者驱动可能不是最新版本,可能会与toolkit存在部分冲突
可能会出现npu_onboard和aclnn调用会出现segementation fault错误
PS:巨量时间,不断踩坑,悲凉血泪史,总结成的小小见解。
如果各位觉得写的还行,劳请各位老师们三连一波!!各位老师的鼓励是我坚持写作的动力!!
我玩的就是真实!!!我玩的就是真实!!!我玩的就是真实!!!
2023·CANN训练营第二季——高阶班——搭建NPU开发调试环境下篇:使用启智NPU资源搭建成功-云社区-华为云 (huaweicloud.com)
个人觉得,大姚老师的镜像操作方式更好,眼前一亮呀,惭愧
发现大姚老师使用的是mindspore_2.1.0-cann_6.3.2-py_3.7-euler_2.10.7-aarch64-d910b
我觉得可以通过上述方式进行镜像升级也可以达到一样的结果,避免segementation fault
从镜像仓库看23.0.RC2,这个驱动固件版本,对比大姚老师实际跑Npu-smi !瞬间醍醐灌顶呀
下图引用于大姚老师文章
- 点赞
- 收藏
- 关注作者
评论(0)