Giter Club home page Giter Club logo

finn's Introduction

FINN

FINN is an end to end framework for generating high performance FPGA hardware implementations of neural networks.

Installation

FINN can be used within a Docker container (recommended flow) or locally.

Docker Install flow

git clone <repo> cd FINN docker build . --tag=finn docker run -it finn

Local Install flow

Prerequisites

git clone <repo>

Quick Start

cd FINN source env.sh git lfs pull

Estimate performance of LFC MLP network

python FINN/bin/finn --device=pynqz1 --prototxt=FINN/inputs/lfc-w1a1.prototxt --mode=estimate

Estimate performance and synthesize CNV network

python FINN/bin/finn --device=pynqz1 --prototxt=FINN/inputs/cnv-w1a1.prototxt --caffemodel=FINN/inputs/cnv-w1a1.caffemodel --mode=synth

User guide

FINN can be called in two modes, estimate and synth. "Estimate" mode reads in the prototxt of the network, constructs a hardware model of the network and scales up the hardware to optimally utilize the chosen device. This process produces a report of estimated performance and hardware utilisation. "Synth" mode performs the same actions as estimate, but additionally calls Xilinx Vivado tools to synthesize the design for the target device.

Reference Designs

Two reference designs are included. Both have binarized weights and activations.

MLP

A multilayer perceptron, trained for MNIST digit recognition.

  • prototxt = FINN/inputs/lfc-w1a1.prototxt
  • caffemodel = FINN/inputs/lfc-w1a1.caffemodel

CNV

A convolutional neural network, trained for CIFAR10 image classification.

  • prototxt = FINN/inputs/cnv-w1a1.prototxt
  • caffemodel = FINN/inputs/cnv-w1a1.caffemodel

Citation

If you find FINN useful, please cite the FINN paper.

@inproceedings{finn,
author = {Umuroglu, Yaman and Fraser, Nicholas J. and Gambardella, Giulio and Blott, Michaela and Leong, Philip and Jahre, Magnus and Vissers, Kees},
title = {FINN: A Framework for Fast, Scalable Binarized Neural Network Inference},
booktitle = {Proceedings of the 2017 ACM/SIGDA International Symposium on Field-Programmable Gate Arrays},
series = {FPGA '17},
year = {2017},
pages = {65--74},
publisher = {ACM}
}

finn's People

Contributors

giuliogamba avatar hpc-ken avatar maltanar avatar mattsnow-amd avatar michaelablott avatar nickfraser avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.