Torch Profiler生成的JSON文件各字段含义咨询
Torch Profiler Chrome Trace字段详解
你使用Torch Profiler做模型性能分析的代码如下:
from torch.profiler import profile, record_function, ProfilerActivity import torch with profile(activities=[ ProfilerActivity.CPU, ProfilerActivity.CUDA], record_shapes=True) as prof: with record_function("model_inference"): model(input) profiling_results.export_chrome_trace("resnet18_trace_cuda.json")
针对你给出的Chrome Trace JSON片段,以下是每个字段的具体含义:
"traceEvents": [ { "ph": "X", "cat": "cpu_op", "name": "aten::zeros", "pid": 867040, "tid": 867040, "ts": 1668551166936236, "dur": 23, "args": { "Trace name": "PyTorch Profiler", "Trace iteration": 0, "External id": 376, "Input Dims": [[], [], [], [], []], "Input type": ["", "Scalar", "", "", "Scalar"] } },... ]
ph:事件类型,X代表完整持续事件,用于记录有明确开始、结束时间的操作,是Chrome Trace的核心事件类型之一。cat:事件类别,cpu_op说明该操作是在CPU上执行的PyTorch算子,若为CUDA操作则会显示cuda_op类别的标识。name:具体操作名称,aten::zeros指PyTorch底层ATen库中的zeros算子,功能是创建全零张量。pid:进程ID,867040是运行当前模型的进程编号。tid:线程ID,867040是执行该算子的线程编号,此处与进程ID一致,说明是主线程执行的操作。ts:事件开始时间戳,单位为微秒,数值对应具体的时间点,用于梳理操作的执行时序。dur:事件持续时长,单位为微秒,23表示这个aten::zeros操作总共耗时23微秒。args:事件附加参数集合,包含更多细节:Trace name:生成追踪数据的工具名称,这里是PyTorch Profiler。Trace iteration:当前追踪的迭代次数,0表示这是第一次迭代的记录。External id:事件的外部唯一标识,用于和其他工具或系统的数据做关联。Input Dims:算子输入的维度信息,空数组对应无维度的输入(比如标量)。Input type:算子输入的数据类型,Scalar表示对应输入是标量,空字符串代表未记录或无类型信息。
内容的提问来源于stack exchange,提问作者Maryam
相关产品推荐
相关产品推荐

