torch_geometric.profile

profileit

一个用于简化函数性能分析的装饰器,例如,获取特定模型在特定数据集上的训练运行时间和内存统计信息。

timeit

一个上下文装饰器,用于方便地计时一个函数,例如,获取特定模型在特定数据集上的运行时间。

get_stats_summary

创建收集的运行时和内存统计信息的摘要。

trace_handler

print_time_total

rename_profile_file

torch_profile

xpu_profile

count_parameters

给定一个torch.nn.Module,计算其可训练参数的数量。

get_model_size

给定一个torch.nn.Module,获取其实际的磁盘大小(以字节为单位)。

get_data_size

给定一个torch_geometric.data.Data对象,获取其理论内存使用量(以字节为单位)。

get_cpu_memory_from_gc

返回由垃圾收集器报告的已使用的CPU内存,单位为字节。

get_gpu_memory_from_gc

返回由垃圾收集器报告的已用GPU内存(以字节为单位)。

get_gpu_memory_from_nvidia_smi

返回以兆字节为单位的空闲和已使用的GPU内存,由nivdia-smi报告。

get_gpu_memory_from_ipex

返回XPU内存统计信息。

benchmark

对接收相同参数集 args 的函数列表 funcs 进行基准测试。

nvtxit

启用NVTX分析功能。

GNN 分析包。

profileit(device: str)[source]

一个用于简化函数性能分析的装饰器,例如,获取特定模型在特定数据集上的训练运行时间和内存统计信息。 如果devicexpu,则返回GPUStats,如果devicecuda,则返回扩展对象CUDAStats

Parameters:

device (str) – 用于性能分析的目标设备。选项有: cuda 和 obj:xpu

@profileit("cuda")
def train(model, optimizer, x, edge_index, y):
    optimizer.zero_grad()
    out = model(x, edge_index)
    loss = criterion(out, y)
    loss.backward()
    optimizer.step()
    return float(loss)

loss, stats = train(model, x, edge_index, y)
class timeit(log: bool = True, avg_time_divisor: int = 0)[source]

一个上下文装饰器,用于方便地计时一个函数,例如,获取特定模型在特定数据集上的运行时间。

@torch.no_grad()
def test(model, x, edge_index):
    return model(x, edge_index)

with timeit() as t:
    z = test(model, x, edge_index)
time = t.duration
Parameters:
  • log (bool, 可选) – 如果设置为 False,将不会在控制台记录任何运行时信息。(默认值:True

  • avg_time_divisor (int, optional) – 如果设置为大于 1 的值,将总时间除以该值。适用于 计算 for 循环内运行时间的平均值。 (默认值: 0)

reset()[source]

打印持续时间并重置当前计时器。

get_stats_summary(stats_list: Union[List[GPUStats], List[CUDAStats]]) Union[GPUStatsSummary, CUDAStatsSummary][source]

创建收集的运行时和内存统计信息的摘要。 如果传递了GPUStats列表,则返回GPUStatsSummary, 否则(传递了CUDAStats列表), 返回CUDAStatsSummary

Parameters:

stats_list (Union[List[GPUStats], List[CUDAStats]]) – 一个由 GPUStatsCUDAStats 对象组成的列表,由 profileit() 返回。

Return type:

Union[GPUStatsSummary, CUDAStatsSummary]

trace_handler(p)[source]
print_time_total(p)[source]
rename_profile_file(*args)[source]
torch_profile(export_chrome_trace=True, csv_data=None, write_csv=None)[source]
xpu_profile(export_chrome_trace=True)[source]
count_parameters(model: Module) int[source]

Given a torch.nn.Module, count its trainable parameters.

Parameters:

model (torch.nn.Model) – 模型。

Return type:

int

get_model_size(model: Module) int[source]

Given a torch.nn.Module, get its actual disk size in bytes.

Parameters:

model (torch model) – 模型。

Return type:

int

get_data_size(data: BaseData) int[source]

给定一个torch_geometric.data.Data对象,获取其理论内存使用量(以字节为单位)。

Parameters:

data (torch_geometric.data.Datatorch_geometric.data.HeteroData) – DataHeteroData 图对象。

Return type:

int

get_cpu_memory_from_gc() int[source]

返回由垃圾收集器报告的已使用的CPU内存,单位为字节。

Return type:

int

get_gpu_memory_from_gc(device: int = 0) int[source]

返回由垃圾收集器报告的已使用的GPU内存,单位为字节。

Parameters:

device (int, optional) – GPU设备标识符。(默认值:1

Return type:

int

get_gpu_memory_from_nvidia_smi(device: int = 0, digits: int = 2) Tuple[float, float][source]

返回以兆字节为单位的空闲和已用GPU内存,由nivdia-smi报告。

注意

nvidia-smi 通常会高估实际程序使用的内存量,请参阅 这里

Parameters:
  • device (int, optional) – GPU设备标识符。(默认值:1

  • digits (int) – 用于兆字节的小数位数。 (默认: 2)

Return type:

Tuple[float, float]

get_gpu_memory_from_ipex(device: int = 0, digits=2) Tuple[float, float, float][source]

返回XPU内存统计信息。

Parameters:
  • device (int, optional) – GPU设备标识符。(默认值:0

  • digits (int) – 用于兆字节的小数位数。 (默认值: 2)

Return type:

Tuple[float, float, float]

benchmark(funcs: List[Callable], args: Union[Tuple[Any], List[Tuple[Any]]], num_steps: int, func_names: Optional[List[str]] = None, num_warmups: int = 10, backward: bool = False, per_step: bool = False, progress_bar: bool = False)[source]

对接收相同参数集 args 的函数列表 funcs 进行基准测试。

Parameters:
  • funcs ([Callable]) – 要基准测试的函数列表。

  • args ((Any, ) 或 [(Any, )]) – 传递给函数的参数。 可以是funcs中每个函数的参数列表,以防它们的头部不同。 或者,你可以传递动态生成参数的函数(例如,用于在不同大小上对模型进行基准测试时很有用)。

  • num_steps (int) – 运行基准测试的步骤数。

  • func_names ([str], optional) – 函数的名称。如果未提供,将尝试从函数本身推断名称。 (默认值: None)

  • num_warmups (int, optional) – 预热步骤的数量。 (默认: 10)

  • backward (bool, optional) – 如果设置为 True,将同时对前向和后向传递进行基准测试。(默认值:False

  • per_step (bool, 可选) – 如果设置为 True,将报告每一步的运行时间。(默认值:False

  • progress_bar (bool, 可选) – 如果设置为 True,将在基准测试期间打印进度条。(默认值:False

nvtxit(name: Optional[str] = None, n_warmups: int = 0, n_iters: Optional[int] = None)[source]

启用NVTX分析功能。

Parameters:
  • name (可选[str], 可选) – 为被包装的函数提供的参考框架名称。默认为代码中函数的名称。

  • n_warmups (int, optional) – 在开始之前调用该函数的迭代次数。默认为0。

  • n_iters (可选[int], 可选) – 记录该函数的迭代次数。默认为所有迭代。