Pytorch 性能分析器使用探究

Categories: DeepLearning

用法

Pytorch 提供了 profiler 分析器模块来分析模型性能。

1, 先导入相应模块和包

import torch
import torchvision.models as models
from torch.profiler import profile, record_function, ProfilerActivity

2, 准备一个用于性能分析测试的模型

model = models.resnet18()
inputs = torch.randn(5, 3, 224, 224)

3, 使用 profiler 分析执行时间, 它的使用代码示例如下所示:

with profile(activities=[ProfilerActivity.CPU], record_shapes=True) as prof:
    with record_function("model_inference"):
        model(inputs)

profile 函数有很多参数,其中最有用的一些是

  • activities - 要分析的活动列表
    • ProfilerActivity.CPU - PyTorch 运算符、TorchScript 函数和用户定义的代码标签(参见下面的 record_function);
    • ProfilerActivity.CUDA - 设备上的 CUDA 内核;
  • record_shapes - 是否记录运算符输入的形状;
  • profile_memory - 是否报告模型张量消耗的内存量;

注意:在使用 CUDA 时,profiler 还会显示主机上发生的运行时 CUDA 事件。

Read More

vllm 优化之 cuda_graph 详解

【2024-11-09】cuda graph 解决了可能存在的所有 CPU 开销的来源:如用户编写的逻辑、PyTorch 调度逻辑、内存分配开销以及 GPU 驱动/内核开销(静态图优势)。