初始昇腾 CANN
昇腾基于 atals 相关硬件产品,在底层创建 CANN 异构计算架构,支持 Mindspore、tensorflow、pytorch、onnx、PP 飞桨、计图等第三方框架,在应用使能层提供 modelarts、HiAi service 等平台来供开发者进行 AI 操作,来应用于智慧城市、制造、能源、医疗等行业。
![](https://static001.geekbang.org/infoq/fa/fafefe541e8c2852352b95da8b841245.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
CANN 异构计算架构
在底层适配昇腾 AI 处理器,在上层对接昇腾 AI 应用和深度学习框架。自下而上它分为昇腾计算基础层、昇腾计算执行层、昇腾计算编译层、昇腾计算服务层,还提出了昇腾计算语言 AscendCL,包括算子开发、图开发和应用开发。
![](https://static001.geekbang.org/infoq/92/92476d88851cb64ed1198103bbd44b82.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
在昇腾计算基础层(Ascend Computing Base Layer),主要为其上各层提供基础服务,如共享虚拟内存(Shared Virtual Memory,SVM)、设备虚拟化(Virtual Machine,VM)、主机-设备通信(Host Device Communication,HDC)等。
昇腾计算执行层(Ascend Computing Execution Layer):负责模型和算子的执行,提供运行时库(Runtime)、图执行器(Graph Executor)、数字视觉预处理(Digital Vision Pre-Processing,DVPP)、人工智能预处理(Artificial Intelligence Pre-Processing,AIPP)、华为集合通信库(Huawei Collective Communication Library,HCCL)等功能单元。
昇腾计算编译层(Ascend Computing Compilation Layer):昇腾计算编译层通过图编译器(Graph Compiler)将用户输入中间表达(Intermediate Representation,IR)的计算图编译成昇腾硬件可执行模型;同时借助张量加速引擎 TBE(Tensor Boost Engine)的自动调度机制,高效编译算子。
昇腾计算服务层(Ascend Computing Service Layer): 主要提供昇腾算子库 AOL(Ascend Operator Library),通过神经网络(Neural Network,NN)库、线性代数计算库(Basic Linear Algebra Subprograms,BLAS)等高性能算子加速计算;昇腾调优引擎 AOE(Ascend Optimization Engine),通过算子调优 OPAT、子图调优 SGAT、梯度调优 GDAT、模型压缩 AMCT 提升模型端到端运行速度。同时提供 AI 框架适配器 Framework Adaptor 用于兼容 TensorFlow、PyTorch 等主流 AI 框架。
昇腾计算语言(Ascend Computing Language,简称 AscendCL):AscendCL 接口是昇腾计算开放编程框架,是对底层昇腾计算服务接口的封装。它提供设备(Device)管理、上下文(Context)管理、流(Stream)管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理、图(Graph)管理等 API 库,供用户开发人工智能应用。
推理应用开发
CANN 提供了在昇腾平台上开发神经网络应用的昇腾计算语言 AscendCL(Ascend Computing Language),提供运行资源管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等 API,实现利用昇腾硬件计算资源、在昇腾 CANN 平台上进行深度学习推理计算、图形图像预处理、单算子加速计算等能力。简单来说,就是统一的 API 框架,实现对所有资源的调用。
模型训练
CANN 针对训练任务提供了完备的支持,针对 PyTorch、TensorFlow 等开源框架网络模型,CANN 提供了模型迁移工具,支持将其快速迁移到昇腾平台。此外,CANN 还提供了多种自动化调测工具,支持数据异常检测、融合异常检测、整网数据比对等,帮助开发者高效问题定位。
算子开发领域
CANN 提供了超过 1400 个硬件亲和的高性能算子,可覆盖主流 AI 框架的算子加速需求,同时,为满足开发者的算法创新需求,CANN 开放了自定义算子开发的能力,开发者可根据自身需求选择不同的算子开发方式,算子开发方式分为 TBE 和 AscendC 算子。
评论