---
title: 使用MMEngine进行断点续训时报错-昇腾社区
description: 当PyTorch版本为2.1.0，在NPU上执行多卡训练，通过MMEngine进行断点续训时报如下错误：
keywords: MMEngine,进行断点续训,时报错,昇腾社区,问题现象描述,原因分析,解决措施,PyTorch
url: https://www.hiascend.com/document/caselibrary/detail/ptacase_0047
section: (其他)
---

# 使用MMEngine进行断点续训时报错-昇腾社区

URL: https://www.hiascend.com/document/caselibrary/detail/ptacase_0047
描述: 当PyTorch版本为2.1.0，在NPU上执行多卡训练，通过MMEngine进行断点续训时报如下错误：
关键词: MMEngine,进行断点续训,时报错,昇腾社区,问题现象描述,原因分析,解决措施,PyTorch

昇腾文档 [了解详情](https://www.hiascend.com/document)

故障案例 [了解详情](https://www.hiascend.com/document/caselibrary)

使用MMEngine进行断点续训时报错

使用MMEngine进行断点续训时报错

2025/03/18

539

问题信息

| 问题来源 | 产品大类 | 产品子类 | 关键字 |
| --- | --- | --- | ---|
| 官方 | 模型训练 | PyTorch | -- |

#### 问题现象描述

当PyTorch版本为2.1.0，在NPU上执行多卡训练，通过MMEngine进行断点续训时报如下错误：

```
RuntimeError: Attempted to set the storage of a tensor on device "npu:X" to a storage on different device "npu:0"
```

#### 原因分析

PyTorch2.1.0多卡训练断点续训加载权重时，处理自定义设备会默认将权重都放到0卡上。

#### 解决措施

1. 根据报错堆栈找到MMEngine中加载预训练权重的代码，如下所示：

```
checkpoint = self.load_checkpoint(filename, map_location=device)
```
2. 将1 [了解详情](https://www.hiascend.com/#ZH-CN_TOPIC_0000002244279445__li1962874916116)中代码修改为如下代码。

```
import os
device_id = os.environ['LOCAL_RANK']
device = get_device()
checkpoint = self.load_checkpoint(filename, map_location=f"{device}:{device_id}")
```

本页内容

- 问题信息
- 问题现象描述
- 原因分析
- 解决措施
