为PyTorch应用程序设计的一个高性能、内存高效的检查点库,考虑到大型、复杂的分布式工作负载。
项目描述
TorchSnapshot (Beta发布)
为PyTorch应用程序设计的一个高性能、内存高效的检查点库,考虑到大型、复杂的分布式工作负载。
安装
需要Python >= 3.7和PyTorch >= 1.12
从pip
# Stable
pip install torchsnapshot
# Nightly
pip install --pre torchsnapshot-nightly
从源
git clone https://github.com/pytorch/torchsnapshot
cd torchsnapshot
pip install -r requirements.txt
python setup.py install
为什么选择TorchSnapshot
性能
- TorchSnapshot提供了一种快速的检查点实现,采用各种优化,包括大多数张量类型的零拷贝序列化、重叠设备到主机复制和存储I/O、并行化存储I/O。
- TorchSnapshot通过在所有rank上分配写负载,极大地加快了DistributedDataParallel工作负载的检查点速度(基准)。
- 当主机内存充足时,TorchSnapshot允许在所有存储I/O完成之前恢复训练,减少由检查点保存引起的阻塞时间。
内存使用
- TorchSnapshot的内存使用会适应主机的可用资源,大大减少了保存和加载检查点时出现内存不足问题的可能性。
- TorchSnapshot支持在快照中高效地随机访问单个对象,即使快照存储在云对象存储中。
可用性
- 在分布式和非分布式工作负载之间一致的简单API。
- 与常用的云对象存储系统开箱即用集成。
- 对于支持的工作负载,在world size更改时自动重新分片(弹性)(更多详情)。
安全性
- 无需pickle依赖项的安全张量序列化 [WIP]。
入门
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)
有关详细信息,请参阅文档。
许可
torchsnapshot遵循BSD许可证,可在LICENSE文件中找到。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
torchsnapshot-0.1.0.tar.gz (52.2 kB 查看散列值)
构建分发
torchsnapshot-0.1.0-py3-none-any.whl (68.5 kB 查看散列值)
关闭
torchsnapshot-0.1.0.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 618c4947ae500ee8750442fb5dc94f11899be2ddb6b829155c0948460cf94a4f |
|
MD5 | 68c90fdacb8f1b30b2d5b1a9135f7163 |
|
BLAKE2b-256 | 89b7c14cef7c10061c05d76f1082f04de5ebf39983054cd8aecc882f547deba6 |
关闭
torchsnapshot-0.1.0-py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 8f61b6abf587fc72dd81099317fa46d89552536ef6aee611e37771548bdc9e68 |
|
MD5 | 82189d44728d84562accbd812e5b630e |
|
BLAKE2b-256 | 80ab73dc24108a14371fc4888f6c91978a405a6d6e0bfef3f461a86edcf8dfdb |