快捷方式

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,则统计信息将通过丢弃 add 调用来限制每个窗口的样本数,直到发生 max_samples 次添加。如果未设置,则窗口期间的所有 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 可以是 strfloatintbool

class torch.monitor.Event

Event 表示要记录的特定类型事件。这可以表示高级数据点,例如每个 epoch 的损失或准确率,或更低级的聚合,例如通过此库提供的 Stats。

相同类型的所有事件都应具有相同的名称,以便下游处理程序能够正确处理它们。

__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]

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

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

查找适合初学者和高级开发人员的深入教程

查看教程

资源

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

查看资源