搭建Windows+Ubuntu18.04双系统的pytorch+docker+gpu训练环境

  • linux系统只能读取4个分区,所以开始把所以的分区都安装在机械硬盘上失败勒

搭建目标

  • windows7+Ubuntu18.04LTS双系统
  • Ubuntu下安装docker,在docker上运行支持GPU的nvidia-docker
  • 在docker下运行python3.6容器,容器内安装pytorch环境,使用pytorch调用GPU进行训练
  • 能将容器打包,方便之后在其他环境下运行

一、安装Ubuntu18.04系统

制作安装系统的U盘
  • 下载Rufus,根据网络教程制作安装U盘
压缩磁盘,给linux系统分区
  • 在windows下压缩硬盘,SSD盘压缩10G,机械硬盘压缩70G,并且都是绿色(在linux是可用状态),如果是黑色,需要使用傲梅分区助手
重启计算机安装Ubuntu
  • 插上U盘重启计算机,按F12从U盘启动,不要从EFI启动
  • 根据提示进行安装,安装类型不要选择"安装Ubuntu,与windows7系统共存",选择最后一个“其他选项”
  • 分区时在C盘分两个区:1-主分区,400MB,起始,Ext4日志文件系统,挂载/boot;2-逻辑分区,剩余10G,起始,交换分区,无挂载点;
  • 机械硬盘分两个分区:1-逻辑分区,15G,起始,Ext4日志文件系统,挂载/;2-逻辑分区,剩余55G,起始,Ext4日志文件系统,挂载/home;
  • 头几次安装全部放机械硬盘,出现问题,grub异常,无法正常启动,修复麻烦,就放了两个分区到SSD,会影响SSD运行速度,不管了;
用EasyBCD创建启动系统
  • 重启计算机,创建新的启动项
    以上完成双系统

二、安装docker和nvidia-docker

安装docker
  • 配置docker源
# 更新源
$ sudo apt update

# 启用HTTPS
$ sudo apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

# 添加GPG key
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 添加稳定版的源
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

安装时遇到报错:gpg: 找不到有效的 OpenPGP数据。解决办法

  • 安装Docker CE
# 更新源
$ sudo apt update

# 安装Docker CE
$ sudo apt install -y docker-ce
  • 配置nvidia-docker源
# 添加源
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# 安装并重启docker
$ sudo apt update && sudo apt install -y nvidia-container-toolkit
$ sudo systemctl restart docker
  • 验证nvidia-smi
# 在官方CUDA镜像上测试 nvidia-smi
$ sudo docker run --gpus all nvidia/cuda:9.0-base nvidia-smi

不能运行并展示GPU信息,需要安装NVIDIA驱动

安装NVIDIA驱动

  • 有三种安装方法,推荐傻瓜式安装方法:使用Ubuntu软件仓库中的稳定版本安装,参考https://zhuanlan.zhihu.com/p/59618999
    • 1.1查看显卡硬件型号:ubuntu-drivers devices

    • 1.2 安装:sudo ubuntu-drivers autoinstall;也可以安装指定版本,我安装440。sudo apt install nvidia-droiver-440

    • 1.3 安装时会很慢,要换源,参考https://blog.csdn.net/qq_33836092/article/details/105214331

    • 1.4 重启设备sudo reboot

    • 1.5 测试是否安装成功:nvidia-smi,如果打印如下信息就OK啦在这里插入图片描述

    • 再跑一下docker验证一下docker+nvidia docker+cuda镜像,如果也能打印gpu信息,则成功

      $ sudo docker run --gpus all nvidia/cuda:9.0-base nvidia-smi
      

三、运行docker,安装pytorch环境

  • docker search pytorch可以查看可用的官方镜像,但是不方便看;在官方网站搜索更好

    启动脚本

    sudo docker run -itd -p 10022:25 -p 9090:9090 -v /home/yudh/pytorch:/root --gpus all nvidia/cuda:10.1-base /bin/bash
    

    运行脚本

    docker exec -it 容器名 /bin/bash
    

    安装ssh服务:apt-get update | apt-get install openssh-server
    创建root用户密码:passwd
    修改配置文件/etc/ssh/sshd_config,将“#Port 22”改为“Port 25”;将“#PermitRootLogin without-password”改为"PermitRootLogin yes";然后使用命令/etc/initd.d/ssh restart重启sshd服务;最后在其他端使用root用户ssh登录

  • 安装pip3

    apt-get install python3-pip
    
  • 安装pytorch1.7GPU版本
    https://pytorch.org/get-started/locally/
    分别选择Stable(1.7.1)、linux、pip、python、10.1得到安装脚本:pip --default-timeout=1000 install --index-url https://mirrors.aliyun.com/pypi/simple torch==1.7.1+cu101 torchvision==0.8.2+cu101 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html

  • 验证pytorch是否能使用GPU

    >>> import torch
    >>> torch.cuda.is_available
    <function is_available at 0x7fb961190ea0>
    

    表示可以正常使用

  • 安装torch依赖
    安装前先换pip镜像源地址
    Linux下,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)
    内容如下:

    [global]
    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
    [install]
    trusted-host=mirrors.aliyun.com
    

    安装依赖

    pip install -r requirements.txt
    

启动保存镜像

sudo docker run -itd -p 10022:25 -p 9090:9090 -v /home/yudh/pytorch:/root --gpus all nvidia/cuda:10.1-base /bin/bash
docker exec -it 容器名 /bin/bash
/etc/initd.d/ssh restart
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值