A Parallel ODE Solver for PyTorch
torchode is a suite of single-step ODE solvers such as dopri5 or tsit5 that are
compatible with PyTorch's JIT compiler and parallelized across a batch. JIT compilation
often gives a performance boost, especially for code with many small operations such as an
ODE solver, while batch-parallelization means that the solver can take a step of 0.1 for
one sample and 0.33 for another, depending on each sample's difficulty. This can avoid
performance traps for models of varying stiffness and ensures that the model's predictions
are independent from the compisition of the batch. See the
paper for details.
If you get stuck at some point, you think the library should have an example on x or you want to suggest some other type of improvement, please open an issue on github.
Installation
You can get the latest released version from PyPI with
pip install torchode
To install a development version, clone the repository and install in editable mode:
git clone https://github.com/martenlienen/torchode
cd torchode
pip install -e .
Usage
import matplotlib.pyplot as pp
import torch
import torchode as to
def f(t, y):
return -0.5 * y
y0 = torch.tensor([[1.2], [5.0]])
n_steps = 10
t_eval = torch.stack((torch.linspace(0, 5, n_steps), torch.linspace(3, 4, n_steps)))
term = to.ODETerm(f)
step_method = to.Dopri5(term=term)
step_size_controller = to.IntegralController(atol=1e-6, rtol=1e-3, term=term)
solver = to.AutoDiffAdjoint(step_method, step_size_controller)
jit_solver = torch.compile(solver)
sol = jit_solver.solve(to.InitialValueProblem(y0=y0, t_eval=t_eval))
print(sol.stats)
# => {'n_f_evals': tensor([26, 26]), 'n_steps': tensor([4, 2]),
# => 'n_accepted': tensor([4, 2]), 'n_initialized': tensor([10, 10])}
pp.plot(sol.ts[0], sol.ys[0])
pp.plot(sol.ts[1], sol.ys[1])
Citation
If you build upon this work, please cite the following paper.
@inproceedings{lienen2022torchode,
title = {torchode: A Parallel {ODE} Solver for PyTorch},
author = {Marten Lienen and Stephan G{\"u}nnemann},
booktitle = {The Symbiosis of Deep Learning and Differential Equations II, NeurIPS},
year = {2022},
url = {https://openreview.net/forum?id=uiKVKTiUYB0}
}
Metadata
Release files for torchode 1.0.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 | Actions |
|---|---|---|---|---|
| torchode-1.0.1.tar.gz | 37.3 kB | Without provenance | Details for torchode-1.0.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| torchode-1.0.1-py3-none-any.whl | Python 3 | none | any | Details for torchode-1.0.1-py3-none-any.whl |
Total release size: 67.7 kB
Release files / torchode-1.0.1.tar.gz
| Download URL | torchode-1.0.1.tar.gz |
|---|---|
| Size | 37.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c0faea451a416dc027fa5d93562d661b6f8dbd1da174cd2b38d3377e77a5acee
|
|
BLAKE2b-256 checksum How to use checksums |
9eaa36cbb79022a17f0cf0127e22693201ed01a8bbfa5efb1f854fe90739ad22
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / torchode-1.0.1-py3-none-any.whl
| Download URL | torchode-1.0.1-py3-none-any.whl |
|---|---|
| Size | 30.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
edbd2f91997a348b85ead40b276e04cd04d6bf3ec1df3e8af4128560c772a953
|
|
BLAKE2b-256 checksum How to use checksums |
6b3a1ec5df4e4301f50d05112a12f5c8f11ebc1b1da03b3250d8889de4ffd04a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Security for torchode 1.0.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.