torch.monitor#
创建于: 2022年1月12日 | 最后更新于: 2025年6月11日
警告
此模块为原型发布,其接口和功能在未来的 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时间将统计信息记录为一个 Event。当窗口关闭时,统计信息将通过事件处理程序记录为torch.monitor.Stat事件。window_size应设置为相对较高的值,以避免记录大量事件。例如:60 秒。Stat 使用毫秒精度。如果设置了
max_samples,统计将通过在发生max_samples次添加后丢弃 add 调用来限制每个窗口的样本数。如果未设置,将包含窗口内的所有add调用。这是一个可选字段,用于使聚合在样本数量可能不同时在不同窗口之间更具可比性。当 Stat 被销毁时,它将记录任何剩余数据,即使窗口尚未经过。
- __init__(self: torch._C._monitor.Stat, name: str, aggregations: collections.abc.Sequence[torch._C._monitor.Aggregation], window_size: datetime.timedelta, max_samples: SupportsInt = 9223372036854775807) None#
构造
Stat。
- add(self: torch._C._monitor.Stat, v: SupportsFloat) 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: collections.abc.Mapping[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: collections.abc.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))