1 问题
测试环境中的文字识别服务(包含一个.onnx的文字超分服务,会在文字识别前进行超分)在一次重启后出现超时问题;同版本的代码在开发环境正常。
2 解决方案
2.1 被告知后的处理
- 查看两个环境中代码版本是否一致 发现一致
- 查看两个环境中安装的包是否一致(pip list) 发现几乎一致
- 查看显卡使用情况(nvidia-smi) 发现有不同
- 找了一些文字切片,用文字识别的客户端测试,发现同一批切片,测试环境确实慢了一点。
- 因开发环境一直被调用,想着等没人调用时,两个环境对比着再看看。所以问题没解决,拖到了第二天。
2.2 第二天处理
- 关掉超分服务,测试环境的文字识别服务耗时正常
- 疑惑为什么?onnx模型没调用GPU?
- 开始验证
>>> import onnxruntime
>>> onnxruntime.get_device()
'CPU'
>>> exit()
- 哈?可安装的有onnxruntime-gpu,再pip list,发现同时安装了onnxruntime,难道两者同时安装只能调用cpu?
- 卸载onnxruntime,结果报错:No module named ‘onnxruntime’。再卸载onnxruntime-gpu,并重新安装后,一切正常。
3 心得
- 代码不会撒谎,异常了,肯定有问题。代码一样,结果不一样,那就是环境的问题。
- 遇到问题,不能偷懒,不能拖。
- 要认真,两个环境中,一个多装了onnxruntime却没注意到,并且先前遇到过这个问题。
- 多总结问题,记录下来。好脑筋不如烂笔头。