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
,则 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_t 是以下类型之一:
str
、float
、int
、bool
。
- class torch.monitor.Event¶
Event 代表要记录的特定类型事件。这可以代表诸如每个 epoch 的损失或准确率等高级数据点,也可以代表诸如通过此库提供的统计信息等更低级的聚合。
所有相同类型的事件应具有相同的名称,以便下游处理程序可以正确处理它们。
- __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))