打开微信,使用扫一扫进入页面后,点击右上角菜单,
点击“发送给朋友”或“分享到朋友圈”完成分享
链接:
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专有性能调优方案
· 从框架宏观层面,展开推理应用调优工作
· 复用业界成熟的性能数据可视化方法,提高调优效率
热门帖子
精华帖子