美文网首页WSLUbuntu开发者专栏
Windows11使用WSL Ubuntu搭建paddle的GP

Windows11使用WSL Ubuntu搭建paddle的GP

作者: 言午日尧耳总 | 来源:发表于2022-08-14 00:59 被阅读0次

    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"即可,操作大同小异

    相关文章

      网友评论

        本文标题:Windows11使用WSL Ubuntu搭建paddle的GP

        本文链接:https://www.haomeiwen.com/subject/wuucgrtx.html