---
title: 未使用set_deivce指定NPU导致profiling无法采集数据-官方技术文章-昇腾社区
description: 在使用华为 Atlas 900 A2 PoD 集群进行中心训练任务时&#xff0c;通常需借助 Profiling 工具对模型在 NPU 上的执行性能进行深度分析。在实际开发过程中&#xff0c;配置了 Profiling 后无法采集到有效数据&#xff0c;甚至导致作业快速报错退出的情况。
keywords: NPU,未使用,指定,导致,无法采集数据,官方技术文章,昇腾社区,背景概述
url: https://www.hiascend.com/developer/techArticles/20260721-1
section: (其他)
---

# 未使用set_deivce指定NPU导致profiling无法采集数据-官方技术文章-昇腾社区

URL: https://www.hiascend.com/developer/techArticles/20260721-1
描述: 在使用华为 Atlas 900 A2 PoD 集群进行中心训练任务时&#xff0c;通常需借助 Profiling 工具对模型在 NPU 上的执行性能进行深度分析。在实际开发过程中&#xff0c;配置了 Profiling 后无法采集到有效数据&#xff0c;甚至导致作业快速报错退出的情况。
关键词: NPU,未使用,指定,导致,无法采集数据,官方技术文章,昇腾社区,背景概述

官方技术文章 [了解详情](https://www.hiascend.com/zh/developer/techArticles)

未使用set_deivce指定NPU导致profiling无法采集数据

未使用set_deivce指定NPU导致profiling无法采集数据

技术文章模型训练

发表于: 2026/07/21

7

0

## 背景概述

在使用华为 Atlas 900 A2 PoD 集群进行中心训练任务时，通常需借助 Profiling 工具对模型在 NPU 上的执行性能进行深度分析。在实际开发过程中，配置了 Profiling 后无法采集到有效数据，甚至导致作业快速报错退出的情况。

## 问题现象

在特定环境信息（CANN-8.1.RC1、torch-2.5.1、HDK-25.0.rc1.1）下，尝试对单节点多卡作业进行 Profiling 数据采集。配置完成后，作业启动不久即异常退出，控制台报错信息如下：

text

1

[ERROR] [46741] profiler.py: Failed to get acl tonpu flow events.

[ERROR] [46741] profiler.py: Failed to get acl to npu flow events.

该错误表明 Profiling 模块未能成功获取 ACL 到 NPU 的数据流事件，导致采集流程中断。

## 原因分析

为了定位问题，我们采集了作业运行期间的 plog 日志进行详细排查：

1.

日志分析：复现问题并采集 plog 后发现，虽然日志显示有 2 张 NPU 卡参与作业，但日志中并未产生预期的 Debug 级别日志，无 ERROR 打印。

2.

Profiling 任务下发分析：在 plog 中搜索`prof`相关内容，发现 device0 和 device1 的日志均显示：Profiling 采集任务仅向device0下发。

3.

代码确认：确认作业应该只向device1下发数据，指定方式为pytorch的.to(device方法)

## 问题根因

通过上述分析，可以问题的核心在于Device 指定机制与 Profiling 接口的感知差异：

●

框架侧感知缺失：使用 PyTorch 原生的`.to(device)`方法将模型或数据迁移至指定 NPU 卡。然而，`torch_npu`的 Profiler 接口依赖于框架侧对 Device 指定行为的显式识别。

●

默认行为偏差：由于`.to(device)`未被`torch_npu`的 Profiler 机制正确识别为“指定目标设备”的行为，Profiler 在无显式指定的情况下，默认采集device0的数据。

## 解决措施

要解决此问题，需确保`torch_npu`的 Profiler 能够正确感知目标设备。推荐使用`torch_npu`提供的`set_device`接口来显式指定当前线程或进程的目标 NPU 设备。

正确示例：

import torch_npu

# 显式指定当前使用的 NPU 设备，确保 Profiler 能正确关联
torch_npu.npu.set_device(device)

## 建议与总结

在基于`torch_npu`进行性能调优或故障排查时，建议遵循以下最佳实践：

1.

显式指定 Device：在使用`torch_npu`的各类功能接口前，务必先通过`torch_npu.npu.set_device()`显式指定目标设备。这能确保框架侧正确识别接口执行的目标硬件，避免因默认行为导致的采集偏差。

2.

排查顺序：当遇到`torch_npu`相关接口异常或数据缺失时，首先检查代码中 Device 的指定方式是否正确，确认是否遗漏了`set_device`调用。

3.

环境一致性：确保使用的 CANN、torch_npu 与 PyTorch 版本兼容，并严格遵循官方文档中的初始化流程。

边框设置

无框线

边距

宽度

1磅

颜色

自由布局设置

整体布局

子模块

评论

修订记录

对正文进行的文本增删、样式修改都将标记为修订

自定义多级列表

列表设置

- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9

- 1.
- a.
- i.
- 1.
- a.
- i.
- 1.
- a.
- i.

前缀

无

序号

1 2 3 ...

后缀

.

编号格式

列表显示

继承层级

不继承

位置

对齐方式

默认

单元格边距

边距

默认

左边距

cm

右边距

cm

上边距

cm

下边距

cm

点赞 0

本页内容

背景概述 [了解详情](https://www.hiascend.com/#5WkvRi2vUoEwDLPPWlz0dB)

问题现象 [了解详情](https://www.hiascend.com/#53ChaixCK5AYRYYQOuiIfK)

原因分析 [了解详情](https://www.hiascend.com/#4FELpkhqHpHPyixwLmbc1v)

问题根因 [了解详情](https://www.hiascend.com/#6jsXs3mK1BDOvvdP2tb9aQ)

解决措施 [了解详情](https://www.hiascend.com/#6OZle5rTyFmWK0CodotGkb)

建议与总结 [了解详情](https://www.hiascend.com/#78CEa2oUTAuSRlCJrjvOL2)
