运动步数追踪器
- 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。结果可能会导致步数计数的不正确增加。