/EyerissF

An Eyeriss Chip (researched by MIT, a CNN accelerator) simulator and New DNN framework "Hive"

Primary LanguagePythonGNU Lesser General Public License v2.1LGPL-2.1

Eyeriss Chip simulator

fully powered by Jialinli

What's Eyeriss chip ?

  • Eyeriss is an AI accelerator, researched by Massachusetts Institute of Technology
  • EyerissF is a python-made Eyeriss simulator, aiming to test eyeriss capability.

Vital reference from MIT !

  1. Eyeriss: An Energy-Efficient Reconfigurable Accelerator for Deep Convolutional Neural Networks [ISSIC 2016] here
  2. Eyeriss: An Energy-Efficient Reconfigurable Accelerator for Deep Convolutional Neural Networks slides [ISSIC 2016] here
  3. Hardware Architectures for Deep Neural Networks [ISCA 2017] here
  4. Eyeriss: A Spatial Architecture for Energy-Efficient Dataflow for Convolutional Neural Networks [ISCA 2016] here
  5. DNN Accelerator Architectures slides [ISCA 2017] here

Eyeriss brief introduction

Eyeriss is an accelerator that can deliver state-of-the- art accuracy with minimum energy consumption in the system (including DRAM) in real-time, by using two key methods:

  1. efficient dataflow and supporting hardware (spatial array, memory hierarchy and on-chip network) that minimize data movement by exploiting data reuse and support different shapes;
  2. exploit data statistics to minimize energy through zeros skipping/gating to avoid unnecessary reads and computations; and data compression to reduce off-chip memory bandwidth, which is the most expensive data movement.

How can we modify CNN calculation?

From CNN defined calculation to new CNN Calculation, via new ASIC chip, we found a few processes could be combine together or run parallelly.

  • high parallelism

This pic shows the dataflow within the array for filter weights, image values and partial sums. If the filter height (R) equals the number of rows in the array , the logical dataflow would be as follows:

  1. filter weights are fed from the buffer into the left column of the array (one filter row per PE) and the filter weights move from left to right within the array.
  2. image values are fed into the left column and bottom row of the array (one image row per PE) and the image values move up diagonally.
  3. partial sums for each output row move up vertically, and can be read out of the top row at the end of the computational pass. If the partial sums are used in the next pass, they are fed into the bottom row of the array from the buffer at the beginning of the next computational pass.
  • data reuse
    • Convolutional reuse
    • Image reuse
    • Filter reuse

While existing dataflows attempt to maximize certain types of input data reuse or minimize the psum accumulation cost, they fail to take all of them into account at once. This results in inefficiency when the layer shape or hardware resources vary. Therefore, it would be desirable if the dataflow could adapt to different conditions and optimize for all types of data movement energy costs. In this section, we will introduce a novel dataflow, called row stationary (RS) that achieves this goal. The RS dataflow is a key feature of the Eyeriss architecture, which has been implemented in a fabricated chip.

Eyeriss structure

How can I leverage THIS REPOSITY?

File structure

Hive platform

Hive is a new CNN platform based on Eyeriss chip or EyerissF simulator, which contains basic funxs to establish CNN. (NOT "APACHE HIVE") Eyeriss or EyerissF just only an ASIC chip and python-made simulator and can not achieve any tasks. In order to do pattern regonization tasks, it must have a mature platform to support standard input data. Hive is aiming to tranfor 3-channel jpg pics to input Eyeriss supported stream and decompress results.

If u wanna use hive to create CNN, u should do following steps:

  1. init EyerissF simulator
ef = EyerissF()

or

ef = EyerissF("manual")
  1. init Hive
hive = Hive(ef)

Other funxs from Hive

  1. convolution ( Eyeriss Supported)
hive.conv2d(pics,filters,number of pics, number of filters)
  1. Pooling
hive.Pooling(pics)
  1. FullConnect
hive.FullConnect(vector,vector2)

contact me

please Email jialin.li.kcl@outlook.com or ljl223519@alibaba-inc.com

REALLY IMPORTANT

Emergy model IS NOT finished YET

last updated

2019 Sep 23th

future

  1. changing name in case of any misunderstanding with 'Apache Hive'
  2. overriding file constructions to make basic code in src folder
  3. add new functions in energy stream calculation between different storage layers