训练过程中无法找到so文件
问题现象
ModelArts训练作业运行时,日志中遇到如下报错,导致训练失败:
libcudart.so.9.0 cannot open shared object file no such file or directory
原因分析
编译生成so文件的cuda版本与训练作业的cuda版本不一致。
处理方法
编译环境的cuda版本与训练环境不一致,训练作业运行就会报错。例如:使用cuda版本为10的开发环境tf-1.13中编译生成的so包,在cuda版本为9.0训练环境中tf-1.12训练会报该错。
编译环境和训练环境的cuda版本不一致时,可参考如下处理方法:
- 在业务执行前加如下命令,检查是否能找到so文件。如果已经找到so文件,执行2;如果没有找到,执行3。
import os; os.system(find /usr -name *libcudart.so*);
- 设置环境变量LD_LIBRARY_PATH,设置完成后,重新下发作业即可。
- 执行如下命令,查看训练环境的cuda版本,确认当前cuda版本是否支持so文件。
os.system("cat /usr/local/cuda/version.txt")
- 支持。当前cuda版本无so文件,需外部导入so文件(自行在浏览器下载),再设置LD_LIBRARY_PATH,具体见2。
- 不支持。尝试更换引擎,重新下发作业。或者使用自定义镜像创建作业,可参考使用自定义镜像创建作业。