KinetoStepTracker¶
- class 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() 函式。
注意:目前請不要在 Optimizer 之外的模組中使用 KinetoStepTracker。 結果可能會導致步數計數不正確地遞增。