CAISA架构与Rainbuilder编译工具介绍



  • CAISA架构与Rainbuilder编译工具介绍








    本文档主要介绍了运行星空加速卡所需的下载资料,并提供了CAISA架构,以及对应编译工具Rainbuilder的简单介绍。

    通过本文档,用户可以:

    1. 能够了解CAISA架构的基本原理
    2. 了解Rainbuiler编译工具的组成,以及各组成部分的作用
    3. 了解Rainbuilder编译工具的基本使用流程





    〇、资料下载


    资料名称 下载地址
    NA-100a http://cloud.corerain.com:8082/share.cgi?ssid=0eoxsbj
    NA-100a-docs http://cloud.corerain.com:8082/share.cgi?ssid=05t030q
    corerain-datasets http://cloud.corerain.com:8082/share.cgi?ssid=0PSeFUu
    corerain-public-tools http://cloud.corerain.com:8082/share.cgi?ssid=0TKhYIi

    • NA-100a:包含每次发布的CAISA软件包,其子路径为独立的软件版本,建议始终使用最新的发行版本。每一个软件发行版路径内包含CAISA的硬件bitstream,RainBuilder安装包,pcie驱动,案例工程(源码发布)。

    • NA-100a-docs:包含四个文档:

      • 星空加速卡产品介绍:星空加速卡的产品规格信息及板卡安装指南。
      • 浪潮 FPGA 加速卡用户手册:浪潮原厂参考手册

      以上两个文档与发布版本无关。

      • 星空加速卡教程:星空加速卡案例工程的操作说明,包含快速指南,用户在安装好板卡后,从该文档开始对板卡进行操作和了解。
      • 星空加速卡用户手册:星空加速卡开发时的调用指令和API集合,建议用户在了解加速卡使用后,参考该文档进行二次开发。

      ​ 以上两个文档与软件发布版本相关,请对应下载与版本匹配的文档。

    • corerain-datasets:鲲云测试用的公有数据集,由于数据量较大,下载后请保存长期使用。

    • corerain-public-tools:包含一些工具包,可根据需要进行下载,同时,使用案例里的网络也会在该路径下备份





    一、CAISA架构介绍



    硬件加速器平台的核心即CAISA加速引擎,鲲云的CAISA加速引擎采用定制人工智能数据流架构,针对深度学习算子进行优化和设计,架构具有高度可拓展性和适用于多种深度学习算法的通用性,实测能够实现硬件90%以上(当前实测最高可达98%)的理论峰值性能。


    目前CAISA架构所支持的算子列表如下:

    算子名称 备注
    AvgPool
    Conv2D
    Conv2DBackpropInput Deconvolution
    Concat
    FullyConnected
    LeakyRelu
    MaxPool2D
    Mean GlobalAveragePooling
    Relu
    Relu6
    Upsample NearestNeighbor



    二、编译工具RainBuilder介绍

    鲲云的编译工具链RainBuilder,为针对CAISA加速引擎开发的软件开发及部署工具系统,用户在使用CAISA加速引擎时,无需了解CAISA硬件级的运行机制和原理,从而可以专注在算法的开发、优化以及编译部署上。为使用者尤其是算法工程师和软件工程师提供了简单易用的开发部署流程。

    Rainbuilder由RbCompilerRbRuntimeRbDriver三部分构成,Rainbuilder的原理如下图所示:


    • RainBuilder Compiler(下文称为RbCompiler或Compiler)可以将用户在TensorFlow、Caffe、ONNX等深度学习框架下开发的算法模型进行全自动算法模型编译优化,并提取数据流中间表达式SG IR。模型编译过程中自动进行数据量化、节点融合、软硬件分割等操作。

    • RainBuilder Runtime为CAISA加速引擎的软件运行时,负责将SG-IR进行加载并使用CAISA加速引擎对深度学习网络进行运行加速,该部分组件以C/C++ API接口的形式开放给用户进行二次开发和部署使用。

    • RainBuilder Driver是底层CAISA架构的相关驱动模块,支持CAISA硬件架构驱动、硬件模块计算调度、以及硬件模型分析。对于应用开发者透明,自动进行细粒度性能优化及调度。


    因此对于开发者来说,使用RainBuilder进行开发的具体流程如下图所示:


    接下来将分别介绍 RbCompilerRbRuntime 的使用流程。



    2.1 RbCompiler使用流程介绍

    在介绍RbCompiler的使用过程前,我们需要提前熟悉下列关键词:

    • SG: Streaming Graph, Compiler使用的数据结构, 每个SG图由一些列SGNodes组成。
    • SG IR: 将SG串行组合链接得到的结果称为SR IR, SR IR文件使用protobuf文件格式,由模型结构文件(.pbtxt)和模型数据文件(.bin)组成。
    • SGNode: SGNode 描述了模型中的一系列计算方式,举例来说,一个卷积计算可以代表一个SGNode。

    RbCompiler对于算法模型的操作流程如下图所示:


    Front-End:进行模型解析,可支持TensorFlow、Caffe、ONNX等深度学习算法开发框架。

    SG转化:将模型转化为SG-IR。

    量化SG:对SG IR进行8bit量化,精度损失可以接受的情况下进行位宽压缩,从而减少计算资源的消耗。

    优化SG:根据FPGA加速卡的计算资源配置,进行算子的融合和SG节点的硬件分配。


    2.2 RbCompiler支持的 API

    RbCompiler的前端在算子级别对不同开发框架下的模型进行解析,并转化为RbRuntime可以识别的SG-IR,RbCompiler前端与TensorFLow、Caffe、ONNX之间的算子对应关系如下表所示

    RbCompiler Frontend vs. TensorFlow

    RbCompiler Frontend vs.Caffe

    RbCompiler Frontend vs.ONNX


    2.3 RbRuntime介绍使用流程

    RbRuntime作为RainBuilder的后端,配合RbCompiler使用,用于加载并运行RbCompiler生成的 模型文件pbtxt和参数,生成对应的模型图SG,SG包含pbtxt文件里描述的所有节点,根据节点创建对应的OP,加载模型参数和输入数据,并调度计算节点,按照拓扑顺序将节点部署在相应的设备上 执行计算,返回模型的计算结果。

    RbRuntime主要包含的模块有:


    RbRuntime运行如下图所示:


登录后回复