当前位置: 首页 > news >正文

07-FSDP分布式训练多卡跑大模型不再OOM

FSDP分布式训练:多卡跑大模型不再OOM

单卡显存不够,第一反应就是"加卡"。但多卡不是插上去就能用——数据怎么分、梯度怎么同步、显存怎么管,这三个问题搞不定,8张卡也跑不起来。

PyTorch FSDP(Fully Sharded Data Parallel)是目前最推荐的多卡训练方案。这篇把FSDP的原理、配置、踩坑全讲清楚。

为什么不推荐DDP

DDP(DistributedDataParallel)是PyTorch最早的多卡方案,原理简单:每张卡保存完整的模型副本,数据分片,各自前向反向后同步梯度。

问题在于:每张卡都要装下完整模型。7B模型fp16要14GB,加上梯度和优化器状态,单卡要56GB。A100 80GB才能跑,40GB都不够。

DDP每卡显存 = 模型权重 + 梯度 + 优化器状态 + 激活值 ≈ 14GB + 14GB + 28GB + ~10GB ≈ 66GB

FSDP的思路:模型参数也分片。每张卡只存1/N的参数,需要的时候从其他卡收集(all-gather),用完就扔掉。

FSDP每卡显存 = 模型权重/N + 梯度/N + 优化器状态/N + 激活值/N + 临时通信缓冲 ≈ 14GB/4 + 14GB/4 + 28GB/4 + ~10GB/4 + ~2GB ≈ 16.5GB (4卡FSDP)

4张A100 40GB就能跑7B模型全参数训练。

FSDP的执行流程

FSDP在每个Module级别做分片。前向传播时:

1. 当前层需要计算 → all-gather收集所有卡上该层的参数分片 → 拼出完整参数 2. 用完整参数做前向计算 3. 计算完 → 丢掉非本卡的参数分片,释放显存 4. 反向传播时同样:按需gather,用完释放

关键点:只有正在计算的层才占完整显存。其他层的参数都是分片状态,只占1/N。

这和梯度检查点(gradient checkpointing)的"用时间换空间"不同——FSDP不增加计算量,只是增加了通信开销。

FSDP实战代码

启动分布式训练

importosimporttorchimporttorch.distributedasdistfromtorch.distributed.fsdpimportFullyShardedDataParallelasFSDPfromtorch.distributed.fsdpimportMixedPrecision,ShardingStrategyfromtorch.distributed.fsdp.wrapimporttransformer_auto_wrap_policydefsetup_distributed():"""初始化分布式环境"""dist.init_process_group(backend="nccl")local_rank=int(os.environ["LOCAL_RANK"])torch.cuda.set_device(local_rank)returnlocal_rank,dist.get_rank(),dist.get_world_size()defcleanup_distributed():dist.destroy_process_group()

torchrun启动(不是python直接跑):

# 4卡训练torchrun--nproc_per_node=4train.py# 2机8卡(每机4卡)torchrun--nproc_per_node=4--nnodes=2--node_rank=0--master_addr=192.168.1.1--master_port=29500train.py

torchrun会自动设置RANKWORLD_SIZELOCAL_RANK等环境变量。

配置FSDP

defcreate_fsdp_model(model:nn.Module,rank:int)->FSDP:"""将模型包装为FSDP"""# 混合精度配置mp_policy=MixedPrecision(param_dtype=torch.bfloat16,
http://www.jsqmd.com/news/1319124/

相关文章:

  • RFO-VMD智能优化算法在信号去噪中的应用
  • 2026降AIGC革命:AI率92%暴降至5%!实测10款降AIGC平台!免费降AIGC额度薅到爽!
  • 硬核光学】屏幕贴膜真能缓解视疲劳?从《中国预防医学杂志》一篇论文到圆偏振光护眼技术全解析
  • SeaTunnel数据集成平台:从零安装到生产实践的全流程指南
  • 【计算机毕业设计】高校志愿者小程序开发
  • SpringBoot+Vue全栈开发职业生涯规划系统实战
  • 2026 北京头部 AI GEO 获客公司全榜单 区分全网大模型优化与本地同城 GEO 引流服务商 - 滚动商讯
  • 锌钢草坪护栏优选指南2026年高适配性厂家推荐 - 栈上春秋
  • Vue 3组件通信与复用实战指南
  • HiGHS线性规划求解器终极指南:免费开源的高性能数学优化解决方案
  • OpenClaw开源框架:Node.js自动化开发环境配置指南
  • 028、YOLOv11 Neck上采样优化——CARAFE内容感知上采样替换最近邻插值的代码实现与涨点验证
  • 数字时代的地理感知困境与地方感重构
  • C语言数据类型详解:从基础到实践应用
  • 021、AFPN渐进式特征金字塔与SlimNeck轻量级Neck设计——即插即用涨点对比实验
  • 2026 许昌搬家公司推荐榜单|居民 / 单位 / 同城 / 长途搬迁一站式靠谱选择 - 滚动商讯
  • B站后端实习面经:Go语言高并发与系统设计实战解析
  • 【张家界市】2026CPPM采购经理报考指南|正规机构甄选产业适配全攻略 - 中采供培
  • Manyfold 本地 3D 模型库整理:打印文件分类跑通后,用 cpolar 给同事临时查看预览
  • C语言strtoul函数解析与实战避坑指南
  • OpenClaw中文版安装与自动化运维指南
  • GA4企业级数据分析平台架构与实战指南
  • Egg.js插件开发实战:15天掌握企业级Node.js框架
  • ASM太平洋科技全球资产配置计划正式发布 - 资讯综合
  • 2026年PPR水管优质厂家推荐从家装到工程的全场景解决方案 - 栈上春秋
  • 想找永年左旋螺纹锚杆公司?这里告诉你答案! - 滚动商讯
  • Java性能优化实战:25个代码层与15个JVM层关键技巧
  • 诚信的东阳的装修公司
  • 2026开封空调维修全品类口碑排名|中央空调/上门维修/移机加氟/清洗家庭维修靠谱推荐 - 滚动商讯
  • 算法日记 - Day5