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))