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))