使用docker來配置pycharm開發和訓練環境


本文主要介紹使用docker+pycharm方式來搭建pytoch訓練平台

操作流程如下:

一、宿主機docker環境安裝

  可參考該鏈接:NVidia-Docker2安裝與常用命令

二、新建Docker鏡像

有兩種方式:

1、直接新建Dockerfile的方式生成

     1)新建一個Dockerfile文件

ARG CUDA="11.0"
ARG CUDNN="8"

FROM nvidia/cuda:${CUDA}-cudnn${CUDNN}-devel-ubuntu16.04

RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections

# install basics
RUN apt-get update -y \
 && apt-get install -y apt-utils git curl ca-certificates bzip2 cmake tree htop bmon iotop g++ \
 && apt-get install -y libglib2.0-0 libsm6 libxext6 libxrender-dev

# Install Miniconda
RUN curl -so /miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh \
 && chmod +x /miniconda.sh \
 && /miniconda.sh -b -p /miniconda \
 && rm /miniconda.sh

ENV PATH=/miniconda/bin:$PATH

# Create a Python 3.6 environment
RUN /miniconda/bin/conda install -y conda-build \
 && /miniconda/bin/conda create -y --name py36 python=3.6.7 \
 && /miniconda/bin/conda clean -ya

ENV CONDA_DEFAULT_ENV=py36
ENV CONDA_PREFIX=/miniconda/envs/$CONDA_DEFAULT_ENV
ENV PATH=$CONDA_PREFIX/bin:$PATH
ENV CONDA_AUTO_UPDATE_CONDA=false

RUN conda install -y ipython
RUN pip install requests ninja yacs cython matplotlib opencv-python tqdm

# Install PyTorch 1.0 Nightly
ARG CUDA
RUN conda install pytorch-nightly cudatoolkit=${CUDA} -c pytorch \
 && conda clean -ya

# Install TorchVision master
RUN git clone https://github.com/pytorch/vision.git \
 && cd vision \
 && python setup.py install

# install apex
RUN git clone https://github.com/NVIDIA/apex.git \
 && cd apex \
 && python setup.py install --cuda_ext --cpp_ext

# install PyTorch Detection
ARG FORCE_CUDA="1"
ENV FORCE_CUDA=${FORCE_CUDA}

RUN mkdir workspace

WORKDIR /workspace
View Code

  2)使用dockerfile生成一個新鏡像,注意最后一個點

     sudo docker build -t pc2mx_orig:v0.1 .

2、采用下載基本ubuntu鏡像方式生成

三、安裝Pycharm

 這里需要注意的是:pycharm 2020.2月之前的版本都不支持docker配置,下載2020.3版鏈接:https://www.jetbrains.com/pycharm/download/#section=linux

四、配置docker環境

第一步:

新建目錄:mkdir /etc/systemd/system/docker.service.d

新建文件:sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf

    [Service]
    ExecStart=
    ExecStart = /usr/bin/dockerd -H tcp:0.0.0.0:2375 unix:///var/run/docker.sock

第二步:

刷新配置:sudo systemctl daemon-reload

重啟docker守護進程:sudo systemctl restart docker

第三步:啟動pycharm

 目前pycharm 2020.3版本以上才支持docker配置

  需使用sudo權限打開,否則會出現連接不上unix:///var/run/docker.sock的問題

  sudo ./pycharm.sh

  配置pycharm:

 1)File-> Settings ->Build,Execution,Deployment->Docker;  Connect to Docker daemon with:選擇unix socket

    2)File->Settings-> Project-> Python Interpreter->Add ->Dokcer-> ImageName:選擇鏡像名

 3)Run->Edit Configuration

    配置Environment variables,Python InterpreterkWorking directory,Docker container settings.

第四步:運行pycharm程序

如果docker中安裝了所有工程需要的包,就可以正常工作了。一般情況下,總會缺少一些包:)

問題1:

 如果缺少相應包,如:ModuleNotFoundError: No module named 'scipy'

解決方法:

 1.在docker環境中安裝scipy: pip install scipy  (此時,直接運行pycharm程序還是會報錯,因為新安裝的配置不會立即更新)

     2.   保存當前容器為新鏡像,以免丟失新安裝的配置:sudo docker commit -a "jimchen" CONTAINER_ID NEW_IMAGE_ID    

  更多docker使用方法見該鏈接:Docker常用操作

 3.重新配置pycharm到該新鏡像

 pip install matplotlib, opencv-python,

問題2:

 docker環境安裝了cuda,但本地沒有安裝cuda

 AssertionError:
Found no NVIDIA driver on your system. Please check that you
have an NVIDIA GPU and installed a driver from
http://www.nvidia.com/Download/index.aspx

解決方法:

  pycharm-> Run/Debug configuration->Docker container settings

      添加 --gpus all #使用docker中配置的cuda環境

     -v local_dir(絕對路徑):docker_dir(絕對路徑)   #映射本地目錄到docker目錄

問題3:

  數據集路徑找不到,加載失敗

解決方法:

  pycharm-> Run/Debug configuration->Working directory

  設置工作目錄為映射到docker的目錄:local_dir(絕對路徑),並把數據集存放在當前目錄

問題4:

  共享內存不足:ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memory (shm).

解決方法:

  pycharm-> Run/Debug configuration->Docker container settings

  添加配置項:--shm-size 8G(16G),設置多大視當前訓練環境的硬件配置而定。

問題5:

 docker 環境里默認python為版本3.6,而pytorch需要使用的是python3.8版,在配置pycharm時,碰到如下問題:

  Error response from daemon: OCI runtime create failed: container_linux.go:349 : starting container process caused “exec: \“python\”: executable file not found in $PATH”: unknown

解決方法:

sudo ln -s /usr/bin/python3.8 /usr/bin/python   #設置python3.8為默認版本

問題6:

       在docker里安裝了很多軟件,但是在pycharm中選擇好相應的docker鏡像后就是看不到所安裝的軟件

解決方法:

  在pycharm菜單,File->Settings->Python Interpreter里,點擊右側add ,出現add python interpreter界面,選擇Docker一欄,然后在右邊分別選擇Docker,已經做好的Docker鏡像,和python路徑,這里要注意:該路徑為docker中的python絕對路徑。如果不填,就會出現上面現象,裝了再多的軟件,在列表中也顯示不出來。

問題7:

  配置好環境后,運行訓練腳本,報如下錯誤:5089d32082ed:/miniconda3/bin/python -u /workspace/DL_Arch_Main/work/MDC_DSL/script_training.py
/miniconda3/bin/python: /miniconda3/bin/python: cannot execute binary file

解決方法:

  打開菜單Run->Run/Debug Configurations,在Docker container settings中,打開編輯窗口,加入選項:--entrypoint=

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM