marlin

MARLIN: a Co-design Methodology for Approximate ReconfigurabLe Inference of Neural Networks at the Edge

https://github.com/vlsi-lab/marlin

Science Score: 57.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.3%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

MARLIN: a Co-design Methodology for Approximate ReconfigurabLe Inference of Neural Networks at the Edge

Basic Info
  • Host: GitHub
  • Owner: vlsi-lab
  • License: mit
  • Language: Python
  • Default Branch: main
  • Size: 47.3 MB
Statistics
  • Stars: 6
  • Watchers: 3
  • Forks: 3
  • Open Issues: 0
  • Releases: 0
Created almost 3 years ago · Last pushed almost 2 years ago
Metadata Files
Readme License Citation

README.md

About

This repository contains the code used in the research paper "MARLIN: a Co-design Methodology for Approximate ReconfigurabLe Inference of Neural Networks at the Edge", published in "IEEE Transactions on Circuits and Systems I: Regular Papers". The code can be used as it is to reproduce the results presented in the paper.

MARLIN is a methodology that enables the implementation of approximate neural networks (NNs) on a RISC-V core. It is built from 4 components: - A runtime reconfigurable multiplier with 256 approximation levels, each one with its own error distribution and average power. - A modified RISC-V core, with the multiplier inserted in the execution stage. - A modified PULP toolchain, with approximation control automatically embedded in the compiled code. - A search algorithm based on NSGA-II that evaluates thousands of approxximate NNs and selects those with the best energy/accuracy trade-off.

Install instructions

Execute the following commands to install Clone the repository with bash git clone https://github.com/vlsi-lab/MARLIN.git or bash git clone git@github.com:vlsi-lab/MARLIN.git Then open a terminal and intall ninja-build bash sudo apt update sudo apt install ninja-build Install marlin environment (requires miniconda or anaconda). ```bash cd MARLIN

conda env create -f marlin.yml ``` Inside each folder there are README files with additional information useful to install additional components, execute the code and replicate the data.

In order to use the multiplier LUTs and pre-trained neural networks, it is necessary to install 7-zip and extract the files according to the README contained in each folder. You can download 7-zip from here. When launching any python file, remember to keep the folder hierarchy as defined in this repository. You can add the folders to the PYTHONPATH, after entering the MARLIN repo, with the following command: bash export PYTHONPATH="${PYTHONPATH}:./:./neural_networks:./benchmark_CIFAR10:./approximate_multiplier:./riscv_characterization"

Run simulation

Support to verify the experimental results obtained on the modified version of PULP Platform is provided. vendor is used to keep track of dependencies across multiple github repositories. Execute the command: bash make build This command will setup the required scripts and repository. Further information on the configuration can be found in the folder ./riscv_characterization.\ Note: to avoid possible path errors, we highly suggest to launch python scripts from inside MARLIN folder directly.

Citation

If you used this code in your work, consider adding a reference to our paper @ARTICLE{marlin, author={Guella, Flavia and Valpreda, Emanuele and Caon, Michele and Masera, Guido and Martina, Maurizio}, journal={IEEE Transactions on Circuits and Systems I: Regular Papers}, title={MARLIN: A Co-Design Methodology for Approximate ReconfigurabLe Inference of Neural Networks at the Edge}, year={2024}, volume={71}, number={5}, pages={2105-2118}, doi={10.1109/TCSI.2024.3365952}}

Owner

  • Name: VLSI lab - PoliTO
  • Login: vlsi-lab
  • Kind: organization
  • Location: Italy

VLSI lab at Dipartimento di Elettronica e Telecomunicazioni (DET) in Politecnico di Torino

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Guella"
  given-names: "Flavia"
  orcid: "https://orcid.org/0009-0000-6725-0416"
- family-names: "Valpreda"
  given-names: "Emanuele"
  orcid: "https://orcid.org/0000-0002-1285-9360"
- family-names: "Caon"
  given-names: "Michele"
  orcid: "https://orcid.org/0009-0009-4446-8389"
- family-names: "Masera"
  given-names: "Guido"
  orcid: "https://orcid.org/0000-0003-2238-9443"
- family-names: "Martina"
  given-names: "Maurizio"
  orcid: "https://orcid.org/0000-0002-3069-0319"
preferred-citation:
  type: article
doi: 10.1109/TCSI.2024.3365952
url: "https://github.com/vlsi-lab/MARLIN"
title: "MARLIN: a Co-design Methodology for Approximate ReconfigurabLe Inference of Neural Networks at the Edge "
  journal: "IEEE Transactions on Circuits and Systems I: Regular Papers"
  month: March
  start: 1 
  end: 14 
  issue: tbd
  volume: tbd
  year: 2024

GitHub Events

Total
  • Watch event: 3
  • Fork event: 3
Last Year
  • Watch event: 3
  • Fork event: 3