• 文档 >
  • 自动微分包 - torch.autograd >
  • 运动步数追踪器
快捷键

运动步数追踪器

torch.autograd.profiler.KinetoStepTracker[source][source] ¶

提供全局增加步数的抽象。

之前,我们只能在程序中通过 pytorch profiler step()标记一个 step()的发生。现在,我们将在 Optimizer 类中添加 step hooks https://github.com/pytorch/pytorch/issues/88446

  • 这可能导致已经在每个迭代中调用 profiler.step()的程序最终会双倍增加步数。

  • 如果一个模型使用多个优化器,我们也可能有双倍或更多的计数。

我们通过在调用 kineto 库中的 step()之前添加一层抽象来解决这个问题。想法是维护一个字典,以记录每个请求者的步数:

{
   "ProfilerStep": 100,  # triggered by profiler step() call
   "Optimizer1Step": 100,   # Optimizer 1 or 2 are just examples, could be SGD, Adam etc
   "Optimizer2Step": 100,
}

为了确定全局步数,只需取字典值的最大值(100)。

如果其中一个计数增加,最大值将上升。

{
   "ProfilerStep": 100,
   "Optimizer1Step": 101,   # Optimizer1 got incremented first say
   "Optimizer2Step": 100,
}

然后,全局步数是 101。我们只有在全局计数增加时才调用 kineto step()函数。

注意:目前请勿在优化器之外的模块中使用 KinetoStepTracker。结果可能会导致步数计数的不正确增加。

classmethod current_step()[source][source]

获取任何请求者的最新步骤

返回类型:

int

classmethod erase_step_count(requester)[source][source]

移除指定的请求者

返回类型:

布尔型

classmethod increment_step(requester)[source][source]

增加请求者的步数。

此外,如果所有步数的最大值已增加,则触发 _kineto_step() 返回全局步数。

返回类型:

int

classmethod init_step_count(requester)[source][source]

初始化给定的请求者。


© 版权所有 PyTorch 贡献者。

使用 Sphinx 构建,主题由 Read the Docs 提供。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

深入了解初学者和高级开发者的教程

查看教程

资源

查找开发资源并获得您的疑问解答

查看资源