对 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 公用事业:

  1. 战略初始化:允许在战略初始化时配置默认的"存储-选项"(例如:"FSDP战略"(存储-选项 ={"线程-计数":8})""或"模型Parallel战略"(存储-选项 ={"线程-计数":8})".
  2. 战略与文件保存/记录:允许通过战略.save checkpoint(.,存储-选项=.)'、fabric.save(.,存储-选项=.)'和`Trainer.save checkpoint(.,存储-选项=.)'逐个调用。
  3. 内部转发:
  • 储存-选择 ' 转发给编辑-分发-检查-点(路径、**储存-选择) ' (通过线程-计数'、每行-阅读-复制-前行 ' 等)至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