Skip to main content

A package that implements automatic differentiation

Project description

Build Status

codecov

cs107-FinalProject

Group 30

Name Email
Austin Nguyen austinnguyen@g.harvard.edu
Emma Besier emmabesier@g.harvard.edu
Lottie Zhuang luoting_zhuang@hms.harvard.edu
Hainan Xiong hainanxiong@hsph.harvard.edu

Installation

We have two approaches to installation. We recommend the virtualenv approach because which it helps isolate Python installations and contains a Python interpreter, a pip executable and a site-packages directory. Ultimately, this makes it easier for users whose version of Python they are running their scripts with is not configured to search for modules where they have installed them.

Option 1: Install package using pip install automatiic.

Option 2: Create virtual environment and clone the git repository.

  1. Install virtualenv: pip install virtualenv

  2. Creating a virtual environment: virtualenv env_automatiic or python -m virtualenv env_automatiic

  3. Activate the virtual environment: source env_automatiic/bin/activate

  4. Clone package from GitHub: git clone git@github.com:cs107-califour/cs107-FinalProject.git

  5. Navigate to the appropriate folder: cd cs107-FinalProject

  6. Install the requirements for automatiic: pip install -r requirements.txt

  7. (Optional) Run tests for automatiic using the test suite: pytest test_suite/test_forward.py pytest test_suite/test_reverse.py

  8. Leave virtual environment after using the package: deactivate

Broader Impact and Inclusivity Statement

Automatic differentiation, and the packages that implement it, have played a transformative role in optimization, neural networks, computer vision, natural language processing, and probabilistic inference. In almost every way, automatic differentiation outperforms its alternatives: manual differentiation is time consuming and prone to error, numerical differentiation can be highly inaccurate due to round-off and truncation errors, and symbolic differentiation often results in complex expressions.

But with its power also comes risk. Autodifferentiation packages such as automatiic are prone to misuse and can play an important role in malicious projects, such as the generation of deepfakes, AI-supported password guessing, and human impersonation. The ease-of-use of differentiation packages such as automatiic may also encourage people to opt for a more complicated and less-interperatable solution like a neural network, over something simpler like a regression model. To use our package and others like it, one should consider: 1) the social implications of the task being solved (i.e. does this have the potential to harm others?), 2) whether the current use of the package is aligned with the intended use outlined in the official documentation, and 3) whether or not automatic differentiation is the best and simplest solution to the task at hand.

With respect to inclusivity, automatic differentiation as a method is more accessible to underrepresented groups than other differentiation techniques. It is understandable with a weak math background, as all numerical computations are compositions of a finite set of elementary operations. The main barrier to entry, we argue, is the technology needed to successfuly download and use the package that implements it—one must have access to a computer with sufficient speed and power, access to WiFi, and the courage to insert oneself in the arguably intimidating culture of tech. Underrepresented groups, working parents, non-English speakers and those in rural areas are most likely to be faced with these obsticles.

Even if the user has made it past the above barriers to entry, they must have their work reviewed and approved by project maintainers—who are overwhelmingly white and male. Bias, implicit or not, permeates the workplace and creates additional difficulties for already marginalized groups. While we can indeed write a "Diversity Statement" on our package website, a more proactive way of encouraging diversity in our users would be to hold workshops designed for negleted populations, and to publicly support programs that provide WiFi and computers in under-served communities.

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

automatiic-0.0.5.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

automatiic-0.0.5-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

Details for the file automatiic-0.0.5.tar.gz.

File metadata

  • Download URL: automatiic-0.0.5.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9

File hashes

Hashes for automatiic-0.0.5.tar.gz
Algorithm Hash digest
SHA256 8edb1077f7db1910f6a76d57b88d9e2628d1cc7733bfdcf151d63cd91ddd97d8
MD5 a279e457749667c98272385752a8bb20
BLAKE2b-256 343c70128819ad8a6a4f70e546363d98cd24d35f50254435601f3df12777d6e5

See more details on using hashes here.

File details

Details for the file automatiic-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: automatiic-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 4.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.24.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9

File hashes

Hashes for automatiic-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 0d8343f8c8784b7ad697028dd4e56259bd3d5ed62babf4b294b61d8791d78991
MD5 15e44d9632429aeaef19de11d4c3398a
BLAKE2b-256 21493325bce56d300bd0642d60c83b52fcd3f40dcdf4ebc310b01fe77992575b

See more details on using hashes here.

Supported by

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