You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch Lightning在CUDA正常,MPS/CPU报多优化器仅支持手动优化错误

问题原因

PyTorch Lightning对多优化器的自动优化支持,在不同设备后端的实现逻辑存在差异:

  • CUDA作为成熟的主流后端,PL的自动优化模块对多优化器场景做了兼容处理,允许在自动优化模式下运行多优化器代码。
  • MPS是苹果推出的新后端,CPU后端的多优化器自动优化逻辑则更严格——PL认为这类设备上多优化器的自动梯度同步、优化步骤调度容易出现一致性问题,因此强制要求必须启用手动优化模式,否则就会抛出你看到的错误。
解决方法

方法1:切换为手动优化(官方推荐)

按照错误提示的步骤修改代码,这是最稳妥的方案:

  1. 在你的LightningModule类的__init__方法中添加:
    self.automatic_optimization = False
    
  2. 重写training_step方法,手动获取优化器并执行优化步骤:
    def training_step(self, batch, batch_idx):
        opt1, opt2 = self.optimizers()
        
        # 第一个模型的前向传播与优化
        loss1 = self.model1(batch)
        self.manual_backward(loss1)
        opt1.step()
        opt1.zero_grad()
        
        # 第二个模型的前向传播与优化
        loss2 = self.model2(batch)
        self.manual_backward(loss2)
        opt2.step()
        opt2.zero_grad()
        
        # 记录损失(可选)
        self.log("loss1", loss1)
        self.log("loss2", loss2)
    

方法2:检查并升级PyTorch Lightning版本

部分旧版PL对MPS后端的支持不完善,升级到最新稳定版可能修复设备间的这个差异,让你无需修改代码就能在MPS/CPU上运行。执行升级命令:

pip install --upgrade pytorch-lightning torch torchvision

注意:升级后需要测试代码是否依然在CUDA上正常运行,避免版本兼容问题。

内容的提问来源于stack exchange,提问作者math_guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:12:09