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

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


写在前面
楼主的个人服务器使用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
    在这里插入图片描述
    显示如上界面表示docker安装成功
    b) sudo docker run --rm --gpus all nvidia/cuda:11.1-based nvidia-smi
    在这里插入图片描述
    显示如上界面表示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的最新镜像
    镜像地址
    在这里插入图片描述
  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
    在这里插入图片描述
    红线划的是初次配置时没有点亮的,写这篇博客的时候没有删之前的配好的,有点懒…
    在这里插入图片描述
    点左上角的+,选择SFTP,服务名可以根据自己的喜好设置一个,再点SSH configuration后面的…
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    Host: 设置为服务器的ip(使用ifconfig查询);port:必须对应到新建容器时设置的docker端口,这里使用23; user name: 设置为root; password 为4 e)中设置的root密码;

在这里插入图片描述
设置完后,点击Test Connection,如果设置成功则显示如上图,如果失败请检查docker的端口设置是否正确!!!

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

service ssh restart

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

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

在这里插入图片描述

要在PyCharm中配置深度学习环境需要以下步骤: 1. 安装Docker:首先需要安装DockerDocker是一个容器化平台,可以用来管理和运行各种应用。可以在Docker官方网站上下载并安装适用于您操作系统的版本。 2. 下载Docker镜像:接下来,需要下载一个包含深度学习环境Docker镜像。可以在Docker Hub上找到多个深度学习环境的镜像,如TensorFlow、PyTorch等。可以根据自己的需求选择适当的镜像,然后使用命令行或Docker客户端下载该镜像。 3. 创建Docker容器:下载完成后,需要使用Docker镜像创建一个Docker容器。可以通过运行以下命令创建一个新的容器: ``` docker run -it --name=my_container -v /path/to/host/folder:/path/to/container/folder -p 8888:8888 image_name ``` 这个命令会创建一个名为my_container的容器,并将主机的一个文件夹挂载到容器内部的一个文件夹中,以便在容器中访问主机上的文件。同时,将容器内的端口8888映射到主机的端口8888上。 4. 在PyCharm中配置Docker:打开PyCharm,转到"File" -> "Settings" -> "Project: your_project" -> "Project Interpreter"。点击右上角的齿轮图标,在弹出的对话框中选择"Add" -> "Docker"。然后选择你之前创建的Docker容器。 5. 配置Python解释器:回到"Project Interpreter"页面,点击右下角的加号按钮,在弹出的对话框中选择"System Interpreter" -> "Docker"。然后从下拉菜单中选择你之前创建的Docker容器。 6. 安装Python包:现在你可以在PyCharm项目中使用深度学习库了。使用PyCharm的包管理器来安装所需的Python包,如tensorflow、pytorch等。只需在"Project Interpreter"页面中点击加号按钮,然后搜索并选择需要的包即可。 通过以上步骤,你就成功地在PyCharm中配置了深度学习环境。现在你可以在PyCharm中编写、调试和运行深度学习代码了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值