torcheval.metrics.Throughput¶
- class torcheval.metrics.Throughput(*, device: device | None = None)¶
计算吞吐量值,即每秒处理的元素数量。
注意:在分布式环境中,建议使用 `world_size * metric.compute()` 来获得总吞吐量的近似值。而使用 `sync_and_compute(metric)` 则需要状态同步。此外,`sync_and_compute(metric)` 会给出与 `world_size * metric.compute()` 略微不同的值。
示例
>>> import time >>> import torch >>> from torcheval.metrics import Throughput >>> metric = Throughput() >>> items_processed = 64 >>> ts = time.monotonic() >>> time.sleep(2.0) # simulate executing the program for 2 seconds >>> elapsed_time_sec = time.monotonic() - ts >>> metric.update(items_processed, elapsed_time_sec) >>> metric.compute() tensor(32.)
- __init__(*, device: device | None = None) None ¶
初始化一个指标对象及其内部状态。
使用 `self._add_state()` 初始化指标类的状态变量。状态变量应为 `torch.Tensor`、`torch.Tensor` 列表、以 `torch.Tensor` 作为值的字典或 `torch.Tensor` 的双端队列。
方法
__init__
(*[, device])初始化一个指标对象及其内部状态。
compute
()实现此方法以从状态变量计算并返回最终指标值。
load_state_dict
(state_dict[, strict])从 state_dict 加载指标状态变量。
merge_state
(metrics)实现此方法以更新当前指标的状态变量,使其成为当前指标和输入指标的合并状态。
reset
()将指标状态变量重置为其默认值。
state_dict
()将指标状态变量保存到 state_dict 中。
to
(device, *args, **kwargs)将指标状态变量中的张量移动到设备上。
update
(num_processed, elapsed_time_sec)使用值和权重更新状态。
属性
device
最后输入的 `Metric.to()` 设备。