Kineto步数追踪器
- 类torch.autograd.profiler.KinetoStepTracker[源代码]
-
提供了一种抽象,用于全局增加步数。
此前,我们只能通过 pytorch profiler 的 step() 方法来标记程序中 step() 发生的位置。现在,我们将在 Optimizer 类中添加 step 钩子 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,否则可能导致步数增量不准确。
- classmethodincrement_step(requester)[源代码]
-
为请求者增加一步计数。
此外,如果最大步数增加,则调用 _kineto_step() 并返回全局步数。
- 返回类型
- classmethodinit_step_count(requester)[源代码]
-
为特定请求者进行初始化。
-