Skip to main content

Fork of FINN, a QNN dataflow compiler for AMD/Xilinx FPGAs

Project description

Dataflow Compiler for Fast, Scalable Quantized Neural Network Inference on FPGAs

PyPI Downloads PyPI version GitHub license Documentation GitHub branch status Go to Python website GitHub Issues or Pull Requests GitLab CI Linux Go to QONNX website Go to Brevitas website

FINN+ is a fork of FINN, an experimental framework from the Integrated Communications and AI Lab of AMD Research & Advanced Development to explore deep neural network inference on FPGAs. It specifically targets quantized neural networks, with emphasis on generating dataflow-style architectures customized for each network. The resulting FPGA accelerators are highly efficient and can yield high throughput and low latency. The framework is fully open-source in order to give a higher degree of flexibility, and is intended to enable neural network research spanning several layers of the software/hardware abstraction stack.

Quick Links

What's New in FINN+

FINN+ incorporates all upstream FINN development while adding significant enhancements across multiple areas:

Core Improvements

  • Transformer/Attention Support - Native support for modern transformer architectures
  • Enhanced Streamlining - Improved optimization pipeline for better performance
  • Smart FIFO Sizing (WIP) - Automatic folding and FIFO-sizing with better algorithms
  • QoR Estimation (WIP) - Empirical quality-of-result estimation for design space exploration

Backend Extensions

  • Hardware Profiling - Instrumentation for accurate performance measurement in simulation and hardware
  • Alveo Support - Enhanced build flow for Xilinx Alveo cards
  • Multi-FPGA - Support for distributed inference across multiple FPGAs
  • Optimized Drivers - High-performance C++ drivers for better host-accelerator communication

Developer Experience

  • Better Diagnostics - Improved logging and error handling throughout the framework
  • Type Safety - Comprehensive type hinting and checking for better code quality
  • YAML Configuration - Alternative YAML-based build configuration system
  • Simplified Setup - Containerless installation and setup process

Track Development: Check our Feature Tracker for real-time status updates on all features. We merge improvements early to accelerate development and enable cutting-edge research.

Getting Started

This is a quick overview of how to get started, for additional information please refer to our Wiki!

Prerequisites

Before installing FINN+, ensure you have:

  • Python: Version 3.10 or 3.11 (Python 3.12+ not yet supported)
  • Xilinx Tools: Vivado, Vitis, and Vitis HLS (2022.2 or 2024.2)
  • System Dependencies: See our dependency installation script for required packages

Installing via pip

After preparing the dependencies mentioned above, simply run the following to start a build flow:

# Make sure to create a fresh virtual environment for FINN+
pip install finn-plus                     # Install FINN+ and its Python dependencies via pip
finn deps update                          # Ensure FINN+ pulled all further dependencies (this might update packages in your venv!)
finn build build_config.yaml model.onnx   # Run a FINN+ build defined in a YAML file

For more detailed instructions, like installation for development use, please refer to our Wiki!

[!NOTE] Please note, that finn deps update (and most other commands) will automatically download and update dependencies required for FINN to work (mostly the same as the original FINN repository). This is done to provide a better user experience and to not require the user to manage a dozen dependencies on their own. If you want to know which dependencies will be installed before continuing, check out external_dependencies.yaml.

Contributing

Contributions are very welcome! Whether you are fixing a bug, adding a new feature, improving documentation, or sharing a model — every contribution helps.

To get started:

  1. Fork the repository and create a feature branch from main.
  2. Check the Feature Tracker to see what is planned or already in progress.
  3. Open an issue to discuss larger changes before investing significant effort.
  4. Submit a pull request with a clear description of your changes.

Please read CONTRIBUTING.md for detailed guidelines on code style, testing, and the review process.

About Us

FINN+ is maintained by researchers from the Computer Engineering Group (CEG) and Paderborn Center for Parallel Computing (PC²) at Paderborn University, Germany as part of the eki research project.

logo logo

logo logo

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

finn_plus-1.4.0.tar.gz (634.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

finn_plus-1.4.0-py3-none-any.whl (931.3 kB view details)

Uploaded Python 3

File details

Details for the file finn_plus-1.4.0.tar.gz.

File metadata

  • Download URL: finn_plus-1.4.0.tar.gz
  • Upload date:
  • Size: 634.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.10.19 Linux/6.14.0-1017-azure

File hashes

Hashes for finn_plus-1.4.0.tar.gz
Algorithm Hash digest
SHA256 845c37e81c03a191ae0742af0d5da2e5442dc3ffede9179884e3bdc01511cf82
MD5 4a7282f5d2a890b0a93a7674b47aecf0
BLAKE2b-256 27f64de1e282bb545332c58603b0d047dd1abe7ba68debc3509afca265a4b580

See more details on using hashes here.

File details

Details for the file finn_plus-1.4.0-py3-none-any.whl.

File metadata

  • Download URL: finn_plus-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 931.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.10.19 Linux/6.14.0-1017-azure

File hashes

Hashes for finn_plus-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ee31132d368a9e0035366bf1d5d86137fd8286b43275c52dc7fe1f7650d22b5f
MD5 c4e7dc48b544f61871a322e35e74ceca
BLAKE2b-256 32e6247de03792e57d653b1ed484b2f18b875c1caa601d29725138127ecc98bd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page