Shortcuts

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,统计数据将通过丢弃超过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

事件表示要记录的特定类型的事件。这可以表示高层次的数据点,如每个周期的损失或准确性,或更底层的聚合,如通过此库提供的统计数据。

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

__init__(self: torch._C._monitor.Event, name: str, timestamp: datetime.datetime, data: Dict[str, 数据值类型]) None

构建 Event

property data

包含在 Event 中的结构化数据。

property name

事件的名称。

property 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: 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)[源代码]

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)[源代码]

构建 TensorboardEventHandler

优云智算