致命错误:cuda_runtime_api.h:尝试在 docker 中使用 cuda 时没有此类

我正在尝试为我想要部署的 python 脚本构建一个 docker 映像。这是我第一次使用 docker,所以我可能做错了什么,但我不知道是什么。


我的系统:


OS: Ubuntu 20.04

docker version: 19.03.8

我正在使用这个 Dockerfile:


# Dockerfile

FROM nvidia/cuda:11.0-base


COPY . /SingleModelTest


WORKDIR /SingleModelTest


RUN nvidia-smi


RUN set -xe \           #these are just to make sure pip and git are installed to install the requirements

    && apt-get update \

    && apt-get install python3-pip -y \

    && apt-get install git -y 

RUN pip3 install --upgrade pip


RUN pip3 install -r requirements/requirements1.txt

RUN pip3 install -r requirements/requirements2.txt    #this is where it fails


ENTRYPOINT ["python"]


CMD ["TabNetAPI.py"]

nvidia-smi 的输出符合预期:


+-----------------------------------------------------------------------------+

| NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.0     |

|-------------------------------+----------------------+----------------------+

| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |

| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |

|                               |                      |               MIG M. |

|===============================+======================+======================|

|=============================================================================|

+-----------------------------------------------------------------------------+


jeck猫
浏览 211回答 2
2回答

喵喵时光机

原来我只需要用作nvidia/cuda/10.0-devel基础图像而不是nvidia/cuda/10.0-base所以我的 Dockerfile 现在是:# DockerfileFROM nvidia/cuda:10.0-develRUN nvidia-smiRUN set -xe \    && apt-get update \    && apt-get install python3-pip -y \    && apt-get install git -y RUN pip3 install --upgrade pipWORKDIR /SingleModelTestCOPY requirements /SingleModelTest/requirementsRUN export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64RUN pip3 install -r requirements/requirements1.txtRUN pip3 install -r requirements/requirements2.txtCOPY . /SingleModelTestENTRYPOINT ["python"]CMD ["TabNetAPI.py"]

一只斗牛犬

编辑:这个答案只是告诉您如何验证 docker 映像中发生的情况。不幸的是我无法弄清楚为什么会发生这种情况。如何检查呢?在 docker 构建的每个步骤中,您都可以看到正在生成的各个层。您可以使用该 ID 创建临时映像来检查发生了什么。例如docker build -t my_bonk_example .[...]Removing intermediate container xxxxxxxxxxxxx&nbsp;---> 57778e7c9788Step 19/31 : RUN mkdir -p /tmp/spark-events&nbsp;---> Running in afd21d853bcbRemoving intermediate container xxxxxxxxxxxxx&nbsp;---> 33b26e1a2286 <-- let's use this ID[ failure happens ]docker run -it --rm --name bonk_container_before_failure 33b26e1a2286 bash# now you're in the containerecho $LD_LIBRARY_PATHls /usr/local/cuda关于 Dockerfile 的旁注:如果更改 Dockerfile 中的指令顺序,则可以缩短未来构建的构建时间。Docker 使用的缓存在发现与之前构建不同的内容时就会失效。我希望您更改代码的频率高于 docker 映像的要求,因此将 COPY 移到 apt 指令之后是有意义的。例如# DockerfileFROM nvidia/cuda:10.2-baseRUN set -xe \&nbsp; &nbsp; && apt-get update \&nbsp; &nbsp; && apt-get install python3-pip -y \&nbsp; &nbsp; && apt-get install git -y&nbsp;RUN pip3 install --upgrade pipWORKDIR /SingleModelTestCOPY requirements /SingleModelTest/requirementsRUN pip3 install -r requirements/requirements1.txtRUN pip3 install -r requirements/requirements2.txtCOPY . /SingleModelTestRUN nvidia-smiENTRYPOINT ["python"]CMD ["TabNetAPI.py"]注意:这只是一个例子。关于为什么图像无法构建,我发现 PyTorch 1.4 不支持 CUDE 11.0 ( https://discuss.pytorch.org/t/pytorch-with-cuda-11-compatibility/89254 ),但也使用以前的CUDA版本并没有解决这个问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python