isaac Newton - Accelerating NN Training with Input-based Approximate Curvature for Newton's Method
This repository includes the official implementation of our ICLR 2023 Paper "ISAAC Newton: Input-based Approximate Curvature for Newton's Method".
Paper @ OpenReview
Video @ Youtube
💻 Installation
isaac is based on PyTorch and can be installed via pip from PyPI with
pip install isaac
👩💻 Usage
isaac.Linear acts as a drop-in replacement for torch.nn.Linear. It only requires additional specification of
the regularization parameter $\lambda_a$ la as specified in the paper. A good starting point for $\lambda_a$
is la=1, but the optimal choice varies from experiment to experiment.
The method operates by efficiently modifying the gradient of the module in such a way that the input-based curvature
information is used when applying a gradient descent optimizer on the modified gradients.
In the following, we specify an example MNIST neural network where ISAAC is applied to the first 3 out of 5 layers:
import torch
import isaac
net = torch.nn.Sequential(
torch.nn.Flatten(),
isaac.Linear(784, 1_600, la=1),
torch.nn.ReLU(),
isaac.Linear(1_600, 1_600, la=1),
torch.nn.ReLU(),
isaac.Linear(1_600, 1_600, la=1),
torch.nn.ReLU(),
torch.nn.Linear(1_600, 1_600),
torch.nn.ReLU(),
torch.nn.Linear(1_600, 10)
)
🧪 Experiments
You can find an example MNIST experiment in examples/mnist.py, which is based on the experiment in Figure 5 in the paper.
To run ISAAC applied to the first X out of 5 layers, run
python examples/mnist.py -nil <X>
To run the baseline, run
python examples/mnist.py -nil 0
The device can be specified, e.g., as --device cuda, the learning rate and $\lambda_a$ may be set via --lr and --la, respectively.
📖 Citing
@inproceedings{petersen2023isaac,
title={ISAAC Newton: Input-based Approximate Curvature for Newton's Method},
author={Petersen, Felix and Sutter, Tobias and Borgelt, Christian and Huh, Dongsung and Kuehne, Hilde and Sun, Yuekai and Deussen, Oliver},
booktitle={International Conference on Learning Representations (ICLR)},
year={2023}
}
License
isaac is released under the MIT license. See LICENSE for additional details about it.
Metadata
Release files for isaac 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| isaac-0.1.1.tar.gz | 4.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| isaac-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.0 kB
Release files / isaac-0.1.1.tar.gz
| Download URL | isaac-0.1.1.tar.gz |
|---|---|
| Size | 4.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1dbed519ba68da6eb6542f91a8670ca35b988ddae04dfd6ffa9b90861f1fee58
|
|
BLAKE2b-256 checksum How to use checksums |
716722abbddaee1c048efd8a368e1aa59442aeb6eb9e5f435ce55710f71d2901
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.6
|
Release files / isaac-0.1.1-py3-none-any.whl
| Download URL | isaac-0.1.1-py3-none-any.whl |
|---|---|
| Size | 5.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c6f862e06358dc15a477a0a9a38e90bcffa5797a917c1ebbf5179ef37cbcea3e
|
|
BLAKE2b-256 checksum How to use checksums |
991c60445ba7a407c58d62e77e44d4f183fe2d4f450631b26930cfd670bfa0b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.6
|
Security for isaac 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.