资讯详情

资讯详情

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 发行版所需的功能超时可能会自动中断可以梯子上github直接下载msi安装包https://github.com/microsoft/WSL/releases # 按提示重启计算机 wsl --set-default-version 2 # 使新安装的linux系统默认使用wsl2引擎 wsl --list --online # 查看可用的linux发行版列表 wsl --install -d Ubuntu-20.04 --location D:\wsl # Ubuntu-20.04为上一个指令运行后返回的可用发行版之一按需安装可用location参数设置安装位置不开梯子能缓慢下载完 # 完成安装后将自动进入ubuntu系统按提示设置用户名和密码 # 其它常用指令 wsl -l -v # 列出已安装的 Linux 发行版并检查每个发行版的 WSL 版本后续再准备使用该ubuntu系统时可以使用MobaXterm软件免费版即可满足需求可以自动识别已建立的wsl系统并进入命令行界面在ubuntu中安装docker1、ubuntu软件源配置详见教程从教程文件中按需配置软件源生成源代码备份原源文件新建新源文件sudo mv /etc/apt/sources.list /etc/apt/backup_sources.list sudo nano /etc/apt/sources.list # 粘贴上一步生成的全部源代码并保存文件 # 在nano界面下保存文件可以先按两下esc再按x然后按提示回车确认 # 在MobaXterm的命令行交互界面可以使用鼠标中键粘贴文本刷新源sudo apt-get update2、docker配置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 dockerdocker换源详见教程sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.jsonEOF { 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拉取深度学习镜像建立容器可用镜像之一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虚拟磁盘空间压缩运行一段时间后虚拟环境会占用大量空间可以参考教程进行空间释放3、Conda配置conda的安装可参考教程主要操作如下下载适用于ubuntu的conda安装包后缀一般为Linux-x86_64.sh清华镜像使用bash指令执行下载的安装包按提示逐步安装condabash /home/WangXiaoFeng/doctor_thesis/Anaconda3-2021.11-Linux-x86_64.sh安装后有可能仍无法直接运行conda指令但已装入conda程序可以配置别名便捷运行alias conda/root/miniconda3/bin/conda右侧是conda指令的位置注意安装时选择的路径或运行指令find / -name conda搜索conda位置后续可通过编辑bashrc文件配置alias启动终端后自动运行相应指令简化操作echo alias conda/root/miniconda3/bin/conda ~/.bashrc运行指令即可创建虚拟环境conda create -n pytorch python3.8 conda 是指调用 conda 包create 是创建的意思-n是指后面的名字是环境的名字 pytorch是环境的名字可以更改成自己喜欢的python3.8 是指创建的环境所用的python是3.8 版本 激活环境conda activate pytorch激活环境后使用pip或conda进行包管理即可使相应环境具备相应库支持其它常用指令# 查看环境 conda info --envs # 删除环境 conda env remove -n pytorch # 克隆环境 conda create -n NewEnvName --clone OldEnvNameconda源修改更换国内源提高下载新包速度i. 打开用户家目录cdii. 修改配置文件运行指令开始编辑配置文件vi .condarc添加源网址使用清华镜像源的方法iii. 运行conda clean -i保证使用新的索引iv. 运行conda info确认是否生效pip源修改更换国内源提高下载新包速度升级 pip 到最新的版本 (10.0.0)python -m pip install --upgrade pip修改pip源pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple4、pycharm解释器配置pycharm是一个较为常用的pythonIDE在使用时需要指定python解释器在本地pycharm窗口中配置解释器File→Settings→Project*→Python Interpreter→齿轮图标左键单击→Add增加新解释器SSH Interpreter设置IP地址→登录。刚配置的docker环境位于wsl虚拟机内部其地址Host可以在wsl虚拟机中运行以下指令获取hostname -I返回的第一个IP即为目标IP端口号port则为docker容器启动时指定的映射到22端口上的端口本教程中为8022Username为容器内创建的用户名可以是root下一步会要求输入密码密码就是第2.3节配置的passwd。选择解释器路径和项目文件夹同步路径linux容器中预期的python解释器位置可以运行指令which python3找到或全盘搜索可用的python3位置find / -name python3文件夹同步路径建议设置成建立docker容器时配置的路径映射减少文件同步所消耗的时间和空间资源在项目中选择该解释器便可以在虚拟机中运行代码。使用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
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →