最近在尝试用FSDP跑一个7B的LoRA微调,单卡A100 80G。按照文档设了sharding_strategy=ShardingStrategy.SHARD_GRAD_OP,但发现训练刚开始显存占用就飙到70多G,比不用FSDP的DDP还高。我理解FSDP应该把参数和梯度分片到各卡,但单卡显存反而更高了?另外,forward_prefetch和backward_prefetch的几种选项我都试过,效果差异不大。
楼主
2026-08-23
PyTorch FSDP训练时显存不降反升,是配置问题还是预期行为?
请 登录 后发表回复
全部回复
共 43 条
2楼
2026-09-26
单卡跑FSDP确实有点尴尬,分片带来的all-gather和reduce-scatter开销反而可能让显存峰值更高,尤其是LoRA这种本身可训练参数很少的场景。你试试把sharding_strategy换成FULL_SHARD,同时确认下auto_wrap_policy有没有正确把LoRA层包进去,没包好的话参数根本没分片。另外FSDP在单卡上省显存的意义不大,DDP反而更直接,除非你是为了之后多卡扩展做代码准备。
3楼
4天前
我之前也遇到过类似问题,后来换了方案。
4楼
4天前
刚入门,这个对我帮助很大。