torch.monitor¶
警告
此模組為原型版本,其介面和功能可能會在未來的 PyTorch 版本中變更,恕不另行通知。
torch.monitor 提供了一個用於從 PyTorch 記錄事件和計數器的介面。
統計資訊介面的設計目的是用於追蹤定期記錄的高階指標,以用於監控系統效能。由於統計資訊會以特定的視窗大小彙總,因此您可以從關鍵迴圈中記錄到它們,而對效能的影響最小。
對於不常發生的事件或值,例如損失、準確度、使用量追蹤,可以直接使用事件介面。
可以註冊事件處理常式來處理事件並將其傳遞到外部事件接收器。
API 參考¶
- class torch.monitor.Aggregation¶
- 這些是可以使用來累積統計資訊的彙總類型。 - 成員 - VALUE
- VALUE 傳回最後一個新增的值。 
- MEAN
- MEAN 計算所有新增值的算術平均數。 
- COUNT
- COUNT 傳回新增值的總數。 
- SUM
- SUM 傳回新增值的總和。 
- MAX
- MAX 傳回新增值中的最大值。 
- MIN
- MIN 傳回新增值中的最小值。 
 - property name¶
 
- class torch.monitor.Stat¶
- Stat 用於以高效能的方式計算固定間隔內的摘要統計資訊。Stat 每隔 - window_size時間就會將統計資訊記錄為事件。當視窗關閉時,統計資訊會透過事件處理常式記錄為- torch.monitor.Stat事件。- window_size應該設定為相對較高的值,以避免記錄大量的事件。例如:60 秒。Stat 使用毫秒精度。- 如果設定了 - max_samples,則統計資訊會透過在發生- max_samples次新增後捨棄 add 呼叫來限制每個視窗的樣本數量。如果未設定,則會包含視窗期間的所有- add呼叫。這是一個選用欄位,用於在樣本數量可能不同的情況下,使彙總在不同視窗之間更具直接可比性。- 當 Stat 被銷毀時,即使視窗尚未過期,它也會記錄任何剩餘的資料。 - __init__(self: torch._C._monitor.Stat, name: str, aggregations: list[torch._C._monitor.Aggregation], window_size: datetime.timedelta, max_samples: int = 9223372036854775807) None¶
- 建構 - Stat。
 - add(self: torch._C._monitor.Stat, v: float) None¶
- 根據配置的統計資料類型和聚合,將值新增至要聚合的統計資料。 
 - property count¶
- 目前已收集的資料點數。記錄事件後會重設。 
 - get(self: torch._C._monitor.Stat) dict[torch._C._monitor.Aggregation, float]¶
- 傳回統計資料的目前值,主要用於測試目的。如果已記錄統計資料且未新增其他值,則此值為零。 
 - property name¶
- 建立期間設定的統計資料名稱。 
 
- class torch.monitor.data_value_t¶
- data_value_t 是 - str、- float、- int、- bool其中之一。
- class torch.monitor.Event¶
- Event 表示要記錄的特定類型事件。這可以表示進階資料點,例如每個時期的損失或準確度,或者更低階的聚合,例如透過此程式庫提供的統計資料。 - 相同類型的所有事件都應具有相同的名稱,以便下游處理常式可以正確處理它們。 - __init__(self: torch._C._monitor.Event, name: str, timestamp: datetime.datetime, data: dict[str, data_value_t]) None¶
- 建構 - Event。
 - property data¶
- Event中包含的結構化資料。
 - property name¶
- Event的名稱。
 - property timestamp¶
- Event發生時的時間戳記。
 
- class torch.monitor.EventHandlerHandle¶
- EventHandlerHandle 是 - register_event_handler傳回的包裝函式類型,用於透過- unregister_event_handler取消註冊處理常式。這不能直接初始化。
- torch.monitor.log_event(event: torch._C._monitor.Event) None¶
- log_event 會將指定的事件記錄到所有已註冊的事件處理常式。事件處理常式會將事件記錄到相應的事件接收。 - 如果沒有註冊事件處理常式,則此方法為無作業。 
- torch.monitor.register_event_handler(callback: Callable[[torch._C._monitor.Event], None]) torch._C._monitor.EventHandlerHandle¶
- register_event_handler 會註冊在透過 - log_event記錄事件時要呼叫的回呼。這些處理常式應避免封鎖主執行緒,因為它們在- log_event呼叫期間執行時可能會干擾訓練。
- torch.monitor.unregister_event_handler(handler: torch._C._monitor.EventHandlerHandle) None¶
- unregister_event_handler 會取消註冊在呼叫 - register_event_handler後傳回的- EventHandlerHandle。在此傳回後,事件處理常式將不再接收事件。
- class torch.monitor.TensorboardEventHandler(writer)[原始碼]¶
- TensorboardEventHandler 是一個事件處理常式,會將已知事件寫入提供的 SummaryWriter。 - 目前僅支援以純量記錄的 - torch.monitor.Stat事件。- 範例 - >>> from torch.utils.tensorboard import SummaryWriter >>> from torch.monitor import TensorboardEventHandler, register_event_handler >>> writer = SummaryWriter("log_dir") >>> register_event_handler(TensorboardEventHandler(writer))