評價此頁

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 是 strfloatintbool 之一。

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))
__init__(writer)[source]#

構造 TensorboardEventHandler