当前位置: 首页 > article >正文

WSL2 + Ubuntu 20.04 + CUDA 11.4 配置全攻略:告别双系统玩转深度学习

WSL2 Ubuntu 20.04 CUDA 11.4 配置全攻略告别双系统玩转深度学习在Windows系统上进行深度学习开发传统方案往往需要安装双系统或虚拟机既占用磁盘空间又影响性能。如今随着WSL2的成熟和CUDA对WSL2的支持开发者可以在Windows上获得接近原生Linux的开发体验。本文将详细介绍如何在WSL2中配置Ubuntu 20.04和CUDA 11.4环境让你无需双系统也能高效进行深度学习开发。1. 环境准备与系统要求1.1 硬件与软件需求在开始配置前请确保你的设备满足以下基本要求Windows版本Windows 10 2004内部版本19041或更高或Windows 11显卡NVIDIA显卡支持CUDA计算内存建议16GB或以上深度学习模型训练对内存要求较高存储空间至少20GB可用空间用于安装Ubuntu和CUDA工具包提示可通过WinR输入winver查看Windows版本和内部版本号。1.2 启用Windows功能WSL2需要启用以下Windows功能以管理员身份打开PowerShell执行以下命令dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart重启计算机使更改生效2. 安装与配置WSL22.1 安装WSL2内核更新微软提供了专门的WSL2内核更新包需要手动下载安装访问微软官方WSL2安装页面下载并运行适用于你系统架构的更新包x64或ARM64设置WSL2为默认版本wsl --set-default-version 22.2 安装Ubuntu 20.04 LTS打开Microsoft Store搜索Ubuntu 20.04 LTS并安装安装完成后从开始菜单启动Ubuntu首次启动会提示创建用户名和密码无需与Windows账户相同2.3 优化WSL2配置为了提高WSL2的性能建议进行以下配置创建或编辑%USERPROFILE%\.wslconfig文件添加以下内容[wsl2] memory8GB processors4 swap4GB localhostForwardingtrue重启WSL以使配置生效wsl --shutdown3. 配置CUDA环境3.1 安装Windows端NVIDIA驱动在WSL2中使用CUDA需要先在Windows端安装特定驱动访问NVIDIA CUDA on WSL驱动下载页面选择与你的显卡匹配的最新驱动版本下载安装安装完成后重启计算机3.2 在Ubuntu中安装CUDA Toolkit更新Ubuntu软件包索引sudo apt update sudo apt upgrade -y安装CUDA Toolkit 11.4针对Ubuntu 20.04wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub sudo add-apt-repository deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ / sudo apt update sudo apt install -y cuda-toolkit-11-4将CUDA路径添加到环境变量echo export PATH/usr/local/cuda-11.4/bin${PATH::${PATH}} ~/.bashrc echo export LD_LIBRARY_PATH/usr/local/cuda-11.4/lib64${LD_LIBRARY_PATH::${LD_LIBRARY_PATH}} ~/.bashrc source ~/.bashrc3.3 验证CUDA安装检查NVIDIA驱动是否可用nvidia-smi检查CUDA编译器是否正常工作nvcc --version运行简单的CUDA示例程序cd /usr/local/cuda-11.4/samples/1_Utilities/deviceQuery sudo make ./deviceQuery如果看到Result PASS说明CUDA环境配置成功。4. 深度学习框架安装与测试4.1 安装Miniconda推荐使用Miniconda管理Python环境wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh按照提示完成安装后初始化condasource ~/.bashrc4.2 创建并激活虚拟环境conda create -n dl python3.8 -y conda activate dl4.3 安装PyTorch with CUDA支持conda install pytorch torchvision torchaudio cudatoolkit11.3 -c pytorch注意PyTorch官方提供的CUDA 11.3版本与CUDA 11.4兼容无需担心版本差异。4.4 测试PyTorch GPU支持启动Python解释器并执行以下代码import torch print(torch.cuda.is_available()) # 应返回True print(torch.cuda.get_device_name(0)) # 显示你的GPU型号5. 图形界面与开发工具配置5.1 安装GNOME桌面环境虽然WSL2主要面向命令行使用但有时图形界面也很必要安装GNOME桌面核心组件sudo apt install ubuntu-desktop gnome-terminal -y安装X服务器客户端Windows端推荐使用VcXsrv安装后启动XLaunch选择Multiple windowsDisplay number设为0勾选Disable access control配置Ubuntu端的DISPLAY环境变量echo export DISPLAY$(grep nameserver /etc/resolv.conf | awk {print $2}):0 ~/.bashrc echo export XDG_SESSION_TYPEx11 ~/.bashrc source ~/.bashrc启动GNOME桌面sudo service dbus start gnome-session5.2 配置VS Code远程开发在Windows上安装VS Code和Remote - WSL扩展在WSL终端中输入code .启动VS Code并自动安装WSL服务器组件安装Python、Pylance等扩展享受完整的开发体验6. 常见问题与解决方案6.1 CUDA安装失败问题sudo apt install cuda-toolkit-11-4失败提示依赖问题解决方案清理apt缓存并重试sudo apt clean sudo apt update --fix-missing如果问题依旧尝试更换软件源sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sudo apt update6.2 nvidia-smi命令无输出问题在WSL中执行nvidia-smi没有输出解决方案确保Windows端已安装正确的NVIDIA驱动重启WSLwsl --shutdown检查Windows服务NVIDIA LocalSystem Container是否正在运行6.3 内存不足问题问题训练大型模型时内存不足解决方案调整.wslconfig中的内存限制使用更小的batch size考虑使用混合精度训练减少内存占用7. 性能优化技巧文件系统性能将项目文件存储在WSL文件系统中\\wsl$\而非Windows文件系统GPU利用率监控使用watch -n 0.5 nvidia-smi实时监控GPU使用情况多GPU训练PyTorch自动支持多GPU数据并行只需确保CUDA_VISIBLE_DEVICES环境变量设置正确Docker支持WSL2支持Docker可以方便地部署预配置的深度学习环境curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USERJupyter Notebook配置在WSL中运行Jupyter Notebook通过Windows浏览器访问jupyter notebook --ip0.0.0.0 --no-browser在Windows浏览器中打开http://localhost:8888即可访问

相关文章:

WSL2 + Ubuntu 20.04 + CUDA 11.4 配置全攻略:告别双系统玩转深度学习

WSL2 Ubuntu 20.04 CUDA 11.4 配置全攻略:告别双系统玩转深度学习 在Windows系统上进行深度学习开发,传统方案往往需要安装双系统或虚拟机,既占用磁盘空间又影响性能。如今,随着WSL2的成熟和CUDA对WSL2的支持,开发者…...

用Python+akshare打造你的专属选股工具:从数据获取到邮件提醒全流程

用Pythonakshare打造智能选股系统:从数据采集到策略落地的完整指南 在信息爆炸的时代,股票投资者面临的最大挑战不是数据不足,而是如何从海量数据中快速准确地识别出符合自己投资策略的优质标的。传统的手工筛选方式不仅效率低下,…...

DAMO-YOLO在软件测试中的自动化视觉验证

DAMO-YOLO在软件测试中的自动化视觉验证 1. 引言 在软件测试领域,UI界面的视觉验证一直是个耗时耗力的环节。传统的测试方法需要人工检查每个界面元素的位置、大小、颜色和内容,不仅效率低下,还容易出错。随着软件迭代速度的加快&#xff0…...

MinIO容器化部署实战:从安装到访问的完整流程(含常见错误修复)

MinIO容器化部署实战:从安装到访问的完整流程(含常见错误修复) 在当今数据驱动的时代,对象存储已成为现代应用架构中不可或缺的一环。MinIO作为高性能、兼容S3协议的开源对象存储解决方案,凭借其轻量级和易部署特性&am…...

蓝桥杯算法实战:DFS解剪邮票问题全解析

1. 剪邮票问题背景与核心挑战 邮票排列问题本质上是一个二维矩阵的连通性检测问题。想象你面前有一张3行4列的邮票板,就像小时候玩的拼图板。我们需要从中剪下5张连在一起的邮票,这里的"相连"指的是上下左右相邻,斜对角不算。这听起…...

GaussDB 安装与配置全攻略:从环境准备到远程连接

1. 环境准备:避开那些新手必踩的坑 第一次装GaussDB时,我在CPU指令集上栽了大跟头。当时系统报错死活找不到原因,后来才发现是rdtscp指令集缺失。这个坑我帮你们踩过了——先运行这条命令检查CPU支持情况: cat /proc/cpuinfo | gr…...

DeepSeek-OCR-2效果惊艳:复杂文档识别准确率超91%,实测展示

DeepSeek-OCR-2效果惊艳:复杂文档识别准确率超91%,实测展示 1. 突破性的OCR识别能力 1.1 技术架构创新 DeepSeek-OCR-2采用了创新的DeepEncoder V2方法,彻底改变了传统OCR从左到右机械扫描的工作方式。这个模型能够智能理解图像内容&#…...

从零理解USB同步传输:为什么音频设备离不开无握手包设计?

从零理解USB同步传输:为什么音频设备离不开无握手包设计? 当你在享受一场沉浸式音乐会时,是否曾思考过那些流畅的音频信号是如何从设备传输到耳机的?这背后隐藏着一个精妙的设计哲学——USB同步传输的无握手包机制。对于音视频设备…...

ZYNQ SD卡驱动与FATFS文件系统实战:从硬件配置到数据读写

1. ZYNQ SD卡硬件配置实战 第一次在ZYNQ上折腾SD卡时,我对着原理图发呆了半小时——Bank电压设错直接导致TF卡无法识别。这个坑我踩过,现在把完整配置流程分享给你。ZYNQ的SD控制器位于PS端,通过MIO引脚连接,最关键的是Bank501&am…...

时序数据库管理利器:DBeaver+TDengine实战配置全解析

时序数据库管理利器:DBeaverTDengine实战配置全解析 时序数据正成为物联网、金融交易和工业监控等领域的核心资产。面对高频产生的传感器读数、设备状态和交易记录,传统关系型数据库往往力不从心。TDengine作为专为时序场景优化的分布式数据库&#xff0…...

衡山派开发板红外编解码模块驱动移植与NEC协议应用实战

衡山派开发板红外编解码模块驱动移植与NEC协议应用实战 最近在做一个智能家居项目,需要控制家里的空调和电视,红外遥控是最直接的方案。正好手头有衡山派开发板和一个红外编解码模块,今天就来分享一下如何把这个模块的驱动移植到衡山派开发板…...

SUNFLOWER MATCH LAB在STM32嵌入式设备上的轻量化部署实践

SUNFLOWER MATCH LAB在STM32嵌入式设备上的轻量化部署实践 最近在做一个智能农业的小项目,需要让设备能自己识别田里的植物,比如区分杂草和作物。一开始想着用树莓派或者Jetson Nano这类板子,但考虑到田间部署的成本、功耗和稳定性&#xff…...

Python+Ollama构建本地AI文档分析流水线:从PDF智能解析到结构化Excel输出

1. 为什么需要本地AI文档分析流水线 在日常工作中,我们经常会遇到需要处理大量PDF文档的场景。比如市场部门需要分析竞品报告,法务团队要审阅合同文件,研究部门要整理学术论文。传统的人工处理方式不仅效率低下,而且容易出错。我曾…...

Qwen-Ranker Pro入门必看:如何评估重排序效果——NDCG@5指标计算示例

Qwen-Ranker Pro入门必看:如何评估重排序效果——NDCG5指标计算示例 当你辛辛苦苦搭建了一个检索系统,用上了最新的Qwen-Ranker Pro进行语义重排序,看着搜索结果好像更相关了。但心里总有个疑问:“这个重排序到底有没有用&#x…...

智能排障:结合快马多模型ai,为openclaw本地部署难题提供实时解决方案

最近在尝试本地部署OpenClaw这个项目时,遇到了不少麻烦。依赖版本冲突、环境变量设置不对、特定模块缺失……这些问题一个个冒出来,调试过程相当耗时。作为一个开发者,我就在想,如果能有一个智能助手,在我遇到问题时&a…...

Systemd守护Qt GUI程序:从崩溃自恢复到开机自启全攻略

1. 为什么需要Systemd守护Qt GUI程序? 在嵌入式或国产化操作系统环境中,Qt开发的图形界面程序经常需要作为核心应用持续运行。但实际部署时会遇到两个典型问题:一是程序崩溃后无法自动恢复,二是系统重启后无法自动启动GUI界面。传…...

Local Moondream2企业级部署:数据零上传、模型全本地、权限可管控

Local Moondream2企业级部署:数据零上传、模型全本地、权限可管控 想不想给你的电脑装上一双“眼睛”?让它能看懂图片,还能跟你聊图片里的内容。今天要介绍的Local Moondream2,就是这样一个超轻量级的视觉对话工具。它最大的特点…...

从广播到连接:深入解析蓝牙协议栈核心层与应用场景

1. 蓝牙协议栈的骨架:从广播到连接的底层逻辑 当你用手机连接智能手环时,背后其实上演着一场精密的无线电芭蕾。蓝牙协议栈就像分层的交通系统:物理层是柏油马路,链路层是交通信号灯,而L2CAP层则是立交桥。我调试BLE设…...

中文科技报道智能组织:BERT文本分割模型在财经媒体内容管理系统中的应用

中文科技报道智能组织:BERT文本分割模型在财经媒体内容管理系统中的应用 1. 项目背景与价值 在财经媒体行业,每天都会产生大量的新闻报道、市场分析、财报解读等专业内容。这些内容往往篇幅较长,结构复杂,给读者的阅读体验和信息…...

若依框架实战:基于Mybatis与ruoyi-vue实现OA系统一对一关联查询

1. 从零开始理解一对一关联查询 刚接触OA系统开发时,我最头疼的就是各种表单之间的数据关联。比如立项申请需要关联具体项目信息,每次都要来回切换页面查询,效率特别低。后来发现Mybatis的一对一关联查询能完美解决这个问题,今天就…...

量子城域网实战解析(一):政务云场景下的量子密钥分发组网与效能评估

1. 政务云为何需要量子密钥分发技术 政务云作为承载政府核心业务的数据平台,每天要处理大量敏感信息。想象一下,如果这些数据在传输过程中被窃取或篡改,后果会有多严重?传统的加密方式虽然能提供基础保护,但随着计算能…...

RePKG技术指南:Wallpaper Engine资源处理利器完全掌握

RePKG技术指南:Wallpaper Engine资源处理利器完全掌握 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 一、问题导入:当壁纸资源处理遇到挑战 你是否曾面临这…...

百度网盘非会员提速秘籍:Ubuntu下bypy与aria2的参数调优实战

百度网盘非会员提速秘籍:Ubuntu下bypy与aria2的参数调优实战 在Linux环境下使用百度网盘一直是个痛点——官方未提供原生客户端,网页版操作效率低下,而第三方工具的性能往往难以保障。对于Ubuntu用户而言,如何在不依赖会员特权的情…...

汽车安全传感器的幕后英雄:PSI5协议如何用两根线搞定供电+数据传输?

PSI5协议:汽车安全传感器的双线制智能通信方案 在汽车电子系统中,传感器网络的可靠性与布线复杂度一直是工程师面临的核心挑战。当安全气囊、碰撞检测等关键系统需要在严苛环境下稳定工作时,传统多线制方案的局限性日益凸显。PSI5&#xff08…...

VMware重装还搞不定虚拟网卡?这份Windows系统级修复指南你可能需要

VMware虚拟网卡失效?Windows系统级深度修复指南 每次打开VMware准备调试环境时,发现虚拟网卡莫名消失,那种感觉就像厨师走进厨房发现灶台不见了。重装软件这种"万能解法"在这里往往失效,因为问题可能深藏在Windows系统机…...

Ubuntu22.04上ROS1 Noetic安装避坑指南:从编译报错到完美运行

Ubuntu 22.04上ROS1 Noetic终极安装指南:解决C17兼容性与系统级配置难题 当Ubuntu 22.04成为主流开发环境时,许多机器人开发者面临一个尴尬局面:官方支持的ROS1 Noetic仅兼容到Ubuntu 20.04。本文将揭示如何突破这一限制,通过系统…...

立创EDA开源项目:LED-编码器交互模块设计与8种显示模式详解

立创EDA开源项目:LED-编码器交互模块设计与8种显示模式详解 大家好,最近在做一个需要旋钮调节和状态指示的项目,发现市面上的编码器要么只有旋钮功能,要么指示灯太简单。后来在立创开源平台找到了一个非常酷的项目——LED-编码器&…...

OpenClaw(龙虾)秒级部署指南及安全避坑手册

2026年初,OpenClaw(昵称“龙虾”)火爆全网!它究竟是什么?有什么用?又该怎么部署?本文将为大家详细解读OpenClaw,包括基础定义、功能场景、部署教程以及安全避坑手册,助力…...

Ollama部署Llama-3.2-3B避坑指南:常见问题与解决方案

Ollama部署Llama-3.2-3B避坑指南:常见问题与解决方案 1. 模型介绍与环境准备 1.1 Llama-3.2-3B模型概述 Llama-3.2-3B是Meta公司开发的多语言大型语言模型,属于Llama 3.2系列中的3B参数版本。这个纯文本模型经过指令微调优化,特别适合多语…...

Navicat数据同步实战:从单向合并到双向协同

1. Navicat数据同步基础入门 第一次接触Navicat的数据同步功能时,我完全被它的便捷性震惊了。记得当时需要把测试环境的数据同步到开发环境,手动导出导入不仅耗时还容易出错。Navicat的数据同步功能就像个智能搬运工,能自动识别数据差异并精准…...