使用对象检测 API 的训练未在 AI Platform 中的 GPU 上运行

问题描述

我正在尝试在 tensorflow 2 对象检测 api 中运行一些模型的训练。

我正在使用这个命令:

gcloud ai-platform jobs submit training segmentation_maskrcnn_`date +%m_%d_%Y_%H_%M_%s` \
    --runtime-version 2.1 \
    --python-version 3.7 \
    --job-dir=gs://${MODEL_DIR} \
    --package-path ./object_detection \
    --module-name object_detection.model_main_tf2 \
    --region us-central1 \
    --scale-tier CUSTOM \
    --master-machine-type n1-highcpu-32 \
    --master-accelerator count=4,type=nvidia-tesla-p100 \
    -- \
    --model_dir=gs://${MODEL_DIR} \
    --pipeline_config_path=gs://${PIPELINE_CONfig_PATH}

训练作业已成功提交,但是当我在 AI 平台上查看我提交的作业时,我注意到它没有使用 GPU!

enter image description here

此外,在查看我的训练作业的日志时,我注意到在某些情况下无法打开 cuda。它会说这样的话:

Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda/lib64:/usr/local/nvidia/lib64

几个月前,我使用 AI 平台进行培训,并取得了成功。不知道现在有什么变化! 事实上,对于我自己的设置,没有任何改变。

为了记录,我现在正在训练 Mask RCNN。几个月前,我训练了 Faster RCNN 和 SSD 模型。

解决方法

无法加载动态库“libcudart.so.11.0”; dlerror: libcudart.so.11.0: 无法打开共享对象文件:没有那个文件或目录; LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda/lib64:/usr/local/nvidia/lib64

我不确定,因为我无论如何都无法测试。通过快速的谷歌搜索,似乎人们由于多种原因遇到了这个问题,解决方案是某种依赖。在 SO 中,询问了相同的查询,您可能以某种方式错过了它,请先检查它,here

另外,检查下面发布的这个相关问题

在检查所有可能的解决方案后,问题仍然存在,然后用它更新您的查询。

我认为您的 Cuda 版本(CUDAcuDNN)和 tf 版本存在一些不匹配,您应该首先在您的工作环境中检查它们。此外,请确保正确更新 Cuda 路径。根据给出的错误信息,您需要确保以下设置正确。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.0/lib64/