Win10 WSL2 Ubuntu 22.04 配置深度学习环境

news2024/11/17 1:41:38

文章目录

  • WSL安装Anaconda
    • 下载Anaconda安装包
    • 安装
    • 配置conda命令
    • conda换国内源
    • conda初始化shell环境
      • conda init
      • 手动源激活脚本:
  • 安装Windows上的NVIDIA GPU驱动
  • WSL安装CUDA Toolkit
    • 安装12.1版本
    • 环境配置
    • 报错1
    • 报错2 内存不足导致安装崩溃
      • 问题描述
      • 问题分析
      • 问题解决
    • WSL2 Ubuntu安装NVIDIA cuDNN深度学习库
      • 官网下载
      • 安装步骤
      • 验证是否可以GPU加速
      • 卸载cudnn
    • WSL2 Ubuntu安装NVIDIA cuDNN深度学习库 2
    • pytorch安装
    • 安装libtorch
  • 参考


WSL安装Anaconda

下载Anaconda安装包

直接在wsl中执行wget命令即可。

 wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh

安装

直接执行bash命令即可。

bash Anaconda3-2024.02-1-Linux-x86_64.sh

一路enter,遇到下面的提示

在这里插入图片描述

这里直接选择默认路径。

配置conda命令

安装完成之后输入conda命令,报错command not found。
在这里插入图片描述

这没有将anaconda的安装路径放入环境变量中,执行下面命令进行添加

vim ~/.bashrc
export PATH=$PATH:/root/anaconda3/bin # export PATH=$PATH:【你的安装目录】
source ~/.bashrc

测试
在这里插入图片描述

conda换国内源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

conda初始化shell环境

conda init

damon@damonmac:~$ conda init
no change     /home/damon/anaconda3/condabin/conda
no change     /home/damon/anaconda3/bin/conda
no change     /home/damon/anaconda3/bin/conda-env
no change     /home/damon/anaconda3/bin/activate
no change     /home/damon/anaconda3/bin/deactivate
no change     /home/damon/anaconda3/etc/profile.d/conda.sh
no change     /home/damon/anaconda3/etc/fish/conf.d/conda.fish
no change     /home/damon/anaconda3/shell/condabin/Conda.psm1
no change     /home/damon/anaconda3/shell/condabin/conda-hook.ps1
no change     /home/damon/anaconda3/lib/python3.11/site-packages/xontrib/conda.xsh
no change     /home/damon/anaconda3/etc/profile.d/conda.csh
no change     /home/damon/.bashrc
No action taken.
damon@damonmac:~$ conda activate base

CondaError: Run 'conda init' before 'conda activate'

即使运行了conda init,您的Conda环境仍然没有正确初始化。这种情况可能是因为conda init命令没有成功修改您的shell配置文件,或者修改没有生效。

手动源激活脚本:

在您的shell中手动执行Conda的激活脚本,看看是否可以解决问题。对于bash用户,您可以在终端运行:

source ~/anaconda3/etc/profile.d/conda.sh

然后尝试再次激活Conda环境:

conda activate base

在这里插入图片描述

检查.bashrc或其他Shell配置文件:

检查您的~/.bashrc文件,看看是否真的包含了初始化Conda的相关行。您应该在文件中找到类似这样的行:

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

如果这些行不存在,您可以手动添加它们,然后保存并关闭文件,再运行:

source ~/.bashrc

安装Windows上的NVIDIA GPU驱动

作为一个虚拟机,WSL2居然可以访问到物理宿主机的GPU设备,博主之前还没听说过有哪家公司的虚拟机可以做到这一点。如果WSL2当真可以做到,并且性能可以接受的话,那真是科研党的福音!

WSL安装CUDA Toolkit

官方的教程地址

官方下载地址

安装12.1版本

CUDA Toolkit 12.1 Downloads
在这里插入图片描述

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
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-wsl-ubuntu-12-1-local_12.1.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-1-local_12.1.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

测试

在这里插入图片描述
安装完成后还需要进行环境配置。

环境配置

上述安装完成后,需更新 ~/.bashrc 文件

sudo vi ~/.bashrc

i 进入insert模式,添加以下代码到文件最后,注意修改为对应版本。

export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

Esc, :wq,回车保存。

source ~/.bashrc

运行以下代码,输出如图则CUDA安装成功。

在这里插入图片描述

报错1

damon@damonmac:/opt$ sudo dpkg -i cuda-repo-wsl-ubuntu-12-1-local_12.1.0-1_amd64.deb
Selecting previously unselected package cuda-repo-wsl-ubuntu-12-1-local.
(Reading database ... 81755 files and directories currently installed.)
Preparing to unpack cuda-repo-wsl-ubuntu-12-1-local_12.1.0-1_amd64.deb ...
Unpacking cuda-repo-wsl-ubuntu-12-1-local (12.1.0-1) ...
Setting up cuda-repo-wsl-ubuntu-12-1-local (12.1.0-1) ...

The public cuda-repo-wsl-ubuntu-12-1-local GPG key does not appear to be installed.
To install the key, run this command:
sudo cp /var/cuda-repo-wsl-ubuntu-12-1-local/cuda-F7B46061-keyring.gpg /usr/share/keyrings/

damon@damonmac:/opt$

报错解决

报错信息表明,在为WSL(Windows Subsystem for Linux)安装的CUDA包安装过程中,需要验证包完整性的公共GPG密钥没有被安装。这可能会影响到将来的更新或者包的信任度。

以下是解决这个问题的步骤:

安装GPG密钥:错误信息中已经提供了一个命令,这个命令会将GPG密钥从CUDA包的安装目录复制到系统目录中,以便包管理系统使用这个密钥来验证CUDA包。在您的终端中运行以下命令:

sudo cp /var/cuda-repo-wsl-ubuntu-12-1-local/cuda-F7B46061-keyring.gpg /usr/share/keyrings/

更新包列表:安装密钥后,更新包列表是一个好主意,以确保所有的仓库都是最新的:

sudo apt update

然后重新安装即可。

报错2 内存不足导致安装崩溃

问题描述

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
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-wsl-ubuntu-12-1-local_12.1.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-1-local_12.1.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

在执行上述安装时,运行 “sudo apt-get -y install cuda”,出现wsl闪退情况。

问题分析

出现上述问题,可能有以下情况

  1. 系统资源不足:CUDA安装是一个资源密集型的过程,需要大量的内存和处理能力。如果系统资源(如RAM或CPU)不足,这可能导致系统过载和崩溃。
  2. 驱动程序冲突:CUDA安装涉及到显卡驱动,如果已安装的驱动与CUDA不兼容,或者驱动安装不正确,可能会引起系统稳定性问题。
  3. 硬件问题:某些硬件问题,如故障的内存条或不稳定的电源供应,可能在资源要求高的操作中显现出来。
  4. 软件冲突:系统中可能有其他软件或服务与CUDA安装过程中的某些步骤冲突,导致系统崩溃。
  5. 磁盘空间不足:如果您的系统磁盘空间不足,安装过程中可能会因为没有足够空间而失败,有时这也可能导致系统崩溃。

通过查看系统日志文件(‘/var/log/syslog’),发现是内存导致的崩溃。

下面是syslog日志中最后部分内容

...
May 10 14:04:35 damonmac systemd[445]: Stopped Sound Service.
May 10 14:04:35 damonmac systemd[445]: Starting Sound Service...
May 10 14:04:35 damonmac pulseaudio[478]: Failed to open PID file '/run/user/1000/pulse/pid': Too many levels of symbolic links
May 10 14:04:35 damonmac pulseaudio[478]: pa_pid_file_create() failed.
May 10 14:04:35 damonmac systemd[445]: pulseaudio.service: Main process exited, code=exited, status=1/FAILURE
May 10 14:04:35 damonmac systemd[445]: pulseaudio.service: Failed with result 'exit-code'.
May 10 14:04:35 damonmac systemd[445]: Failed to start Sound Service.
May 10 14:04:35 damonmac systemd[445]: pulseaudio.service: Scheduled restart job, restart counter is at 5.
May 10 14:04:35 damonmac systemd[445]: Stopped Sound Service.
May 10 14:04:35 damonmac systemd[445]: pulseaudio.service: Start request repeated too quickly.
May 10 14:04:35 damonmac systemd[445]: pulseaudio.service: Failed with result 'exit-code'.
May 10 14:04:35 damonmac systemd[445]: Failed to start Sound Service.
May 10 14:04:35 damonmac systemd[445]: pulseaudio.socket: Failed with result 'service-start-limit-hit'.
May 10 14:05:03 damonmac systemd[1]: systemd-timedated.service: Deactivated successfully.
May 10 14:05:19 damonmac kernel: [   48.978120] hv_balloon: Max. dynamic memory size: 16236 MB

问题解决

在WSL(Windows Subsystem for Linux)中使用Hyper-V的动态内存功能来调整内存使用,通常需要通过Windows的设置进行管理。以下是一些步骤和建议如何在WSL中调整虚拟内存:

调整Windows的Hyper-V设置

  • 打开Windows的“控制面板”。
  • 选择“程序和功能”,然后点击“启用或关闭Windows功能”。
  • 在弹出的窗口中找到并展开“Hyper-V”,确保相关的所有选项都被选中,特别是“Hyper-V管理工具”和“Hyper-V平台”。

在这里插入图片描述

在这里插入图片描述

使用WSL命令调整内存

WSL2 允许用户在.wslconfig文件中配置虚拟机的内存限制。这个文件位于您的Windows用户目录下(例如C:\Users\YourUsername.wslconfig)。
若没有此文件,可以创建或修改这个文件,并添加如下设置来调整内存:

[wsl2]
memory=16GB  # 设置WSL可用的最大内存

调整完毕后,保存文件并重启WSL(可以通过命令wsl --shutdown在Windows命令提示符中执行)

在这里插入图片描述

damon@damonmac:~$ free -m
               total        used        free      shared  buff/cache   available
Mem:           15848         550       14893           3         405       15036
Swap:           4096           0        4096
damon@damonmac:~$

重新安装,成功。


WSL2 Ubuntu安装NVIDIA cuDNN深度学习库

官网下载

cuDNN Downloads 默认安装最新的。

在这里插入图片描述

cuDNN Archive 在这里选择其他版本

安装步骤

下载cuDNN安装包

打开终端并使用wget命令下载cuDNN的Debian包:

wget https://developer.download.nvidia.com/compute/cudnn/9.1.1/local_installers/cudnn-local-repo-ubuntu2204-9.1.1_1.0-1_amd64.deb

安装下载的包

使用dpkg命令安装下载的Debian包:

sudo dpkg -i cudnn-local-repo-ubuntu2204-9.1.1_1.0-1_amd64.deb

安装GPG密钥

将cuDNN仓库的GPG密钥复制到系统的keyrings目录以便APT可以验证包的真实性:

sudo cp /var/cudnn-local-repo-ubuntu2204-9.1.1/cudnn-*-keyring.gpg /usr/share/keyrings/

更新软件源

更新APT的软件源,确保cuDNN的仓库已被包含:

sudo apt-get update

安装cuDNN

根据需要安装的CUDA版本,选择对应的cuDNN包进行安装:

对于CUDA 11

sudo apt-get -y install cudnn-cuda-11

对于CUDA 12

sudo apt-get -y install cudnn-cuda-12

验证是否可以GPU加速

pip3 install torch torchvision torchaudio
import torch
print(torch.cuda.is_available())

输出为 True 即表示 CUDA GPU 加速成功

卸载cudnn

sudo apt-get remove --autoremove libcudnn*

sudo rm /usr/local/cuda/include/cudnn*.h
sudo rm /usr/local/cuda/lib64/libcudnn*

WSL2 Ubuntu安装NVIDIA cuDNN深度学习库 2

cuDNN Archive 下载tar压缩包
在这里插入图片描述

下载完成后执行如下命令安装

tar -xvf cudnn-linux-$arch-8.x.x.x_cudaX.Y-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include 
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

注意修改上述命令中的文件名,并替换x.x.x,X.Y为具体的版本号,如本文实际执行命令为:

tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include 
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

pytorch安装

官网
在这里插入图片描述

pip3 install torch torchvision torchaudio

安装libtorch

在这里插入图片描述

https://download.pytorch.org/libtorch/cu121/libtorch-cxx11-abi-shared-with-deps-2.3.0%2Bcu121.zip

参考

WSL安装Anaconda

Win10自定义路径位置安装WSL2 (Ubuntu 20.04) 并配置CUDA

[yotroy.cool]WSL安装CUDA独显 PyTorch 深度学习环境配置,测速为什么要用WSL?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1662907.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VMware虚拟机中ubuntu使用记录(8)—— 如何在Ubuntu18.04中安装运行非ROS版本的ORB_SLAM3跑官方数据集(全程手把手教学安装)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 ORB_SLAM3的介绍一、gitee下载ORB_SLAM3源码1. gitee导入gitHub仓库 二、安装支持C特性依赖三、安装Pangolin1. 安装Pangolin的依赖2. 下载编译 四、安装Eigen31.下…

java-spring 09 下.populateBean (方法成员变量的注入@Autowird,@Resource)

01.在populateBean 方法中的&#xff1a;用于Autowird&#xff0c;Resource注入 // 后处理器已经初始化boolean hasInstAwareBpps hasInstantiationAwareBeanPostProcessors();// 需要依赖检查boolean needsDepCheck (mbd.getDependencyCheck() ! AbstractBeanDefinition.DEP…

基于FPGA的数字信号处理(11)--定点数的舍入模式(2)向最临近值取整nearest

前言 在之前的文章介绍了定点数为什么需要舍入和几种常见的舍入模式。今天我们再来看看另外一种舍入模式&#xff1a;向最临近值取整nearest。 10进制数的nearest nearest&#xff1a; 向最临近值方向取整。它的舍入方式和四舍五入非常类似&#xff0c;都是舍入到最近的整数…

【电路笔记】-无源高通滤波器

无源高通滤波器 文章目录 无源高通滤波器1、概述2、一阶高通滤波器的频率响应3、高通滤波器示例4、二阶高通滤波器5、RC 差异化因素高通滤波器与低通滤波器电路完全相反,因为这两个组件已互换,滤波器输出信号现在从电阻器两端获取。 1、概述 由于低通滤波器只允许低于其截止…

【论文合集1】- 存内计算加速机器学习

本章节论文合集&#xff0c;存内计算已经成为继冯.诺伊曼传统架构后&#xff0c;对机器学习推理加速的有效解决方案&#xff0c;四篇论文从存内计算用于机器学习&#xff0c;模拟存内计算&#xff0c;对CNN/Transformer架构加速角度阐述存内计算。 【1】WWW: What, When, Where…

C# OpenCvSharp Demo - 棋盘格相机标定

C# OpenCvSharp Demo - 棋盘格相机标定 目录 效果 项目 代码 下载 效果 项目 代码 using OpenCvSharp; using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.Text; using Sys…

2019年计算机真题

2019年计算机真题 离散数学 一、用逻辑符号表达下列语句(论域为包含一切事物的集合) 1&#xff09;过平面上的两个点&#xff0c;有且仅有一条直线通过。 解: (1) P ( x , y ) : x , y \mathrm{P}_{(\mathrm{x}, \mathrm{y})}: \mathrm{x}, \mathrm{y} P(x,y)​:x,y 是平面上的…

线性表

1.1线性表的定义 线性表&#xff1a;零个或多个数据元素的有限序列。 注&#xff1a; &#xff08;1&#xff09;它是一个序列。元素之间是有顺序的&#xff0c;若元素存在多个&#xff0c;则第一个元素无前驱&#xff0c;最后一个元素无后继&#xff0c;其他元素有且只有一个…

SpringBoot 使用logback(多环境配置)

Logback是由log4j创始人设计的又一个开源日志组件。可用于项目日志功能。官网地址 第1步&#xff1a;添加坐标依赖 <!--logback--> <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version…

该问题未得到解决(仅记录)

https://releases.ubuntu.com/bionic/进入网页下载ubuntu 选择烧录软件将下载的Ubuntu烧录到U盘中 之前用这个U盘烧录过一次&#xff0c;成功了&#xff0c;后来应该是U盘受损或者是什么其他原因使得用这个U盘总是烧录失败

网安面经之xss漏洞

目录 一、XSS漏洞 1、xss漏洞原理与危害 2、xss的类型&#xff1f;区别&#xff1f;修复&#xff1f; 3、常见使用的标签&#xff0c;payload构造 一、XSS漏洞 1、xss漏洞原理与危害 原理&#xff1a;xss就是跨站脚本攻击漏洞&#xff0c;也可以理解为前端的代码注入&…

数字人金融应用技术指南

根据《北京金融科技产业联盟团体标准管理办法》的规定&#xff0c;2024年3月27日经北京金融科技产业联盟第三届理事会第二次会议审议&#xff0c;批准发布《数字人金融应用技术指南》&#xff08;T/BFIA 027—2024&#xff09;、《图数据库金融应用技术要求》&#xff08;T/BFI…

医院转型新突破:精益六西格玛助力管理费大降13%,业务飙升26%

近年来&#xff0c;越来越多的医院开始尝试引入精益六西格玛管理模式&#xff0c;以期实现管理费的降低和业务量的增长。那么&#xff0c;精益六西格玛模式真的有这么牛吗&#xff1f;深圳天行健六西格玛培训公司将从实践角度出发&#xff0c;探讨精益六西格玛如何助力医院实现…

GAME101-Lecture06学习

前言 上节课主要讲的是三角形的光栅化。重要的思想是要利用像素的中心对三角形可见性的函数进行采样。 这节课主要就是反走样。 课程链接&#xff1a;Lecture 06 Rasterization 2 (Antialiasing and Z-Buffering)_哔哩哔哩_bilibili 反走样引入 ​ 通过采样&#xff0c;得到…

Vuex核心概念-state状态

目录 一、目标 二、提供数据 三、使用数据 1.通过store直接访问 2.通过辅助函数&#xff08;简化&#xff09; 一、目标 明确如何给仓库提供数据&#xff0c;如何使用仓库的数据 二、提供数据 State提供唯一的公共数据源&#xff0c;所有共享的数据都要统一放到Store中的…

了解 条码工具 Dynamsoft 在条码读取器中的形态运算

在图像处理中&#xff0c;术语形态学是指分析形状以填充小孔、去除噪声、提取轮廓等的一组操作。形态学操作很像空间卷积中的过滤过程。有两个部分在起作用&#xff1a;结构元素和预定义的计算规则。 点击下载Dynamsoft最新版https://www.evget.com/product/3691/download 结…

C#上位机1ms级高精度定时任务

precisiontimer 安装扩展包 添加引用 完整代码 using PrecisionTiming;using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; us…

Java数组(二)

Java数组&#xff08;二&#xff09; 1、多维数组 多维数组可以看成是数组的数组&#xff0c;比如二维数组就是一个特殊的一维数组&#xff0c;其每一个元素都是一个一维数组。二维数组 int a[][] new int[2][5];解析&#xff1a;以上二维数组a可以看成一个两行五列的数组。…

七、Redis三种高级数据结构-HyperLogLog

Redis HyperLogLog是用来做基数统计的算法&#xff0c;HyperLogLog在优点是&#xff0c;在输入的元素的数量或者体积非常大时&#xff0c;计算基数占用的空间总是固定的、并且非常小。在Redis里每个HyperLogLog键只需花费12KB内存&#xff0c;就可以计算接近 264 个元素的基数。…

政安晨【零基础玩转各类开源AI项目】:基于Ubuntu系统本地部署使用GPT-SoVITS进行语音克隆与TTS语音生成

目录 介绍 什么是TTS 安装Miniconda 框架功能 测试通过的环境 开始 1. 安装好miniconda 2. 进入下载的GPT-SoVITS目录 3. 创建虚拟环境并执行脚本 4. 执行过程中可能会出错 5. 下载预训练模型 6. 训练过程中可能会报错 7. 使用过程中可能出错 8.以下是使用全过程…