×

签到

分享到微信

打开微信,使用扫一扫进入页面后,点击右上角菜单,

点击“发送给朋友”或“分享到朋友圈”完成分享

【CN-认知2】寒武纪软件栈 小飞人2023-07-05 16:12:29 回复 查看 经验交流 社区交流
【CN-认知2】寒武纪软件栈
分享到:

链接:

https://zhuanlan.zhihu.com/p/592954492


1、软件栈层级关系


1 层次

基于寒武纪的人工智能软件开发平台分为4个层次,从上到下分别是:应用层、框架层、基础模块、底层运行。

·       应用层包含了预训练模型、应用场景SDK和开发者社区,开发者可以基于应用层的这些模块,快速的进行AI应用算法的开发部署。

·       框架层提供了主流的深度学习框架环境与接口,如Pytorch、TensorFlow等。开发者也可以基于框架层,将原有的AI应用算法无缝的迁移到寒武纪的平台。

·       如果开发者有深度定制开发的需求,也可以直接调用基础模块进行深度定制开发,基础模块提供了大规模分布式通讯库、高性能算子库、BANG语言接口、开发工具包、推理加速引擎。这些基础模块不仅支撑了上层框架和应用,也提供了简便易用的API接口,符合广大开发者在GPU上的使用习惯,极大的方便了客户新业务的开发与老业务的迁移。

·       最底层的运行时CNRT,是一套运行时库,封装抽象了寒武纪板卡设备,提供了一系列的设备接口,为上层模块创建了一套运行环境

 

2 开发和部署流程

软件开发平台可以支持涵盖寒武纪所有的硬件产品。

1.    首先使用寒武纪的云端训练硬件,利用软件栈中的训练相关模块,进行算法应用的开发。

2.    利用寒武纪软件开发平台中所提供的SDK与工具,对算法应用进行调试调优。

3.    应用平台中所提供的推理加速引擎及相关工具,针对各种形态的部署硬件,对算法应用进行部署优化。

 


2、软件栈功能分类


1 方案维度分类

1)训推一体方案

在CNRT之上,是底层支撑模块,包括了高性能算子库CNNL、高性能算子扩展库CNNL-extra、高性能分布式集合通讯库CNCL、推理引擎MagicMind。这些底层支撑模块实现了最基础的推理和训练的能力。在底层支撑模块之上,是使用了寒武纪后端的Pytorch和TensorFlow框架:Cambricon Pytorch和Cambricon TensorFlow。它们底层调用寒武纪的底层支撑模块,上层提供标准的Pytorch和TensorFlow的接口,在其他平台运行的客户算法和应用,可以无缝的在寒武纪平台上运行。

2)视频结构化编程框架

视频结构化编程框架CNStream,将底层的基于寒武纪MLU的视频/图片编解码库CNCodec、2D图像加速库CNCV、推理引擎MagicMind进行了封装,采用插件化的使用方式,使用户能够专注于业务逻辑,编写少量的代码,就能实现复杂的视频结构化程序


 

3)自定义算子的开发和调试

自定义算子的开发使用BANG语言来完成,BANG符合C语言的规范,方便用户编写基于寒武纪芯片的高性能算子。寒武纪同时也提供了完整的开发调式工具:CNCC是BANG语言的C编译器,将BANG源程序翻译为可在寒武纪芯片上运行的二进制代码;CNGDB是BANG程序的调试器,方便开发者在寒武纪芯片上进行程序调试

4)性能调优的方案

CNPerf是寒武纪平台上端到端的性能调优工具,不仅可以调优AI推理和训练的运算过程,也可以对前后处理进行调优。是一套的细力度调优工具,帮助开发者定位性能热点

CNLight是寒武纪平台上的框架层级调优工具,可以在MagicMind和Pytorch1.6框架层级进行性能调优。加上寒武纪提供的Cambricon TensorBoard,复用了业界成熟的TensorBoard数据可视化方案,提高了框架级的性能调优效率

2 软件的功能分类

维度来看,寒武纪软件栈可以分为6大部分,分别是运行时库、框架、分析工具、BANG语言及工具、算子库、视觉应用工具。

·       运行时库提供了底层的设备接口,支撑上层模块

·       框架部分提供了AI算法应用的接口与环境

·       分析工具为开发者提供了一系列的调试调优工具,方便用户在寒武纪硬件上优化AI算法及应用

·       BANG语言及工具,为开发者提供了一整套的自定义算子开发能力,满足客户深层次的定制开发需求

·       算子库中包含了常见网络算子,在寒武纪硬件平台上的高性能实现

·       视觉应用工具,为开发者提供了一整套端到端的CV算法应用开发方案,降低了客户使用寒武纪平台开发CV算法应用的门槛

 

3、软件栈细分类别介绍


1 BANG语言及工具

1)BANG 语言

·       是寒武纪人工智能芯片的编程语言

·       提供通用的C语言接口,方便易用

 

① 功能

•提供异构编程方式

•BANG语言通过抽象寒武纪底层芯片架构,方便开发者描述AI并行运算任务

② 特性

•简单易用的编程接口

•完备的开发调试环境

•充分发挥寒武纪芯片的并行计算能力,大幅提高AI运算性能

•全面覆盖寒武纪的云、边、端所有产品线

2)BANG 语言异构编程工具

BANG语言拥有一套完备的异构开发工具与环境。

 

① CNCC

•寒武纪MLU C语言编译器

•将C语言翻译为可在寒武纪MLU上运行的二进制代码

② CNGDB

•寒武纪MLU代码调试器

•对运行在寒武纪MLU上的运算任务进行调试

③ 异构编程

开发BANG语言程序,是在异构的环境下进行的。CNCC和CNGDB是运行在主机工作站的CPU上,寒武纪的板卡通常通过PCIE接口和主机相连。开发者在主机上完成了代码编写,使用CNCC编译生成可运行的二进制代码,然后通过PCIE接口传输到寒武纪的板卡上运行。开发者在主机侧运行CNGDB,CNGDB通过PCIE接口与寒武纪板卡上的二进制代码通讯,完成调试功能

2 运行时库

运行在主机端的运行时CNRT,处于整个软件栈的最下层,为上层的软件模块提供了支撑环境,提供MLU设备接口。实现主机与MLU设备的交互

CNRT提供了基本的异构环境支撑,内部包含了设备管理、执行控制、队列管理、通知管理、内存管理模块。CNRT内部使用队列的方式和MLU进行通讯,所有的MLU操作都是通过队列方式实现,计算任务的kernel被挂载进队列,CNRT通过主机CPU与MLU的数据通路,将队列中的计算任务逐个发送到MLU上进行处理

 

3 算子库

1)CNNL(寒武纪人工智能计算库)

算子库CNNL中包含了常用的网络算子在寒武纪芯片上的高性能实现。CNNL运行在运行时CNRT之上,包含了神经网络算子,数值运算算子等。

·       包含了常见网络算子的优化实现

·       PyTorch/TensorFlow框架直接调用

·       通过CNRT完成异构计算


 

特性

•支持丰富的算子

•易用性,通用性

•灵活多样的数据精度

•INT8、INT16

•FP16、FP32

•支持多线程多板卡

2)CNNL-Extra

CNNL-Extra是神经网络扩展库,是对CNNL算子库的扩展。CNNL-Extra中包含了经过优化的常见网络片段的融合算子:如Yolo、Transformer/Bert、RCAN的网络融合片段。开发者可以在视觉或者NLP的任务中,直接使用这些高度融合的网络片段,取得极致的性能。同时CNNL-Extra也提供了用户自定义实现算子的接口,用户使用BANG语言实现的算子,可以注册进神经网络扩展库。

 

·       提供了高度优化的融合算子

·       同时也为用户开放了添加自定义算子的入口

·       PyTorch/TensorFlow框架直接调用

·       通过CNRT完成异构计算


4 框架

框架层为上层人工智能应用提供了业界主流深度学习框架的Python或C++接口。

 

1) 人工智能模型与应用

PyTorch/TensorFlow原生Python程序(0迁移成本)

高性能C++程序(C++接口与头部友商语义级兼容,极低的迁移成本)

2) 框架层:CambriconPyTorch、Cambricon TensorFlow

前端提供给用户熟悉的Python框架接口

后端接入寒武纪MLU加速组件

通过切分PyTorch/TensorFlow框架子图,通过JIT方式,使用寒武纪底层加速技术

3) 推理引擎:MagicMind

采用MLIR技术的新一代寒武纪推理加速引擎

图优化技术,高性能代码自动生成

Tensor形状可变,量化加速


5 视觉应用工具

1) CNCV

·       寒武纪计算机视觉库

·       基于MLU的2D图像加速库

·       提供OpenCV类似接口

 

优势

·       高性能、灵活、通用

·       在寒武纪MLU平台上,高效完成图像处理计算任务

 

2) CNCodec

CNCodec是基于寒武纪MLU的视频/图片编解码SDK。寒武纪MLU上具备专用的视频/图片硬件编解码器。在CV算法应用中,视频/图片的编解码占据了很大的一块开销。使用主机CPU做视频/图片编解码工作,不仅占用了主机CPU资源,也消耗了CPU与MLU之间的PCIE带宽,使CPU与PCIE传输成为瓶颈,从而拖慢整个系统。

CNCodec支持了H.264、HEVC、VP8、VP9、JPEG等常见的视频/图片编解码规范

 

优势

·       卸载CPU视频/图片编解码工作到MLU上执行,简化整体算法应用的pipeline。节约CPU/MLU带宽

·       提供AI运算+视频/图片编解码整体方案

 

3) CNStream

CNStream是基于寒武纪平台的视频结构化应用开发框架。CNStream封装了底层的MagicMind,CNCV,CNCodec模块,抽象了AI推理、2D图像加速、视频/图片编解码过程。简化了开发视频结构化应用的步骤,使开发者可以集中关注自身的业务逻辑。


 

优势

CNStream是以插件化的方式来使用。如图所示,使用视频/图片预处理插件、AI运算插件、视频/图片后处理插件,就可以搭建一个完整的CV算法应用。

·       使开发者专注于业务逻辑

·       插件化、低代码快速搭建业务逻辑

·       模块化部署视频结构化应用


6 分析工具

1)CNPerf

CNPerf是寒武纪平台上端到端的性能调优工具,可以进行细力度的性能分析和调优,提供函数调用信息,定位热点函数。取得第一手的MLU软硬件性能数据,便于开发者分析性能瓶颈。提供网络可视化工具,开发者可以基于图形界面,快速分析网络性能。

 

① 功能

·       取得函数调用信息

·       MLU设备性能数据

·       可视化网络性能

② 特点优势

·       获取各种细力度软硬件信息

·       AI应用E2E性能分析,涵盖全流程

·       单算子粒度调优

2)CNLight

CNLight是寒武纪平台上框架级的性能调优工具。支持寒武纪推理引擎MagicMind和Cambricon Pytorch 1.6框架下的调优工作。CNLight收集了软硬件的性能数据,进行存储,开发者可以使用Cambricon TensorBoard进行图形化的分析工作。提供了用户从框架层面展开性能和精度分析的手段。

CNLight是推理引擎MagicMind的专有调优工具,复用了业界成熟的TensorBoard可视化方案,提高了开发者调优工作的效率


 

① 功能

·       CNLight收集寒武纪软硬件性能数据

·       存储为标准的性能数据格式

·       使用CambriconTensorBoard展示数据

·       方便用户从框架层面展开性能或精度分析

② 特点优势

·       MagicMind专有性能调优方案

·       从框架宏观层面,展开推理应用调优工作

·       复用业界成熟的性能数据可视化方法,提高调优效率



版权所有 © 2024 寒武纪 Cambricon.com 备案/许可证号:京ICP备17003415号-1
关闭