- 安装依赖
- 可以参照文档
https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC2alpha002/softwareinst/instg/instg_0026.html?sub_id=%2Fzh%2FCANNCommunityEdition%2F80RC2alpha002%2Fsoftwareinst%2Finstg%2Finstg_0133.html
- 这一步只是验证有没有安装完全
- 最以逸待劳的方法就是直接用后面的下载命令,直接全部重新安装,管他有没有装全
- 不过要注意版本的限制,后面有讲
gcc --version
g++ --version
make --version
cmake --version
dpkg -l zlib1g| grep zlib1g| grep ii
dpkg -l zlib1g-dev| grep zlib1g-dev| grep ii
dpkg -l libsqlite3-dev| grep libsqlite3-dev| grep ii
dpkg -l openssl| grep openssl| grep ii
dpkg -l libssl-dev| grep libssl-dev| grep ii
dpkg -l libffi-dev| grep libffi-dev| grep ii
dpkg -l libbz2-dev| grep libbz2-dev| grep ii
dpkg -l libxslt1-dev| grep libxslt1-dev| grep ii
dpkg -l unzip| grep unzip| grep ii
dpkg -l pciutils| grep pciutils| grep ii
dpkg -l net-tools| grep net-tools| grep ii
dpkg -l libblas-dev| grep libblas-dev| grep ii
dpkg -l gfortran| grep gfortran| grep ii
dpkg -l libblas3| grep libblas3| grep ii
复制
- 这是正常的反应,就跟1+1=2一样,如果没反应那就不对,出事了
gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0
g++ (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0
GNU Make 4.3
cmake version 3.22.1
ii zlib1g:arm64 1:1.2.11.dfsg-2ubuntu9 arm64 compression library - runtime
ii zlib1g-dev:arm64 1:1.2.11.dfsg-2ubuntu9 arm64 compression library - development
ii libsqlite3-dev:arm64 3.37.2-2 arm64 SQLite 3 development files
ii openssl 3.0.2-0ubuntu1 arm64 Secure Sockets Layer toolkit - cryptographic utility
ii libssl-dev:arm64 3.0.2-0ubuntu1 arm64 Secure Sockets Layer toolkit - development files
ii libffi-dev:arm64 3.4.2-4 arm64 Foreign Function Interface library (development files)
ii libbz2-dev:amd64 1.0.6-8.1ubuntu0.2 arm64 high-quality block-sorting file compressor library - development
ii libxslt1-dev:amd64 1.1.29-5ubuntu0.3 arm64 XSLT 1.0 processing library - development kit
ii unzip 6.0-26ubuntu3 arm64 De-archiver for .zip files
ii pciutils 1:3.7.0-6 arm64 PCI utilities
ii net-tools 1.60+git20181103.0eebece-1ubuntu5 arm64 NET-3 networking toolkit
libblas-dev:arm64 3.9.0-1build1 arm64 Basic Linear Algebra Subroutines 3, static library
gfortran 4:9.3.0-1ubuntu2 arm64 GNU Fortran 95 compiler
libblas3:arm64 3.9.0-1build1 arm64 Basic Linear Algebra Reference implementations, shared library
复制
- 以逸待劳一步通命令
sudo apt-get install -y gcc g++ make cmake zlib1g zlib1g-dev openssl libsqlite3-dev libssl-dev libffi-dev libbz2-dev libxslt1-dev unzip pciutils net-tools libblas-dev gfortran libblas3
复制
- 检查python 有没有正常安装
- 重点是看版本是否在3.7.X以上,具体看说明
python3 --version
pip3 --version
复制
- 安装Python 相应的库
- 这里要注意,版本限制,比如实测中numpy 的版本会使得ATC转换失败
pip3 install attrs
pip3 install numpy
pip3 install decorator
pip3 install sympy
pip3 install cffi
pip3 install pyyaml
pip3 install pathlib2
pip3 install psutil
pip3 install protobuf
pip3 install scipy
pip3 install requests
pip3 install absl-py
复制
- numpy 版本会影响程序
pip index versions numpy
pip install numpy==1.24.0
复制
- 安装具体过程,下载社区版本的 Ascend-cann-toolkit_8.0.RC2.alpha002_linux-x86_64.run
- 注意PC要设置好--install-path,除非你不想C盘炸了的话
./Ascend-cann-toolkit_8.0.RC2.alpha002_linux-x86_64.run --install-path=/mnt/m/R6-GPU/W2_SZ_notebook_20240619/cann --install
vim ~/.bashrc
source /mnt/m/R6-GPU/W2_SZ_notebook_20240619/cann/ascend-toolkit/set_env.sh
export LD_LIBRARY_PATH=/mnt/m/R6-GPU/W2_SZ_notebook_20240619/cann/ascend-toolkit/latest/x86_64-linux/devlib/:$LD_LIBRARY_PATH
source ~/.bashrc
复制
- 成功安装结果如下
- 在包含动态shape网络或单算子API(例如aclnn类API)场景下需要安装算子包Ascend-cann-kernels-_xxx__linux.run,支持多个芯片类型的二进制算子包安装在同一台设备上
- 安装kernels算子支持 多种特性安装
- 多次选择特性安装时,新特性为增量安装,不会覆盖已安装特性
- aclnn_ops_infer
- aclnn_ops_train
- aclnn_math
- aclnn_rand
./Ascend-cann-kernels-310b_8.0.RC2.alpha002_linux.run --install-path=/mnt/m/R6-GPU/W2_SZ_notebook_20240619/cann --feature=aclnn_ops_infer --install
复制
- 若开发环境和运行环境上的操作系统架构不同,需在开发环境中使用交叉编译工具,并使用运行环境架构的库文件进行编译
- 这样编译出来的可执行文件,才可以在运行环境中执行。
sudo apt-get install g++-aarch64-linux-gnu
复制
- 以上就安装成功了
- 下面进行具体ATC转换
- 使用samples仓库中01-yolov5案例进行测试
- 我们需要将onnx转换为om模型进行使用,onnx文件在下列链接
- https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Atlas%20200I%20DK%20A2/DevKit/downloads/23.0.RC1/Ascend-devkit_23.0.RC1_downloads.xlsx
- 以下为转换指令:
atc --model=yolov5s.onnx --framework=5 --output=yolov5s_bs1 --input_format=NCHW --input_shape="input_image:1,3,640,640" --log=error --soc_version=Ascend310B4
复制
其中转换参数的含义为:
- model:输入模型路径
- framework:原始网络模型框架类型,5表示ONNX
- output:输出模型路径
- input_format:输入Tensor的内存排列方式
- input_shape:指定模型输入数据的shape
- log:日志级别
- soc_version:昇腾AI处理器型号
- input_fp16_nodes:指定输入数据类型为FP16的输入节点名称
- output_type:指定网络输出数据类型或指定某个输出节点的输出类型
具体测试过程见论坛帖
https://www.hiascend.com/forum/thread-0272154252863718072-1-1.html?postId=0372154255171980769
- 总结如下,发现的两个待解决问题
- 7.7.3版本netron打开ATC导出的om文件,会出现乱码情况,但是同样的软件打开案例仓里自带的yolo.om不会出现乱码
- 使用启智社区CANN7镜像生成的om,放进yolov5官方案例可以运行,用WSL + cann8 和启智cann8版本ATC生成的om,放进官方案例都不能运行,而且爆出内部错误的提示,看报错都是内部存储空间的问题
- 所以总结来说前面花费大时间进行配置环境都没什么卵用,可能安装wsl + cann7可以走得通,因为用启智cann7镜像进行ATC导出就可以-因此再一次被环境配置戏耍,感觉到卧式煞笔的无力感
- 不知道有多少伙伴亲自动手去ATC转换,还是就是跑了一下官方案例
- 如果有伙伴使用cann8能够成功转换,还望告知,是不是命令要做修改,还是咋样。。