快捷方式

KinetoStepTracker

class torch.autograd.profiler.KinetoStepTracker[源][源]

提供了一種全域性遞增步數(step count)的抽象。

以前,我們只能透過 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() 函式。

注意:目前請不要在 Optimizer 之外的模組中使用 KinetoStepTracker。否則可能導致步數遞增不正確。

classmethod current_step()[源][源]

獲取任意請求者的最新步數

返回型別

int

classmethod erase_step_count(requester)[源][源]

移除給定的請求者。

返回型別

bool

classmethod increment_step(requester)[源][源]

遞增請求者的步數。

此外,如果所有步數中的最大值已經遞增,則觸發 _kineto_step() 並返回全域性步數。

返回型別

int

classmethod init_step_count(requester)[源][源]

為給定的請求者初始化。

文件

查閱 PyTorch 全面開發者文件

檢視文件

教程

獲取針對初學者和高階開發者的深度教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源