对 FSDPStrategy、ModelParallelStrategy 和 TorchCheckpointIO 的统一存储选项支持
作者: Yonghui-Lee创建于 2026年8月17日更新于 2026年8月17日
标签featureneeds triage
描述和动机
在保存并装入分布式检查站(例如,通过带有“FSDP战略”或“ModelParallel战略”的PyTorch分布式检查站/DCP)时,PyTorch允许配置存储后端参数,例如:
- " 线程 -- -- 计数 " :每级并行的I/O线程数,以节省硬条(即 " torch.dispend. check point " )。 FileSystemWriter 和 “ torch. distend. checkpoint. fsspec files system.FsspecWriter 默认为“ 线程数=1 ” 。
- “per thread copy ahead”:在写入前输入数据的缓冲大小。
- `fspec' kwargs: 直接保存到远程云桶时的验证符、端点和缓存参数(例如S3、GCS)。
目前,PyTorch Lightning和Fabric硬码默认即时处理而不经过存储 kwargs. 此外,将储存-选择 ' 改为FSDP战略.save-checkpoint'、ModelParallel战略.save-checkpoint ' 或TorchCheckpointIO.save-checkpoint ' 则引起`TypeError'。
猫咪
启用“ storage options: option [dit [str, Any]] = 无 通用战略和 I/O 公用事业:
- 战略初始化:允许在战略初始化时配置默认的"存储-选项"(例如:"FSDP战略"(存储-选项 ={"线程-计数":8})""或"模型Parallel战略"(存储-选项 ={"线程-计数":8})".
- 战略与文件保存/记录:允许通过
战略.save checkpoint(.,存储-选项=.)'、fabric.save(.,存储-选项=.)'和`Trainer.save checkpoint(.,存储-选项=.)'逐个调用。 - 内部转发:
- 将
储存-选择 ' 转发给编辑-分发-检查-点(路径、**储存-选择) ' (通过线程-计数'、每行-阅读-复制-前行 ' 等)至FileSystemWriter'/FsspecWriter')。 - 将“存储-选项”移到“get dispended-checkpoint-reader(路径,**存储-选项)” (“FileSystemReader”/“FspecReader”)。
- 将
储存-选择 ' 移到原子-保存(.,储存-选择=.)'和装入(.,储存-选择=.)',用于保存完整的检查站和meta.pt'。
** 用户经验/代码示例**
[Python] 从闪电. pytorch 导入训练器 从闪电. pytorch. 战略导入 FSDP 战略
1. 在战略层面配置线程计数和I/O设置
战略 = FSDP战略( 状态 dict type="硬", 存储 options}}“ 线程 计数 ” : 8, “ per 线程 复制 头程 ” : 20 000 000}, (中文(简体) ). 训练员=训练员(战略=战略,.
2. 或在保存/装入时重置
trainer.save checkpoint ("checkpoints/epoch=10",存储 options QX"thread counts": 16}).
3. 与 Fabric
从闪电中导入 Fabric
织物=Fabric(战略="fsdp"). 织物.save("检查点/步骤=1000"),状态,存储 选项 {>"线程 计数":8}).
替代品
无回复( N)
其他背景
** 历史背景和为什么`TypeError'最初是添加的**
在PR [#11891] (https://GitHub.com/Lightning-AI/pytorch-lightning/pull/11891)(承诺`d31126c33')中, " storage options " 被引入到
. . . . . . .内容来源: Lightning-AI/pytorch-lightning