我编写了 Python 和 C++ 版本的 Caffe 前向分类脚本来测试 Caffe 的推理性能。模型已经训练好了。结果很相似,GPU utils 不够全。
我的设置: 1. 卡:Titan XP, 12GB 2.型号:InceptionV3 3. 图片尺寸:3*299*299
当 batch_size 设置为 40 时,GRAM 使用可以达到 10GB,但是 GPU utils 只能达到 77%~79%,对于 Python 和 C++。所以性能约为 258 帧/秒。
在我的脚本中,我加载图像,对其进行预处理,将其加载到输入层,然后重复 net_.forward() 操作。根据我的理解,这不会导致任何 Mem 复制操作,因此理想情况下应该最大限度地提高 GPU 实用程序。但我最多只能达到80%。
在C++ Classification Tutorial ,我发现了以下短语:
Use multiple classification threads to ensure the GPU is always fully utilized and not waiting for an I/O blocked CPU thread.
所以我尝试使用多线程编译的OpenBLAS,在CPU后端下,实际上更多的CPU参与转发,但GPU后端没有用。在GPU后端下,CPU utils会固定在100%左右。
然后我什至尝试将 batch_size 减少到 20,并在两个终端启动两个分类过程。结果是,GRAM 使用率增加到 11GB,但 GPU 使用率下降到 64%~66%。最后,性能下降到大约 200 帧/秒。
有人遇到过这个问题吗?我真的很困惑。
欢迎任何意见。
谢谢,
最佳答案
正如我所观察到的,GPU 实用程序减少了,
1) 低 PCI Express 模式 resnet-152(x16)-90% > resnet-152(x8)-80% > resnet-152(x4)-70% 2) 大型模型 - VGG-100%(x16) ; ResNet-50(x16)-95~100% ; ResNet-152(x16) - 90%
此外,如果我关闭 cuDNN,GPU Util 始终为 100%。
所以我认为 cuDNN 存在一些问题,但我对这个问题了解不多。
NVCaffe 稍微好一些,MXNet 可以 100% 使用 GPU(resnet-152;x4)。
关于python - Caffe做前向推理时GPU利用率不够高,有什么想法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49571777/