相关疑难解决方法(0)

如何在 pytorch 训练中优化 cudaHostAlloc 和 cudaLaunchKernel 时间

我正在尝试使用 pytorch profiler 来分析我的模型。我使用下面的代码来分析

with profile(activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA], record_shapes=True) as prof:
    with record_function("model_inference"):
        output_batch = self.model(input_batch)
print(prof.key_averages().table(sort_by="cpu_time_total", row_limit=10))
Run Code Online (Sandbox Code Playgroud)

分析器输出如下

-------------------------------------------------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  
                                                   Name    Self CPU %      Self CPU   CPU total %     CPU total  CPU time avg     Self CUDA   Self CUDA %    CUDA total  CUDA time avg    # of Calls  
-------------------------------------------------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  ------------  
                                        model_inference         3.17%      83.011ms        63.97%        1.675s        1.675s       0.000us         0.00%     373.844ms     373.844ms             1  
                                            aten::copy_         0.24% …
Run Code Online (Sandbox Code Playgroud)

profiler deep-learning pytorch

7
推荐指数
1
解决办法
1111
查看次数

Pytorch 分析器显示两个不同网络的卷积平均执行时间不同

我有两个网络,我正在对它们进行分析以查看哪些操作占用了大部分时间。我注意到不同网络的操作是不同的CUDA time avgaten::conv2d这也增加了一个数量级。在我的第一个网络中,它是22us,而对于第二个网络,它是3ms。我的第一个网络具有最多带有512滤波器的卷积层,但第二个网络仅具有最多192滤波器。因此,我预计第二个网络中卷积运算所花费的平均时间应该更短。相反,它高出 3 个数量级。为什么会出现这种情况呢?

完整的分析输出如下

网络1:

                                                  Name    Self CPU %      Self CPU   CPU total %     CPU total  CPU time avg     Self CUDA   Self CUDA %    CUDA total  CUDA time avg    # of Calls  

                                      cudaLaunchKernel        99.80%     933.739ms        99.80%     933.739ms      20.750ms       0.000us         0.00%       0.000us       0.000us            45  
                                       model_inference         0.05%     453.000us       100.00%     935.567ms     935.567ms       0.000us         0.00%     195.000us     195.000us             1  
                               aten::cudnn_convolution         0.04%     388.000us        99.84%     934.047ms     103.783ms     195.000us       100.00%     195.000us      21.667us             9  
                                    aten::_convolution …
Run Code Online (Sandbox Code Playgroud)

profiling pytorch

6
推荐指数
0
解决办法
938
查看次数

标签 统计

pytorch ×2

deep-learning ×1

profiler ×1

profiling ×1