NVDLA专题13:NVDLA软件部分设计和Compiler library

13 篇文章 3 订阅

NVDLA拥有完整的软件生态,包括从编译神经网络推理的支持。这个生态的一部分包括on-device软件栈(software stack),它是NVDLA开源版本的一部分。此外,英伟达将提供完整的training infrastructure,用来构建融入深度学习的新模型,并将现有模型转换为NVDLA软件可用的形式。通常,与NVDLA相关的软件分为两部分:Compiler library(模型转换)和Runtime environment(在NVDLA上加载和执行编译的神经网络的运行时软件)。一般流程如下图所示:

Compiler library

编译阶段负责将深度神经网络转换(也称为编译)为针对给定NVDLA配置优化的一系列硬件层。一个针对特定硬件配置的优化编译神经网络,通过减少模型大小、加载和运行时间,来提升性能。编译是一个两步过程,包括:解析(Parsing)和编译(Compiling)。

Parser

Parser是一个相对简单的工具,用来解析预先训练好的模型。在其最基本的形式中,它读取预训练的Caffe模型,并创建一个神经网络多层集合的适当表示,并将其传递给下一步的编译(Compilaton)。一个高级的Parser可以将其他框架(如TensorFlow、Theano等)上的预训练模型翻译成适合Compiler的相同标准表示。虽然Compiler完全了解底层硬件配置,但Parser足够灵活,能够主动识别那些不适合NVDLA实施的神经网络操作,并向应用程序报告。Parser还可以检测拓扑结构中有中断/环路的畸形网络,或者布局不适合相关网络操作的损坏的训练数据。

Compiler

Compiler将Parser的输出作为其输入,并利用对NVDLA实现的底层硬件规范的理解,将其转换(即编译,compile)成硬件层的集合。Compiler可以将解析的神经网络解释为有向图,其中顶点表示神经网络操作边表示操作之间的中间张量。Compiler的主要工作是有效地将每个网络操作映射到NVDLA实施的目标功能块上,同时牢记硬件的规格,了解硬件配置允许Compiler为可用的特征生成适当的操作。例如,这可能包括在不同的卷积运算模式(例如Winograd卷积或基本卷积)之间进行选择,或者根据可用的硬件缓冲区大小将某些运算分成多个更小的单元等。Compiler中的优化或特征可以通过Compiler的输入参数来控制。

为了有效地执行硬件层,Compiler负责确定该层的内存需求,存储器管理的选择可以灵活地通过软件实现。此阶段还负责将较高精度的训练模型(如32位浮点)量化为较低精度,如8位或16位整数或16位浮点,并负责在推理作业期间为量化权重确定内存分配。Compiler的输出以一种标准化的文件格式存储,称为NVDLA Loadable。

相同的Compiler工具可用于为多种不同的NVDLA配置生成硬件层列表。这些步骤离线执行,也可能在包含NVDLA实施的设备上执行。

end

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值