CUDA、PyTorch本地环境与线上服务Docker的问题
一、环境相关
一般来说,环境最重要,尤其是本地和线上环境的差异。
可能会存在线上显卡算力太高,与本地显卡相关框架不匹配;
比如:线上显卡:NVIDIA A10,算力8.6,则需要CUDA版本:建议CUDA11.4或更高,CUDA11以下(CUDA10)的都会报错
基础镜像选择:选择对应的镜像即可
PyTorch版本选择:https://pytorch.org/get-started/locally/
【其他软件包】
transformers,一般python3.6只支持4.18.0(好像),想用新的特性可能需要更新Python版本
二、模型相关
由于线上服务是实时且持续进行的,需要对显存进行控制。
一般情况下使用
model.to(device)
model.eval()
with torch.no_grad():
inputs = {k: v.to(device) for k, v in inputs.items()}
outputs = model(**inputs).logits
output_softmax = torch.softmax(outputs, -1)[:,1].item()
但显存占用仍然会一直上涨,查询资料了解到是因为后续的计算依旧在cuda上计算,因此需要在模型预测完成后,就将数据全转到cpu。
model.to(device)
model.eval()
with torch.no_grad():
inputs = {k: v.to(device) for k, v in inputs.items()}
outputs = model(**inputs).logits.cpu() # 转到cpu
output_softmax = torch.softmax(outputs, -1)[:,1].item()
经测试,显卡可以保持占用不变。
【参考】https://www.pudn.com/news/6228c8f89ddf223e1ad09dc5.html
【注意】最好在容器中确认一下调用显卡是否成功,最好测试整个推理过程。因为即使torch.cuda.is_available() == True
也不一定模型正常。
三、可能的报错与解决
1、安装opencv-python时候的错误
【错误】ImportError: libGL.so.1: cannot open shared object file: No such file or directory
【解决】在镜像Dockerfile中加入sudo apt-get install libgl1
2、使用显卡进行运算时候报错
【错误】GeForce *** *** with CUDA capability sm_86 is not compatible with the current PyTorch installation. The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_61 sm_70 sm_75 compute_37
【解决】使用CUDA11.4或更高版本以及对应的深度学习框架,CUDA11以下(CUDA10)的都会报错
本文作者:AlsoRan
本文链接:https://www.cnblogs.com/ache/p/17025197.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步