2 回答

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊
原來我只需要用作nvidia/cuda/10.0-devel基礎(chǔ)圖像而不是nvidia/cuda/10.0-base
所以我的 Dockerfile 現(xiàn)在是:
# 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"]

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
編輯:這個(gè)答案只是告訴您如何驗(yàn)證 docker 映像中發(fā)生的情況。不幸的是我無法弄清楚為什么會發(fā)生這種情況。
如何檢查呢?
在 docker 構(gòu)建的每個(gè)步驟中,您都可以看到正在生成的各個(gè)層。您可以使用該 ID 創(chuàng)建臨時(shí)映像來檢查發(fā)生了什么。例如
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
關(guān)于 Dockerfile 的旁注:
如果更改 Dockerfile 中的指令順序,則可以縮短未來構(gòu)建的構(gòu)建時(shí)間。Docker 使用的緩存在發(fā)現(xiàn)與之前構(gòu)建不同的內(nèi)容時(shí)就會失效。我希望您更改代碼的頻率高于 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"]
注意:這只是一個(gè)例子。
關(guān)于為什么圖像無法構(gòu)建,我發(fā)現(xiàn) PyTorch 1.4 不支持 CUDE 11.0 ( https://discuss.pytorch.org/t/pytorch-with-cuda-11-compatibility/89254 ),但也使用以前的CUDA版本并沒有解決這個(gè)問題。
添加回答
舉報(bào)