Skip to content

A Hardware-Software Blueprint for Flexible Deep Learning Specialization

Updated: at 15:06

摘要 :专门的深度学习(DL)加速堆栈是为特定的框架、模型架构、运算符和数据类型设计的,它们提供了高性能的吸引力,但牺牲了灵活性。算法、模型、运算符或数值系统的变化威胁着专用硬件加速器的可行性。 我们提出VTA,这是一个可扩展面对不断演进工作负载的可编程深度学习体系结构模板。通过参数化体系结构、两级ISA和JIT编译器,VTA实现了这种灵活性。两级ISA基于(1)任务ISA,明确协调并发计算和内存任务;(2)微码ISA,在单周期张量操作中实现多种运算符。接下来,我们提出了一个配备JIT编译器的运行时系统,用于灵活代码生成和异构执行,以有效利用VTA体系结构。 VTA已经集成并开源到Apache TVM中,后者是一款先进的深度学习编译堆栈,在不同模型和不同硬件后端上提供了灵活性。我们提出了一个流程来进行设计空间探索,并生成定制化硬件架构和软件运算符库,可以被主流学习框架所利用。我们通过在边缘级FPGA上部署优化的用于对象分类和风格转换的深度学习模型来演示我们的方法。

1.Intro

VTA是为了将快速更新的加速器和快速变化的机器学习两个领域相联系的工作。 Contribution

Untitled.png

Untitled.png

2.VTA Hardware-Software Stack Overview

VTA类似接在TVM的一个后端,上层部分和TVM是一样的,额外增加了JIT Compiler&Runtime和硬件部分的设计

3.VTA Architecture and JIT Runtime

3.1. Hardware Architecture

如图3.支持fetch、load、compute和store四个命令,支持流水线。特点:

3.2. JIT Runtime System

中间层,协调CPU和加速器的异构计算,同时把下层抽象成单个TVM后端便于开发;添加中间层还可以做内存管理之类的操作,使得模型不用被一次全部载入到加速器中,“overcome physical limitations”;

4.VTA Hierarchical Optimization

4.1. Hardware Exploration for Varying FGPA Sizes

VTA的GEMM形状、数据类型、ALU分配和电路相关的东西都是可调节的,设计空间很大,优化的软件要能搜索便于布线、性能较高的配置。 具体的配置要根据实际部署的模型运算性质进行调整,比如conv2D如果kernel面积大,按照roofline model描述的算术强度就高,就依赖于计算强度,而kernel很小甚至为1(退化成element wise操作)就更依赖于内存带宽。

4.2. Schedule Exploration for Operator Autotuning

用的TVM之前做的方法,不同的VTA硬件参数本身也属于一个超参数,对这个参数的选择用了基于SuccessiveHalving的方法作为备选项。

4.3. Full Network Optimization Case Study

Untitled.png

5.Evaluation


Previous Post
A Comprehensive Survey on Electronic Design Automation and Graph Neural Networks: Theory and Applications
Next Post
BISMO: A Scalable Bit Serial Matrix Multiplication Overlay for Reconfigurable Computing