使用Pycharm远程连接docker,打造pytorch深度学习环境

本文使用docker避免了复杂的深度学习环境搭建过程,同时解决了新入手RTX3090显卡的吃灰问题

    • 第一步:服务器中安装docker, nvidia-docker, docker-compose
    • 第二步:拉镜像
    • 第三步:docker容器设置
    • 第四步:在专业版Pycharm中配置远程环境

写在前面
楼主的个人服务器使用ubuntu 16.04系统,NVIDIA驱动已安装455.23.04

第一步:服务器中安装docker, nvidia-docker, docker-compose

  1. 将docker.sh文件上传至服务器,并在对应目录下运行 bash docker.sh
    docker.sh脚本文件如下:
#!/bin/bash

function yellow_echo ()
{
        local what=$*
        echo -e "\e[1;33m-- Info: ${what} \e[0m"
}

function green_echo ()
{
        local what=$*
        echo -e "\e[1;32m-- Info: ${what} \e[0m"
}

function red_echo ()
{
        local what=$*
        echo -e "\e[1;31m-- Error: ${what} \e[0m"
}

#安装docker
yellow_echo "Start to install docker"
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | \
  sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] \
  http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

sudo apt-get -y update
sudo apt-get -y install docker-ce
if [ $? -ne 0 ]; then
    red_echo "Failed to install docker"
    exit -1
else
    green_echo "Install docker successfully"
fi

#安装nvidia-docker
yellow_echo "Start to install nvidia-docker"
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

sudo apt-get install -y nvidia-docker2
if [ $? -ne 0 ]; then
    red_echo "Failed to install nvidia-docker2"
    exit -1
else
    green_echo "Install nvidia-docker2 successfully"
fi
sudo pkill -SIGHUP dockerd
: '

#安装docker-compose
yellow_echo "Start to install docker-compose"
sudo apt-get -y install python-pip
sudo pip install docker-compose
if [ $? -ne 0 ]; then
    red_echo "Failed to install docker-compose"
    exit -1
else
    green_echo "Install docker-compose successfully"
fi

#向docker daemon添加registry config
yellow_echo "Start to modify docker daemon.json"
sudo sed -i "/\"runtimes\":/i\    \"insecure-registries\":[\"10.58.122.61:90\"],"  /etc/docker/daemon.json
if [ $? -ne 0 ]; then
    red_echo "Failed to modify docker daemon.json"
    exit -1
else
    green_echo "Modify docker daemon.json successfully"
fi

#docker命令免sudo,执行一下命令然后重新登录
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart
if [ $? -ne 0 ]; then
    red_echo "Failed to restart docker"
    exit -1
else
    green_echo "Restart docker successfully"
fi
'

  1. 安装完成后检查是否安装成功
    a) sudo docker run hello-world
    使用Pycharm远程连接docker,打造pytorch深度学习环境_第1张图片
    显示如上界面表示docker安装成功
    b) sudo docker run --rm --gpus all nvidia/cuda:11.1-based nvidia-smi
    使用Pycharm远程连接docker,打造pytorch深度学习环境_第2张图片
    显示如上界面表示nvidia-docker安装成功,楼主实验室服务器太抢手,狠心用奖学金买了一块3090,自己配了一台小服务器(吃土猛冲)!

第二步:拉镜像

为了快速拉镜像首先需要给docker换源

  1. sudo vim /etc/docker/daemon.json
    将其中的内容替换为:
{
"registry-mirrors": ["https://dftbcros.mirror.aliyuncs.com"]
}
  1. systemctl restart docker重启docker
  2. 进如下链接拉pytorch的最新镜像
    镜像地址
    使用Pycharm远程连接docker,打造pytorch深度学习环境_第3张图片
  3. docker pull nvcr.io/nvidia/pytorch:20.11-py3 镜像大小为13.2G,需要拉10分钟左右
  4. sudo docker images 查看已安装的镜像
    6.

第三步:docker容器设置

  1. sudo docker run -p 23:22 --name="torch-remote" -v ~/workspace/remote_work --restart=always -itd --shm-size 8g --gpu all nvcr.io/nvidia/pytorch:20.11=py3
    a) 此命令用于新建容器, -p后的23为新建docker的通信端口,22默认为服务器的端口,不可更改;
    b) 为了后续方便的使用这个容器,最好加上–restrat=always,避免ssh连接出问题;

  2. docker ps 查看正在运行的容器
    在这里插入图片描述

  3. sudo docker exec -it 56c6 bash
    此命令用于进入上面正在运行的容器内,56c6代表新建的容器ID,也可用torch-remote

  4. 容器内设置SSH(此时在容器内显示为root用户)
    a) apt update
    b) apt install -y openssh-server
    c) vim /etc/ssh/sshd_config
    进入sshd_config文件中,在最后一行添加 PermitRootLogin yes, 这个很重要,只有添加这句后pycharm才能通过SSH连接到docker;
    d) service ssh restart 重启SSH服务
    e) passwd 设置root密码,pycharm连接时需要,确认后务必记住
    f) exit 退出容器

  5. 测试docker的端口
    ssh root@56c6 22 如果前面的配置正常这里会显示

#0.0.0.0:23

第四步:在专业版Pycharm中配置远程环境

楼主这里使用pycharm2020.3专业版,用edu邮箱申请了一年免费使用

  1. 随便新建一个项目,然后Tools——Deployment——Configuration
    使用Pycharm远程连接docker,打造pytorch深度学习环境_第4张图片
    红线划的是初次配置时没有点亮的,写这篇博客的时候没有删之前的配好的,有点懒…
    使用Pycharm远程连接docker,打造pytorch深度学习环境_第5张图片
    点左上角的+,选择SFTP,服务名可以根据自己的喜好设置一个,再点SSH configuration后面的…
    使用Pycharm远程连接docker,打造pytorch深度学习环境_第6张图片
    使用Pycharm远程连接docker,打造pytorch深度学习环境_第7张图片
    使用Pycharm远程连接docker,打造pytorch深度学习环境_第8张图片
    Host: 设置为服务器的ip(使用ifconfig查询);port:必须对应到新建容器时设置的docker端口,这里使用23; user name: 设置为root; password 为4 e)中设置的root密码;

使用Pycharm远程连接docker,打造pytorch深度学习环境_第9张图片
设置完后,点击Test Connection,如果设置成功则显示如上图,如果失败请检查docker的端口设置是否正确!!!

特别注意 :如果Docker容器重启,此时连接会暂时失效,需要进入对应的容器中重启SSH服务!!!

service ssh restart

接下来,File——Settings 设置项目的远程python解释器
使用Pycharm远程连接docker,打造pytorch深度学习环境_第10张图片
使用Pycharm远程连接docker,打造pytorch深度学习环境_第11张图片
选中需要远程连接使用的项目,点python interpreter后的设置图形,选择Add,接着选择SSH interpreter,再选择Existing server configuration, 在其中选择刚刚测试成功的连接。点击NEXT
使用Pycharm远程连接docker,打造pytorch深度学习环境_第12张图片
使用Pycharm远程连接docker,打造pytorch深度学习环境_第13张图片
上图中的1处必须正确选择docker中对应的python解释器的路径,楼主第一次设置失败问题就出在这里,如果不清楚路径,建议重新进入容器,使用命令which python 查具体的路径。
在这里插入图片描述
2处为在本地上传代码到服务器的路径,可以根据自己使用习惯设置。

最后,选择一个简单的cuda测试代码,Tools——Deployment——Upload to…上传本地代码到服务器中,如果配置成功的话,就会显示楼主给出的这个界面,接着就可以愉快的开启本地-远程调试模式喽!
测试代码链接

使用Pycharm远程连接docker,打造pytorch深度学习环境_第14张图片

你可能感兴趣的:(深度学习,docker,linux,ubuntu,pycharm,深度学习)