scalable and modularized rtl compilation of convolutional ... · scalable and modularized rtl...

36
Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA Yufei Ma , Naveen Suda, Yu Cao, Jae-sun Seo, Sarma Vrudhula School of Electrical, Computer and Energy Engineering School of Computing, Informatics, Decision Systems Engineering Arizona State University, Tempe, USA

Upload: dinhdan

Post on 02-Jul-2018

235 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Scalable and Modularized

RTL Compilation of

Convolutional Neural Networks

onto FPGA

Yufei Ma, Naveen Suda, Yu Cao, Jae-sun Seo, Sarma Vrudhula†

School of Electrical, Computer and Energy Engineering

†School of Computing, Informatics, Decision Systems Engineering

Arizona State University, Tempe, USA

Page 2: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Outline

Overview of CNN Algorithms

Current CNN Accelerators & Motivation

Proposed Modular CNN RTL Compiler

Experimental Results

Conclusion

- 2 -

Page 3: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Convolutional Neural Networks (CNN)

- 3 -

Dominant approach for recognition and detection tasks

Highly iterative with a few computing primitives

Composed of multiple types of layers

Evolving rapidly with more layers to achieve higher accuracy

Pooling

(Subsampling)

Convolution

+Activation

Fully-connected

(Inner Product)

Convolution

+Activation

Input Image Feature Maps

From a few to >100 layers

Page 4: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

CNN Layers and Structure

Convolution (conv or cccp)– 3D MAC operations

– Constitute >90% of the total operations

Pooling (pool)– Keep the maximum or average value of pixels

LRN (norm)– Local response normalization : non-linear

Fully-connected (fc)– Matrix-vector multiplication

– Require large volume of weights

CNN Structure for image classification– AlexNet [A. Krizhevsky, NIPS2012]

– NIN [M. Lin, ICLR2014]

- 4 -

Page 5: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Outline

Overview of CNN Algorithms

Current CNN Accelerators & Motivation

Proposed Modular CNN RTL Compiler

Experimental Results

Conclusion

- 5 -

Page 6: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Comparison of CNN Accelerators

- 6 -

Throughput

ResourceUtilization

Energy EfficiencyReconfigurability

DesignSpeed

Flexible deep learning framework with modularity

Accelerated on GPU with thousands of parallel cores

High power consumption (>100W)

Software, GPU [Y. Jia, Caffe; M. Abadi, TensorFlow]

Page 7: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Comparison of CNN Accelerators

- 7 -

Throughput

ResourceUtilization

Energy EfficiencyReconfigurability

DesignSpeed

High-level synthesis (e.g. OpenCL) based FPGA accelerator

Short turnaround time and fast design optimization

Cannot exploit low-level hardware structures

HLS, FPGA [C. Zhang, FPGA2015; N. Suda, FPGA2016]

Page 8: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Comparison of CNN Accelerators

- 8 -

Throughput

ResourceUtilization

Energy EfficiencyReconfigurability

DesignSpeed

Agnostic to the CNN model configuration

Inefficient hardware resource usage

RTL, generic CNN accelerator [C. Farabet, CVPR2011]

Page 9: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Comparison of CNN Accelerators

- 9 -

Throughput

ResourceUtilization

Energy EfficiencyReconfigurability

DesignSpeed

High efficiency with greater acceleration

Poor flexibility, long turnaround time

Require in-depth understanding of FPGA/ASIC

RTL, optimized for a specific CNN [J. Qiu, FPGA2016]

Page 10: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Comparison of CNN Accelerators

- 10 -

Throughput

ResourceUtilization

Energy EfficiencyReconfigurability

DesignSpeed

Modular and scalable hardware design framework

Integrate the flexibility of HLS and the finer level optimization of RTL

Proposed RTL compiler

Page 11: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Comparison of CNN Accelerators

- 11 -

Throughput

ResourceUtilization

Energy EfficiencyReconfigurability

DesignSpeed

Software, GPU

HLS, FPGA

RTL, generic CNN accelerator

RTL, optimized for a specific CNN

Proposed RTL compiler

Page 12: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Outline

Overview of CNN Algorithms

Current CNN Accelerators & Motivation

Proposed Modular CNN RTL Compiler

Experimental Results

Conclusion

- 12 -

Page 13: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Proposed CNN RTL Compiler

- 13 -

Modular and scalable hardware design framework

Compile end-to-end CNNs into efficient RTL codes for FPGA/ASIC

Parameterized RTL scripts

(Verilog)

FPGA design tools

e.g. Quartus

FPGA programming file

RTL

compiler

(Python)

CNN models

• Connection of layers

• Type of layers

• Number and size of

kernel/feature maps

Computing resources

• Number of multipliers

• Top-level system

• Conv/Pool/Norm/FC

modules

• RTL DMA controller

• On-chip buffers

• Data router

Page 14: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Convolution Parameters and Loops

- 14 -

Loop-4 Across the output feature maps of Nof

Loop-3 Across the input feature maps of Nif

Loop-2 Scan within one input feature map along X×Y

Loop-1 MAC within a kernel window of K×K

……

Nif

KK

Xi

Yi

Nif K

K

KK

Nif

Nif

Nof

Xo

Yo

KK

Input feature maps

Kernel (filter) maps

Output feature maps

=

Page 15: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Strategy to Accelerate Convolution

- 15 -

……

KK

Xi

Yi

K

Xo

Yo

=

Unroll

Loop-3

Unroll

Loop-4

Unroll

Loop-3

If Nm>Nif : fully unroll Loop-3 and further unroll Loop-4

– Nm/Nif output feature maps with shared features

If Nm<Nif : partially unroll Loop-3

– Repeat kernel window sliding by Nif/Nm times

Serially compute Loop-1 before Loop-2 : reduce # of partial sums

K

Nif

Nif

Nof

(Nm = # of multipliers)

Page 16: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

CONV Module and Components

- 16 -

Control logic

– Control the sliding of four loops by counters

– Counters are parameterized to K, X, Y, Nif and Nof of each layer

– Generate buffer addresses

Page 17: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

CONV Module and Components

- 17 -

Adder Trees

– # of fan-in = Nif, # of adders = Nm/Nif

– Sum results from Nif parallel multipliers

– Accumulate within one kernel window (K×K)

– Shared by convolution layers with identical Nif.

ReLU = max(pixel, 0)

– Check the sign bit

Page 18: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

POOL (MAX or AVE) Module

NORM Module

FC Module

– Perform matrix-vector multiplication (special form of convolution)

– Share multipliers with CONV

– Adders are shared across all FC layers

POOL, NORM, and FC Modules

- 18 -

Page 19: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Integration of Modules

- 19 -

Overall CNN Accelerator

Page 20: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Integration of Modules (Controller)

- 20 -

Controller

– Direct the layer by layer serial computation of modules

Page 21: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Integration of Modules (Data Router)

- 21 -

Feature Data Router

– Select write and read data of two adjacent modules

– Assign buffer outputs to POOL or shared multipliers

Page 22: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Integration of Modules (Memory)

- 22 -

Feature Buffers

– Feature maps are stored in separate on-chip RAMs

Page 23: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Integration of Modules (Memory)

- 23 -

Weight Buffers

– FC weights transfer is overlapped with its computation

– CONV weights transfer is before its computation

Page 24: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Outline

Overview of CNN Algorithms

Current CNN Accelerators & Motivation

Proposed Modular CNN RTL Compiler

Experimental Results

Conclusion

- 24 -

Page 25: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Experimental Setup & FPGA System

AlexNet and NIN CNN models

Stand-alone DE5-Net board with Altera Stratix-V GXA7 FPGA chip

– 622K logic elements, 256 DSP blocks, 2560 M20K RAMs.

Synthesized by Altera Quartus tool.

- 25 -

Control the transfer of data from flash memory to

SDRAM, and then start the CNN acceleration process.

Transfer data from

SDRAM to on-chip RAMs.

Standard Altera IP

start

Page 26: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Experimental Results

- 26 -

J. Qiu

FPGA2016

C. Zhang

FPGA2015

N. Suda

FPGA2016This work This work

FPGAZynq

XC7Z045

Virtex-7

VX485T

Stratix-V

GXA7

Stratix-V

GXA7

Stratix-V

GXA7

Design Entry RTL C-language OpenCL RTL Compiler RTL Compiler

CNN Model VGG - 16 AlexNet AlexNet AlexNet NIN

# of op. per image 30.76 GOP 1.33 GOP 1.46 GOP 1.46 GOP 2.2 GOP

DSP Utilization 780 (89%) 2,240 (80%) 256 (100%) 256 (100%) 256 (100%)

Logic Utilizationa 183K (84%) 186K (61%) 114K (49%) 121K (52%) 112K (48%)

On-chip RAMb 486 (87%) 1,024 (50%) 1,893 (74%) 1,552 (61%) 2,330 (91%)

Convolution throughput 187.80 GOPS 61.6 GFOPS 67.5 GOPS 134.1 GOPS 117.3 GOPS

Overall throughput 136.97 GOPS N/A 60.2 GOPS 114.5 GOPS 117.3 GOPS

a. Xilinx FPGAs in LUTs and Altera FPGAs in ALMs

b. Xilinx FPGAs in BRAMs (36 Kb) and Altera FPGAs in M20K RAMs (20 Kb)

Compared to OpenCL design, 1.9X overall throughput improvement

– On the same FPGA board

– Using similar hardware resources

Compared to HLS design, 2X convolution throughput improvement

Page 27: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Experimental Results

- 27 -

J. Qiu

FPGA2016

C. Zhang

FPGA2015

N. Suda

FPGA2016This work This work

FPGAZynq

XC7Z045

Virtex-7

VX485T

Stratix-V

GXA7

Stratix-V

GXA7

Stratix-V

GXA7

Design Entry RTL C-language OpenCL RTL Compiler RTL Compiler

CNN Model VGG - 16 AlexNet AlexNet AlexNet NIN

# of op. per image 30.76 GOP 1.33 GOP 1.46 GOP 1.46 GOP 2.2 GOP

DSP Utilization 780 (89%) 2,240 (80%) 256 (100%) 256 (100%) 256 (100%)

Logic Utilizationa 183K (84%) 186K (61%) 114K (49%) 121K (52%) 112K (48%)

On-chip RAMb 486 (87%) 1,024 (50%) 1,893 (74%) 1,552 (61%) 2,330 (91%)

Convolution throughput 187.80 GOPS 61.6 GFOPS 67.5 GOPS 134.1 GOPS 117.3 GOPS

Overall throughput 136.97 GOPS N/A 60.2 GOPS 114.5 GOPS 117.3 GOPS

a. Xilinx FPGAs in LUTs and Altera FPGAs in ALMs

b. Xilinx FPGAs in BRAMs (36 Kb) and Altera FPGAs in M20K RAMs (20 Kb)

Model customized RTL and more DSPs improve throughput

More regular structure of VGG benefits the performance

– Uniform kernel map size, Nif in power of two, no norm

Page 28: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Experimental Results

- 28 -

J. Qiu

FPGA2016

C. Zhang

FPGA2015

N. Suda

FPGA2016This work This work

FPGAZynq

XC7Z045

Virtex-7

VX485T

Stratix-V

GXA7

Stratix-V

GXA7

Stratix-V

GXA7

Design Entry RTL C-language OpenCL RTL Compiler RTL Compiler

CNN Model VGG - 16 AlexNet AlexNet AlexNet NIN

# of op. per image 30.76 GOP 1.33 GOP 1.46 GOP 1.46 GOP 2.2 GOP

DSP Utilization 780 (89%) 2,240 (80%) 256 (100%) 256 (100%) 256 (100%)

Logic Utilizationa 183K (84%) 186K (61%) 114K (49%) 121K (52%) 112K (48%)

On-chip RAMb 486 (87%) 1,024 (50%) 1,893 (74%) 1,552 (61%) 2,330 (91%)

Convolution throughput 187.80 GOPS 61.6 GFOPS 67.5 GOPS 134.1 GOPS 117.3 GOPS

Overall throughput 136.97 GOPS N/A 60.2 GOPS 114.5 GOPS 117.3 GOPS

a. Xilinx FPGAs in LUTs and Altera FPGAs in ALMs

b. Xilinx FPGAs in BRAMs (36 Kb) and Altera FPGAs in M20K RAMs (20 Kb)

NIN has more convolution layers and more operations

Similar throughput can be achieved for both models

Page 29: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

0.61

0.85

0.56

0.64

2.83

0.00 2.00 4.00 6.00 8.00 10.00 12.00 14.00 16.00 18.00

Ale

xN

et

NIN

Execution Time (ms)

CONV1 CONV2 CONV3 CONV4 CONV5 CCCPs DMA_CONV POOLs FC6&7&8

Timing Breakdown of Layers

- 29 -

FC latency is determined by the DMA transfer delay that

covers the computation latency.

DMA transfer latency of CONV weights is NOT hidden.

Convolution layers = 17.04 ms (90.9%)

Convolution = 8.74 ms (68.5%)3.66 2.00 1.46 0.97 0.65

3.53 5.83 1.95 1.67 4.06

Ale

xN

et

NIN

Page 30: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Logic and DSP Block Utilization

- 30 -

Stratix-V GXA7 has only 256 DSP blocks.

Multipliers are implemented by both logic elements and DSP blocks.

Layers with same Nif are combined to be one module

with shared adder tree.

Logic Utilization in ALMs # of DSP Blocks

AlexNet

NIN

AlexNet

NIN

Page 31: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

On-chip RAM Breakdown

- 31 -

RAMs are stacked for modules with shallow word depths

RAMs are shared by non-consecutive modules

Weight buffers to receive weights from external memory

On-chip RAMs Utilization in M20K blocks

AlexNet

NIN

Page 32: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Power Measurement and Breakdown

Measured power of DE5-Net

– running nothing is 16.5W

– running AlexNet is 19.5W

– running NIN is 19.1W

- 32 -

0% 20% 40% 60% 80% 100%

Simulation based power breakdown of AlexNet accelerator

Multipliers CONVs FC NORMs POOLs RAM Routing

0% 20% 40% 60% 80% 100%

Simulation based power breakdown of FPGA chip

AlexNet DDR3 Controller mSGDMA I/O Others

36.8%

Computing Modules RAM Routing

AlexNet Accelerator

Simulated power of Stratix V

– running AlexNet is 12.8W

36.4%

21.2% 42.1%

14.5% 3.1% 43.3%

Page 33: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

ImageNet Accuracy

Data width: Features = 10-bit, Weights = 8-bit

The portion of integer and fractional bits are adjusted

according to the range of values for different layers.

- 33 -

Model accuracy

comparison

Software implementation

(Caffe tool, 32-bit)

FPGA implementation

(Our work)

CNN model Top-1 Top-5 Top-1 Top-5

AlexNet 56.78 % 79.72 % 55.64 % 79.32 %

NIN 56.14 % 79.32 % 55.74 % 78.96 %

Tested on 5K images from ImageNet 2012 validation database.

Reduce data width requirement

while retaining the same accuracy level

Page 34: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Outline

Overview of CNN Algorithms

Current CNN Accelerators & Motivation

Proposed Modular CNN RTL Compiler

Experimental Results

Conclusion

- 34 -

Page 35: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Conclusion

Modularized and scalable RTL design for CNN

Demonstrated on Altera Stratix-V GXA7 FPGA

End-to-end implementation of deep CNNs

114.5 GOPS for AlexNet and 117.3 GOPS for NIN

1.9X performance improvement compared to

OpenCL design on the same FPGA

Future work : increase generality and efficiency

for larger state-of-the-art CNNs.

- 35 -

Page 36: Scalable and Modularized RTL Compilation of Convolutional ... · Scalable and Modularized RTL Compilation of Convolutional Neural Networks onto FPGA ... Design Entry RTL C-language

Thanks!

Questions?

- 36 -