torch.monitor#
創建於:2022年1月12日 | 最後更新於:2025年6月11日
警告
此模組為原型釋出,其介面和功能在未來的 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持續時間將統計資料記錄為 Event。當視窗關閉時,統計資料將透過事件處理程式記錄為torch.monitor.Stat事件。window_size應設定為相對較大的值,以避免記錄大量事件。例如:60 秒。Stat 使用毫秒精度。如果設定了
max_samples,則統計資料將透過在發生max_samples次新增呼叫後丟棄 add 呼叫來限制每個視窗的樣本數量。如果未設定,則將包含視窗期間的所有add呼叫。這是一個可選欄位,用於使跨視窗的聚合更直接可比,因為樣本數量可能會有所不同。當 Stat 被銷燬時,它將記錄任何剩餘資料,即使視窗尚未經過。
- __init__(self: torch._C._monitor.Stat, name: str, aggregations: collections.abc.Sequence[torch._C._monitor.Aggregation], window_size: datetime.timedelta, max_samples: SupportsInt = 9223372036854775807) None#
構造
Stat。
- add(self: torch._C._monitor.Stat, v: SupportsFloat) 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 代表一個要記錄的特定型別事件。這可以代表每輪的損失或準確率等高階資料點,也可以代表透過本庫提供的 Stats 進行的更低階聚合。
同一型別的所有事件都應具有相同的名稱,以便下游處理程式能夠正確處理它們。
- __init__(self: torch._C._monitor.Event, name: str, timestamp: datetime.datetime, data: collections.abc.Mapping[str, data_value_t]) None#
構造
Event。
- property data#
Event中包含的結構化資料。
- property name#
Event的名稱。
- property timestamp#
Event發生的 timestamp。
- 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: collections.abc.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)[source]#
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))