- Notifications
You must be signed in to change notification settings - Fork15
Quantized ResNet50 Dataflow Acceleration on Alveo, with PYNQ
License
Xilinx/ResNet50-PYNQ
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
🚫 This repository has been archived. For up-to-date ResNet50 dataflow FPGA acceleration, please seeFINN Examples.
This repository contains an implementations of a binary ResNet50FINN-style dataflow accelerator targeting Alveo boards.It is intended as a showcase of achievable throughput and latency for ImageNet clasiffication on FPGA, using dataflow execution and on-chip weight storage.
The repository is organized as follows:
- src: contains source code and submodules
- hls: HLS custom building blocks and submodules to FINN librares (FINN andFINN-HLSLib)
- w1a2-v1.0: pre-build weights, thresholds, directives and configuration files for Binary ResNet50
- compile: contains scripts for accelerator compilation (Vivado HLS CSynth + Vivado Synthesis)
- link: contains scripts for accelerator linking into the Alveo platform with Vitis
- host: python and Jupyter host code, using PYNQ for Alveo
The Accelerator is built usingVitis 2019.2. We recommend using this version,otherwise changes might be required to source and/or Makefiles for things towork.
To build the accelerator, clone the repository (using--recursive
to pull submodules), after which:
cd ResNet50-PYNQ/compilemake NET=w1a2_v1.0cd ../linkmake
See the specificCompile andLink documentation for further info.
After you have built the accelerator, you caninstall
the required files inthehost
folder. Move in the cloned repo and domake install
cd ResNet50-PYNQmake install
You can then run the included Jupyter notebook or the Python multithreaded inference example. If youwant to use the distributed PYNQ python package, please read below.If you want to run example Python inference code, please see thehost code documentation.
Install theresnet50-pynq
package usingpip
:
pip install resnet50-pynq
After the package is installed, to get your own copy of the available notebooksrun:
pynq get-notebooks ResNet50
You can then try things out by doing:
cd pynq-notebooksjupyter notebook
There are a number of additional options for thepynq get-notebooks
command,you can list them by typing
pynq get-notebooks --help
You can also refer to the officialPYNQ documentation for more informationregarding thePYNQ Command Line Interface and in particular theget-notebooks
command.
Currently, we distribute the overlay only for the following Alveo boards andshells:
Shell | Board |
---|---|
xilinx_u250_xdma_201830_2 | Xilinx Alveo U250 |
Designs are built usingVitis 2019.2.
Lucian Petrica @ Xilinx Research Labs.