admin 管理员组

文章数量: 886993

Windows系统下Linux子系统cuda、pytorch及tensorrt环境搭建与VScode连接

  • 一、Windows系统下Linux子系统环境配置
    • 1、Windows系统下Linux子系统的安装及源配置
    • 2、Windows系统下远程桌面控制(可选)
  • 二、配置cuda环境
  • 三、安装pytorch及tensorrt
    • 1、安装pytorch
    • 2、安装tensorrt
  • 四、配置VScode接入WSL解释器

本文主要是为了能在windows环境下(建议在Win11系统下搭建)运行深度学习在Linux系统下的相关功能包进行搭建的环境配置,本文主要涉及:
(1)Windows系统下的 Linux子系统环境搭建
(2)配置基于 wsl2环境下的ubuntu系统 cuda相关包的安装
(3) pytorchtensorrt等深度学习包的安装以及在
(4)在Windows系统下通过 VScode里的 Remote-WSL插件与Linux子系统下的环境进行连接,并实现在Windows环境下的Linux系统相关操作。

一、Windows系统下Linux子系统环境配置

1、Windows系统下Linux子系统的安装及源配置

Windows系统下需要在设置—>里把开发者设置里—>开发人员模式打开:

设置里—>应用—>可选功能—>更多Windows功能—>打开适用于Linux的Windows子系统虚拟机平台勾选上:

我这里使用的是wsl2对Linux子系统进行运行的,可以通过以下命令进行wsl的升级与配置:
管理员身份打开命令窗口输入:

#完成wsl安装并更新到wsl2,完成第一步后需要重启计算机
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
#设置默认wsl2为wsl的启动版本
wsl --set-default-version 2
#查看是否安装成功了,我是之前配置好了的,所以查询的时候出现了ubuntu18.0420.04
wsl --list --verbose
or
wsl -l -v

然后在菜单栏(Win键)打开Microsoft Store,在搜索框中搜索ubuntu,选择你需要安装的ubuntu版本,安装完成后建议不要运行ubuntu系统,系统默认的安装位置在系统盘目录下的,怕系统盘因搭建深度学习环境占用过大的内存可以通过下面的软链接方式减少系统盘的占用。

子系统安装目录默认在的 “C:\Users\Administrator\AppData\Local\Packages” 目录下,一般以CanonicalGroupLimited.Ubuntu开头的,如果担心系统盘被新搭建的环境占满,可以先将下载的子系统文件全部剪切到其他盘符下,我这里是在E盘下新建里一个Ubuntu的目录,将Linux子系统文件剪切拷贝到该目录下,并在原来的"C:\Users\Administrator\AppData\Local\Packages" 目录下通过建立软链接 的方式进行链接:
原文件所在的位置,我这里已经通过软链接进行了链接:

剪切到粘贴的位置:“E:\Ubuntu”


完成以上步骤后,建立软链接可以通过以下命令进行:mklink /d 需要添加软链接的位置 原始的目录

mklink /d "C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc" "E:\Ubuntu\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc"

mklink /d "C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc" "E:\Ubuntu\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc"

完成软链接后,就可以在搜索界面输入ubuntu选择自己需要打开的ubuntu版本,就可以打开Linux的子系统。打开后需要等待一会,然后就是输入设置用户名以及设置用户密码。

小插曲,我在配置Linux子系统的时候因为之前没有把WSL更新到WSL2及内核,我安装了两个内核版本的ubuntu。

配置系统源:

# 备份源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
#换源
sudo vim /etc/apt/sources.list

注释,ubuntu20.04和ubuntu1804的源不一样,需要修改对应的源到source.list文件里
ubuntu18.04的源:

deb https://mirrors.ustc.edu/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu/ubuntu/ bionic-proposed main restricted universe multiverse

ubuntu20.04的源:

deb http://mirrors.aliyun/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun/ubuntu/ focal-backports main restricted universe multiverse


注意:最后面关于nvidia的源在nvidia官网里对WSL子系统的cuda配置时添加的。

完成换源操作后,需要执行以下指令使换源生效:

# 更新软件下载源
sudo apt-get update -y
# 升级软件
sudo apt-get upgrade -y

2、Windows系统下远程桌面控制(可选)

需要进行可视化可以通过安装xorg、xfce4和xrdp,通过远程访问的方式访问图形界面。PS:系统上默认是没有安装ubuntu-desktop的,是简单的系统界面。
在打开的Linux子系统所在的WLS界面输入:

sudo apt install xorg
sudo apt install xfce4
sudo apt install xrdp

修改xrdp.ini远程桌面的网络端口。默认为3389网关,一般修改为3390,也可以不修改。(我配置的是两个版本的ubuntu,需要用不同的端口,可以同时打开两个端口的控制界面)。
Ubuntu18.04使用的是下面的方式(Ubuntu20.04使用这个方式,设置后打不开,就换了个其他的方式,不过原理都一样):

# 设置网络端口 3389 -> 3390 (Ubuntu18.04我没有改网络端口)
sudo sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini
# 桌面配置
sudo echo xfce4-session >~/.xsession

完成后上面的桌面相关配置后,需要重启xrdp服务,使其生效。

sudo service xrdp restart

在运行里输入mstsc,确定后输入127.0.0.1:3389,连接。

在下面出现的画面中输入子系统最开始设置的用户名和密码,进入系统。


Ubuntu20.04采用的是下面的方式,采用上面的方式我没有进去远程控制桌面。
在WSL2中即子系统Ubuntu20.04的命令窗口输入:

# 安装gnome桌面环境
sudo apt-get install ubuntu-desktop
# 安装相关工具
sudo apt-get install gnome-tweak-tool

# github的源可能下载比较慢,可以将这个先保存至码云,git clone,提供一个我保存的仓库地址
git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
#  git clone https://gitee.com/h-y-95/ubuntu-wsl2-systemd-script.git
cd ubuntu-wsl2-systemd-script/
bash ubuntu-wsl2-systemd-script.sh

完成上面的输入后,重启WSL服务,在Windows系统的命令窗口输入

# 停止服务
net stop LxssManager
# 启动服务
net start LxssManager

重新打开Ubuntu20.04的命令窗口:

sudo apt-get install xrdp
sudo sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini
echo "gnome-session" > ~/.xsession
# 重启xrdp服务
sudo systemctl restart xrdp
# 查看xrdp服务状态
sudo systemctl status xrdp

我在Ubuntu20.04里面的端口进行了更改将3389端口改为了3390
还是在运行中输入mstsc,打开后,输入localhost:3390,连接。
输入用户名密码就进入了Ubuntu20.04的桌面。

二、配置cuda环境

配置cuda环境,WSL下的Ubuntu子系统的cuda环境与Linux系统下的cuda环境略有不同,所以下载的本地安装包或者联网安装的源不一样, Nvidia官网的WSL下Linux的安装,选项如下图:

值得注意的是WSL版本要求是WSL2.0,可以选择本地安装也可以选择网络安装,我选择的是网络安装,官网的安装源码如下,安装的时候需要注意一下安装的cuda版本,默认为最新版本,但目前pytorch官网上支持的最新cuda版本为11.3所以需要选择安装

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/7fa2af80.pub
sudo add-apt-repository "deb https://developer.download.nvidia/compute/cuda/repos/wsl-ubuntu/x86_64/ /"
sudo apt-get update

查看上面所添加的源可以安装的cuda版本:

apt-cache policy cuda

sudo apt-get install cuda=11.3.0-1

将cuda文件目录添加至 .bashrc文件:

sudo vim ~/.bashrc

将下面的内容添加至 .bashrc末尾:

export LD_LIBRARY_PATH=/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin


执行以下语句查看CUDA是否安装成功:

source ~/.bashrc
#查看cuda版本
nvcc -V
#查看nvidia界面,这个需要在原本的Windows系统上安装nvidia驱动的
nvidia-smi


Windows系统下没有安装Nvidia驱动的,可以Nvidia参考官网安装驱动。

三、安装pytorch及tensorrt

1、安装pytorch

安装pytorch之前需要安装pip3

# 安装pip3
sudo apt install python3-pip
# 更新pip3
python3 -m pip install --upgrade pip

可以根据pytorch官网的指令进行安装,默认安装最新版本的,需要之前pytorch安装版本的可以根据自己安装的cuda版本号进行选择安装。

pip3 install torch==1.10.2+cu113 torchvision==0.11.3+cu113 torchaudio==0.10.2+cu113 -f https://download.pytorch/whl/cu113/torch_stable.html

检查pytorch是否安装成功,可以在python3界面输入以下指令:

import torch
print(torch.version.cuda)
print(torch.__version__)
print(torch.cuda.is_available())


cuda是否能用看最后一栏打印的是否为True。

2、安装tensorrt

可以直接通过pip3进行安装:

pip3 install tensorrt
pip3 install nvidia-pyindex
pip3 install nvidia-tensorrt
python3 -m pip install --upgrade nvidia-tensorrt
pip3 install 'pycuda<2021.1'

四、配置VScode接入WSL解释器

在VScode插件里安装remote-WSL,点击左下角的绿色箭头,选择第二项 New WSL Window using Distro…,选择你系统上安装的子系统。


在弹出的新的VScode窗口可以在终端中输入pip3 list,查看对应子系统安装的包,同时可以通过在终端输入相应的指令完成在Windows系统下对Linux子系统的解释器进行调用,如在本地上新建一个可执行程序:

在本地的目录上找到该程序所在的位置,并执行程序:

欢迎大家讨论,提出指正建议。

本文标签: 子系统 环境 系统 Windows Linux