更新时间:2024-04-11 GMT+08:00

训练过程中无法找到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版本不一致时,可参考如下处理方法:

  1. 在业务执行前加如下命令,检查是否能找到so文件。如果已经找到so文件,执行2;如果没有找到,执行3
    import os;
    os.system(find /usr -name *libcudart.so*);
  2. 设置环境变量LD_LIBRARY_PATH,设置完成后,重新下发作业即可。
    例如so文件的存放路径为:/use/local/cuda/lib64,LD_LIBRARY_PATH设置如下:
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
  3. 执行如下命令,查看训练环境的cuda版本,确认当前cuda版本是否支持so文件。
    os.system("cat /usr/local/cuda/version.txt")
    1. 支持。当前cuda版本无so文件,需外部导入so文件(自行在浏览器下载),再设置LD_LIBRARY_PATH,具体见2
    2. 不支持。尝试更换引擎,重新下发作业。或者使用自定义镜像创建作业,可参考使用自定义镜像创建作业