为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

jeck猫 2023-12-20 19:57:09
我正在尝试为我想要部署的 python 脚本构建一个 docker 映像。这是我第一次使用 docker,所以我可能做错了什么,但我不知道是什么。我的系统:OS: Ubuntu 20.04docker version: 19.03.8我正在使用这个 Dockerfile:# DockerfileFROM nvidia/cuda:11.0-baseCOPY . /SingleModelTestWORKDIR /SingleModelTestRUN nvidia-smiRUN 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 pipRUN pip3 install -r requirements/requirements1.txtRUN pip3 install -r requirements/requirements2.txt    #this is where it failsENTRYPOINT ["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. ||===============================+======================+======================||=============================================================================|+-----------------------------------------------------------------------------+
查看完整描述

2 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

原来我只需要用作nvidia/cuda/10.0-devel基础图像而不是nvidia/cuda/10.0-base


所以我的 Dockerfile 现在是:


# Dockerfile

FROM nvidia/cuda:10.0-devel


RUN nvidia-smi


RUN set -xe \

    && apt-get update \

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

    && apt-get install git -y 

RUN pip3 install --upgrade pip


WORKDIR /SingleModelTest


COPY requirements /SingleModelTest/requirements


RUN export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64


RUN pip3 install -r requirements/requirements1.txt

RUN pip3 install -r requirements/requirements2.txt



COPY . /SingleModelTest


ENTRYPOINT ["python"]


CMD ["TabNetAPI.py"]


查看完整回答
反对 回复 2023-12-20
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

编辑:这个答案只是告诉您如何验证 docker 映像中发生的情况。不幸的是我无法弄清楚为什么会发生这种情况。


如何检查呢?


在 docker 构建的每个步骤中,您都可以看到正在生成的各个层。您可以使用该 ID 创建临时映像来检查发生了什么。例如


docker build -t my_bonk_example .

[...]

Removing intermediate container xxxxxxxxxxxxx

 ---> 57778e7c9788

Step 19/31 : RUN mkdir -p /tmp/spark-events

 ---> Running in afd21d853bcb

Removing intermediate container xxxxxxxxxxxxx

 ---> 33b26e1a2286 <-- let's use this ID

[ failure happens ]


docker run -it --rm --name bonk_container_before_failure 33b26e1a2286 bash

# now you're in the container


echo $LD_LIBRARY_PATH

ls /usr/local/cuda

关于 Dockerfile 的旁注:


如果更改 Dockerfile 中的指令顺序,则可以缩短未来构建的构建时间。Docker 使用的缓存在发现与之前构建不同的内容时就会失效。我希望您更改代码的频率高于 docker 映像的要求,因此将 COPY 移到 apt 指令之后是有意义的。例如


# Dockerfile

FROM nvidia/cuda:10.2-base


RUN set -xe \

    && apt-get update \

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

    && apt-get install git -y 


RUN pip3 install --upgrade pip


WORKDIR /SingleModelTest


COPY requirements /SingleModelTest/requirements


RUN pip3 install -r requirements/requirements1.txt

RUN pip3 install -r requirements/requirements2.txt


COPY . /SingleModelTest


RUN nvidia-smi


ENTRYPOINT ["python"]

CMD ["TabNetAPI.py"]

注意:这只是一个例子。


关于为什么图像无法构建,我发现 PyTorch 1.4 不支持 CUDE 11.0 ( https://discuss.pytorch.org/t/pytorch-with-cuda-11-compatibility/89254 ),但也使用以前的CUDA版本并没有解决这个问题。


查看完整回答
反对 回复 2023-12-20
  • 2 回答
  • 0 关注
  • 245 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信