使用 pytorch 在 cpu 上推理, 发现一个问题:
- 1 核 CPU 推理的速度是 7.5 张图片/秒
- 32 核 CPU 推理的总速度是 15.5 张图片/秒
限制一核是通过 MKL_NUM_THREADS=1 环境变量实现
使用了 32 倍的 cpu 资源的情况下,推理速度居然只提升了 15.5/7.5=2 倍???
但是这 32 核是都是 100% 都占满了
使用 resnet50
这正常吗?大家遇到过吗?
代码就先不贴了
使用 pytorch 在 cpu 上推理, 发现一个问题:
限制一核是通过 MKL_NUM_THREADS=1 环境变量实现
使用了 32 倍的 cpu 资源的情况下,推理速度居然只提升了 15.5/7.5=2 倍???
但是这 32 核是都是 100% 都占满了
使用 resnet50
这正常吗?大家遇到过吗?
代码就先不贴了
3 回答3.4k 阅读✓ 已解决
1 回答4.4k 阅读
1 回答2.7k 阅读
2 回答1.3k 阅读
2.7k 阅读
2 回答1.4k 阅读
1 回答1.7k 阅读
这种情况是正常的,Amdahl定律,通信开销,内存带宽限制,PyTorch的并行策略,因为这几个点影响的,优化一下代码并行的,减少处理器之前通信,尽量用连续的内存,减少内存带宽,并行计算可以用卷积神经网络(CNN),并行计算的库Intel的MKL库,还有就是用GPU比CPU更适合并行计算。