当前位置: 首页 > news >正文

【CANN训练营】+开源之星+GitCode算子开发环境快速搭建手册

 国庆节前从https://gitee.com/ascend/cann-ops看到通知:

cann-ops 本项目已经正式迁移至 Gitcode 平台

第一时间去gitcode平台看了下,发现改动很大,关键是还有了

算子开发环境快速搭建手册

这不得第一时间上手一波,点进去一看,还行,如何初始化都有了,结果发现。文档里面各种不通,而且第一天连source命令都无法支持,好诡异的存在。

马上过节了,放着节后再来试试看吧。

过完节,发现留言已经被回复,那再来试试看。

通过手册能得知:

在GitCode平台上创建硬件环境为Ascend 910B+ARM的开发环境。

这样的话,自定义算子是可以在上面进行编译并测试的,好评,要不然很多小伙伴都没有硬件可以作算子开发,限制太多。

但是因为是共享空间,所以两小时后回自动关闭,需要重新启动。 

这点麻烦,因为等于每次重新进去,都得安装一遍CANN包,占用时间,希望后期可以改进,持久化是最好的。

接下来就用手册原文:

1.创建Notebook开发环境

步骤 1 进入GitCode平台Notebook创建页面
在GitCode主页,点击右上角“个人中心-我的Notebook”进入Notebook的管理页面。

步骤 2 激活并启动Notebook实例
我的Notebook页面选择”激活Notebook”

在Notebook资源确认界面中创建并启动一个新的Notebook,其配置如下:
 Notebook计算类型:”NPU”,”NPU basic · 1 * NPU 910B · 4v CPU · 8GB”。
 容器镜像:”ubuntu22.04-py3.11-cann8.2.rc1-sglang-main-notebook”。
配置完成之后”立即启动”

步骤 3 启动Notebook进入开发环境
当上一步创建并启动好Notebook时,即可点击“Terminal”进入在线编程页面
注意:Notebook环境内上传、创建和编辑的文件均在/home/service目录下。

2.环境配置

步骤 1 在Notebook环境中点击 Terminal,打开终端窗口,执行如下命令,直接在本环境通过wget下载获取init_env.sh自动安装脚本:

先输入 bash ,回车

再输入 wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/resource/gitcode/init_env.sh,回车

从init_env.sh文件内容中能看到:

#!/bin/bashUSERNAME=$(id -un)
echo "当前用户:$USERNAME"progress() {#进度条程序local main_pid=$1mark_str1="Verifying"mark_str2="runtime"mark_str3="compiler"mark_str4="opp"mark_str5="toolkit"mark_str6="aoe"mark_str7="mindstudio"mark_str8="test-ops"while [ "$(ps -p ${main_pid} | wc -l)" -ne "1" ] ; domark=$(tail -n 1 install.log)if [[ $mark =~ $mark_str1 ]]thenmark="校验安装包,请等待"elif [[ $mark =~ $mark_str2 ]]thenmark="正在安装runtime组件包,请等待"elif [[ $mark =~ $mark_str3 ]]thenmark="正在安装compiler组件包,请等待"elif [[ $mark =~ $mark_str4 ]]thenmark="正在安装opp组件包,请等待"elif [[ $mark =~ $mark_str5 ]]thenmark="正在安装${mark_str5}组件包,请等待"elif [[ $mark =~ $mark_str6 ]]thenmark="正在安装${mark_str6}组件包,请等待"elif [[ $mark =~ $mark_str7 ]]thenmark="正在安装${mark_str7}组件包,请等待"elif [[ $mark =~ $mark_str8 ]]thenmark="正在安装${mark_str8}组件包,请等待"elsemark="正在准备安装包,请等待"fipool=("." ".." "..." "...." "....." "......")num=${#pool[*]}roll_mark=${pool[$((RANDOM%num))]}echo -ne  "\033[31m ${mark} ${roll_mark}\033[0m                    \r"sleep 0.5done
}# 安装 dos2unix
cd /home/${USERNAME}/workspace
echo "安装dos2unix..."
if [ -d "dos2unix-7.4.4" ]; thenecho "The dos2unix folder exists, skipping the download and decompression steps."
elif [ -e "dos2unix-7.4.4.tar.gz" ]; thenecho "Dos2unix-7.4.4 compressed file exists, start decompressing steps."tar xf dos2unix-7.4.4.tar.gz
elseecho "need Dos2unix compressed file exists."wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/resource/gitcode/dos2unix-7.4.4.tar.gztar xf dos2unix-7.4.4.tar.gz
fi
cd dos2unix-7.4.4
sed -i 's/-DENABLE_NLS //g' Makefile
sed -i '/po\//d' Makefile
make -j4
make install bindir=/home/${USERNAME}/local/bin -k
export PATH=/home/${USERNAME}/local/bin:$PATH
echo "已安装dos2unix"cd /home/${USERNAME}/workspace
echo "安装gawk..."
if [ -d "gawk-5.2.2" ]; thenecho "The gawk folder exists, skipping the download and decompression steps."
elif [ -e "gawk-5.2.2.tar.gz" ]; thenecho "gawk-5.2.2 compressed file exists, start decompressing steps."tar xf gawk-5.2.2.tar.gz
elseecho "need Gawk compressed file exists."wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/resource/gitcode/gawk-5.2.2.tar.gztar xf gawk-5.2.2.tar.gz
fi
cd gawk-5.2.2
./configure --prefix=/home/${USERNAME}/local/gawk
make -j4
make install
export PATH=/home/${USERNAME}/local/gawk/bin:$PATH
echo "已安装gawk"# 下载CANN-Toolkit包
cd /home/${USERNAME}/workspace
if [ -e "Ascend-cann-toolkit_8.3.RC1_linux-aarch64.run" ]; thenfile_size=$(ls -l "Ascend-cann-toolkit_8.3.RC1_linux-aarch64.run" | awk '{print $5}')full_size=1785287451if [ $file_size -lt $full_size ]; thenecho "CANN包大小不正确,需要重新下载"wget https://ascend-cann.obs.cn-north-4.myhuaweicloud.com/CANN/community/Ascend-cann-toolkit_8.3.RC1_linux-aarch64.run -O Ascend-cann-toolkit_8.3.RC1_linux-aarch64.runchmod +x Ascend-cann-toolkit_8.3.RC1_linux-aarch64.run >/dev/null 2>&1fiecho "toolkit is exists, skipping the download step."
elseecho "Start downloading toolkit package."wget https://ascend-cann.obs.cn-north-4.myhuaweicloud.com/CANN/community/Ascend-cann-toolkit_8.3.RC1_linux-aarch64.run -O Ascend-cann-toolkit_8.3.RC1_linux-aarch64.runchmod +x Ascend-cann-toolkit_8.3.RC1_linux-aarch64.run >/dev/null 2>&1
fi# 安装CANN-Toolkit包
if [ ! -d "/home/${USERNAME}/8.3.RC1" ]; then# 不存在的时候安装./Ascend-cann-toolkit_8.3.RC1_linux-aarch64.run --full --force --install-path=/home/${USERNAME}/Ascend --quiet >install.log 2>&1 &do_sth_pid=$(jobs -p | tail -1)progress "${do_sth_pid}" &wait "${do_sth_pid}"printf "\033[32m CANN包部署完成                         \033[0m\n"
elseprintf "\033[32m CANN包已部署                         \033[0m\n"
fi# 下载CANN legacy包
if [ -e "cann-910b-opp_legacy-8.3.RC1-linux-aarch64.run" ]; thenfile_size=$(ls -l "cann-910b-opp_legacy-8.3.RC1-linux-aarch64.run" | awk '{print $5}')full_size=2257538929if [ $file_size -lt $full_size ]; thenecho "legacy包大小不正确,需要重新下载"wget https://ascend-cann.obs.cn-north-4.myhuaweicloud.com/CANN/community/cann-910b-opp_legacy-8.3.RC1-linux-aarch64.run -O cann-910b-opp_legacy-8.3.RC1-linux-aarch64.runchmod +x cann-910b-opp_legacy-8.3.RC1-linux-aarch64.run >/dev/null 2>&1fiecho "legacy is exists, skipping the download step."
elseecho "Start downloading legacy package."wget https://ascend-cann.obs.cn-north-4.myhuaweicloud.com/CANN/community/cann-910b-opp_legacy-8.3.RC1-linux-aarch64.run -O cann-910b-opp_legacy-8.3.RC1-linux-aarch64.runchmod +x cann-910b-opp_legacy-8.3.RC1-linux-aarch64.run >/dev/null 2>&1
fi# 安装CANN legacy包
./cann-910b-opp_legacy-8.3.RC1-linux-aarch64.run --full --install-path=/home/${USERNAME}/Ascend --quiet >install.log 2>&1 &
printf "\033[32m legacy包已部署                         \033[0m\n"# dos2unix gawk默认安装在/home/${USERNAME}/local路径下,可自行根据安装位置在~/.bashrc里配置以下环境变量
echo "source ${HOME}/Ascend/set_env.sh" >> ~/.bashrc
echo 'export PATH=${HOME}/local/bin:$PATH' >> ~/.bashrc
echo 'export PATH=${HOME}/local/gawk/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

脚本cann包和legacy包更新到社区版本8.3.RC1

Tips1:由于gitcode默认镜像未安装vim,且云环境没有权限执行apt依赖安装,所以文件编辑需要使用notebook提供的文件管理能力。
Tips2:此处显示的/目录实际对应用户环境中/opt/huawei/edu-apaas/src/init目录,如需修改文件,需要将文件放在该目录下才能查看。

步骤 2 执行init_env.sh脚本,自动配置环境,cann和legacy包安装如下:

source init_env.sh

步骤 3 等待脚本执行成功后,设置算子开发所需环境变量

source ~/.bashrc

3.下载ops-math项目源码,编译部署自定义算子abs,执行abs算子样例

先要激活环境变量:

cd /home/service/Ascend/
source set_env.sh

接下来最好是把地址换到现在的工作目录:

cd /opt/huawei/edu-apaas/src/init

然后

git clone https://gitcode.com/cann/ops-math.git

chmod 777 -R ops-math/

cd ops-math

安装根目录requirements.txt依赖

pip3 install -r requirements.txt

编译自定义算子包

./build.sh --pkg --soc=ascend910b --ops=abs

安装自定义算子包

./build_out/cann-ops-math-custom_linux-aarch64.run

本地验证

./build.sh --run_example abs eager cust --vendor_name=custom

从build.sh代码中可以看出:

run_example) 

        echo "Run examples Options:" 

        echo $dotted_line 

        echo "    --run_example op_type  mode[eager:graph] [pkg_mode --vendor_name=name]     Compile and execute the test_aclnn_xxx.cpp/test_geir_xxx.cpp" 

        echo $dotted_line 

        echo "Examples:" 

        echo "    bash build.sh --run_example abs eager" 

        echo "    bash build.sh --run_example abs graph" 

        echo "    bash build.sh --run_example abs eager cust" 

        echo "    bash build.sh --run_example abs eager cust --vendor_name=custom" 

        return 

        ;;

判断是否带参数 eager: 要看算子目录下的examples目录里有没有test_aclnn_*.cpp文件

比如:acos就没有,add就有。

http://www.dtcms.com/a/465157.html

相关文章:

  • 西安网站建设网站网站集约化建设
  • 设计网站名称wordpress无法发送
  • python获取国内股票数据
  • Win64下MSYS2开发环境完整配置指南
  • Linux进程第九讲——进程状态深度解析(三):僵尸进程(Z态)的本质、风险与实验验证
  • 系统之间文件同步方案
  • VTK实战:vtkImplicitSelectionLoop——用隐式函数实现“环选”的核心逻辑与工程实践
  • 使用compose和WheelView实现仿IOS中的3D滚轮控件-三级联动
  • Burpsuite工具使用
  • 做网站设计电脑需要什么配置企业如何建设网站呢
  • 旅游网站制作内容淘宝网站小视频怎么做的
  • 关于 Qt 6.10.0 中 FolderListModel 返回 undefined 路径
  • 做展会怎么引流到自己的网站小程序生成器
  • 【第五章:计算机视觉-项目实战之生成式算法实战:扩散模型】3.生成式算法实战:扩散模型-(1)从零开始训练自己的扩散模型
  • [VoiceRAG] 集成向量化 | Azure AI Search中建立自动化系统
  • 从效能革命到体验重构,易路 AI Agent 破局 HR 三重困境
  • 计算机视觉(opencv)——基于 OpenCV DNN 的实时人脸检测 + 年龄与性别识别
  • Flink 状态后端(State Backends)实战原理、选型、配置与调优
  • Node.js HTTP开发
  • 在 Mac 上使用 Docker 安装 Milvus 2.6.2
  • 福州市住房和城乡建设部网站wordpress 数据导入
  • 北京网站设计技术wordpress 评论验证
  • 亚马逊测评总踩雷?自养号技术筑牢安全防线,避开封号坑
  • Ubuntu 20.04 使用 Issac Gym 进行宇树G1人形机器人进行强化学习训练(Linux仿真)
  • 制造业工艺文档安全协作与集中管理方案
  • 场景美术师的“无限画板”:UE5中非破坏性的材质混合(Material Blending)工作流
  • 黑马微服务P3快速入门入门案例无法跑通解决方案,本文解决了数据库连接和java版本不匹配的问题
  • 遗留系统微服务改造(三):监控运维与最佳实践总结
  • 四川建设招标网站首页自己做的网站显示不安全怎么回事
  • 网络层协议之OSPF协议