最近在尝试用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训练时显存不降反升,是配置问题还是预期行为?
请 登录 后发表回复
全部回复
共 41 条
2楼
17天前
单卡跑FSDP确实有点尴尬,分片带来的all-gather和reduce-scatter开销反而可能让显存峰值更高,尤其是LoRA这种本身可训练参数很少的场景。你试试把sharding_strategy换成FULL_SHARD,同时确认下auto_wrap_policy有没有正确把LoRA层包进去,没包好的话参数根本没分片。另外FSDP在单卡上省显存的意义不大,DDP反而更直接,除非你是为了之后多卡扩展做代码准备。