Giter VIP home page Giter VIP logo

logicnets's Introduction

LogicNets: Co-Designed Neural Networks and Circuits for Extreme-Throughput Applications

LogicNets is a methodology for designing, training and deploying sparse, quantized neural networks based on hardware building blocks. They are able to achieve extremely high throughput and low latency on Xilinx FPGAs.

Description

This project provides a set of library components and examples to help you design, train and deploy your own LogicNets networks. Note, this is considered to be an 'alpha' release: expect API changes and issues. You can learn more about LogicNets from this paper, or from the following YouTube videos:

Prerequisites

Installation

There are two main ways to install LogicNets:

  1. Using docker (recommended)
  2. Manually (advanced)

Docker Installation

Follow the steps below to install LogicNets within a docker container:

  1. Install Vivado Design Suite
  2. Install docker.
  3. Clone the LogicNets repository using: git clone [email protected]:Xilinx/logicnets.git
  4. Create an environment variable VIVADO_SETTINGS_FILE which points to the settings64.sh in your Vivado installation (e.g., export VIVADO_SETTINGS_FILE=/path/to/Vivado/settings64.sh)
  5. (Optional): Set your XILINXD_LICENSE_FILE or LM_LICENSE_FILE variables to point to a specific license server
  6. Run ./docker/run-docker.sh from the root directory of the LogicNets repository
  7. (Optional): Copy your Vivado license file over to the running docker container

You are now ready to run an example, browse to /workspace/logicnets/examples/jet_substructure/ and start training a LogicNets network!

Note, a license is not required to run any of the provided examples.

Manual Installation

A manual installation is not recommended for beginners. We will only provide limited support for people wishing to pursue and manual installation. People wanting to pursue a manual installation may want to look at the LogicNets Dockerfile, as this contains details for a full environmental setup (including the installation of dependencies of dependencies).

The basic steps for a manual installation are as follows:

  1. Install Vivado Design Suite
  2. Install oh-my-xilinx by cloning this repository and creating the environment variable OHMYXILINX which points to its root directory (e.g., export OHMYXILINX=/path/to/oh-my-xilinx)
    • oh-my-xilinx requires zsh, on Ubuntu, this can be installed as follows: sudo apt-get install zsh
  3. Install Nitro-Parts-lib-Xilinx by cloning this repository and creating the environment variable NITROPARTSLIB which points to its root directory (e.g., export NITROPARTSLIB=/path/to/Nitro-Parts-lib-Xilinx)
  4. Install verilator, on Ubuntu, this can be done as follows: sudo apt-get install verilator build-essential
  5. Install python3, pytorch, brevitas and pyverilator using conda and/or pip or your preferred method
  6. Install logicnets using: pip install --upgrade git+https://github.com/Xilinx/logicnets.git

Alternatively, instead of the last step you can clone the LogicNets repository and install as follows:

pip install --upgrade .

Examples

Currently, we have the following examples, located in ./examples/:

More examples coming soon.

Documentation

Documentation site coming soon.

Citation

If you find this work useful for your research, please consider citing our paper from FPL'20 below:

@inproceedings{umuroglu2020logicnets,
  author = {Umuroglu, Yaman and Akhauri, Yash and Fraser, Nicholas J and Blott, Michaela},
  booktitle = {Proceedings of the International Conference on Field-Programmable Logic and Applications},
  title = {LogicNets: Co-Designed Neural Networks and Circuits for Extreme-Throughput Applications},
  year = {2020},
  pages = {291-297},
  publisher = {IEEE Computer Society},
  address = {Los Alamitos, CA, USA},
  month = {sep}
}

logicnets's People

Contributors

nickfraser avatar juliovicenzi avatar jalezeta avatar maltanar 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.