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

Option 1: Install package using pip install -i https://test.pypi.org/simple/ 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.3.tar.gz (3.9 kB view hashes)

Uploaded Source

Built Distribution

automatiic-0.0.3-py3-none-any.whl (3.9 kB view hashes)

Uploaded Python 3

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