Science Score: 44.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
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.9%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: dsd65535
  • License: mit
  • Language: Python
  • Default Branch: main
  • Size: 447 KB
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 2
  • Releases: 0
Created over 2 years ago · Last pushed 9 months ago
Metadata Files
Readme License Citation

README.md

AANNTwin

The Analog ANN digital twin (AANNTwin) models the behavior of an analog convolutional neural network, similar to the one presented in:

Nikita Mirchandani. Ultra-Low Power and Robust Analog Computing Circuits and System Design Framework for Machine Learning Applications

It uses the PyTorch library with customized layers which model real hardware nonidealities. These models are informed by simulation and hardware testing, while hardware design is in turn informed by results from scripts in this library, enabling an iterative design approach. This library also produces the weights that are ultimately used in the hardware, leveraging the accurate low-level modeling during training to optimize performance. Finally, the library includes various high-level optimization scripts for tuning hyperparameters, quantization, normalization and other details, in addition to determining specifications for the hardware design. The intended flow of operation is illustrated at a high level below:

AANNTwin Overview

Organization

The model can be found in aanntwin. The main entry point is aanntwin/__main__.py. All other top-level scripts are in aanntwin/scripts.

Installation

To use this library, Python version 3.11 is required. Refer to https://www.python.org/ for more information on Python. Note that due to PyTorch CUDA limitations, the version is currently pinned.

Per PEP-518, this project uses the pyproject.toml format for defining dependencies and other packaging information. Thus, it can be installed using most modern methods including Pip.

However, it is recommended to install this library using Poetry. This ensures that all dependencies are at the exact version on which they were tested, using to the poetry.lock file included. For official installation instructions, refer to https://python-poetry.org/. In short, the following is an example installation procedure:

$ curl -sSL https://install.python-poetry.org | python3 -
Retrieving Poetry metadata

# Welcome to Poetry!

This will download and install the latest version of Poetry,
a dependency and package manager for Python.

It will add the `poetry` command to Poetry's bin directory, located at:

/home/ddimitrov/.local/bin

You can uninstall at any time by executing this script with the --uninstall option,
and these changes will be reverted.

Installing Poetry (1.7.1): Done

Poetry (1.7.1) is installed now. Great!

You can test that everything is set up by executing:

`poetry --version`

$ poetry --version
Poetry (version 1.7.1)

This repository can be cloned as follows:

$ git clone git@github.com:dsd65535/aanntwin.git
Cloning into 'aanntwin'...
remote: Enumerating objects: 301, done.
remote: Counting objects: 100% (301/301), done.
remote: Compressing objects: 100% (106/106), done.
remote: Total 301 (delta 202), reused 286 (delta 191), pack-reused 0
Receiving objects: 100% (301/301), 93.87 KiB | 814.00 KiB/s, done.
Resolving deltas: 100% (202/202), done.
$ cd aanntwin/

Using Pip, it can be installed as follows:

$ pip install .

Using Poetry, it can be installed as follows:

$ poetry install

Usage

Using Poetry, the top-level script can be run as follows:

$ poetry run python aanntwin

This will create, train and test a model. The script caches all outputs to ./cache/models. For possible arguments, run:

$ poetry run python aanntwin --help

All scripts may be run directly, e.g.:

$ poetry run python aanntwin/scripts/sweep_model_parameters.py

Owner

  • Name: Dimitar Dimitrov
  • Login: dsd65535
  • Kind: user
  • Location: Greater Boston Area

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Dimitrov"
  given-names: "Dimitar"
title: "AANNTwin"
version: 0.1.0
date-released: 2025-04-21
url: "https://github.com/dsd65535/aanntwin"

GitHub Events

Total
  • Watch event: 1
  • Delete event: 1
  • Push event: 14
Last Year
  • Watch event: 1
  • Delete event: 1
  • Push event: 14

Dependencies

poetry.lock pypi
  • appnope 0.1.3
  • astroid 3.0.2
  • asttokens 2.4.1
  • backcall 0.2.0
  • black 23.12.1
  • certifi 2023.11.17
  • charset-normalizer 3.3.2
  • classify-imports 4.2.0
  • click 8.1.7
  • colorama 0.4.6
  • decorator 5.1.1
  • dill 0.3.7
  • executing 2.0.1
  • filelock 3.13.1
  • fsspec 2023.12.2
  • gitdb 4.0.11
  • gitpython 3.1.40
  • idna 3.6
  • ipython 8.12.3
  • isort 5.13.2
  • jedi 0.19.1
  • jinja2 3.1.2
  • markupsafe 2.1.3
  • matplotlib-inline 0.1.6
  • mccabe 0.7.0
  • mpmath 1.3.0
  • mypy 1.8.0
  • mypy-extensions 1.0.0
  • networkx 3.1
  • numpy 1.24.4
  • nvidia-cublas-cu12 12.1.3.1
  • nvidia-cuda-cupti-cu12 12.1.105
  • nvidia-cuda-nvrtc-cu12 12.1.105
  • nvidia-cuda-runtime-cu12 12.1.105
  • nvidia-cudnn-cu12 8.9.2.26
  • nvidia-cufft-cu12 11.0.2.54
  • nvidia-curand-cu12 10.3.2.106
  • nvidia-cusolver-cu12 11.4.5.107
  • nvidia-cusparse-cu12 12.1.0.106
  • nvidia-nccl-cu12 2.18.1
  • nvidia-nvjitlink-cu12 12.3.101
  • nvidia-nvtx-cu12 12.1.105
  • packaging 23.2
  • parso 0.8.3
  • pathspec 0.12.1
  • pexpect 4.9.0
  • pickleshare 0.7.5
  • pillow 10.2.0
  • platformdirs 4.1.0
  • prompt-toolkit 3.0.43
  • ptyprocess 0.7.0
  • pure-eval 0.2.2
  • pygments 2.17.2
  • pylint 3.0.3
  • reorder-python-imports 3.12.0
  • requests 2.31.0
  • six 1.16.0
  • smmap 5.0.1
  • stack-data 0.6.3
  • sympy 1.12
  • tomlkit 0.12.3
  • torch 2.1.2
  • torchvision 0.16.2
  • traitlets 5.14.1
  • triton 2.1.0
  • typing-extensions 4.9.0
  • urllib3 2.1.0
  • wcwidth 0.2.13
pyproject.toml pypi
  • black ^23.9.1 develop
  • ipython ^8.12.3 develop
  • mypy ^1.6.0 develop
  • pylint ^3.0.1 develop
  • reorder-python-imports ^3.12.0 develop
  • gitpython ^3.1.40
  • numpy ^1.24
  • python ~3.11
  • torch ^2.1.0
  • torchvision ^0.16.0