异构计算架构CANN(Compute Architecture for Neural Networks)是昇腾针对AI场景推出的异构计算架构,向上支持多种AI框架,包括MindSpore、PyTorch、TensorFlow等,向下服务AI处理器与编程。
1CANN 总体架构
CANN 软件架构:
CANN 向上对接各种深度学习框架,向下对接driver 驱动和 AI 处理器。
CANN 主要包含六部分:
-
GE图引擎( Graph Engine),是计算图编译和运行的控制中心 ,提供图优化、图编译管理以及图执行控制 等功能。GE通过统一的图开发接口提供多种AI框架的支持,不同AI框架的计算图可以实现到Ascend图的转换。
-
Ascend C算子开发语言,是CANN针对算子开发场景推出的编程语言 ,原生支持C和C++标准规范 ,最大化匹配用户开发习惯;通过多层接口抽象、自动并行计算、孪生调试等关键技术,极大提高算子开发效率,助力AI开发者低成本完成算子开发和模型调优部署。
-
AOL算子加速库(Ascend Operator Library),提供了丰富的深度优化、硬件亲和的高性能算子,包括神经网络(Neural Network,NN)库、**线性代数计算库(Basic Linear Algebra Subprograms,BLAS)**等,为神经网络在昇腾硬件上加速计算奠定了基础。
-
HCCL集合通信库(Huawei Collective Communication Library),是基于昇腾硬件的高性能集合通信库,提供单机多卡以及多机多卡间的数据并行 、模型并行 集合通信方案。HCCL支持AllReduce、Broadcast、Allgather、ReduceScatter、AlltoAll 等通信原语,Ring、Mesh、HD等通信算法,在HCCS、RoCE和PCIe高速链路实现集合通信。
-
BiSheng Compiler毕昇编译器,提供Host-Device异构编程编译 能力,利用微架构精准编译优化释放昇腾AI处理器性能,提供完备二进制调试信息与二进制工具链,支撑AI开发者自主调试调优。
-
Runtime运行时,提供了高效的硬件资源管理 、媒体数据预处理 、单算子加载执行 、模型推理等开发接口,供开发者轻松构建高性能人工智能应用。
统一的API框架,实现对所有资源的调用。
CANN针对训练任务提供了完备的支持,针对PyTorch 、TensorFlow 等开源框架网络模型,CANN提供了模型迁移工具 ,支持将其快速迁移到昇腾平台。此外,CANN还提供了多种自动化调测工具,支持数据异常检测、融合异常检测、整网数据比对等,帮助开发者高效问题定位。
2 CANN 软件安装
安装驱动固件和CANN开发套件包Toolkit。
这里基于 香橙派 KunpengPro(310B4),在 ubuntu 物理机上安装,用来尝试 训练&推理&开发调试。安装方案如下:
由于 昇腾NPU驱动 和 NPU 固件系统中已经有了,并且香橙派也有提供喜爱能够赢得安装包,这里便不再赘述。这里主要安装Toolkit(CANN开发套件包)和Kernels(CANN二进制算子包)。
CANN开发套件包,在训练&推理&开发调试场景下安装,主要用于训练和推理业务、模型转换、算子/应用/模型的开发和编译;CANN二进制算子包,提供了静态库,并能够节省算子编译时间,在大模型推理、训练场景,使用静态库编译应用程序,和运行包含动态shape网络或单算子API(例如aclnn类API)相关业务。
2.1 下载安装包
在升腾社区下载 310b 对应的 kernels 和 Toolkit 安装包:
https://www.hiascend.com/zh/developer/download/community/result?module=cann
Kernels:
Toolkit:
2.2 安装
- 配置最大线程数
训练场景下,OS的最大线程数可能不满足训练要求,需执行以下命令修改最大线程数为无限制:
bash
# 配置环境变量,修改线程数为无限制,编辑"/etc/profile"文件,在文件的最后添加如下内容后保存退出:
ulimit -u unlimited
执行如下命令使环境变量生效:
bash
source /etc/profile
- 安装Toolkit开发套件包
增加对软件包的可执行权限,校验软件包安装文件的一致性和完整性:
bash
chmod +x Ascend-cann-toolkit_8.0.0.alpha002_linux-aarch64.run
./Ascend-cann-toolkit_8.0.0.alpha002_linux-aarch64.run --check
出现如下回显信息,表示软件包校验成功:
bash
Verifying archive integrity... 100% SHA256 checksums are OK. All good.
安装软件包:
bash
./Ascend-cann-toolkit_8.0.0.alpha002_linux-aarch64.run --install
安装完成后,若显示如下信息,则说明软件安装成功:
bash
xxx install success
配置环境变量,根据set_env.sh的实际安装路径进行替换:
bash
source /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh
也可以将 source /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh
添加到~/.bashrc
里面。
安装后检查。执行如下命令查询CANN版本信息,查询结果与安装软件包的版本一致时,则验证安装成功:
bash
cd /usr/local/Ascend/ascend-toolkit/latest/aarch64-linux
cat ascend_toolkit_install.info
- 安装Kernels算子包
Kernels算子包安装之前,需已安装配套版本的Toolkit并配置环境变量,请使用同一用户安装。
增加对软件包的可执行权限,校验软件包安装文件的一致性和完整性:
bash
chmod +x Ascend-cann-kernels-310b_8.0.0_linux-aarch64.run
./Ascend-cann-kernels-310b_8.0.0_linux-aarch64.run --check
出现如下回显信息,表示软件包校验成功:
bash
Verifying archive integrity... 100% SHA256 checksums are OK. All good.
安装除静态库之外的其他文件,请执行如下命令:
bash
./Ascend-cann-kernels-310b_8.0.0_linux-aarch64.run --install
安装所有文件,包括静态库和动态库,请执行如下命令:
bash
./Ascend-cann-kernels-310b_8.0.0_linux-aarch64.run --devel
安装完成后,若显示如下信息,则说明软件安装成功:
bash
xxx install success
- 安装后检查
执行如下命令查询软件版本信息,查询结果与安装软件包的版本一致时,则验证安装成功,进入软件包安装信息文件目录:
bash
cd /home/HwHiAiUser/Ascend/ascend-toolkit/latest/opp_kernel
cat version.info