---
title: PyTorch场景如何采集最小膨胀数据-昇腾社区
description: 模型运行过程中开启Profiling采集性能数据会造成性能膨胀，具体表现是开启Profiling后模型性能数据采集step打屏耗时较不开启Profiling耗时变长，两者差值为膨胀时间。
keywords: 性能膨胀,性能数据采集,Ascend PyTorch Profiler
url: https://www.hiascend.com/document/caselibrary/detail/profilingcase_007
section: (其他)
---

# PyTorch场景如何采集最小膨胀数据-昇腾社区

URL: https://www.hiascend.com/document/caselibrary/detail/profilingcase_007
描述: 模型运行过程中开启Profiling采集性能数据会造成性能膨胀，具体表现是开启Profiling后模型性能数据采集step打屏耗时较不开启Profiling耗时变长，两者差值为膨胀时间。
关键词: 性能膨胀,性能数据采集,Ascend PyTorch Profiler

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

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

PyTorch场景如何采集最小膨胀数据

PyTorch场景如何采集最小膨胀数据

2025/04/02

1.2k

问题信息

| 问题来源 | 产品大类 | 产品子类 | 关键字 |
| --- | --- | --- | ---|
| 官方 | MindStudio | - | 性能膨胀、性能数据采集、Ascend PyTorch Profiler |

#### 问题现象描述

模型运行过程中开启Profiling采集性能数据会造成性能膨胀，具体表现是开启Profiling后模型性能数据采集step打屏耗时较不开启Profiling耗时变长，两者差值为膨胀时间。

#### 原因分析

膨胀程度与Profiling采集设置相关，以下按影响模型性能程度列举主要影响因素：

1. with_stack开关：开启with_stack会获取模型调用栈信息（性能影响巨大，可使用影响较小的with_modules替代）。
2. profiler_level：profiler_level设置级别越高，采集数据量越大，同时造成的性能膨胀也越大。
3. activities设置：采集事件类型。
4. 其余采集开关。

#### 解决措施

- 采集性能数据推荐配置：

使用推荐配置可获取一般性能分析问题所需的Host和Device侧数据。

```
experimental_config = torch_npu.profiler._ExperimentalConfig(
    export_type=torch_npu.profiler.ExportType.Text,
    aic_metrics=torch_npu.profiler.AiCMetrics.PipeUtilization,
    profiler_level=torch_npu.profiler.ProfilerLevel.Level1,
    l2_cache=False,
    data_simplification=False
)
    with torch_npu.profiler.profile(
    activities=[
    torch_npu.profiler.ProfilerActivity.CPU,
    torch_npu.profiler.ProfilerActivity.NPU
    ],
    schedule=torch_npu.profiler.schedule(wait=1, warmup=1, active=2, repeat=2, skip_first=10),
    on_trace_ready=torch_npu.profiler.tensorboard_trace_handler("./result"),
    experimental_config=experimental_config) as prof:
    for step in range(steps):
        train_one_step(step, steps, train_loader, model, optimizer, criterion)
        prof.step()
```
- 采集最小膨胀数据：

最小膨胀采集设置一般用于和GPU性能数据对比使用。

```
with torch_npu.profiler.profile(
    activities=[torch_npu.profiler.ProfilerActivity.NPU],
    schedule=torch_npu.profiler.schedule(wait=1, warmup=1, active=1, repeat=1, skip_first=20),
    on_trace_ready=torch_npu.profiler.tensorboard_trace_handler("./npu-profling-least-inflation")
) as prof:
    for step, x in enumerate(train_dataloader):    # train_one_step
        ...
        prof.step()
```

本页内容

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