torch.monitor¶
警告
此模块为原型版本,其接口和功能可能会在未来的 PyTorch 版本中不经警告而更改。
torch.monitor 提供了一个用于记录 PyTorch 中事件和计数器的接口。
统计接口旨在用于跟踪定期记录的高级指标,以便用于监控系统性能。由于统计信息会聚合到特定窗口大小,因此可以从关键循环中记录到它们,而对性能的影响最小。
对于不那么频繁的事件或值(例如损失、准确性、使用情况跟踪),可以直接使用事件接口。
可以注册事件处理程序来处理事件并将它们传递给外部事件接收器。
API 参考¶
- class torch.monitor.Aggregation¶
- 这些是可以用于累积统计信息的聚合类型。 - 成员 - VALUE
- VALUE 返回要添加的最后一个值。 
- MEAN
- MEAN 计算所有添加值算术平均值。 
- COUNT
- COUNT 返回添加值的总数。 
- SUM
- SUM 返回添加值的总和。 
- MAX
- MAX 返回添加值的最大值。 
- MIN
- MIN 返回添加值的最小值。 
 - 属性 名称¶
 
- 类 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¶
- 创建期间设置的统计数据名称。 
 
- 类 torch.monitor.data_value_t¶
- data_value_t 是 - str、- float、- int、- bool之一。
- 类 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。
 - 属性 data¶
- Event中包含的结构化数据。
 - 属性 name¶
- Event的名称。
 - 属性 timestamp¶
- Event发生的时间戳。
 
- 类 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]¶
- 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))