# torchsnapshot **Repository Path**: mirrors_pytorch/torchsnapshot ## Basic Information - **Project Name**: torchsnapshot - **Description**: A performant, memory-efficient checkpointing library for PyTorch applications, designed with large, complex distributed workloads in mind. - **Primary Language**: Unknown - **License**: BSD-3-Clause - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-07-16 - **Last Updated**: 2025-10-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TorchSnapshot (Beta Release)
A performant, memory-efficient checkpointing library for PyTorch applications, designed with large, complex distributed workloads in mind.
## Install
Requires Python >= 3.8 and PyTorch >= 2.0.0
From pip:
```bash
# Stable
pip install torchsnapshot
# Or, using conda
conda install -c conda-forge torchsnapshot
# Nightly
pip install --pre torchsnapshot-nightly
```
From source:
```bash
git clone https://github.com/pytorch/torchsnapshot
cd torchsnapshot
pip install -r requirements.txt
python setup.py install
```
## Why TorchSnapshot
**Performance**
- TorchSnapshot provides a fast checkpointing implementation employing various optimizations, including zero-copy serialization for most tensor types, overlapped device-to-host copy and storage I/O, parallelized storage I/O.
- TorchSnapshot greatly speeds up checkpointing for DistributedDataParallel workloads by distributing the write load across all ranks ([benchmark](https://github.com/pytorch/torchsnapshot/tree/main/benchmarks/ddp)).
- When host memory is abundant, TorchSnapshot allows training to resume before all storage I/O completes, reducing the time blocked by checkpoint saving.
**Memory Usage**
- TorchSnapshot's memory usage adapts to the host's available resources, greatly reducing the chance of out-of-memory issues when saving and loading checkpoints.
- TorchSnapshot supports efficient random access to individual objects within a snapshot, even when the snapshot is stored in a cloud object storage.
**Usability**
- Simple APIs that are consistent between distributed and non-distributed workloads.
- Out of the box integration with commonly used cloud object storage systems.
- Automatic resharding (elasticity) on world size change for supported workloads ([more details](https://pytorch.org/torchsnapshot/getting_started.html#elasticity-experimental)).
**Security**
- Secure tensor serialization without pickle dependency [WIP].
## Getting Started
```python
from torchsnapshot import Snapshot
# Taking a snapshot
app_state = {"model": model, "optimizer": optimizer}
snapshot = Snapshot.take(path="/path/to/snapshot", app_state=app_state)
# Restoring from a snapshot
snapshot.restore(app_state=app_state)
```
See the [documentation](https://pytorch.org/torchsnapshot/main/getting_started.html) for more details.
## License
torchsnapshot is BSD licensed, as found in the [LICENSE](LICENSE) file.