目录

torch.monitor

警告

此模块为原型发布版,其接口和功能可能会在未来版本的 PyTorch 中未经警告即发生变化。

torch.monitor 提供了一个用于记录来自 PyTorch 的事件和计数器的接口。

统计接口的设计目的是用于跟踪定期记录的高级别指标,以便监控系统性能。由于统计信息会以特定窗口大小进行聚合,因此你可以从关键循环中记录这些指标,而对性能影响极小。

对于较为罕见的事件或值(例如损失、准确率、使用情况)的跟踪,可以直接使用事件接口。

可以注册事件处理程序来处理事件并将它们传递给外部事件接收器。

API 参考

class torch.monitor.Aggregation

These are types of aggregations that can be used to accumulate stats.

Members:

VALUE :

VALUE returns the last value to be added.

MEAN :

MEAN computes the arithmetic mean of all the added values.

COUNT :

COUNT returns the total number of added values.

SUM :

SUM returns the sum of the added values.

MAX :

MAX returns the max of the added values.

MIN :

MIN returns the min of the added values.

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 是其中之一 str, float, int, bool

class torch.monitor.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发生的 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)[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 的全面开发人员文档

查看文档

教程

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

查看教程

资源

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

查看资源