torch.profiler

news/2024/8/31 13:29:49 标签: 深度学习, 人工智能

什么是torch.profiler

PyTorch Profiler 是一个工具,它允许在训练和推理期间收集性能指标。Profiler 的上下文管理器 API 可用于更好地了解哪些模型操作最昂贵,检查它们的输入形状和调用堆栈,研究设备内核活动并可视化执行跟踪。

性能指标:例如内存使用、CPU 和 GPU 使用、操作时间等。

profiler.profile

torch.profiler.profile(*, activities=None, schedule=None, on_trace_ready=None, record_shapes=False, profile_memory=False, with_stack=False, with_flops=False, with_modules=False, experimental_config=None, use_cuda=None)

API 的参数如下:

  • activities:要使用的活动组列表。支持的值为 torch.profiler.ProfilerActivity.CPU 和 torch.profiler.ProfilerActivity.CUDA。默认值为 ProfilerActivity.CPU 和 (如果可用) ProfilerActivity.CUDA。
  • schedule:一个可调用对象,它以步数 (int) 作为单个参数,并返回 ProfilerAction 值,该值指定在每个步骤执行的 profiler 操作。
  • on_trace_ready:一个可调用对象,它在 schedule 在 profiling 期间返回 - ProfilerAction.RECORD_AND_SAVE 时,会在每个步骤被调用。
  • record_shapes:是否保存操作的输入形状信息。
  • profile_memory:是否跟踪张量内存分配/释放。
  • with_stack:是否记录操作的源信息 (文件和行号)。
  • with_flops:是否使用公式估计特定操作 (矩阵乘法和 2D 卷积) 的 FLOPs (浮点操作数)。
  • with_modules:是否记录操作的调用堆栈中对应的模块层次结构 (包括函数名)。例如,如果模块 A 的 forward 调用了模块 B 的 forward,其中包含一个 aten::add 操作,那么 aten::add 的模块层次结构为 A.B。请注意,此功能目前仅支持 TorchScript 模型,不支持 eager 模式模型。
  • experimental_config:Kineto 库功能使用的一组实验性选项。请注意,不保证向后兼容性。
  • use_cuda:是否使用 CUDA。如果为 None,则会根据可用性自动选择使用 CUDA 或 CPU。

示例

with torch.profiler.profile(
    activities=[
        torch.profiler.ProfilerActivity.CPU,
        torch.profiler.ProfilerActivity.CUDA,
    ]
) as p:
    code_to_profile()
print(p.key_averages().table(
    sort_by="self_cuda_time_total", row_limit=-1))

http://www.niftyadmin.cn/n/4937222.html

相关文章

Springboot 设置统一的请求返回格式

现在开发过程中主要采用前后端分离的方式进行开发测试,也就是前端封装请求,后端提供标准的API接口服务。一般现在json 格式受到开发者们的青睐,学习过程中我们可以设置接口的返回类型,那么怎么做到设置统一的返回格式呢&#xff1…

数据结构顺序表和链表(超详细)

线性表: 线性表 ( linear list ) 是 n 个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串 ... 线性表在逻辑上是线性结构,也就…

C#中的enum枚举类型位运算

class A { [Flags] public enum Week { Monday 1 << 0,//1,0b_0000_0001, Tuesday 0x0002,//2,1<<1,0b_0000_0010, Wednesday 0b_0000_0100,//二进制数,4 Thursday 1 << 3,//8,0x08,在计算机中&#xff0c;…

【力扣每日一题】1572. 矩阵对角线元素的和 8.11打卡

文章目录 题目思路代码 题目 1572. 矩阵对角线元素的和 难度&#xff1a; 简单 描述&#xff1a; 给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 返回合并后的二叉树。 注意…

【算法题】2518. 好分区的数目

题目&#xff1a; 给你一个正整数数组 nums 和一个整数 k 。 分区 的定义是&#xff1a;将数组划分成两个有序的 组 &#xff0c;并满足每个元素 恰好 存在于 某一个 组中。如果分区中每个组的元素和都大于等于 k &#xff0c;则认为分区是一个好分区。 返回 不同 的好分区的…

【数学建模】清风数模更新5 灰色关联分析

灰色关联分析综述 诸如经济系统、生态系统、社会系统等抽象系统都包含许多因素&#xff0c;系统整体的发展受各个因素共同影响。 为了更好地推动系统发展&#xff0c;我们需要清楚哪些因素是主要的&#xff0c;哪些是次要的&#xff0c;哪些是积极的&#xff0c;哪些是消极的…

tp6 RabbitMQ

1、composer 安装 AMQP 扩展 composer require php-amqplib/php-amqplib 2、RabbitMQ 配置 在 config 目录下创建 rabbitmq.php 文件 <?php return [host>,port>5672,user>,password>,vhost>,exchange_name > ,queue_name > ,route_key > ,cons…

返回参数规范

项目目录 目录接口参考 项目目录结构设计&#xff0c;增加部分领域模型后缀强制定义&#xff0c;方便统一编码风格。 controller&#xff1a;请求处理 RestController module&#xff1a;按大业务区分&#xff0c;对多个业务对象数据聚合处理 Component manager&#xff1a;…