Windows深度学习环境搭建-wsl+docker

引言

  • 网上公开的深度学习环境一般都是基于linux操作系统,但个人电脑常用的系统是windows,解决方案之一是使用新版windows下的wsl软件建立ubuntu虚拟机。
  • Docker是一种较为方便的虚拟环境管理器,网上也有大量公开的image可以用于特定环境测试,深度学习领域的determined框架基于docker环境展开测试,因此为了开发方便,在linux虚拟机下安装docker。
  • Anaconda是一个常用的python环境管理器,能便捷地管理python包,但在深度学习开发时,常用的pytorch、tensorflow等框架常需配合cuda使用,仅管理python包无法完全适配,docker是一个较好的解决方案,但建立docker环境需要同时生成操作系统文件,空间占用较大,可以配合使用二者进行更高效的深度学习开发。
  • 本文将建立一套下图所示的深度学习开发环境:
    在这里插入图片描述

wsl建立ubuntu虚拟机

(需要科学上网,详细教程可参考微软官方文档)

wsl --install     # 启用运行 WSL 并安装 Linux 的 Ubuntu 发行版所需的功能
# 按提示重启计算机

wsl --set-default-version 2   # 使新安装的linux系统默认使用wsl2引擎
wsl --list --online     # 查看可用的linux发行版列表
wsl --install -d Ubuntu-20.04    # Ubuntu-20.04为上一个指令运行后返回的可用发行版之一,按需安装
# 完成安装后将自动进入ubuntu系统,按提示设置用户名和密码

# 其它常用指令:
wsl -l -v   # 列出已安装的 Linux 发行版,并检查每个发行版的 WSL 版本

后续再准备使用该ubuntu系统时,可以使用MobaXterm软件,免费版即可满足需求,可以自动识别已建立的wsl系统并进入命令行界面
在这里插入图片描述

在ubuntu中安装docker

1、ubuntu软件源配置

详见教程

  1. 从教程文件中按需配置软件源,生成源代码
    在这里插入图片描述
  2. 备份原源文件,新建新源文件
sudo mv /etc/apt/sources.list /etc/apt/backup_sources.list 
sudo nano /etc/apt/sources.list   
# 粘贴上一步生成的全部源代码,并保存文件
# 在nano界面下保存文件可以先按两下esc,再按x,然后按提示回车确认
# 在MobaXterm的命令行交互界面可以使用鼠标中键粘贴文本
  1. 刷新源sudo apt-get update

2、docker配置

  1. docker安装
sudo apt install docker.io  # 安装docker

# 在docker容器中再安装docker容易出问题,操作前参考下述说明明确需求再实施(一般只需让容器能运行docker指令,此时只需要执行说明中的最后一节方案)
# https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/

# 安装显卡驱动工具,详细教程可参考:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
# 可能需要科学上网
# Configure the production repository:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update   
sudo apt-get install -y nvidia-container-toolkit

# 重启docker服务
sudo systemctl restart docker
  1. docker换源,详见教程
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json<<EOF
{
    "registry-mirrors": [
        "https://registry.hub.docker.com",
        "http://hub-mirror.c.163.com",
        "https://mirror.baidubce.com",
        "https://docker.mirrors.sjtug.sjtu.edu.cn",
        "https://docker.nju.edu.cn"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

# 确认源已改入配置文件:
docker info | grep Mirrors -A 1
  1. 拉取深度学习镜像,建立容器,可用镜像之一:Determined官方的默认GPU镜像
# 拉取镜像
docker pull determinedai/pytorch-ngc:0.36.0

# 建立容器,注意指定共享内存空间,默认64M不满足大部分深度学习需求
docker run -it \
	--gpus all \
	--shm-size 20g\
	-p 8022:22 \
	--name test \
	-v /mnt/d/learn/doctor_thesis/:/home/WangXiaoFeng/doctor_thesis/ \
	determinedai/pytorch-ngc:0.36.0 \
	/bin/bash

# 意外退出容器时,可运行以下指令重新进入容器内交互,test为容器名
docker exec -it test /bin/bash

# 在容器内部进行远程登录配置
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config	
ssh-keygen -A
# 设置root密码
passwd
# 重启ssh服务
service ssh restart
# 此时就可以通过“宿主机ip地址:8022”以root身份访问该容器,
# 但容器重启后无法直接ssh登录,需要再运行一次service ssh restart
# 修改家目录下的.bashrc文件可以实现容器启动后自动重启ssh服务
echo "service ssh restart" >> .bashrc
  1. 虚拟磁盘空间压缩,运行一段时间后,虚拟环境会占用大量空间,可以参考教程进行空间释放

3、Conda配置

conda的安装可参考教程,主要操作如下:

  1. 下载适用于ubuntu的conda安装包(后缀一般为Linux-x86_64.sh):清华镜像
  2. 使用bash指令执行下载的安装包,按提示逐步安装conda:bash /home/WangXiaoFeng/doctor_thesis/Anaconda3-2021.11-Linux-x86_64.sh
  3. 安装后有可能仍无法直接运行conda指令,但已装入conda程序,可以配置别名便捷运行alias conda="/root/miniconda3/bin/conda"=右侧是conda指令的位置,注意安装时选择的路径,或运行指令find / -name conda搜索conda位置),后续可通过编辑bashrc文件配置alias,启动终端后自动运行相应指令,简化操作:echo "alias conda='/root/miniconda3/bin/conda'" >> ~/.bashrc
  4. 运行指令即可创建虚拟环境:conda create -n pytorch python=3.8
    ( conda 是指调用 conda 包,create 是创建的意思,-n是指后面的名字是环境的名字, pytorch是环境的名字(可以更改成自己喜欢的),python=3.8 是指创建的环境所用的python是3.8 版本 )
  5. 激活环境:conda activate pytorch
  6. 激活环境后使用pip或conda进行包管理,即可使相应环境具备相应库支持
  7. 其它常用指令:
# 查看环境:
conda info --envs
# 删除环境:
conda env remove -n pytorch
# 克隆环境:
conda create -n NewEnvName --clone OldEnvName
  1. conda源修改,更换国内源提高下载新包速度
    i. 打开用户家目录:cd
    ii. 修改配置文件,运行指令开始编辑配置文件:vi .condarc,添加源网址:使用清华镜像源的方法
    iii. 运行:conda clean -i,保证使用新的索引
    iv. 运行:conda info,确认是否生效
  2. pip源修改,更换国内源提高下载新包速度
    升级 pip 到最新的版本 (>=10.0.0): python -m pip install --upgrade pip
    修改pip源:pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

4、pycharm解释器配置

pycharm是一个较为常用的pythonIDE,在使用时需要指定python解释器

  1. 在本地pycharm窗口中配置解释器:File→Settings→Project:*→Python Interpreter→齿轮图标左键单击→Add
    在这里插入图片描述

  2. 增加新解释器:SSH Interpreter,设置IP地址→登录。
    刚配置的docker环境位于wsl虚拟机内部,其地址(Host)可以在wsl虚拟机中运行以下指令获取:hostname -I,返回的第一个IP即为目标IP;
    端口号(port)则为docker容器启动时指定的映射到22端口上的端口(本教程中为8022),Username为容器内创建的用户名,可以是root,下一步会要求输入密码,密码就是第2.3节配置的passwd
    在这里插入图片描述

  3. 选择解释器路径和项目文件夹同步路径:linux容器中预期的python解释器位置可以运行指令which python3找到,或全盘搜索可用的python3位置find / -name python3;文件夹同步路径建议设置成建立docker容器时配置的路径映射,减少文件同步所消耗的时间和空间资源

  4. 在项目中选择该解释器便可以在虚拟机中运行代码。

  5. 使用pycharm配置ssh解释器时可能会出现iIndex 11 out of bounds for length 11问题,运行以下指令可以解决:
    sed -i 's/# StrictHostKeyChecking ask/StrictHostKeyChecking ask/' /etc/ssh/sshd_config

# 运行determined实验时默认的python路径是/usr/bin/python3,如果需要使用其它环境,可以建立软链接更改默认路径的实际指向,具体操作如下:
# python3默认路径修正:
# 1. 删除掉默认的python文件
rm /usr/bin/python3
# 2. 建立软链接到预期的python文件
ln -s /opt/conda/bin/python3 /usr/bin/python3
# pip指令也会丢失,运行以下指令将pip的路径指明,后续再启动容器后就可以直接运行pip
echo "alias pip=/opt/conda/bin/pip" >> .bashrc
Docker Desktop是一个用于在Windows和Mac上运行Docker的应用程序。它提供了一个用户友好的界面,可以轻松地管理和运行Docker容器。WSLWindows Subsystem for Linux)是Windows 10中的一个功能,它允许用户在Windows上运行Linux发行版。 如果在安装Docker Desktop时遇到了"docker+desktop-unexpected+wsl"错误,可能是由于WSL未正确配置或启用所致。以下是解决此问题的步骤: 1. 确保已安装WSL:在Windows 10上,打开PowerShell或命令提示符,并运行以下命令来检查WSL是否已安装: ```shell wsl --list --verbose ``` 如果没有任何输出或显示"WSL 2 is not installed",则需要安装WSL。可以按照Microsoft的官方文档进行安装:https://docs.microsoft.com/en-us/windows/wsl/install-win10 2. 启用WSL 2:在安装WSL后,需要将WSL 2设置为默认版本。打开PowerShell或命令提示符,并运行以下命令: ```shell wsl --set-default-version 2 ``` 3. 安装Linux发行版:在WSL 2中运行Docker需要安装一个Linux发行版。可以从Microsoft Store中选择一个喜欢的发行版,例如Ubuntu、Debian等。打开Microsoft Store,搜索并安装所选的发行版。 4. 配置Docker Desktop:打开Docker Desktop应用程序,转到设置(Settings)-> WSL Integration。确保已启用所需的Linux发行版,并将其与Docker Desktop关联起来。 完成上述步骤后,应该能够成功安装和运行Docker Desktop,并在WSL 2中使用Docker
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值