WIN11+WSL2+Docker 深度学习环境部署

这篇具有很好参考价值的文章主要介绍了WIN11+WSL2+Docker 深度学习环境部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2024 WIN11+WSL2 深度学习开发环境

Windows系统开发偶尔会出现一些系统底层的bug导致程序无法运行,开发很难受。

Linux系统开发,娱乐软件少,不尽兴。

双系统切换太麻烦,不能同时使用,难受!

如何结合Windows和Linux,既能畅爽娱乐,又不会被底层BUG影响开发,来试试Windows的子系统WSL2吧!!

本次思路为:在WIN11系统安装WSL2子系统,在WSL2子系统中安装docker engine,通过docker隔离不同的开发环境。

docker容器中无需再通过conda进行环境隔离,虽然可以但没必要,PyPI是Python的包管理工具,conda是多种语言的包管理工具,conda的包没有pypi全面,所以推荐使用pypi包管理工具。pypi的环境隔离确实一般,所以使用docker容器进行隔离。如果容器内部以及安装了conda,可以使用conda新建虚拟环境,再虚拟环境中的包使用pypi进行安装。pypi和conda的区别。

前置任务

默认读者已经安装WIN11,因为NVIDIA GPU加速需要WIN11和WSL2。

默认读者的电脑硬件有英伟达的显卡,且已经安装了英伟达的显卡驱动。

可以用过右键Win11徽标,选择“终端管理员”,启动powershell,输入nvidia-smi,如果输出如下,那么英伟达显卡驱动安装无误。
win11 wsl2 docker,docker,深度学习,容器

关于WSL2使用NVIDIA进行并行计算的介绍 https://docs.nvidia.cn/cuda/wsl-user-guide/index.html

安装软件

WIN11安装WSL2

关于WSL的介绍 https://learn.microsoft.com/en-us/windows/wsl/

Windows Subsystem for Linux (WSL) 是 Windows 的一项功能, 使用户能够在win11和linux两种环境之间无缝过渡,而无需资源密集型的传统虚拟机,并提高生产力、使用工具进行开发并集成其工作流程。 更重要的是,WSL 2 使迄今为止只能在 Linux 上使用的应用程序可以在 Windows 上使用。 WSL 2 对 GPU 的支持使这些应用程序能够从 GPU 加速计算中受益,并扩展了可在 WSL 2 上开发的应用程序领域。

借助 NVIDIA CUDA 对 WSL 2 的支持,开发人员可以通过 WSL 在 Windows 上利用 NVIDIA GPU 加速计算技术进行数据科学、机器学习和推理。 GPU 加速还可以通过在 GPU 上以更少的 CPU 干预来处理更多并行工作,从而降低在接近本机的类似 WSL 的环境中运行应用程序的性能开销。

# 可以使用 wsl --help 查看wsl的使用方法,以下为wsl常用命令

# --status 显示WSL状态
# --update 更新WSL
# --version, -v 显示WSL版本
# --set-default-version 2 设置默认WSL版本为WSL2

# --list, -l [选项] 列出linux分发版
# 选项: 
#	--all 列出所有分发版,包括分发版当前正在安装或卸载
# 	--running 仅列出当前正在运行的分发版
# 	--quiet,-q 仅显示分发版名称
# 	--verbose, -v 显示有关所版的详细信息
# 	--online,-o 显示适合通过“wsl --install”安装的可用分发版列表

# --install 安装linux分发版
# --set-default,-s <Distro> 将分布版设置为默认值
# --shutdown 立即终止正在运行的linux分发版
# --distribution, -d 运行指定的linux分发版
# --unregister 删除某个linux分发版
# 更新wsl版本
wsl --update

win11 wsl2 docker,docker,深度学习,容器

配置WSL2代理

此步骤非必须!!!后续NVIDIA的APT下载会比较缓慢,可以选择设置WSL2代理。

如果更改,记得在ssh连接容器前把代理改回networkingMode=NAT!!!

# 按照官方说明进行设置
# https://learn.microsoft.com/zh-cn/windows/wsl/wsl-config#wslconfig
# 创建C:\Users\<UserName>\.wslconfig文件
# 将以下内容写入文件

# Settings apply across all Linux distros running on WSL 2
[wsl2]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

# Enable experimental features
[experimental]
autoMemoryReclaim=gradual

WSL2安装linux

# 查看可安装的linux分发版本
wsl --list --online

win11 wsl2 docker,docker,深度学习,容器

# 安装Ubuntu-22.04
wsl --install Ubuntu-22.04
# 然后在username输入用户名,在password输入用户密码

# 查看是否安装完成(如果已经在子系统中,红框的提示符不同,输入exit可以退出)
# 我安装的是Ubuntu-20.04,所以这里显示不是Ubuntu-22.04
wsl --list -v

win11 wsl2 docker,docker,深度学习,容器

# 运行Ubuntu-22.04
wsl --distribution Ubuntu-22.04

win11 wsl2 docker,docker,深度学习,容器

提示符为PS(PowerShell)则在win11环境中,提示符为UserName@MachineName则在WSL2的Ubuntu22.04中。

安装网速慢怎么办

我们常用的有apt软件源、pypi软件源、conda软件源,软件源可以理解为下载安装包的网址,后续的安装中,可能会有小伙伴们觉得下载速度慢的问题,这里统一做一下网速慢的解决方案,这个方案是通用的。

软件源国内有很多,比如华为、阿里、清华、中科大等等,大家自行选择,这里以清华镜像源为例。

# apt配置文件位置/etc/apt/sources.list
# 更换apt源
# 对配置文件进行备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 修改配置文件
sudo vim /etc/apt/sources.list
# 删除配置文件原有内容,将以下连接内容拷贝至配置文件中,注意Ubuntu版本要正确
# https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

win11 wsl2 docker,docker,深度学习,容器

更换pypi软件源

# pypi配置文件位置/etc/pip.conf
# https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
# 临时使用
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

# 默认使用
# 更新pip
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
# 设置全局变量
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

更换conda源

# apt配置文件位置/root/.condarc
# https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
# 生成配置文件
conda config --set show_channel_urls yes
# 修改配置文件
vim /root/.condarc
# 删除已有内容,将红框内的内容复制到文件中
# 清楚旧的索引缓存
conda clean -i -y

win11 wsl2 docker,docker,深度学习,容器

Linux安装docker engine

# 更新apt索引
sudo apt update
# 更新apt包
sudo apt upgrade -y
# 根据官网提示安装docker engine
# https://docs.docker.com/engine/install/ubuntu/

# 删除旧安装包
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
# 添加Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 设置docker的apt源
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# 安装docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 测试docker,输入如下则表示安装成功
sudo docker run hello-world

win11 wsl2 docker,docker,深度学习,容器

Linux安装NVIDIA CONTAINER TOOLKIT

# 根据官方提示安装nvidia container toolkit,为docker提供nvidia底层支持
# https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
# 设置nvidia container toolkit的apt源
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
# 安装nvidia container toolkit
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
# 配置nvidia container toolkit对docker的底层支持
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# 测试nvidia container toolkit,输出如下则成功
sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

win11 wsl2 docker,docker,深度学习,容器

docker下载pytorch镜像,并创建pytorch容器

# 下载pytorch镜像
# 可以通过NVIDIA官方提供的
# https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch/tags
sudo docker pull nvcr.io/nvidia/pytorch:23.12-py3
# 或者使用docker hub提供的
# https://hub.docker.com/r/pytorch/pytorch/tags
sudo docker pull pytorch/pytorch:latest
# 下载最新的即可,图片中的版本号不同

win11 wsl2 docker,docker,深度学习,容器

# 利用docker镜像创建docker容器
# 可以在官网查看具体参数含义
# https://docs.docker.com/engine/reference/commandline/container_run/
# 利用docker hub提供的镜像创建容器,利用NVIDIA提供的镜像创建命令类似
# --gpus "all" 配置容器可以调用的GPU
# --name "container name" 容器名称,利用一个镜像可以创建多个容器
# --ipc "host" 设置容器的IPC模式,解除载入数据线程之间共享数据内存限制
# --restart "always" 容器被关闭时重新启动
# --volume, -v 挂在容器外的目录,ubuntu下的路径:容器中的路径
# --publish,-p 将容器端口映射到linux宿主机上,linux端口:容器端口
# --detach,-d 容器后台运行
# --interactive,-i 进入容器交互式命令行
# --tty,-t 进入容器伪tty界面
sudo docker run --gpus "all" --name "torch" --ipc "host" --restart "always" -v /mnt/d/Project:/workspace -v /mnt/d/Dataset:/mnt -p 10001:22 -p 10002:6006 -p 10003:8888 -itd pytorch/pytorch:latest

# 查看创建的容器
sudo docker ps -a

win11 wsl2 docker,docker,深度学习,容器

# 进入容器,注意提示符,从linux中切换到了容器内
sudo docker exec -it torch /bin/bash

win11 wsl2 docker,docker,深度学习,容器

pytorch容器安装ssh

# 可以更换apt源,一定要注意ubuntu的版本
# 由于以root用户登录容器,所以以下命令无需sudo切换到root权限
# 更新apt索引
apt update
# 更新apt包
apt upgrade -y
# 安装vim文本编辑器
apt install vim -y
# 安装ssh,用于远程连接
apt install openssh-server -y

pytorch容器安装jupyterlab

# 查看是否已经安装conda
# 如果报错,则没有安装conda,或者conda没有安装在/opt/文件夹下,可以使用conda info进一步验证
# 如果没有报错,则conda已经安装,可以使用conda info进一步验证,如果conda info报错,则是bash环境变量问题,这里提供一个解决思路,就不展开讲了
cd /opt/conda

# 若没有安装conda,则通过pip安装jupyterlab
pip install jupyterlab -y

# 若已经安装conda,则需要先看base环境中是否已经安装jupyterlab,如果没有输出,则没有安装
conda list | grep jupyter
# 初始化conda环境
conda init
# 在base环境中安装jupyterlab,这样其他conda虚拟环境可以共用jupyterlab,而无需在每个虚拟环境安装
conda install -c conda-forge jupyterlab -y
# 可能会报http网络连接错误,多试几次就好了

至此,需要安装的基础软件就装完了,有其他安装需求的可以自行安装。

接下来讲讲怎么配置软件,才可以在WIN11上的IDE使用容器,这里以pycharm professional为例,vscode连接的原理是一样的。至于怎么安装软件和破解,这里就不展开了,阅读量大的话,单开一期讲。

配置软件

目前需要的软件虽然安装好了,但是pycharm还是无法访问容器中的解释器,这里我们采用ssh方式进行连接。

配置ssh

# 生成ssh密钥,用于验证登录身份。直接使用密码不太安全
ssh-keygen -m PEM -t rsa -b 4096 -C "AnyInformation"
# 将私钥拷贝到项目文件夹中
cp /root/id_rsa /workspace
# 此时,你可以在win11的项目文件夹看到该私钥

# 编辑配置文件/etc/ssh/sshd_config
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
AuthorizedKeysFile .ssh/id_rsa.pub

# 重启ssh服务
service ssh restart

然后就可以在Pycharm的 文件 >> 设置 >> 工具 >> SSH配置,设置主机IP为127.0.0.1,端口为设置的容器22端口映射的宿主机端口10001,私钥文件为项目文件夹下的ssh私钥。点击测试连接即可成功。别忘了点右下角的应用哦!!!

win11 wsl2 docker,docker,深度学习,容器

然后可以在Pycharm的 文件 >> 设置 >> 项目 >> Python解释器 >> 添加ssh

win11 wsl2 docker,docker,深度学习,容器

然后可以添加conda或者python的解释器,但是不建议conda解释器创建新环境,自己命令行创建的conda环境,可以控制纯粹的pip安装。

conda使用现有环境:

同步文件夹其实并不需要,因为我们在docker容器的创建过程中已经设置了映射关系,所以取消勾选自动上传。由于以root身份登录,所以取消勾选sudo权限。然后就可以愉快的使用啦!!

win11 wsl2 docker,docker,深度学习,容器

conda创建新环境:

设置环境名称、Python的版本号。同步文件夹其实并不需要,因为我们在docker容器的创建过程中已经设置了映射关系,所以取消勾选自动上传。由于以root身份登录,所以取消勾选sudo权限。然后就可以愉快的使用啦!!!

win11 wsl2 docker,docker,深度学习,容器

配置开机启动

为了达到开机打开Pycharm即可连接容器内的解释器 进行开发的流畅使用体验。需要以下几项功能:

  • ssh随容器启动而启动
  • 容器随wsl子系统启动而启动
  • wsl子系统随win11开机启动而启动
# 将ssh启动与bash关联启动,达到ssh随容器启动而启动的效果
# 容器内创建ssh启动脚本
touch /root/start_ssh.sh
# 编辑ssh启动脚本
vim /root/start_ssh.sh
#!/bin/bash
LOGTIME=$(date "+%Y-%m-%d %H:%M:%S")
echo "[$LOGTIME] startup run ..." >> /root/start_ssh.log
service ssh start >> /root/start_ssh.log
# 给ssh脚本添加执行权限
chmod +x /root/start_ssh.sh

# 将ssh启动脚本添加到容器启动文件中
vim /root/.bashrc

# startup run
if [ -f /root/start_ssh.sh ]; then
		/root/start_ssh.sh
fi
# 容器随wsl子系统启动而启动
# 在创建容器时,已经通过 --restart "always" 参数指定
# 如果没有在容器创建时指定,可以使用以下命令,记得把containername替换为你的容器名称!!!
sudo docker update --restart "always" containername
# wsl随win11启动而启动
# win+r,输入 shell:startup,转到启动目录
# 新建 wsl.vbs 文件,名称可以更改,后缀为vbs就行
# 在wsl.vbs中写入
rem Msgbox "WSL开机启动"
Set ws = CreateObject("Wscript.Shell")
ws.run "wsl -d Ubuntu-22.04 -u tao", vbhide

配置jupyterlab

# 安装jupyter notebook
conda install -c conda-forge notebook

# 设置jupyter notebook
jupyter notebook password
jupyter notebook --generate-config

# 修改~/.jupyter/jupyter_lab_config.py
c.ServerApp.ip = '*'
c.ServerApp.allow_remote_access = True
c.ServerApp.open_browser = False
c.ServerApp.allow_root = True


# 安装jupyterlab扩展插件
conda install -c conda-forge nodejs
conda install -c conda-forge jupyterlab_widgets
conda install -c conda-forge ipympl

docker容器启动时,自动启动jupyter notebook

# 编辑ssh启动脚本
vim /root/start_ssh.sh

# 在最后添加
nohup jupyter notebook > jupyternotebook.log 2>&1 &

# 如果想关闭jupyter notebook
# 找出包含jupyter的进程
ps -aux | grep jupyter

# 会列出很多,然后找到 jupyter notebook相关的进程, 一般情况下第二列就是pid, 如,我的进程是 9608,然后再用如下命令即可杀掉进程
kill -9 9608

解释器问题

pycharm添加WSL下docker中的conda解释器,报错ttyname failed: Inappropriate ioctl for device文章来源地址https://www.toymoban.com/news/detail-832316.html

# 打开/root/.profile
vim /root/.profile
# 将mesg n || true 改为如下
tty -s && mesg n || true

# 使profile生效
source /root/.profile

到了这里,关于WIN11+WSL2+Docker 深度学习环境部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • win11安装ubuntu(by wsl2)

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 省吃俭用入手了ThinkPad T14,打算装好Linux后作为开发机器使用,本文记录了安装过程,以便将来在新系统上用到 作为参考,机器软硬件情况如下 接下来就是安装wsl2的过程,并未为了验证Linux是否正常

    2024年02月10日
    浏览(48)
  • 基于WSL2+Docker+VScode搭建机器学习(深度学习)开发环境

    内容概述 :由于最近配发了新的工作电脑但不想装双系统,因此通过本博文来记录基于Windows子系统WSL+Docker搭建机器学习与深度学习开发环境的流程步骤,同时记录该过程中所遇到的相关问题及解决方案。期待为同行学习者提供参考; 最终效果 :在Windows电脑上,无需安装

    2024年02月04日
    浏览(40)
  • 【2023最新版】Win11: WSL(Ubuntu22.04)使用docker远程容器教程(Windows的Docker Desktop下载安装、迁移到非系统盘、配置国内镜像源、设置 WSL2)

    目录 一、准备工作 1. 安装WSL(适用于 Linux 的 Windows 子系统) 2. docker简介——来源chatGPT 二、Windows安装 Docker Desktop 1. 官网链接 2. 安装过程 3. 迁移到非系统盘 4. 配置国内镜像源 国内镜像 方法1——通过Docker-Desktop配置 方法2——找打daemon.json文件进行配置 三、在适用于 Wind

    2024年02月12日
    浏览(75)
  • win10+WSL2+docker配置历程

    不管是为了以后多一个工具还是多一份知识,单纯觉得应该了解应该学习。记录一下并不顺利的docker配置之路。 首先附上我的万能师兄的搭建之路,指导意义那是顶呱呱。 ZzPwn01:属于2023年的Pwn环境搭建(Docker in WSL) - 简书 (jianshu.com) 同样是师兄推荐,Docker从入门到实践,

    2024年01月19日
    浏览(50)
  • Win11使用WSL2安装Ubuntu22.04并启用GUI应用

    Windows Subsystem for Linux (WSL) 允许在几分钟内在 Windows 机器上安装完整的 Ubuntu 终端环境,无需离开 Windows 即可开发跨平台应用程序。 将学到什么: 如何在 Windows 11 上启用和安装 WSL 如何安装和运行使用 WSLg 的简单图形应用程序 如何安装和运行使用 WSLg 的更高级的应用程序 你需

    2024年02月04日
    浏览(53)
  • Win11基于WSL2安装CUDA、cuDNN和TensorRT(2023-03-01)

    如果有小伙伴看了2023-03-05更新,发现设置环境变量后运行cuda代码在链接过程中仍然会有报错问题啥的,那我这里建议,先别管2023-03-05更新的内容了,还是按照我博客里的安装步骤一步一步往下安装,用 sudo apt install nvidia-cuda-toolkit 命令去安装nvcc,也不需要配置环境变量了。

    2024年02月02日
    浏览(52)
  • win11 使用 WSL2 安装 linux 子系统 ubuntu 出现错误:无法解析服务器的名称或地址

    解决方法: 记事本打开 C:WindowsSystem32driversetchosts 文件, 添加如下解析地址 #raw.githubusercontent.com 185.199.108.133 raw.githubusercontent.com 185.199.109.133 raw.githubusercontent.com 185.199.110.133 raw.githubusercontent.com 185.199.111.133 raw.githubusercontent.com ifconfig /flushdns 查看可安装的 WSL wsl --list --onlin

    2024年04月27日
    浏览(65)
  • 【Docker】win11中,WSL版本过低问题

    问题: 解决方案: 要更新Docker Desktop所需的WSL内核版本,按照以下步骤进行操作: 以管理员身份打开PowerShell窗口。您可以右键单击开始菜单,选择\\\"Windows PowerShell(管理员)\\\"。 运行以下命令来更新WSL内核: 等待更新过程完成。此命令将下载并安装最新的WSL内核更新。 更新

    2024年02月09日
    浏览(34)
  • Halcon22.11+Win10+RTX3060显卡(配置CUDA和cuDNN深度学习环境)

    官网下载安装包(需要注册才能下载) 提示:它和VS2019联合开发,所以要安装VS2019  具体安装步骤参考:https://zhuanlan.zhihu.com/p/590352632   相关的安装包比如CUDA、cudnn版本需要下载到本地安装。  CUDA版本选择,已本人的为例:在NVIDIA控制面板可以看到RTX3060驱动目前最高支持

    2024年02月16日
    浏览(57)
  • 【WSL】Win10 使用 WSL2 进行 Linux GPU 开发

    先安装 驱动 参考 https://docs.nvidia.com/cuda/wsl-user-guide/index.html 使用 https://www.nvidia.com/Download/index.aspx 提供的兼容 GeForce 或 NVIDIA RTX/Quadro 显卡在系统上安装 NVIDIA GeForce Game Ready 或 NVIDIA RTX Quadro Windows 11 显示驱动程序。 cmd 检测 管理员终端打开 PowerShell 参考 https://learn.microsoft.com/

    2024年01月22日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包