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
,則 stat 會透過在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 ¶
新增一個值到 stat,以便根據配置的 stat 類型和聚合進行聚合。
- property count¶
目前已收集的資料點數量。 一旦事件被記錄,就會重置。
- get(self: torch._C._monitor.Stat) dict[torch._C._monitor.Aggregation, float] ¶
傳回 stat 的目前值,主要用於測試目的。如果 stat 已記錄且未新增其他值,則此值將為零。
- property name¶
在建立期間設定的 stat 名稱。
- class torch.monitor.data_value_t¶
data_value_t 是
str
、float
、int
、bool
之一。
- class torch.monitor.Event¶
Event 代表要記錄的特定類型事件。這可以代表高階資料點,例如每個 epoch 的損失或準確度,或更低階的聚合,例如透過此程式庫提供的 Stats。
相同類型的所有 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)[source][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))