本文将从整体上介绍昇腾AI全栈架构以及CANN在其中的位置和作用,CANN的逻辑架构和应用开发框架AscendCL。

昇腾全栈AI软硬件平台

framework

昇腾全栈AI软硬件平台是基于昇腾系列处理器和基础软件构建的全栈AI计算基础设施、行业应用及服务,
平台一共分为五层,自底向上依次为Atlas系列硬件、异构计算架构、AI框架、应用使能和行业应用。

  • Atlas系列硬件
    Atlas系列硬件基于昇腾系列AI处理器(Ascend310用于推理场景,Ascend910用于训练场景),通过模块、标卡、小站、服务器、集群等丰富的产品形态,打造面向“端、边、云”的全场景AI基础设施方案。
    atlas

  • 异构计算架构
    异构计算架构CANN在平台中起到承上启下的作用,对标英伟达的CUDA和CuDNN,提供高效易用的编程接口,对上支持多种AI框架(MindSpore、PyTorch等),对下服务AI处理器,是提升昇腾AI处理器计算效率的关键平台,包括各种引擎、编译器、执行器、算子库。由于其需要负责将算子分配到对应的硬件上,因此叫做异构。

  • AI框架
    AI框架层主要包括华为自研框架MindSpore以及第三方框架TensorFlow和PyTorch等。

  • 应用使能
    应用使能由MindX DL、MindX Edge、ModelZoo、MindX SDK。
    MindX DL:昇腾深度学习组件是支持Atlas训练卡、推理卡的深度学习组件,提供昇腾AI处理器集群调度、昇腾AI处理器性能测试、模型保护等基础功能,快速使能合作伙伴进行深度学习平台开发。
    mindxdl
    MindX Edge:昇腾智能边缘组件提供边缘 AI 业务容器的全生命周期管理能力,同时提供严格的安全可信保障,为客户提供边云协同的边缘计算解决方案,使能客户快速构建边缘 AI 业务。
    mindxedge
    ModelZoo:提供了用于昇腾平台的模型文件。
    MindX SDK:可以帮助用户在特定域快速开发和部署人工智能应用,如制造质检、视觉分析等。
    sdk

    基于此,华为云开发了ModelArts,面向开发者的一站式 AI 平台,为机器学习与深度学习提供海量数据预处理及交互式智能标注、大规模分布式训练、自动化模型生成,及端-边-云模型按需部署能力。HiAI Service是面向智能终端的AI能力开放平台,基于 “芯、端、云”三层开放架构,即芯片能力开放、应用能力开放、服务能力开放,构筑全面开放的智慧生态。

  • 行业应用
    将华为人工智能技术赋能产业发展,推动在制造、交通、电力、金融、互联网、运行商等方面的应用。

同时华为还提供了全流程开发工具链MindStudio,管理运维工具FusionDirector、SmartKit。

异构计算架构CANN

昇腾AI异构计算架构CANN可以被抽象成五层架构:

cann

  • 昇腾计算语言
    昇腾计算语言(Ascend Computing Language,AscendCL)接口是昇腾计算开放编程框架,是对低层昇腾计算服务接口的封装。它提供Device(设备)管理、Context(上下文)管理、Stream(流)管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理、Graph(图)管理等API库,供用户开发人工智能应用调用。

  • 昇腾计算服务层
    本层主要提供昇腾计算库,例如神经网络(Neural Network,NN)库、线性代数计算库(Basic Linear Algebra Subprograms,BLAS)等;昇腾计算调优引擎库,例如算子调优、子图调优、梯度调优、模型压缩以及AI框架适配器。

  • 昇腾计算编译层
    本层主要提供图编译器(Graph Compiler)和TBE(Tensor Boost Engine)算子开发支持。前者将用户输入中间表达(Intermediate Representation,IR)的计算图编译成NPU运行的模型。后者提供用户开发自定义算子所需的工具。

  • 昇腾计算执行层
    本层负责模型和算子的执行,提供如运行时(Runtime)库(执行内存分配、模型管理、数据收发等)、图执行器(Graph Executor)、数字视觉预处理(Digital Vision Pre-Processing,DVPP)、人工智能预处理(Artificial Intelligence Pre-Processing,AIPP)、华为集合通信库(Huawei Collective Communication Library,HCCL)等功能单元。

  • 昇腾计算基础层
    本层主要为其上各层提供基础服务,如共享虚拟内存(Shared Virtual Memory,SVM)、设备虚拟化(Virtual Machine,VM)、主机-设备通信(Host Device Communication,HDC)等。

昇腾计算语言AscendCL

AscendCL(Ascend Computing Language)提供Device管理、Context管理、Stream管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等API库供用户开发深度神经网络应用,用于实现目标识别、图像分类等功能。用户可以通过第三方框架调用AscendCL接口,以便使用昇腾AI处理器的计算能力;用户还可以使用AscendCL封装实现第三方lib库,以便提供昇腾AI处理器的运行管理、资源管理能力。

AscendCL的优势如下:

  1. 高度抽象:算子编译、加载、执行的AIP归一,大幅减少API数量,降低复杂度。
  2. 向后兼容:版本向后兼容,基于旧版本编译的程序依然可以运行。
  3. 零感知芯片:代码统一,多款昇腾处理器无差异。

开发流程

AscendCL接口调用流程