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應設定得相對較高,以避免記錄大量事件。例如:60s。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¶
根據配置的統計型別和聚合方式向統計資訊新增一個值。
- 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 表示要記錄的特定型別事件。這可以代表高層資料點,例如每 epoch 的損失或準確率,或透過此庫提供的 Stat 進行的低層聚合。
所有同類型事件應具有相同的名稱,以便下游處理程式能夠正確處理它們。
- __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))