乐趣区

关于wsl2:Windows11使用WSL-Ubuntu搭建paddle的GPU环境

Windows11 应用 WSL Ubuntu 搭建 paddle 的 GPU 环境

最近降级到了 Windows11,忽然有个大胆的想法:在 Windows11 上装置 WSL,将所有开发环境装置到 WSL 中。这样就能在 windows 各种 QQ/ 微信 /Steam 玩的飞起,又能在 Linux 中敲代码。

以后工夫:2022-08-13,本文章中所有步骤都是依据官网的装置办法,如果工夫比拟长了,可能须要切换到最新的官网文档。

本文章为装置胜利后的分享,能够释怀参考。

paddle 的坑

  1. 目前不兼容 ubuntu22.04,查资料说是 paddle 不反对高版本 gcc
  2. 间接运行 paddle 提供的 docker 镜像是可行,然而 docker 内的 python 版本过低(python3.7),导致 matplotlib 无奈装置,如果不须要个别依赖包能够不必折腾
  3. 吐槽下,ubuntu22.04 都公布半年了,还做不到兼容,天天吹流弊有个锤子用

版本 / 型号

我的项目 型号
以后工夫 2022-08-13
CPU Intel i7-11700
显卡 GTX 1050 Ti
Windows 11 64 位 专业版 21H2
WSL2 5.10.102.1
Ubuntu 22.04
CUDA 11.7
cuDNN 8.5.0.*

疑难

在实现装置前,本人对 WSL 也有疑难的中央,可能大家也有相似的疑难,所以列举进去。

  • 疑难 1:WSL 就是指 Windows 中运行的 Linux 零碎吗?

    • WSL 是个工具,用于运行 / 管理子系统(如:Ubuntu/Centos)
    • (为了不便表述,上面用 ubuntu 指代其中一个子系统)
  • 疑难 2:WSL 吃资源吗?

    • WSL 工具自身不吃资源,然而运行子系统须要吃资源,毕竟多跑了个零碎
  • 疑难 3:WSL 装置后始终在后盾运行吃资源吗?

    • WSL 是个工具,且子系统不会自启动(默认状况),还能够手动。即不应用的时候不吃资源
  • 疑难 4:docker 要 Windows 中装置,还是要在 ubuntu 中装置?

    • 在 Windows 中装置 Docker Desktop 相当于在 WSL 下又装置了一个跑 docker 的子系统
    • 在 Ubuntu 中装置依照 docker 服务器装置的步骤装置即可
    • 举荐在 ubuntu 中装置,更加节俭内存
    • 以下数据是在 ” 工作管理器 ” 中的 ” 性能 ” 页面察看失去,数据并不谨严,不排除期间开了其他软件等影响,但内存使用量迥异不影响后果判断:

      • 未关上所有子系统,内存应用:4.5G
      • 关上 ubuntu20,内存应用:5.8G
      • 关上 Ubuntu20 内的 docker,内存应用:6.1G
      • 关上 ubuntu20,docker 子系统(装置在 windows 上),内存应用:10.7G
      • 起因:装置在 windows 上的 docker 须要一个子系统来跑 dockers 服务,而在 ubuntu 中装置只是多运行了一个服务,节俭了零碎运行环境须要的资源
  • 疑难 5:在 windows 中装置了驱动,ubuntu 中还须要装置显卡驱动 /CUDA/cuDNN 吗?

    • ubuntu 中不须要再装置显卡驱动,然而须要装置 CUDA/cuDNN
  • 总结

    • WSL 是个子系统管理工具(能够类比为 docker 运行时)
    • 从 WSL 或微软商店装置的 Ubuntu/Centos 才是真正的子系统(能够类比为 docker 的容器)
    • Docker 最好装置在子系统中(节俭内存)

步骤

Windows11 装置 WSL

官网 - 装置 WSL
官网 -WSL 根本命令

  1. 关上 ”Windows 性能 ”,将 ”Hyper-V”/” 实用于 Linux 的 Windows 子系统 ”/” 虚构平台 ” 都勾选上,重启
  2. windows 零碎就主动装置了 wsl 工具
  3. 在微软商店搜寻 ”Ubuntu”,间接点击装置期待实现(这里抉择 ubuntu20.04,因为 paddle 不兼容 ubuntu22,因为)
  4. 关上 ”ubuntu20.04″,如果如下报错
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x800701bc
Error: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernel

Press any key to continue...
  1. 请更新下 WSL 内核并重启即可
wsl --update

配置 ubuntu20.04 的环境

官网 - 装置 Docker Engine on Ubuntu

  1. 进入 ubuntu 外部
  2. 装置 miniconda 当作 python 管理工具
  3. 更换 ”ubuntu”/”conda”/”pypi” 国内镜像源
  4. 装置 Dockers,留神是装置 Dockers Engine, 而不是 Docker Desktop

驱动 /CUDA/cuDNN 关系

显卡、显卡驱动、cuda 之间的关系是什么?– 智星云服务的答复 – 知乎

应用层到硬件的分层构造
TensorRT for Inference: Paddle
GPU Accelerated SDKcuDNN
CUDA ToolKits
GPU Driver
OS
GPU Computing Servers

装置 CUDA

官网 - 装置 cuda 命令

  1. 提前装置好 miniconda(装置命令会主动配置 conda 环境)
  2. 关上下面的地址,拜访比较慢,刷不进去多试几次,环境不同装置的命令也不同,抉择好参数后会有装置命令,照抄命令就能够了
  3. 有些文章说装置 cuda 后要改环境变量,我提前装好了 miniconda,所以装置好主动配置了,不须要改,关上 ”~/.bashrc” 最下方能够看到配置的内容
  4. 上面以我抉择的参数 ”Linux”/”x86_64″/”Ubuntu”/”20.04″/”deb(network)”,生成的代码如下:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda
  • 在执行最初一个命令时,我遇到了个报错,依据提醒在命令前方加上 ”–fix-missing” 即可,大家装置的时候留神察看装置过程中是否有报错

主动增加的环境变量如下,自己的登录用户名为 ”x”,所以每个人装置的门路都有区别

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/x/miniconda3/bin/conda''shell.bash' 'hook' 2> /dev/null)"
if [$? -eq 0]; then
    eval "$__conda_setup"
else
    if [-f "/home/x/miniconda3/etc/profile.d/conda.sh"]; then
        . "/home/x/miniconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/x/miniconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

装置 cuDNN

官网 - 装置 cuDNN

  1. 留神看外面的目录,自行抉择对应的零碎和装置形式
  2. 我抉择的是 ubuntu 的网络装置,执行的代码如下:
# 因为文档中的地址应用了变量,用 export 形式赋值
export OS=ubuntu2004
export cudnn_version=8.5.0.*
export cuda_version=cuda11.7

# 装置
wget https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/cuda-${OS}.pin 

sudo mv cuda-${OS}.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/${OS}/x86_64/ /"
sudo apt-get update
sudo apt-get install libcudnn8=${cudnn_version}-1+${cuda_version}
sudo apt-get install libcudnn8-dev=${cudnn_version}-1+${cuda_version}

实现

下面实现了所有配置,测试下是否胜利

  1. 进入 ubuntu
  2. 进入 conda 环境
  3. 关上 python 命令行

    import paddle
    paddle.utils.run_check()

其余

  • ubuntu 中能够间接拜访 windows 中的文件,挂载在 ”/mnt” 目录下
  • WSL 搭配 vscode 应用十分顺滑,能够参考 VsCode 轻松应用 docker 容器 视频,将 ”Remote SSH” 插件改为 ”Remote WSL” 即可,操作大同小异
退出移动版