专栏算法工具链profile里会显示所有的cpu算子吗?为什么只显示部分算子?

profile里会显示所有的cpu算子吗?为什么只显示部分算子?

已解决
长城上贴瓷砖2024-12-30
61
6

hrt_model_exec 的profile里面,看起来只显示了模型部分算子。它是依照什么依据决定某个算子是否放在profile.log和csv里?是会显示所有的cpu算子吗?不在这里面的就一定是bpu的?

算法工具链
征程6
评论2
0/1000
  • Huanghui
    Lv.5

    客户您好,长时间未收到你的答复,相信问题已解。如对此尚存疑问欢迎新帖讨论,感谢您的参与!

    2025-01-07
    0
    0
  • Huanghui
    Lv.5

    1. profile.log和profiler.csv是一样的,只是为了查看方便对同一数据的不同展示方式。

    2.某个算子是否放在profile.log需要根据模型的执行分段情况来看,这个你可以对HBM文件使用hb_model_info -v进行可视化后查看。目前同一段内的BPU算子在 profile.log 中作为忆哥node呈现,CPU算子分开来呈现。

    2024-12-30
    0
    4
    • 长城上贴瓷砖回复Huanghui:

      第二条没有看懂呢。 hb_model_info 没显示和profile相关的东西啊,profile不是分析耗时的吗, hb_model_info 没显示耗时啊。我想看这个模型所有节点在cpu还是bpu上,以及它们的耗时。

      2024-12-30
      0
    • Huanghui回复长城上贴瓷砖:

      你不是说想看哪些节点会被放到 profile.log中吗? hb_model_info -v会生成.prototxt文件,你可以拿netron查看,可视出来的节点就是被放到 profile.log 中得到节点。

      2024-12-30
      0
    • 长城上贴瓷砖回复Huanghui:

      因为是这样的,这个模型它之前profile里基本只显示了softmax相关的算子,显示softmax耗时很多。然后后来换了一个opset导出的onnx,指定了softmax放bpu,变成了显示Layernorm占耗时很多,总耗时少了一些但还是很久。那我不知道之前那个模型,它是只有softmax占耗时多呢,还是说softmax和layernorm耗时都很多,但它没显示全只显示了softmax。现在这个profile里显示不全,就很迷。

      2024-12-30
      0
    • Huanghui回复长城上贴瓷砖:

      可以这样:

      1. 先区分算子是在BPU上运行的还是在CPU上运行的,这个通过 profile.log 就可以看,CPU上的算子应该都在 profile.log中了。

      2. 因为BPU段在 profile.log中是没有展开的,如果你观察到BPU段的耗时比较多,那就去查看你的编译日志目录。下面有个.html的页面,“Layer Details: ” 部分包含了BPU段仅算子的耗时。需要注意的是: 由于layer group的存在,部分算子的执行时间是有重叠的。

      2024-12-30
      0