华为AI解决方案

all-scenario-native-ai

2018年华为全连接大会上,华为发布了全栈全场景AI解决方案,包括Ascend、CANN、MindSpore、应用使能四个层次。其中,Ascend(昇腾)是基于统一、可扩展架构的系列化AI IP和芯片,包括Max、Mini、Lite、Tiny和Nano五个系列;CANN是芯片算子库和高度自动化算子开发工具;MindSpore为支持端、边、云独立的和协同的统一训练和推理框架;应用使能层可以提供全流程服务、分层API和预集成方案。

  • Ascend层(计算硬件)
    Ascend即IP和芯片组层,目标是在任何场景下以最低成本提供最佳性能。Ascend使用统一架构,只需要进行一次算子开发,然后便可以在任何场景下使用;跨场景一致的开发和调试体验;在某个芯片上完成算法开发可以顺利地迁移到面向其他场景的IP和芯片上。

  • CANN层(异构计算架构)
    偏底层、偏通用的计算框架,用于针对上层AI框架的调用进行加速,提供芯片算子库和算子开发工具包,目标是兼具最优开发效率和算子性能,以应对学术研究和行业应用的蓬勃发展。

  • MindSpore(AI框架)
    MindSpore是统一的训练/推理框架,它的目标是设计态友好、运行态友好、适应所有场景。

  • 应用使能层
    应用使能层是一个机器学习PaaS,提供全流程服务、分层分级API以及预集成方案

Ascend

Ascend系列芯片,主要有6个引擎: AICore、VectorCore、AICPU、DVPP、AIPP、HCCL。

  • AICore,核心的tensor计算单元,负责矩阵tensor的卷积计算,每core上16x16x16半浮点精度/cycle,有vectorUnit的256半浮点精度/cycle;
  • Vecto rCor,核心的vector计算单元,每core上有256半浮点精度/cycle;
  • AICPU,逻辑计算单元;
  • DVPP,集成了VPC、JPEGE、JPEGD、PNGD、VDEC和VENC等功能;
  • AIPP,硬件图像预处理功能,包括色域转换,图像归一化(减均值/乘系数)和抠图(指定抠图起始点,抠出神经网络需要大小的图片)等功能;
  • HCCL,多机通讯能力;

CANN

CANN 是神经网络计算架构(Compute Architecture for Neural Networks)的缩写,提供了高性能的CCE算子库。关键组件是其高度自动化算子开发工具Tensor Engine,通过统一的DSL接口(TE Interface),配合预置的高层模板封装、自动性能调优等工具集合,方便在Ascend芯片上开发自定义算子(CCE lib-extension)。
CANN

  1. 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)等。

  2. 软件架构

    • GE (Graph Engine):作为图编译和运行的控制中心,提供图运行环境管理、图执行引擎管理、算子库管理、子图优化管理、图操作管理和图执行控制。
    • FE (Fusion Engine):管理算子的融合规则、依据融合规则对IR Graph进行匹配和算子融合操作、对系统支持的算子进行管理和维护算子列表、支持自定义算子。
    • AICPUE (AICPU Engine):针对计算特征更亲和于CPU的部分算子,负责算子的信息管理和子图编译,包括算子注册、算子内存需求计算、子图优化和task生成,以支持这类算子在AI CPU运算单元的执行。
    • HCCL (Huawei Collective Communication Library):负责HCCL算子信息管理。HCCL实现参与并行计算的所有worker的梯度聚合(allreduce)功能,为Ascend多机多卡训练提供数据并行方案。
    • Runtime:为神经网络的任务分配提供了资源管理通道。昇腾AI芯片Runtime运行在应用程序的进程空间中,为应用程序提供了存储(Memory)管理、设备(Device)管理、执行流(Stream)管理、事件(Event)管理、核(Kernel)函数执行等功能。
    • TS:Task Scheduler,负责计算图Task序列的管理和调度、执行。
    • TBE:通过DSL(domain-specific language)描述算子的算法实现和优化调度来自动编译生成算子,同时还作为自定义算子的开发工具供生态开发者使用。
    • 算子库:Ascend神经网络加速库,内置丰富算子,支撑神经网络训练和推理加速。

AscendCL

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

  • 在运行应用时,AscendCL调用GE执行器提供的接口实现模型和算子的加载与执行、调用运行管理器的接口实现Device管理/Context管理/Stream管理/内存管理等。

开发流程

AscendCL接口调用流程

参考资料

AScend-CANN是什么
一文带你认识AscendCL
Driving AI to new horizons with an all-scenario native, full-stack solution
CANN V100R020C20 应用软件开发指南