标签:机器 pip3 onnxruntime 性能 list 排查 gpu 服务器 CPU
背景
- 查看响应时间日志,新增加的两台GPU机器服务器响应时间要比老的机器要快3倍
- qps 相似,机型一模一样,同一个服务和同样的模型
排查
-
htop
查看老机器开启了 swap, 新机器关闭了swap,于是将老机器的 swap 关闭,然而并没有效果 -
prometheus 比对两台机器的运行差异,除了老机器CPU使用率和负载都比新机器高以外其余的指标全部都接近,排除磁盘、网络等问题
-
export -p
对比环境变量一样,排除环境变量问题 -
lsof -p 进程ID| grep mem
拿到python3运行环境依赖的库进行比对, 发现运行时类库有些不一样,联系算法同学升级版本和对比原因- opencv 版本不一致,升级版本为一致,
pip3 list|grep opencv
- Pillow 版本不一致,升级版本为一致,
pip3 list|grep Pillow
- 为什么跑的快的机器有用到 onnxruntime_gpu.libs/libz-eb09ad1d.so.1.2.3, 跑的慢的机器没有用这个类库,算法同学找到关键点了
- opencv 版本不一致,升级版本为一致,
解决
在慢的机器上运行 pip3 list
发现有同时安装 onnxruntime 和 onnxruntime-gpu, 于是测试
$ pip3 list|grep onnxruntime
onnxruntime 1.4.0
onnxruntime-gpu 1.4.0
$ python3
>>>import onnxruntime
>>>onnxruntime.get_device();
'CPU'
终于找到原因了,就是因为onnxruntime全部是在CPU上计算的,导致服务器的CPU利用率过高,GPU反而没有怎么利用,于是卸载CPU版本 pip3 uninstall onnxruntime, 然后重启服务,人脸识别模型的服务响应速度由800毫秒提升到250毫秒
原因分析
TODO,我不是搞算法和运维的,求大神解答
- 为什么同时安装onnxruntime和onnxruntime-gpu的时候,onnxruntime默认会使用CPU呢?
- 我们的开发机器上面都有同时安装这两个库,为什么默认使用的就是GPU?
标签:机器,pip3,onnxruntime,性能,list,排查,gpu,服务器,CPU 来源: https://blog.csdn.net/liufang1991/article/details/119005124
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。