IT评测·应用市场-qidao123.com技术社区

标题: 痛楚的windows WSL2的CUDA安装过程 [打印本页]

作者: 商道如狼道    时间: 2024-10-16 03:54
标题: 痛楚的windows WSL2的CUDA安装过程
1. 为什么要安装?
        在做深度学的过程中,发现大部分的情况下都是在Linux体系的情况下做的。本身又不想装双体系,又想便捷地使用Linux来调用GPU,进行模型的推理。网上搜索了一番,使用VMWare虚拟机好像调用不了CUDA的。颠末多番查找,发现WSL2,这个虚拟机是可以直接调用CUDA 运算的,而且有人安装乐成并跑通了。然后就开始了痛楚的情况安装过程了~~~。
2. 安装前的预备:
        一台带有GPU的x86_64,windows10 或win10以上的体系的电脑。(我这台是笔记本电脑,比较久了,还可以战斗{*-*})
3. 安装WSL:
       必须运行 Windows 10 版本 2004 及更高版本 1,本电脑是win10 22H2版本,假如之前有安装过Virtua Box 虚拟机的话会显示叫你卸载Virtualbox 才气升级,我这边明显都卸载了,还显示未卸载,烦闷了很久,找了一波,终于找到了 2 这个链接,可以卸载的VirtuaBOx 都卸了,删的也都删了。问题就出在C盘的一个文件夹没删   virtualbox这个文件一样平常在C:Program Files下(如ldplayer)  这个文件夹删完就可以升级体系了。
      升级完体系后就可以安装WSL了。首先以管理员的方式打开 Windows PowerShell,输入下令
  1. wsl --install
  2. #将默认版本设置为WSL 2
  3. wsl --set-default-version 2
复制代码
不要在微软市肆安装Ubuntu20.04,会直接安装在C盘上面的,C盘安装虚拟机,真的很炸裂。详细怎样在其他盘安装请参考 3 主要的下令如下:
  1. cd D:\Linux-ubuntu\
  2. # 下载
  3. Invoke-WebRequest -Uri https://wsldownload.azureedge.net/Ubuntu_2004.2020.424.0_x64.appx -OutFile Ubuntu20.04.appx -UseBasicParsing
  4. # 压缩
  5. Rename-Item .\Ubuntu20.04.appx Ubuntu.zip
  6. # 自己解压
复制代码
鼠标左键双击解压出来的.exe 文件,有报错的话 安裝 WSL2 Linux Kernel 更新包
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi,安装完后再双击.exe 文件打开Ubuntu虚拟机。至此,WSL2的虚拟机安装完成。
检察  虚拟机状态,在PowerShell中输入以下下令。
  1. # 查看wsl 版本
  2. wsl -l -v
  3. # 查看虚拟机的状态
  4. wsl --status
  5. # 关闭虚拟机
  6. wsl --shutdown
复制代码
我们是本身的电脑,可以设置默认打开方式是root用户打开。首先 双击.exe 文件, 进入Ubuntu用户。输入以下下令设置root账号密码 4
  1. 打开终端(ctrl+alt+t)
  2. 1、输入 :sudo passwd root
  3. 2、输入 : 输入user的密码
  4. 3、输入 :输入新的UNIX密码
  5. 4、输入 :重新输入新的UNIX密码
  6. 设置完成
  7. 输入: su
  8. 密码:
  9. 进入root模式下
复制代码
设置进入Ubuntu的用户是root 用户,在PowerShell 中输入
  1. ubuntu2004.exe config --default-user root
复制代码
 虚拟机和Windows电脑的文件传输,可以在文件导航窗口输入
  1. \\wsl$\Ubuntu-20.04\
复制代码
至此WSL2的Ubuntu虚拟机开端完成安装了。
4 固定ip,方便使用xshell大概MobaXterm毗连虚拟机:
      ssh的安装,安装软件一样平常使用root用户,避免出现各种权限问题的错误。参考 5
  1. # root目录下
  2. 更新源 apt-get update
  3. 1.安装ssh;(请确保有网络,可ping www.baidu.com确认)
  4. apt-get install openssh-server
  5. 2.重启ssh服务;
  6. service ssh restart
  7. 3.查看启动情况;
  8. ps -e |grep ssh
  9. 关闭防火墙
  10. 1.查看防火墙是否关闭
  11. ufw status
  12. 2.关闭防火墙
  13. ufw disable
  14. 3.启动22端口
  15. ufw allow 22
复制代码
网上搜了蛮久的,说是WSL2每次重启ip都会改变的,无法固定。不过可以使用脚本开启wsl2虚拟机,每次使用脚本打开就可以了,参考 6 。要使用管理员权限打开脚本。以下保存为xxx.bat文件
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :: 重新拉起虚拟机,并且用root身份,启动ssh服务和docker服务
  4. wsl -u root service ssh start | findstr "Starting ssh" > nul
  5. if !errorlevel! equ 0 (
  6.     echo docker ssh success
  7.     :: 设置wsl2虚拟机ubuntu的ip
  8.     wsl -u root ip addr | findstr "192.168.10.101" > nul
  9.     if !errorlevel! equ 0 (
  10.         echo wsl ip has set
  11.     ) else (
  12.         :: 没有的话给安排上
  13.         wsl -u root ip addr add 192.168.10.101/24 broadcast 192.168.10.0 dev eth0 label eth0:1
  14.         echo set wsl ip success: 192.168.10.101
  15.     )
  16.     :: 设置windows宿主机网卡vEthernet (WSL)的IP,与虚拟机同一网段
  17.     ipconfig | findstr "192.168.0.102" > nul
  18.     if !errorlevel! equ 0 (
  19.         echo windows ip has set
  20.     ) else (
  21.         netsh interface ip add address "vEthernet (WSL)" 192.168.10.102 255.255.255.0
  22.         echo set windows ip success: 192.168.10.102
  23.     )
  24. )
  25. pause
复制代码
至此 固定ip完用MobaXterm,毗连,脚本是root启动ssh的,毗连一样平常也使用root用户。
5. 安装英伟达的驱动,安装wsl对应的cuda

        英伟达的驱动要安装在Windows体系上面。一开始以为安装最新的版本驱动就可以了,看来是想多了,不行。。。nvidia-smi ,报错。厥后颠末一番查找 7 发现要下载对应的驱动版本537.58才行 下载驱动的链接 。下载安装好驱动后。使用管理员权限,打开第4个步骤的xxx.bat文件,启动虚拟使用MobaXterm 毗连虚拟机。在root用户下,输入一下下令 9 :

  1. cp /usr/lib/wsl/lib/nvidia-smi /usr/bin/nvidia-smi
  2. chmod ogu+x /usr/bin/nvidia-smi
复制代码
输入 nvidia-smi ,没有啥问题,就阐明英伟达驱动安装完成。

        安装cuda:10 cuda下载链接


  1. # Ubuntu 下载链接
  2. wget https://developer.download.nvidia.com/compute/cuda/12.6.0/local_installers/cuda_12.6.0_560.28.03_linux.run
  3. sh cuda_12.6.0_560.28.03_linux.run
复制代码
设置情况:在.bashrc 文件大概/etc/profile 文件添加情况变量。发起在/etc/profile 下设置。这样所有的用户都可以用到。

  1. vi /etc/profile
  2. # 根据自己的的路径,粘贴到 profile的最后面
  3. export PATH=/usr/local/cuda-12.6/bin${PATH:+:${PATH}}
  4. export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
复制代码
保存好后 输入

source /etc/profile

激活情况。输入

nvcc -V

有显示对应的版本阐明cuda安装完毕。

        安装annaconda3来管理python 情况   版本下载路径 ,下载Linux x86_84 版本的。

  1. wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2024.06-1-Linux-x86_64.sh
复制代码
下载完后,安装

  1. # 赋予权限chmod +x Anaconda3-2024.06-1-Linux-x86_64.sh# 安装
  2. ./Anaconda3-2024.06-1-Linux-x86_64.sh
  3. # 一直yes下去,安装完后 输入以下命令 激活annaconda3
  4. source ~/.bashrc
复制代码

创建 pytorch 的python为3.8的python conda情况:

conda create -n pytorch python=3.8 -y

创建完后 ,使用

conda activate pytorch

激活情况。

用conda 下载 pytorch 深度学习框架 


conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

安装完后,测试是否可以调用cuda:11

输入

python


import torch


torch.cuda.is_available()


输入 Ture 则阐明pytorch 可以调用GPU啦!!!!!

6. 安装docker

     docker 用来做情况的摆设好坏常方便的,相称于一个小型的虚拟机,每个docker容器情况都是相互隔离的。打开虚拟机,进入root用户,输入docker 下令提示安装docker。要使用apt 来安装,另一个下令的安装会出现一些未知的问题。输入下令  

  1. apt update
  2. apt install docker.io
复制代码
使用 dockerd,启动docker。

让docker可以使用cuda ,参考 12 输入以下下令

  1. distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
  2. curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-docker-keyring.gpg
  3. curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-docker-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
  4. sudo apt-get update
  5. sudo apt-get install -y nvidia-docker2
复制代码
检验是否完成安装 13

  1. docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark
复制代码

至此,docker安装完成。

开机自启,和ssh一样的脚本,如下,添加了,启动docker

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. :: 重新拉起虚拟机,并且用root身份,启动ssh服务和docker服务
  4. wsl -u root service docker start | findstr "Starting Docker" > nul
  5. wsl -u root service ssh start | findstr "Starting ssh" > nul
  6. if !errorlevel! equ 0 (
  7.     echo docker start success
  8.     echo docker ssh success
  9.     :: 设置wsl2虚拟机ubuntu的ip
  10.     wsl -u root ip addr | findstr "192.168.10.101" > nul
  11.     if !errorlevel! equ 0 (
  12.         echo wsl ip has set
  13.     ) else (
  14.         :: 没有的话给安排上
  15.         wsl -u root ip addr add 192.168.10.101/24 broadcast 192.168.10.0 dev eth0 label eth0:1
  16.         echo set wsl ip success: 192.168.10.101
  17.     )
  18.     :: 设置windows宿主机网卡vEthernet (WSL)的IP,与虚拟机同一网段
  19.     ipconfig | findstr "192.168.0.102" > nul
  20.     if !errorlevel! equ 0 (
  21.         echo windows ip has set
  22.     ) else (
  23.         netsh interface ip add address "vEthernet (WSL)" 192.168.10.102 255.255.255.0
  24.         echo set windows ip success: 192.168.10.102
  25.     )
  26. )
  27. pause
复制代码
至此,情况都安装好了,开始AI开发之旅吧!!!!!


参考毗连:
安装 WSL | Microsoft Learn
Win10升级要卸载virtualbox virtualbox怎么办_更新win10要卸载virtual-CSDN博客
https://zhuanlan.zhihu.com/p/690428564
4ubuntu无法远程root远程登录(远程调试)root直接登录(没有root用户登录)(创建root用户新建root用户)PermitRootLogin yes(prohibit-password)_ubunto18.04root 用户无法远程登岸-CSDN博客
xshell安装与设置,Xftp(不能毗连虚拟机xshell无法毗连,openssh-server,服务没开怎么传输数据?)(虚拟机和windows之间自由复制)_xshell不能关联xftp-CSDN博客
6 给windows宿主机和wsl2的ubuntu-20.04分配固定IP,使能相互ping通_wsl2 与宿主机用同一个局域网ip-CSDN博客
7 wsl2输入nvidia-smi后显示一部分信息后报segmentation fault的错误(已解决)_nvidia-smi segmentation fault-CSDN博客

8 英伟达官网怎么找老版本的显卡驱动_英伟达显卡驱动官网-CSDN博客

9 Windows下Linux虚拟机共享GPU显卡-CSDN博客

10 WSL2和Docker使用GPU_wsl2容器使用gpu-CSDN博客

11 检察Pytorch的GPU是否可用_pytorch:测试gpu是否可用-CSDN博客

12 WSL 中的 GPU 加快 ML 训练 | Microsoft Learn

13 WSL2和Docker使用GPU_wsl2容器使用gpu-CSDN博客


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4