Skip to main content

ASDL: Automatic Second-order Differentiation (for Fisher, Gradient covariance, Hessian, Jacobian, and Kernel) Library

Project description

ASDL: Automatic Second-order Differentiation Library

ASDL is an extension library of PyTorch to easily perform gradient preconditioning using second-order information (e.g., Hessian, Fisher information) for deep neural networks.

ASDL provides various implementations and a unified interface (GradientMaker) for gradient preconditioning for deep neural networks. For example, to train your model with gradient preconditioning by K-FAC algorithm, you can replace a <Standard> gradient calculation procedure (i.e., a forward pass followed by a backward pass) with one by <ASDL> with KfacGradientMaker like the following:

from asdl.precondition import PreconditioningConfig, KfacGradientMaker

# Initialize model
model = Net()

# Initialize optimizer (SGD is recommended)
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)

# Initialize KfacGradientMaker
config = PreconditioningConfig(data_size=batch_size, damping=0.01)
gm = KfacGradientMaker(model, config)

# Training loop
for x, t in data_loader:
  optimizer.zero_grad()
  
  # <Standard> (gradient calculation)
  # y = model(x)
  # loss = loss_fn(y, t)
  # loss.backward()

  # <ASDL> ('preconditioned' gradient calculation)
  dummy_y = gm.setup_model_call(model, x)
  gm.setup_loss_call(loss_fn, dummy_y, t)
  y, loss = gm.forward_and_backward()

  optimizer.step()

You can apply a different gradient preconditioning algorithm by replacing gm with another XXXGradientMaker(model, config) (XXX: algorithm name, e.g., ShampooGradientMaker for Shampoo algorithm) with the same interface. This enables a flexible switching/comparison of a range of gradient preconditioning algorithms.

Installation

You can install the latest version of ASDL by running:

$ pip install asdfghjkl

ASDL is tested with Python 3.7 and is compatible with PyTorch 1.13.

Example

The training script for training MLPs, CNNs, or ResNets using varous types of gradient preconditionig methods (which reproduces the results in the ASDL paper).

Resource

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

asdfghjkl-0.1a5.tar.gz (75.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

asdfghjkl-0.1a5-py3-none-any.whl (89.6 kB view details)

Uploaded Python 3

File details

Details for the file asdfghjkl-0.1a5.tar.gz.

File metadata

  • Download URL: asdfghjkl-0.1a5.tar.gz
  • Upload date:
  • Size: 75.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.4

File hashes

Hashes for asdfghjkl-0.1a5.tar.gz
Algorithm Hash digest
SHA256 02d268093bfa804132b9405266f2c3b27ffda27000b47251b31de299b13d0da8
MD5 76c46a097720ca3160918cbdb20e4d91
BLAKE2b-256 460097a16b4a9c0ec0f971e7033187043cff4d854bd8e84dc6b03e3b74d8931a

See more details on using hashes here.

File details

Details for the file asdfghjkl-0.1a5-py3-none-any.whl.

File metadata

  • Download URL: asdfghjkl-0.1a5-py3-none-any.whl
  • Upload date:
  • Size: 89.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.4

File hashes

Hashes for asdfghjkl-0.1a5-py3-none-any.whl
Algorithm Hash digest
SHA256 b84d6755f0e7a47ef71a6ba88c81e8fe123b8cbd234eb20cde5790eebb4d5198
MD5 10fac9c74843c1092236aa014a58a14a
BLAKE2b-256 1f9c0d320fa42c3a965e1f2ba20ada993737da049ab2545cf55199deb5e50d99

See more details on using hashes here.

Supported by

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