PyTorch调用Mac M1 GPU报错:Placeholder storage未在MPS设备分配
解决M1 Mac PyTorch训练报错:Placeholder storage has not been allocated on MPS device!
优化器初始化时机错误
必须在模型移至MPS设备后再初始化优化器。如果先创建优化器再调用model.to(mps_device),优化器将绑定CPU上的参数副本,反向传播时会引发设备不匹配问题。修正代码顺序:# 先把模型移到MPS设备 model = model.to(mps_device) # 再初始化优化器 optimizer = torch.optim.Adam(model.parameters(), lr=0.001)检查自定义LSTMModel内部的设备一致性
如果LSTMModel包含自定义层、手动创建的nn.Parameter或缓冲区张量,需确保这些张量也被移至MPS设备。比如模型内有固定张量时,要显式指定设备或在forward方法中对齐设备:class LSTMModel(nn.Module): def __init__(self, ...): super().__init__() # 手动创建的参数需指定设备 self.custom_param = nn.Parameter(torch.randn(..., device=mps_device)) def forward(self, x): # 临时张量与输入x保持同设备 temp = torch.zeros_like(x, device=x.device) ...清理MPS缓存
训练前加入缓存清理,避免残留的CPU张量干扰:torch.mps.empty_cache()验证所有输入/参数设备一致性
在循环内添加调试代码,确认所有张量和模型参数都在MPS设备上:print(f"Model device: {next(model.parameters()).device}") print(f"Inputs device: {inputs.device}") print(f"Labels device: {labels.device}")
内容的提问来源于stack exchange,提问作者Nin
相关产品推荐
相关产品推荐

