昇腾ascend随记——昇腾ai的基本架构

繁依Fanyi 繁依Fanyi     2023-03-29     365

关键词:

文章目录

1. 昇腾AI全栈架构

1.1 昇腾AI全栈的四个大部分

  1. 应用使能层面,此层面通常包含用于部署模型的软硬件,例如API、SDK、部署平台,模型库等等。

  2. AI框架层面,此层面包含用于构建模型的训练框架,例如华为的MindSpore、TensorFlow、Pytorch等。

  3. 异构计算架构,偏底层、偏通用的计算框架,用于针对上层AI框架的调用进行加速,力求向上支持多种AI框架,并在硬件上进行加速。

  4. 计算硬件,本层是AI计算的底座,有了强力的芯片及硬件设备,上层的加速才有实施的基础。

2. 异构计算架构 CANN

2.1 CANN 抽象的五层架构

华为公司面向计算机视觉、自然语言处理、推荐系统、类机器人等领域量身打造了基于“达芬奇(DaVinci)架构”的昇腾(Ascend)AI处理器,开启了智能之旅。为提升用户开发效率和释放昇腾AI处理器澎湃算力,同步推出针对AI场景的异构计算架构CANN(Compute Architecture for Neural Networks),CANN通过提供多层次的编程接口,以全场景、低门槛、高性能的优势,支持用户快速构建基于Ascend平台的AI应用和业务。

昇腾AI异构计算架构(Compute Architecture for Neural Networks,CANN)被抽象成五层架构,如下图所示。

1. 昇腾计算语言接口

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

2. 昇腾计算服务层

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

3. 昇腾计算编译引擎

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

4. 昇腾计算执行引擎

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

5. 昇腾计算基础层

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

2.2 CANN 的三层逻辑架构

1. 应用层

包括基于 Ascend 平台开发的各种应用,以及 Ascend 提供给用户进行算法开发、调优的应用类工具。

1. 推理应用

基于 AscendCL 提供的 API 构建推理应用

2. AI 框架

包括 TensorFlow、Caffe、MindSpore 以及第三方框架

3. 模型小型化工具

实现对模型进行量化,加速模型

4. AutoML 工具

基于 MindSpore 自动学习工具,根据昇腾芯片特点进行搜索生成亲和性网络,充分发挥昇腾性能

5. 加速库

基于 AscendCL 构建的加速库(当前支持 Blas 加速库)

6. MindStudio

提供给开发者的集成开发环境和调试工具,可以通过MindStudio进行离线模型转换、离线推理算法应用开发调试、算法调试、自定义算子开发和调试、日志查看、性能调优、系统故障查看等

2. 芯片使能层

实现解决方案对外能力开放,以及基于计算图的业务流的控制和运行。

1. AscendCL 昇腾计算语言库

开放编程框架,提供 Device/Context/Stream/ 内存等的管理、模型及算子的加载与执行、媒体数据处理、Graph 管理等 API 库,供用户开发深度神经网络应用。

2. 图优化和编译

统一的 IR 接口对接不同前端,支持 TensorFlow/Caffe/MindSpore 表达的计算图的解析/优化/编译,提供对后端计算引擎最优化部署能力

  • Graph Engine:图编译和运行的控制中心
  • Fusion Engine:管理算子融合规则
  • AICPU Engine:AICPU 算子信息管理
  • HCCL:HCCL 算子信息管理

3. 算子编译和算子库

  • TBE:编译生成算子及算子开发工具
  • 算子库:神经网络加速库

4. 数字视觉预处理

实现视频编解码(VENC/VDEC)、JPEG 编解码(JPEG/E)、PNG 解码(PNGD)、VPC(预处理)

5. 执行引擎

  • Runtime:为神经网络的任务分配提供资源管理通道
  • Task Scheduler:计算图 Task 序列的管理和调度、执行

3. 计算资源层

主要实现系统对数据的处理和对数据的运算执行。

1. 计算设备

  • AI Core:执行 NN 类算子
  • AI CPU:执行 CPU 算子
  • DVPP:视频/图像编解码、预处理

2. 通信链路

  • PCIe:芯片间或芯片与 CPU 间高速互联
  • HCCS:实现芯片间缓存一致性功能
  • RoCE:实现芯片内存 RDMA 功能

3. 昇腾计算语言接口 AscendCL

3.1 AscendCL 简介

AscendCL(Ascend Computing Language,昇腾计算语言)是昇腾计算开放编程框架,是对底层昇腾计算服务接口的封装,它提供运行时资源(例如设备、内存等)管理、模型加载与执行、算子加载与执行、图片数据编解码/裁剪/缩放处理等API库,实现在昇腾CANN平台上进行深度学习推理计算、图形图像预处理、单算子加速计算等能力。简单来说,就是统一的API框架,实现对所有资源的调用。

3.2 AscendCL 的优势

  1. 高度抽象:算子编译、加载、执行的API归一,相比每个算子一个API,AscendCL大幅减少API数量,降低复杂度。

  2. 向后兼容:AscendCL具备向后兼容,确保软件升级后,基于旧版本编译的程序依然可以在新版本上运行。

  3. 零感知芯片:一套AscendCL接口可以实现应用代码统一,多款昇腾处理器无差异。

3.3 AscendCL 的主要应用场景

  1. 开发应用:用户可以直接调用AscendCL提供的接口开发图片分类应用、目标识别应用等。

  2. 供第三方框架调用:用户可以通过第三方框架调用AscendCL接口,以便使用昇腾AI处理器的计算能力。

  3. 供第三方开发lib库:用户还可以使用AscendCL封装实现第三方lib库,以便提供昇腾AI处理器的运行管理、资源管理等能力。

3.4 AscendCL 的分层能力开放

AscendCL 提供的是分层开放能力的管控,通过不同的组件对不同的使能部件进行对接。包含 GE 能力开放、算
子能力开放、Runtime 能力开放、Driver 能力开放等。

  • 模型加载能力开放:处理om模型加载,但接口的开放是通过AscendCL。
  • 算子能力开放:算子能力实现在CANN中,但算子能力开放是通过AscendCL。
  • Runtime 能力开放:处理基于stream的设备能力、内存、event等资源能力开发诉求,对app屏蔽底层实现。

2023·cann训练营第一季昇腾ai入门pytorch(代码片段)

昇腾AI全栈架构华为AI全栈全场景解决方案为4层,分别为芯片层、芯片使能层、AI框架层和应用使能层。芯片基于统一、可扩展架构的系列化AIIP和芯片,为上层加速提供硬件基础。芯片产品:昇腾310和昇腾910的独立芯片,Nano-Tiny-... 查看详情

华为云昇腾ai计算解决方案正式发布

该解决方案基于昇腾全栈自研能力,构建开放的开发和服务框架,提供快速被集成,共享标准化组件,实现高效调优。  为<strong>互联网、智慧园区、智慧零售、泛金融认证</strong>和<strong>智慧医疗</strong>等... 查看详情

华为云昇腾ai计算解决方案正式发布

该解决方案基于昇腾全栈自研能力,构建开放的开发和服务框架,提供快速被集成,共享标准化组件,实现高效调优。  为<strong>互联网、智慧园区、智慧零售、泛金融认证</strong>和<strong>智慧医疗</strong>等... 查看详情

昇腾携手openmmlab,支持海量算法仓库的昇腾ai推理部署

摘要:近日,昇腾AI联合浦江实验室,正式实现OpenMMLab算法仓库在昇腾的异构计算架构CANN上的推理部署,目前相关代码已推入MMDeploy0.10.0版本,并在GitHub正式发布。本文分享自华为云社区《昇腾携手OpenMMLab࿰... 查看详情

极智ai|谈谈昇腾cannaipp(代码片段)

...享 大家好,我是极智视界,本文介绍一下谈谈昇腾CANNAIPP。 昇腾CANN的全称是ComputeArchitectureforNeuralNetworks,是昇腾针对AI场景推出的异构计算架构。前几天写了一篇《极智AI|昇腾CANNATC模型转换》,里面介绍了昇... 查看详情

极智ai|昇腾cannatc模型转换(代码片段)

...记分享 大家好,我是极智视界,本文介绍一下昇腾CANNATC模型转换。 昇腾CANN的全称是ComputeArchitectureforNeuralNetworks,是昇腾针对AI场景推出的异构计算架构,通过提供多层次的编程接口,支持用户快速构建基... 查看详情

又一重要进展发布!openmmlab算法仓支持昇腾ai训练加速

...实验室的浦视开源算法体系(OpenMMLab)团队基于昇腾AI发布了MMDeploy0.10.0版本,该版本已支持OpenMMLab算法仓库在昇腾异构计算架构CANN上的推理部署。本文分享自华为云社区《又一重要进展发布!OpenMMLab算法仓支持... 查看详情

华为ascend昇腾cann详细教程(代码片段)

一、参考资料基于昇腾CANN的推理应用开发快速体验(C++)基于昇腾CANN的推理应用开发——图片分类应用(C&C++)二、重要说明CANN软件提供进程级环境变量设置脚本,供用户在进程中引用,... 查看详情

用昇腾ai护航“井下安全”

...华为云社区《华为携手云话科技助力矿山智能化,用昇腾AI护航“井下安全”!》,作者:昇腾CANN。都说“矿产品是工业的粮食,而矿山则是产粮食的土地” 查看详情

开发实践丨昇腾cann的推理应用开发体验

...nguage)基本开发流程。本文分享自华为云社区《​​基于昇腾CANN的推理应用开发快速体验(Python)​​》,作者:Tianyi_Li。前情提要这是关于一次 Ascend在线实验的记录,主要内容是通过网络模型加载、推理 查看详情

大力出奇迹,揭秘昇腾cann的ai超能力

...ks)异构计算架构,是以提升用户开发效率和释放昇腾AI处理器极致算力为目标,专门面向AI场景的异构计算架构。1、引言从2016年,战胜世界顶级棋手,强势将了人类一军的AlphaGo,到2020年ÿ 查看详情

昇腾ai的三级跳

我们的读者,应该都已经关注昇腾AI很长时间了。如果回溯整个昇腾AI计算产业的发展历程,会发现两个节点非常重要。一个是昇腾AI作为算力底座,形成了完整的产品体系;第二个是昇腾AI构建了全栈开放的软硬... 查看详情

又一重要进展发布!openmmlab算法仓支持昇腾ai训练加速

...实验室的浦视开源算法体系(OpenMMLab)团队基于昇腾AI发布了MMDeploy0.10.0版本,该版本已支持OpenMMLab算法仓库在昇腾异构计算架构CANN上的推理部署。本文分享自华为云社区《又一重要进展发布!OpenMMLab算法仓支持... 查看详情

基于昇腾计算语言ascendcl开发ai推理应用

摘要:本文介绍了昇腾计算语言AscendCL的基本概念,并以示例代码的形式介绍了如何基于AscendCL开发AI推理应用,最后配以实际的操作演示说明如何编译运行应用。本文分享自华为云社区《​​基于昇腾计算语言AscendCL开发AI推理... 查看详情

atc:一个能将主流开源框架模型转换为昇腾模型的神奇工具(代码片段)

摘要:本文介绍了昇腾CANN提供的模型转换工具ATC,介绍了其功能、架构,并以具体样例介绍了该工具的基本使用方法以及常用设置。本文分享自华为云社区《使用ATC工具将主流开源框架模型转换为昇腾模型》,作... 查看详情

atc:一个能将主流开源框架模型转换为昇腾模型的神奇工具(代码片段)

摘要:本文介绍了昇腾CANN提供的模型转换工具ATC,介绍了其功能、架构,并以具体样例介绍了该工具的基本使用方法以及常用设置。本文分享自华为云社区《使用ATC工具将主流开源框架模型转换为昇腾模型》,作... 查看详情

极智ai|三谈昇腾cann量化(代码片段)

...分享大家好,我是极智视界,本文介绍一下三谈昇腾CANN量化。在之前我已经从原理和命令行的量化执行方面介绍了昇腾CANN的量化,有兴趣的同学可以去查看,附上:《谈谈昇腾CANN量化》==>昇腾CANN量... 查看详情

华为云技术分享昇腾ai处理器软件栈--总览

昇腾AI软件栈提供了计算资源、性能调优的运行框架以及功能多样的配套工具,是一套完整的解决方案,可以使昇腾AI处理器发挥出极佳的性能。昇腾AI软件栈可以分为神经网络相关软件模块、工具链以及其它软件模块。·神... 查看详情