从头配置深度学习环境:docker拉取镜像、创建容器、安装python3.6、离线安装指定版本pytorch、通过pycharm使用docker等

文章详细记录了在服务器上使用Docker构建一个支持GPU的深度学习环境,包括选择合适的Docker镜像、安装Python3.6、PyTorch1.3.0及其依赖,以及设置SSH以供PyCharm远程连接的过程。过程中遇到了版本匹配、离线安装和环境配置等问题,通过使用conda虚拟环境和清华源解决了问题。
摘要由CSDN通过智能技术生成

        手头有个项目,需要一个很麻烦的环境,要用服务器的gpu跑深度学习,同时要求python版本为3.6,pytorch版本为1.3.0,这两个版本刚好都被官方途径删除了,只能通过各种奇怪的方式进行安装,踩了不少坑,所以记录一下。希望以后能碰到一些阳间项目,官方安装就可以顺利装完那种。

话不多说,直接开始:

一、选取合适的docker镜像,需要将显卡驱动、cuda版本、pytorchcuda版本等互相对应。

        docker的安装这里就略过了。

        首先确定自己的显卡能支持的cuda版本,参考链接:Docker配置深度学习pytorch gpu环境_docker pytorch_恬梦的博客-CSDN博客

1.查看显卡驱动版本

 nvidia-smi

        

         选择的cuda版本低于上图中的cuda版本就行了。

        手动安装torch应该是总共需要安装torch、torchvision、torchaudio三个。但是我装的1.3版本没有torchaudio,所以只装另外两个,这三者的版本对应关系参考:PyTorch中torch、torchvision、torchaudio版本对应关系_Liekkas Kono的博客-CSDN博客

Torchvision与Pytorch匹配的版本安装方法 - 知乎

        离线pytorch的下载地址是:https://download.pytorch.org/whl/torch_stable.html

        综合我的需求,我最终选择了cu100/torch-1.3.0%2Bcu100-cp36-cp36m-linux_x86_64.whl

        cu100表示是使用gpu,且cuda版本为10.0,cp36表示使用python3.6,最后是linux64位操作系统。

        另一个选的是cu100/torchvision-0.4.1%2Bcu100-cp36-cp36m-linux_x86_64.whl

        所以我要拉的镜像应该加载了cuda的10.0版本。这么选是因为我觉得python3.6应该比cuda和cudn这些东西好装。

        从dockerhub上找得到对应的命令。

2.拉取镜像

sudo docker pull nvidia/cuda:10.0-cudnn7-devel-ubuntu14.04

为了加快速度建议换一下docker的源:docker更换镜像源_docker修改镜像源_东方隐侠千里的博客-CSDN博客

二、创建容器

1.查看镜像:

sudo docker images

REPOSITORY                                           TAG                             IMAGE ID       CREATED         SIZE
nvidia/cuda                                          10.0-cudnn7-devel-ubuntu14.04   4a2994f8b795   3 years ago     3.12GB

2.创建容器:

sudo docker run -itd --gpus all -p 16535:22 --name [name] -v [/home/workplace]:[/workspace] nvidia/cuda:10.0-cudnn7-devel-ubuntu14.04

        --gpus all 是使用所有的gpu。命令中的[]是实际不需要的,是我特意框出来方便观看的。

        其余的参数的含义参考:【Docker系列】从头学起 Docker——docker run 命令详解_搞什么滚去学习的博客-CSDN博客

3.查看容器:

sudo docker ps -a

        -a参数表示会连没有在运行的容器一起显示。

4.进入容器:

sudo docker exec -it [id] /bin/bash

        [id]替换为在查看容器时查询到的容器id。

5.退出容器:

#-----直接退出  未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭  
exit
# 优雅退出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭
Ctrl + p + q

 

三、安装pyhon3.6

        进行了一些网上的安装尝试,但是网上的很多源要么没有维护了,要么装下来没有pip,所以改用miniconda进行安装。

        参考链接:手把手教你如何在Ubuntu下安装Miniconda - 知乎

        ubuntu安装Miniconda_Baby_of_breath的博客-CSDN博客

1.安装miniconda

        先在官网下载miniconda安装包

        Miniconda — conda documentation

        然后上传到服务器,我是使用的finalshell:SSH工具 SSH客户端

        输入命令:

bash Miniconda3-py310_23.1.0-1-Linux-x86_64.sh


        出现Welcome to Minxxxxx代表没问题,然后一直回车,可能会遇到More,依然一直回车,不用担心错过什么。
        直到遇到 Do you accept the license terms?[yes|no]选择yes。
        接着一直回车,到询问是否初始化,并且会添加环境变量,选择yes。

        执行命令刷新环境变量:

source ~/.bashrc

        我这里按照教程是失败的,但是我在重启shell之后命令行前面出现了(base)表明成功了。

2.退出base环境:

conda deactivate

3.关闭自动进入base环境:

conda config --set auto_activate_base false

4.新建3.6环境:

conda create --name [py36] python=3.6

        [py36]是我设定的conda虚拟环境的名字,实际使用命令不需要[]。

        进入新建的环境,名字是py36:

conda activate py36

        这个命令以后会经常用,因为我找不到自动进入自定义虚拟环境的方法【【【【

 5.离线安装torch

        因为正常安装是装不上去的,会提示找不到torch1.3这个版本。参考链接:离线安装torch和torchvision_torch离线安装_溜溜真6的博客-CSDN博客

        在安装的时候使用清华源,因为虽然是离线安装,但还是会安装需要的包。

pip install torch-1.3.0+cu100-cp36-cp36m-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install torchvision-0.4.1+cu100-cp36-cp36m-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

 6.安装项目需要的其他包:

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

        我的这个项目的依赖如下所示:

torch==1.3.0
allennlp==0.8.4
python-Levenshtein==0.12.0
transformers==2.2.2
scikit-learn==0.20.0
sentencepiece==0.1.91
overrides==4.1.2

        在安装的时候会报错,因为PyTorch 要求 gcc >= 4.9,是环境里的gcc版本不对。

        尝试升级conda的gcc,升级之后没有反应,弄了半天没有解决,所以换了另一种办法:

        Error日志 ERROR: Failed building wheel for jsonnet_hithithithithit的博客-CSDN博客

        输入命令:

conda install -c conda-forge jsonnet

        好像可以继续了,然后接着报错:

ERROR: Cannot uninstall 'certifi'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

        参考这个博客解决了:解决安装gerapy的时候报错:ERROR: Cannot uninstall ‘certifi‘. It is a distutils installed project..._无法删除certifi_Lvcx的博客-CSDN博客

pip install certifi --ignore-installed -i https://pypi.tuna.tsinghua.edu.cn/simple

        最后再运行一下命令确认是不是都装完了

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

        检查环境里面是不是能使用gpu,先进入虚拟环境py36,然后输入python开始尝试。参考链接:torch使用gpu的环境配置_torch gpu_维度攻城狮的博客-CSDN博客

import torch
torch.cuda.is_available() 

        环境配置就搞定。本来还想再写一篇的,但是看别人有完整的,决定直接引用了。

四、为docker设置ssh以便pycharm使用。

        首先需要给容器的root设置密码,进入容器之后输入命令更改密码:

passwd

        安装ssh,参考链接:https://www.cnblogs.com/zaochajun/p/12029494.html

sudo apt-get update
sudo apt-get install -y openssh-server

        安装vim,参考链接:vim的安装与配置_安装vim_df12345688的博客-CSDN博客

sudo apt-get install vim 

        通过vim更改ssh的设置,参考链接:Ubuntu 系统如何使用 root 用户登录实例-CSDN博客

vim /etc/ssh/sshd_config

        我这里PermitRootLogin 和 PasswordAuthentication都改了,不然连不上。

        启动容器中的ssh服务:

service ssh restart

        测试一下,退出容器,连接一下试试,127.0.0.1是服务器本机ip,端口是创建容器时输入的:

ssh root@127.0.0.1 -p 16535

五、保存容器为镜像与在pycharm中使用docker。

        至此全部配置完了,将容器保存为新的镜像:

sudo docker commit [容器id] [新镜像name]:[新镜像tag]

        最后说一次,命令中没有括号[],这是为了方便观看。

        专业版的pycharm才可以远程链接,在校生可以免费申请。剩下的设置我就懒得写了,这篇链接写得很清楚:

pycharm专业版连接远程docker容器_pycharm远程连接docker_今晚月亮有点圆的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值