快捷方式

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

构造 TensorboardEventHandler 实例。

文档

访问 PyTorch 全面的开发者文档

查看文档

教程

获取面向初学者和高级开发者的深度教程

查看教程

资源

查找开发资源并获得问题解答

查看资源