zoukankan      html  css  js  c++  java
  • 使用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=

  • 相关阅读:
    【转】fastjson-1.2.47-RCE
    某安全设备未授权访问+任意文件下载0day
    关于伴侣
    【转】Why BIOS loads MBR into 0x7C00 in x86 ?
    【生活】北京旅游攻略
    利用Python读取图片exif敏感信息
    A MacFUSE-Based Process File System for Mac OS X
    linux-强制断开远程tcp连接
    Navicat use HTTP Tunnel
    python mac下使用多进程报错解决办法
  • 原文地址:https://www.cnblogs.com/jimchen1218/p/14251236.html
Copyright © 2011-2022 走看看