Background • Usage • Code • Acknowledgements • Citation • License
GoldenEye is a functional simulator with fault injection capabilities for common and emerging numerical formats, implemented for the PyTorch deep learning framework. GoldenEye provides a unified framework for numerical format evaluation of DNNs, including traditional number systems such as fixed and floating point, as well as recent DNN-inspired formats such as block floating point and AdaptivFloat. Additionally, GoldenEye enables single- and multi- bit flips at various logical and functional points during a value’s lifetime for resiliency analysis, including for the first time attention to numerical values’ hardware metadata. GoldenEye is an easy-to-use, extensible, versatile, and fast tool for dependability research and future DNN accelerator design.
Take a look at our documentation here. Check this Colab notebook for a demo.
Ubuntu with Sudo Privileges
- Recursively clone the goldeneye repository.
git clone --recurse-submodules [email protected]:ma3mool/goldeneye.git
- Download ninja-build which is needed for qtorch.
sudo apt install ninja-build
- Download the other project dependencies. Please make sure you are inside the goldeneye folder when applying this command.
pip install -r requirements.txt
- Setup environment variable (replace with the directory where the imagenet dataset is downloaded).
ML_DATASETS=/dir/to/imagenet/
Docker
- Recursively clone the goldeneye repository.
git clone --recurse-submodules [email protected]:ma3mool/goldeneye.git
- Pull the goldeneye docker image and rename it to simply the next steps
docker pull goldeneyetool/goldeneye:latest
docker image tag goldeneyetool/goldeneye goldeneye
- Within the goldeneye folder, run the shell on the pulled docker image. Make sure to replace [/path/to/imagenet] with the actual path to your downloaded imagenet dataset.
cd goldeneye
docker run -ti
--mount type=bind,source=`pwd`/src/,target=/src
--mount type=bind,source=`pwd`/val/,target=/val
--mount type=bind,source=`pwd`/scripts/,target=/scripts
--mount type=bind,source=[/path/to/imagenet],target=/datasets/imagenet
goldeneye
pytest val/test_num_sys.py
The scripts
folder includes wrappers around the goldeneye framework to simplify its use. The src
folder contains all of the goldeneye core logic such as number system implementation and error injection routines. The val
folder is used for unit-testing the code. You can run it using pytest to check that the installation process was successful.
- Tarek Aloui (Harvard)
- David Brooks (Harvard)
- Abdulrahman Mahmoud (Harvard)
- Joshua Park (Harvard)
- Thierry Tambe (Harvard)
- Gu-Yeon Wei (Harvard)
If you use or reference Goldeneye, please cite:
@INPROCEEDINGS{GoldeneyeMahmoudTambeDSN2022,
author={A. {Mahmoud} and T. {Tambe} and T. {Aloui} and D. {Brooks} and G. {Wei}},
booktitle={2022 52nd Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN)},
title={GoldenEye: A Platform for Evaluating Emerging Data Formats in DNN Accelerators},
year={2022},
}