新!在 podman-machine-default 中安装 CUDA、cuDNN、Anaconda、PyTorch 等并验证安装
#工作记录
一、前言
在 Windows 系统开发环境中,Podman Desktop 凭借强大的容器管理与 WSL-Linux 子系统集成能力备受开发者关注。
其中,podman-machine-default 是 Podman Desktop 安装后自带的默认 WSL-Fedora 子系统,支持与显卡通信,可用于搭建深度学习环境及部署 AI 项目。
解锁新技能!Windows 11 借助 WSL - Linux 部署 GitHub 项目全攻略_wsl github-CSDN博客
但需注意,该默认子系统仅允许操作用户权限,无 root 权限。
若需 root 权限进行系统级操作,可在 Podman Desktop 图形界面点击 “Create Podman machine”新建 Podman machine 子系统,并在创建时设置授予 root 权限:
同时,podman-machine-default 作为默认环境,操作时需格外谨慎,一旦出现崩溃,可能影响 Podman Desktop 正常功能。
当崩溃发生,可通过 Podman Desktop 图形界面先停止 podman-machine-default,再执行删除操作,随后点击 “开始并初始化”,即可将其恢复至初始空白状态。
在 Windows Subsystem for Linux(WSL)环境下,CUDA、cuDNN、Anaconda 及 PyTorch 等工具安装流程虽大体相似,但因 Linux 发行版差异,安装命令与软件包细节会有不同,常导致安装受阻。
podman-machine-default还能便捷地在Podman Desktop设置中开启ssh远程连接的支持:
本文通过详细回测与重现,记录安装全过程,为开发者提供参考。
借助 Podman Desktop 的容器功能与 WSL-Linux 子系统结合,特别是利用基于 Fedora Linux 41 的开发环境,可高效部署不兼容 Windows 的 AI 项目。
当然,这里只是记述了Podman Desktop的其中一种用法,并非推荐用法,请注意按实际需要调整 WSL-Linux的实现方式。
本文将完整呈现安装配置过程,帮助开发者规避常见错误,顺利搭建podman-machine-default开发环境。
原本只想在安装配置成功后记录一个简洁版本的,后来回测的时候发现出错概率太高了,所以就把podman-machine-default中实现深度学习环境搭建的记录,按回测、排查错误、重现的过程完整记录下来,供大家参考。
Podman Desktop:现代轻量容器管理利器(Podman与Docker)-CSDN博客
PyCharm 链接 Podman Desktop 的 podman-machine-default Linux 虚拟环境-CSDN博客
二、安装前的准备:
(一)类似流程的搭建方法请参考:
在 Windows 11 下的 WSL - Ubuntu 24.04 中安装 CUDA 的记录_cuda-wsl-ubuntu.pin-CSDN博客
Windows 11 系统下,通过 WSL(Windows Subsystem for Linux)里的 Ubuntu 24.04 安装 CUDNN 记录_wsl cudnn-CSDN博客
在 Windows 11 下的 WSL - Ubuntu 24.04 中安装 Anaconda3_wsl2 ubuntu 24.04 anaconda-CSDN博客
在 Windows 11 下的 WSL - Ubuntu 24.04 中安装 Torch 的记录_ubuntu24.04 python3.12 国内源安装 torch-CSDN博客
在WSL2-Ubuntu中安装CUDA12.8、cuDNN、Anaconda、Pytorch并验证安装_cuda 12.8 pytorch版本-CSDN博客
(二)安装前的检查及安装步骤简录:
1、安装前检查(Windows主系统)
Window主系统上应准备好或安装好:
(1)通畅的网络环境
准备好代理网络,稳定通畅的网络环境十分重要。
(2)最新的NVIDIA显卡驱动
下载 NVIDIA 官方驱动 | NVIDIA
(3)指定的Visual Studio版本
可以是社区版(免费)或专业版(试用后需要付费)及以上版本;
版本号要求:17.13以下版本(不包含17.13),因为在官方社区文档中,微软官方已确认17.13该版本与CUDA不兼容,会导致CUDA安装失败,并且经过测试,17.14版本也没有得到修复。
新系统安装CUDA12.8卡在installing Nsight visual studio edtion界面不动的解决方案_cuda12.8安装失败-CSDN博客
(4)最新的CUDA版本
CUDA 工具包 12.8 Update 1 下载 |NVIDIA 开发人员
目前最新的是CUDA12.812.8 Update 1;
Window主系统上已安装的CUDA版本号应大于或等于WSL中要安装的版本;
CUDA从12.6版开始,能自动更新环境变量和管理系统上之前的旧版本,CUDA的.exe安装包在安装时会自动检测并卸载旧版本。
温馨提示:为避免生产环境受影响,请注意对系统上的虚拟环境进行备份!
好消息,最新CUDA和cuDNN安装,俩都可以用exe安装包直装了 CUDA12.6.3和cuDNN9.6.0 Windows系统 省事_cuda最新版本-CSDN博客
(5)最新的cuDNN版本
cuDNN 9.8.0 Downloads | NVIDIA Developer
目前最新的是cuDNN 9.8.0;
从9.7.X版本开始,下载cuDNN已经无需注册登录了,可以直接下载;
下载最新的cuDNN版本,目前最新的cuDNN可以通过.exe文件来安装,该.exe安装包安装后会自动匹配已安装的CDUA进行安装cuDNN;
在Linux下通过命令安装,也是会自动匹配CUDA来安装cuDNN版本,这就是为什么明明指定安装的是9.8.0版本的cuDNN,但安装完成后验证时,显示的却是cuDNN其他版本号的原因之一。
验证PyTorch深度学习环境Torch和CUDA还有cuDNN是否正确配置的命令_验证pytorch和cuda的命令-CSDN博客
(6)正确安装并稳定运行的WSL-Linux子系统
Windows Subsystem for Linux - Microsoft Apps 应用商店
安装 WSL | Microsoft Learn 官方文档
关于WSL稳定运行的几点建议:
A、建议C盘空间尽量留大一点;
可以把硬盘留一些未分配的隐藏空间,方便后期用于C盘或其他盘符空间的扩容。
B、建议系统设置里“保存新内容的地方”保持默认的C盘;
设置——系统——储存——高级储存设置——保存新内容的地方——新的应用将保存到:
System (C:)
这里尽量保持默认的C盘,不要改动,因为查阅了大量资料和官方文档,微软官方目前也无法处理改动后的WSL启动错误和运行不稳定问题。
(此前我一直是把这里改到D盘,但后来实在是修复怕了,修复过程相当艰辛,往往需要查阅数百个网页和网友对话,还有一个是修复后的深度学习环境配置过程也比较耗时)
C、设置WSL的网络自动代理
不要直接去碰WSL的配置文件,而是通过下文中记述的用图形界面设置选项进行设置。
WLS2怎么设置网络自动代理_wls 网络模式解析-CSDN博客
WIN11 中已安装 LINUX 子系统出现 WSL 0x80071772 错误的解决方案_wslregisterdistribution failed with error: 0x80071-CSDN博客
排查适用于 Linux 的 Windows 子系统问题 | Microsoft Learn
超详细Windows10/Windows11 子系统(WSL2)安装Ubuntu20.04(带桌面环境)_wsl安装ubuntu20.04-CSDN博客
简单的WSL问题可以查阅相关疑难解答。
(7)正确安装并确定运行的Podman Desktop
Podman Desktop:现代轻量容器管理利器(Podman与Docker)-CSDN博客
Troubleshooting | Podman Desktop 故障排除
(8)Podman Desktop自带的podman-machine-default子系统
一般情况下这个不用手动安装,正常是安装Podman Desktop过程中,选中WSL和Hyper-V后自动生成的。
(9)安装Windows主系统上的其他必要程序或组件
这个范围比较广,包括但不限于上边提到的:NVIDIA显卡驱动程序、适用于Linux的Windows子系统(组件)、虚拟机平台(组件)、虚拟机监控平台(组件)、Hyper-V等(组件)、Visual Studio Community、CUDA、cuDNN、PyCharm Community、Git、GitHub Desktop、Podman Desktop、CMake、Visual Studio 生成工具、Microsoft C++ 生成工具、IncrediBuild等等程序或组件。
请根据实际情况有针对性地进行安装调试和配置。
2、安装步骤简记
A、先处理Window主系统里的必要程序或组件;
B、再处理WSL中的安装和相关问题:
(1)查询并确认系统版本和相关信息<podman-machine-default(WSL-Linux)>
cat /etc/os-release
(2)确认或处理系统GPU的支持情况<podman-machine-default(WSL-Linux)>
nvidia-smi
如果nvidia-smi输出失败,则需要另外的处理,将在下一章节中详细记录。
(3)安装对应系统的必要包和组件<podman-machine-default(WSL-Linux)>
如wget、curl、bash、nano等
(4)安装CUDA(使用官网命令在线安装)
试了官方提供的三种方法,其中在线安装(network)比较容易成功配置。
(5)配置CUDA的系统环境变量<podman-machine-default(WSL-Linux)>
打开系统环境变量编辑器;
粘贴添加变量内容(变量值);
关闭系统环境变量编辑器;
用命令使系统环境变量生效;
(6)验证CUDA的安装
nvcc -V
nvidia-smi
(7)确认安装 或 不安装NVIDIA 的开源驱动程序
如果上一步的命令执行后输出都没问题,则不要安装NVIDIA CUDA官网提供的开源驱动;
如果上一步的命令执行后输出有问题,则安装NVIDIA CUDA官网提供的开源驱动进行调试;
(8)安装cuDNN(使用官网命令本地安装)
试了官方提供的两种方法,其中本地安装(local)比较容易成功配置。
(9)验证cuDNN的系统环境变量
一般不用手动配置cuDNN的系统环境变量,因为cuDNN是安装到CUDA的目录中,在前边配置CUDA系统环境变量时,已经包含这些目录;
这一步是暂时性的检验cuDNN是否已被正确包含在系统环境变量中。
(10)暂时性地验证cuDNN的安装
通过简单的命令,暂时性的验证cuDNN的安装结果,后续会用专门的命令统一进行验证,因为python和有些库还没安装,所以统一验证的命令暂时还不能运用。
(11)安装Anaconda或Miniconda
用来管理python版本和conda虚拟环境
(12)安装PyTorch
通过安装PyTorch来检验podman-machine-default(WSL-Linux)对PyTorch GPU的支持。
(13)通过命令全面验证CUDA、cuDNN、Anaconda、PyTorch 等是否安装成功
全面验证podman-machine-default(WSL-Linux)的深度学习环境搭建情况
(14)安装Git
(15)验证Git的安装
(16)配置Git
(17)其他安装和配置(自定义/可选)…
如果顺利的话,流程至此,WSL-podman-machine-default的深度学习环境将基本搭建完毕!
三、详细的安装和配置步骤:
在本章中,我们将详细讲解如何在 podman-machine-default(WSL 环境中的 Fedora Linux 41)中安装 CUDA、cuDNN、Anaconda、PyTorch 等深度学习所需的软件包,并完成必要的环境配置。通过这些步骤,我们将能够在 Windows 系统下的容器化 Linux 环境中运行深度学习任务。
(一)查询并确认系统版本和相关信息<podman-machine-default(WSL-Linux)>
可以通过以下命令查询系统版本和相关信息:
打开系统里的podman-machine-default图标,进入podman-machine-default系统
运行以下命令查询系统相关信息:
cat /etc/os-release
(因为是回测重现,所以我截图中的终端显示是(base)虚拟环境,仅作展示,不影响后续操作)
或者是在pycharm终端中打开podman-machine-default虚拟机也是一样的效果:
这将显示系统的详细信息,例如:
输出内容摘录如下:
[user@AI ~]$ cat /etc/os-release
NAME="Fedora Linux"
VERSION="41 (Container Image)"
RELEASE_TYPE=stable
ID=fedora
VERSION_ID=41
VERSION_CODENAME=""
PLATFORM_ID="platform:f41"
PRETTY_NAME="Fedora Linux 41 (Container Image)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:41"
DEFAULT_HOSTNAME="fedora"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f41/system-administrators-guide/"
SUPPORT_URL="https://ask.fedoraproject.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=41
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=41
SUPPORT_END=2025-12-15
VARIANT="Container Image"
VARIANT_ID=container
[user@AI ~]$
从输出的 /etc/os-release
文件内容来看,我的系统是 Fedora Linux 41 (Container Image)。
这意味着我正在使用的是一个基于 Fedora Linux 41 的容器镜像版本。
以下是一些关键信息的总结:
1、系统版本信息
-
名称:Fedora Linux
-
版本:41 (Container Image)
-
发行版类型:Stable
-
ID:fedora
-
版本号:41
-
平台 ID:platform:f41
-
完整名称:Fedora Linux 41 (Container Image)
-
支持结束日期:2025-12-15
2、官方资源链接
-
主页:Fedora Linux | The Fedora Project
-
文档:https://docs.fedoraproject.org/en-US/fedora/f41/system-administrators-guide/
-
支持论坛:Ask Fedora - Fedora Discussion
-
Bug 报告:Red Hat Bugzilla Main Page
确认我们在 podman-machine-default 中运行的是 Fedora Linux 41,确保后续安装的包和驱动与系统版本兼容。
(二)确认或处理系统GPU的支持情况<podman-machine-default(WSL-Linux)>
在上一步中,我们确认了当前运行的podman-machine-default系统版本是 Fedora Linux 41。
然后需要确认一下podman-machine-default对系统GPU的支持情况。
在podman-machine-default中输入以下命令查询:
nvidia-smi
1、 状态一:输出正常
如果输出如下:
则表明此时podman-machine-default与Windows主系统的GPU通信是正常的,因为后边有些操作会导致掉驱动,所以我们在下边的文中会时不时再次使用该命令来确认podman-machine-default系统的GPU支持状态。
2、状态二:输出异常
如果输出是:
[user@AI ~]$ nvidia-smi
-bash: nvidia-smi: command not found
[user@AI ~]$ nvcc -V
-bash: nvcc: command not found
[user@AI ~]$
2.1、 输出异常command not found的解决方案:
-bash: nvidia-smi: command not found
-bash: nvcc: command not found
2.1.1分析可能的原因:
如果podman-machine-default(WSL-Linux)提示 `nvidia-smi` 和 `nvcc` 命令未找到,这可能是因为以下原因之一:
1、Windows主系统中NVIDIA 驱动问题;
2、Windows主系统中CUDA 工具包问题;
3、Windows主系统中环境变量问题;
4、WSL-Linux的安装问题;
5、WSL 的 NVIDIA 驱动支持问题。
……
在1、2、3、4确认没问题之后,其中第5才是最常见也是最易发生的问题。
2.1.2 解决方法:
第5点 WSL 的 NVIDIA 驱动支持问题 的解决方法:
配置 WSL 以支持 NVIDIA 驱动
在 Windows 端,确保NVIDIA 驱动和CUDA工具包等正常后,可以通过以下方式修复在 WSL 中使用 nvidia-smi
命令输出异常的问题:
-
安装 WSL 2 的 NVIDIA 驱动:
运行以下命令,将 NVIDIA 驱动的路径添加到 WSL 的 PATH 中
echo 'export PATH=$PATH:/usr/lib/wsl/lib' >> ~/.bashrc
source ~/.bashrc
-
验证
nvidia-smi
是否可用:
nvidia-smi
如果配置正确,应该可以看到 GPU 的状态信息。
(三)安装对应podman-machine-default(WSL-Linux)系统的必要包和组件
如wget、curl、bash、nano等
sudo dnf update
sudo dnf install wget
sudo dnf install curl
sudo dnf install bash
sudo dnf install nano
这些命令都是基于 DNF(Dandified Yum)的 Linux 包管理操作,主要用于在 Fedora、CentOS Stream 或其他基于 RPM 的系统中管理软件包。
以下是每个命令的具体作用:
1. sudo dnf update
- 作用:更新系统中所有已安装的软件包到最新版本。
- 细节:
sudo
:以管理员权限运行命令。dnf update
:检查仓库中的新版本,并升级所有软件包(包括安全补丁和功能更新)。
- 使用场景:保持系统安全和稳定性,修复漏洞,获取最新功能。
2. sudo dnf install wget
- 作用:安装
wget
工具。 - 细节:
wget
是一个命令行下载工具,支持 HTTP/HTTPS/FTP 协议,常用于从网络下载文件。- 示例用途:
wget https://example.com/file.zip
直接下载文件到当前目录。
- 使用场景:需要从终端下载文件时使用。
3. sudo dnf install curl
- 作用:安装
curl
工具。 - 细节:
curl
是一个多功能命令行工具,支持 HTTP/HTTPS/FTP/SMTP 等协议,常用于传输数据或与 API 交互。- 示例用途:
curl https://example.com
显示网页内容,或curl -O https://example.com/file.zip
下载文件。
- 使用场景:需要更灵活的网络请求(如调试 API、上传下载)时使用。
4. sudo dnf install bash
- 作用:安装或更新
Bash
(Bourne Again Shell)。 - 细节:
Bash
是大多数 Linux 系统的默认命令行解释器(Shell),用于执行命令和编写脚本。- 通常系统已预装,此命令可能用于修复损坏的安装或升级到新版本。
- 使用场景:需要自定义 Shell 环境或修复 Shell 相关问题时使用。
5. sudo dnf install nano
- 作用:安装
nano
文本编辑器。 - 细节:
nano
是一个简单易用的终端文本编辑器,适合新手快速编辑配置文件(如/etc/hosts
)。- 功能比
vim
更简单,自带快捷键提示(如Ctrl+O
保存,Ctrl+X
退出)。
- 使用场景:需要编辑文本文件但没有图形界面时使用。
小结
- 系统维护:
dnf update
保持系统最新。 - 网络工具:
wget
和curl
用于下载和网络交互。 - 基础工具:
bash
和nano
是日常命令行操作的核心工具。
如果有具体使用场景(如开发、服务器管理),可以进一步优化安装的软件包列表!
(四)安装CUDA(使用官网命令在线安装)
CUDA 是 NVIDIA 提供的并行计算平台和编程模型,它支持 GPU 加速。在 podman-machine-default 上安装 CUDA 时,我们将使用 NVIDIA 官方的安装脚本。
试了官方提供的三种方法,其中在线安装(network)比较容易成功配置。
以下是官网的一组自动执行安装命令示例:
sudo dnf config-manager addrepo --from-repofile https://developer.download.nvidia.com/compute/cuda/repos/fedora41/x86_64/cuda-fedora41.repo
sudo dnf clean all
sudo dnf -y install cuda-toolkit-12-8
此命令会自动安装 CUDA 以及相关的工具包和示例。
详细操作:
1、打开CUDA官网
CUDA Toolkit 12.8 Update 1 Downloads | NVIDIA Developer
2、选择系统和安装方式:
这里要选对:
2.1、系统类型(Linux);
2.2、架构(x86_64);
2.3、对应的Linux操作系统(Fedora);
2.4、对应的Linux操作系统版本号(41);
2.5、安装或部署工具中的安装方法选项,每个选项都代表不同的安装方式:
-
rpm (local):
-
这个选项表示使用 RPM 包管理器从本地文件系统安装软件包。
-
用户需要先下载 RPM 包到本地,然后通过包管理器进行安装。
-
-
rpm (network):
-
这个选项表示通过网络使用 RPM 包管理器安装软件包。
-
这通常意味着包管理器会从远程仓库或服务器下载 RPM 包并进行安装,适用于需要从网络获取软件包的情况。
-
-
runfile (local):
-
这个选项表示使用本地的可执行文件(runfile)来安装或运行软件。
-
用户需要先下载可执行文件到本地,然后直接运行该文件进行安装或启动软件。
-
这些选项提供了不同的安装和部署方法,我们可以根据自己的网络环境和需求选择合适的方式。
例如,在没有网络连接的环境中,可能会选择本地安装方式;而在需要快速部署或更新时,可能会选择网络安装方式。
3、复制官网中的命令粘贴到podman-machine-default终端中:
比如上图中我选择的rpm (network)网络安装方式:
sudo dnf config-manager addrepo --from-repofile https://developer.download.nvidia.com/compute/cuda/repos/fedora41/x86_64/cuda-fedora41.repo
sudo dnf clean all
sudo dnf -y install cuda-toolkit-12-8
过程会比较漫长,请提前保持网络通畅
4、如果一种方式安装失败,可以更换网络环境重复尝试,或者自由选择更换安装方式。
如果链接有效,但命令执行失败,多数情况下可能是网络问题。请尝试重新运行命令。
或者更换安装方式<rpm (local) / rpm (network) / runfile (local)>
(五)配置CUDA的系统环境变量<podman-machine-default(WSL-Linux)>
安装完 CUDA 后,需要配置系统环境变量,使其生效。我们可以通过以下步骤进行配置:
1、查找CUDA的安装路径:
find /usr/local -name nvcc 2>/dev/null
find /usr/local -name nvcc 2>/dev/null
[user@AI ~]$ find /usr/local -name nvcc 2>/dev/null
/usr/local/cuda-12.8/bin/nvcc
[user@AI ~]$
我们已经找到了 nvcc 的安装路径,它位于 /usr/local/cuda-12.8/bin/nvcc。
现在,我们可以设置 CUDA 环境变量来确保系统能够正确地找到 CUDA Toolkit。
2、设置环境变量
打开我们的 shell 配置文件,例如 ~/.bashrc:
vi ~/.bashrc
或:
nano ~/.bashrc
打开之后,在文件的末尾添加以下行:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
保存并关闭文件。
3、重新加载配置文件:
source ~/.bashrc
这样,系统环境变量配置成功。
4、用vi
编辑器设置环境变量详细流程示例
以下是在 ~/.bashrc
文件中添加 CUDA 环境变量的步骤:
-
打开终端。
-
使用文本编辑器打开
~/.bashrc
文件。如果我们的系统中没有nano
,我们可以尝试使用vi
或vim:
vi ~/.bashrc
-
使用
vi
或vim
编辑文件,按i
键进入插入模式。 -
在文件的末尾添加以下行(确保替换
<cuda-version>
为实际的版本号,例如12.8
):export CUDA_HOME=/usr/local/cuda-12.8 export PATH=$PATH:$CUDA_HOME/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_HOME/lib64
-
按
Esc
键退出插入模式。 -
输入
:wq
然后按Enter
键保存并退出vi
或vim
。 -
重新加载配置文件,使更改生效:
source ~/.bashrc
-
验证环境变量是否设置正确:
echo $CUDA_HOME echo $PATH echo $LD_LIBRARY_PATH
确保这些环境变量的值正确指向了我们的 CUDA Toolkit 安装路径。
(六)验证CUDA的安装
nvidia-smi
1、 测试 CUDA Toolkit
为了验证 CUDA Toolkit 是否正确安装和配置,我们可以尝试运行以下命令检查版本:
在podman-machine-default终端中运行以下命令:
nvcc -V
或使用:
nvcc --version
如果安装成功,我们应该能看到类似以下输出,显示 CUDA 版本信息:
[user@AI ~]$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Fri_Feb_21_20:23:50_PST_2025
Cuda compilation tools, release 12.8, V12.8.93
Build cuda_12.8.r12.8/compiler.35583870_0
[user@AI ~]$
如果 nvcc
命令可用并且显示了版本信息,则说明 CUDA Toolkit 安装和环境变量设置成功。
2、再次确认podman-machine-default(WSL-Linux)的NVIDIA支持
另外,为了确保podman-machine-default的NVIDIA显卡驱动在安装CUDA后仍保持正常状态,此时可用以下命令再次确认:
nvidia-smi
3、注意事项
-
确保在添加环境变量时没有拼写错误,特别是路径和变量名。
-
如果我们使用的是其他 shell(如 zsh 或 fish),我们需要编辑相应的配置文件(如
~/.zshrc
或~/.config/fish/config.fish
)。 -
如果我们在系统中没有找到
nvcc
,可能需要重新安装 CUDA Toolkit 或者查找安装日志来确定其安装位置。
通过以上步骤,我们应该能够正确设置 CUDA 环境变量,并确保我们的系统能够使用 CUDA Toolkit。
在 Windows 11 下的 WSL - Ubuntu 24.04 中安装 CUDA 的记录_cuda-wsl-ubuntu.pin-CSDN博客
4、安装异常的处理
Complete!
[user@AI ~]$ nvcc --version
-bash: nvcc: command not found
[user@AI ~]$ echo $PATH /home/user/.local/bin:/home/user/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/lib/wsl/lib [user@AI ~]$ echo $LD_LIBRARY_PATH
[user@AI ~]$
如果遇到nvcc: command not found的情况,请查看以下方案:
从输出来看,nvcc
命令未找到,这表明 CUDA 的路径可能未正确添加到我的环境变量中,或者 CUDA 未正确安装。
同时,$LD_LIBRARY_PATH
也是空的,这意味着 CUDA 的库路径也未配置。
我们需要重新检查并配置这些环境变量。
4.1、检查 CUDA 安装路径
首先,确认 CUDA 是否已经安装在 /usr/local/cuda
目录下。运行以下命令:
ls /usr/local/cuda
如果 CUDA 安装成功,你应该会看到类似以下的目录结构:
bin doc include lib64 libnsight nsight samples share version.txt
如果没有看到这些目录,说明 CUDA 可能未正确安装,或者安装路径与默认路径不同。
4.2配置环境变量
根据你的输出,$PATH
中没有包含 /usr/local/cuda/bin
,而 $LD_LIBRARY_PATH
是空的。我们需要将 CUDA 的路径添加到这些环境变量中。
编辑 ~/.bashrc
文件,添加以下内容:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
然后运行以下命令使环境变量生效:
source ~/.bashrc
4.3、验证环境变量配置
运行以下命令验证环境变量是否已正确配置:
echo $PATH
输出中应该包含 /usr/local/cuda/bin
。
运行以下命令:
echo $LD_LIBRARY_PATH
输出中应该包含 /usr/local/cuda/lib64
。
4.4、验证 CUDA 安装
重新运行以下命令验证 nvcc
是否可用:
nvcc --version
如果配置正确,你应该会看到类似以下的输出:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Fri_Apr__5_16:00:00_PDT_2025
Cuda compilation tools, release 12.8, V12.8.0
4.5、如果仍然无法找到 nvcc
如果 nvcc
仍然无法找到,可能是因为 CUDA 未正确安装,或者安装路径与默认路径不同。你可以尝试以下步骤:
4.5.1、 检查 CUDA 安装路径
运行以下命令,查找 CUDA 的安装路径:
find / -type d -name "cuda" 2>/dev/null
如果找到了其他路径(例如 /opt/cuda
或其他自定义路径),请将该路径替换为 /usr/local/cuda
,并重新配置环境变量。
4.5.2、 重新安装 CUDA
如果 CUDA 未正确安装,可以尝试重新安装。运行以下命令:
sudo dnf clean all
sudo dnf makecache fast
sudo dnf -y install cuda-toolkit-12-8
5、 小结
通过以上步骤,匀应该能够成功配置 CUDA 的环境变量并验证 nvcc
是否可用。
如果仍然遇到问题,请记录下更多详细信息,例如:
-
CUDA 的安装路径(如果找到)。
-
安装过程中是否有任何错误信息。
然后认真地编写提示词然后发送给专业的AI以解决问题。
(七)确认 安装 或 不安装 NVIDIA 的开源驱动程序
如果上一步的命令执行后输出都没问题,则不要安装NVIDIA CUDA官网提供的开源驱动;
如果上一步的命令执行后输出有问题,则可尝试安装NVIDIA CUDA官网提供的开源驱动进行调试;
截图中提到的“驱动程序安装程序”是用于安装或更新 NVIDIA GPU 驱动的。
不需要安装的情况:
当执行完上一步的命令后,若输出结果一切正常,这就表明 CUDA Toolkit 已成功安装。与此同时,如果 nvidia-smi
命令也能够顺利运行,那就说明 NVIDIA 驱动程序已经正确安装在系统之中了。
一般而言,在使用官方提供的安装命令来安装 CUDA Toolkit 时,安装程序会自动处理驱动程序的安装事宜。
此外,如果 nvidia-smi
命令能够正常显示 GPU 的详细信息,并且在系统的使用过程中,没有遭遇任何与驱动相关的异常状况,比如图形界面显示异常、GPU 性能明显下降等问题,那么从常规角度来讲,确实没有必要再去进行驱动程序的重新安装或更新操作。
在这种驱动程序已正常安装且运行良好的情况下,切记不要安装 NVIDIA CUDA 官网所提供的开源驱动,以免引发不必要的系统冲突或其他问题。
需要安装的情况:
倘若我们希望确保所使用的 NVIDIA 驱动程序是最新版本,以便获得更出色的性能优化以及新功能支持,又或者在系统运行过程中遇到了诸如图形界面显示异常、GPU 性能不佳等与驱动相关的问题时,那么就应当考虑对驱动程序进行安装或更新操作。
在这些有必要安装或更新驱动的情形下,我们可以尝试安装 NVIDIA CUDA 官网提供的开源驱动,以此来对系统进行调试,从而解决可能存在的驱动相关问题。
可以通过以下命令来安装对cuda兼容性较好的驱动程序:
sudo dnf install cuda-drivers
或者,如果你想要安装特定版本的驱动程序,可以使用 dkms
来安装:
sudo dnf install cuda-driversdkms
在安装新的驱动程序之前,建议先查阅相关的文档或指南,以确保兼容性和正确的安装步骤。
小结:
总的来说,如果我们的系统已经能够正常识别和使用 GPU,并且没有遇到任何问题,那么通常没有必要再次安装驱动程序。
如果我们想要更新到最新版本或遇到了问题,那么可以考虑安装或更新驱动程序。
(八)安装cuDNN(使用官网命令本地安装)
cuDNN 是 NVIDIA 提供的 GPU 加速库,专门用于深度学习模型的训练和推理。
试了官方提供的两种方法,其中本地安装(local)比较容易成功配置。
要安装 cuDNN,可以使用以下步骤:
1、 安装 cuDNN 库(可选/非必须)
通常,在Fedora Linux 41上,我们需要安装以下两个包:
-
libcudnn
:运行时库,用于运行依赖 cuDNN 的程序。 -
libcudnn-devel
:开发库,用于编译依赖 cuDNN 的程序。
运行以下命令安装这些包:
sudo dnf install libcudnn9 libcudnn9-devel
如果提示找不到这些包,可以先运行以下命令查看可用的 cuDNN 包:
dnf list available | grep libcudnn
根据输出结果,选择正确的包名进行安装。
但一般情况下,使用官网的安装命令会省去一些手动处理依赖的步骤,请接着往下看。
2、用官网的命令进行安装
进入cuDNN官网:
建议使用rpm(local)进行安装。
cuDNN 9.8.0 Downloads | NVIDIA Developer
3、用rpm(local)安装命令:
wget https://developer.download.nvidia.com/compute/cudnn/9.8.0/local_installers/cudnn-local-repo-rhel9-9.8.0-1.0-1.x86_64.rpm
sudo rpm -i cudnn-local-repo-rhel9-9.8.0-1.0-1.x86_64.rpm
sudo dnf clean all
sudo dnf -y install cudnn
4、手动下载安装:
如果网络不好,我们可以尝试下载安装包到本地安装:
点击“Download(2.2GB)”下载到Windows本地,比如我下载“cudnn-local-repo-rhel9-9.8.0-1.0-1.x86_64.rpm”安装包到E:/Downloads目录,则:
对应 WSL-podman-machine-default的目录就是“/mnt/e/Downloads”
cd /mnt/e/Downloads #进入储存目录
sudo dnf install cudnn-local-repo-rhel9-9.8.0-1.0-1.x86_64.rpm #安装cuDNN软件包
5、 清理缓存并更新仓库
安装完仓库后,需要清理缓存并重新加载仓库信息,以确保 dnf
能够识别新添加的仓库:
sudo dnf clean all
sudo dnf makecache
6、安装cuDNN前端(可选/非必须)
cuDNN前端GitHub项目地址
安装 cuDNN 前端 — NVIDIA cuDNN 安装
cuDNN官网的这条命令,一般不用理会。
sudo dnf -y install cudnn-cuda-12
这条命令会安装适合 CUDA 12 版本的 cuDNN 包,一般安装过程中遵照顺序安装的话,cuDNN版本会自动匹配。
(九)验证cuDNN的系统环境变量
一般不用手动配置cuDNN的系统环境变量,因为cuDNN是安装到CUDA的目录中,在前边配置CUDA系统环境变量时,已经包含这些目录;
检查环境变量:
-
确保
CUDA_HOME
和LD_LIBRARY_PATH
环境变量正确设置,指向 CUDA 和 cuDNN 的安装目录。我们可以检查这些变量:
echo $CUDA_HOME
echo $LD_LIBRARY_PATH
确保输出中包含了/usr/local/cuda-12.8
和/usr/local/cuda/lib64
,这两个目录通常包含了cuDNN
的可执行文件和库文件。
(十)暂时性地验证cuDNN的安装
通过简单的命令,暂时性的验证cuDNN的安装结果,后续会用专门的命令统一进行验证,因为python和有些库还没安装,所以统一验证的命令暂时还不能运用。
验证 cuDNN 安装的步骤:
-
确认 cuDNN 头文件位置:
ls /usr/include/cudnn*
-
确认 cuDNN 库文件位置:
ls /usr/lib64/libcudnn*
-
检查
cudnn.h
文件位置:
ls /usr/include/cudnn.h
-
检查cuDNN 版本:
我们可以通过查看头文件来获取 cuDNN 版本信息
cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
这条命令的作用是:
-
读取
/usr/include/cudnn_version.h
文件。 -
查找包含
CUDNN_MAJOR
的行。 -
显示该行以及其后的两行,从而获取 cuDNN 的主版本号、次版本号和补丁级别。
通过这条命令,我们可以快速查看系统中安装的 cuDNN 版本,这对于确认 cuDNN 是否正确安装以及了解其版本信息非常有用。
如果输出类似以下内容,则表示安装成功:
#define CUDNN_MAJOR 9
#define CUDNN_MINOR 8
#define CUDNN_PATCHLEVEL 0
(base) [user@AI ~]$ cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 9
#define CUDNN_MINOR 8
#define CUDNN_PATCHLEVEL 0
--
#define CUDNN_VERSION (CUDNN_MAJOR * 10000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)/* cannot use constexpr here since this is a C-only file */
(base) [user@AI ~]$
根据输出显示了 cuDNN 库的版本信息,这些信息是从 cudnn_version.h
头文件中提取的。
下面是输出内容的详细解释:
-
版本定义:
-
#define CUDNN_MAJOR 9
:这行定义了 cuDNN 的主版本号(Major version)为 9。 -
#define CUDNN_MINOR 8
:这行定义了 cuDNN 的次版本号(Minor version)为 8。 -
#define CUDNN_PATCHLEVEL 0
:这行定义了 cuDNN 的补丁级别(Patch level)为 0。
-
-
版本计算:
-
CUDNN_VERSION=(9×10000)+(8×100)+0=90000+800+0=90800#define CUDNN_VERSION (CUDNN_MAJOR * 10000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
:这行定义了一个宏,用于计算 cuDNN 的完整版本号。计算方法是将主版本号乘以 10000,次版本号乘以 100,然后加上补丁级别。根据这个公式,版本号计算如下: -
这个计算结果是一个数字,表示 cuDNN 的完整版本号,格式为
主版本号.次版本号.补丁级别
,即 9.8.0。
-
-
注释:
-
/* cannot use constexpr here since this is a C-only file */
:这行注释说明了为什么没有使用constexpr
关键字。constexpr
是 C++ 中的一个关键字,用于定义编译时常量。由于cudnn_version.h
是一个 C 语言头文件,它不支持 C++ 的constexpr
关键字,因此使用了宏定义来代替。
-
总的来说,这个输出表明我们系统中安装的 cuDNN 版本是 9.8.0。
这个版本信息对于确保 cuDNN 与我们的 CUDA 版本和其他深度学习框架兼容非常重要。
(十一)安装Anaconda或Miniconda
用来管理python版本和conda虚拟环境。
为了更好地管理 Python 版本和 Conda 虚拟环境,建议安装 Anaconda 或 Miniconda。
可以使用以下命令下载并安装最新版的 Anaconda:
wget -P /tmp https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh # 下载anaconda安装包至 /tmp 目录下,可以替换为最新的Anaconda版本号
bash /tmp/Anaconda3-2024.10-1-Linux-x86_64.sh # 安装anaconda
可以使用以下命令下载并安装最新版本的 Miniconda:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh #下载最新版本的 Miniconda 安装脚本
bash Miniconda3-latest-Linux-x86_64.sh #启动安装
期间按“ENTER”键翻阅协议和输入两次“yes”或“ENTER”即可完成默认位置和默认配置的安装,安装完后自动集成到SHELL中。
如果没有集成到shell中,可以运行以下命令:
conda init
然后关闭终端然后重新打开。
安装方法与WSL-Ubuntu 24.04 中的一致,具体详情可以参考:
在 Windows 11 下的 WSL - Ubuntu 24.04 中安装 Anaconda3_wsl2 ubuntu 24.04 anaconda-CSDN博客
(十二)安装PyTorch
通过安装PyTorch来检验podman-machine-default(WSL-Linux)对PyTorch GPU的支持。
11. 安装 PyTorch
PyTorch 是深度学习中常用的框架,支持 GPU 加速。
建议选择官网的最新命令安装最新版本 PyTorch来保证配置的正确性:
pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu128
该命令会安装适配当前 CUDA 版本的 PyTorch。
安装过程可参考:
在 Windows 11 下的 WSL - Ubuntu 24.04 中安装 Torch 的记录_wsl 安装 torch-CSDN博客
(十三)通过命令全面验证CUDA、cuDNN、Anaconda、PyTorch 等是否安装成功
全面验证podman-machine-default(WSL-Linux)的深度学习环境搭建情况
打开podman-machine-default终端,默认进入(base)虚拟环境,可以通过以下 Python 代码验证 CUDA 、cuDNN和 PyTorch 是否能正常工作:
import torch # 导入 PyTorch 库print("PyTorch 版本:", torch.__version__) # 打印 PyTorch 的版本号# 检查 CUDA 是否可用,并设置设备("cuda:0" 或 "cpu")
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print("设备:", device) # 打印当前使用的设备
print("CUDA 可用:", torch.cuda.is_available()) # 打印 CUDA 是否可用
print("cuDNN 已启用:", torch.backends.cudnn.enabled) # 打印 cuDNN 是否已启用# 打印 PyTorch 支持的 CUDA 和 cuDNN 版本
print("支持的 CUDA 版本:", torch.version.cuda)
print("cuDNN 版本:", torch.backends.cudnn.version())# 创建两个随机张量(默认在 CPU 上)
x = torch.rand(5, 3)
y = torch.rand(5, 3)# 将张量移动到指定设备(CPU 或 GPU)
x = x.to(device)
y = y.to(device)# 对张量进行逐元素相加
z = x + y# 打印结果
print("张量 z 的值:")
print(z) # 输出张量 z 的内容
如果输出为 True
且显示 GPU 名称,说明 CUDA 和 PyTorch 安装成功,并能正确使用 GPU。
详细命令解释请参考:
在WSL2-Ubuntu中安装CUDA12.8、cuDNN、Anaconda、Pytorch并验证安装_cuda 12.8 pytorch版本-CSDN博客
验证PyTorch深度学习环境Torch和CUDA还有cuDNN是否正确配置的命令_验证pytorch和cuda的命令-CSDN博客
(十四)安装Git
安装 Git 用于版本控制,执行以下命令:
sudo dnf install git
(十五)验证Git的安装
验证 Git 的安装
安装完成后,验证 Git 是否正确安装:
git --version
如果输出 Git 版本信息,说明安装成功。
(十六)配置Git
配置 Git
配置 Git 用户信息:
git config --global user.name "Your Name" # 设置全局 Git 用户名
git config --global user.email "your.email@example.com" # 设置全局 Git 用户电子邮件地址
git config --global http.postBuffer 524288000 # 设置 HTTP 缓冲区大小为 500MB
(十七)其他安装和配置(自定义/可选)…
根据需要,继续安装其他必要的开发工具,如编辑器、调试工具等。
-
TensorFlow
-
OpenCV
-
Jupyter Notebook 等
总结
通过这些步骤,我们已成功在 podman-machine-default 中安装并配置了 CUDA、cuDNN、Anaconda、PyTorch 等深度学习所需的环境。现在,我们可以开始在 Windows 系统下的容器化环境中进行 GPU 加速的深度学习开发。
相关文章:
新!在 podman-machine-default 中安装 CUDA、cuDNN、Anaconda、PyTorch 等并验证安装
#工作记录 一、前言 在 Windows 系统开发环境中,Podman Desktop 凭借强大的容器管理与 WSL-Linux 子系统集成能力备受开发者关注。 其中,podman-machine-default 是 Podman Desktop 安装后自带的默认 WSL-Fedora 子系统,支持与显卡通信&am…...
python_BeautifulSoup提取html中的信息
目录 描述: 过程: step one 下载html网页到本地 step two 提取html信息 list_con soup.select(.list-con) [0] li_list list_con.find_all(li) a li.find(span).find(a) title a.get(title) url a.get(href) span li.find(span).find(spa…...
pcd2pgm的launch文件实现
1.新建工作空间和克隆代码 mkdir -p pcd2pgm_launch/src && cd pcd2pgm_launch/src git clone https://github.com/Hinson-A/pcd2pgm_package 2. 编译 cd .. catkin_make -j4 3.修改launch 在launch文件目录下,可以用gedit 打开launch文件,…...
Vue里面elementUi-aside 和el-main不垂直排列
先说解决方法 main.js少导包 import element-ui/lib/theme-chalk/index.css; //加入此行即可 问题复现 排查了一个小时终于找出来问题了,建议导包去看官方的文档,作者就是因为看了别人的导包流程导致的问题 导包官网地址Element UI导包快速入门...
论文阅读:2024 ACL ArtPrompt: ASCII Art-based Jailbreak Attacks against Aligned LLMs
总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Artprompt: Ascii art-based jailbreak attacks against aligned llms https://www.doubao.com/chat/3846685176618754 https://arxiv.org/pdf/2402.11753 https://github…...
项目maven版本不一致 导致无法下载
路程:打开一个新项目发现,maven加载不了 报错: Error running ‘dataManage [clean]’ No valid Maven installation found. Either set the home directory in the configuration dialog or set the M2_HOME environment variable on your s…...
论文阅读:2024 NeurIPS Group Robust Preference Optimization in Reward-free RLHF
Group Robust Preference Optimization in Reward-free RLHF https://www.doubao.com/chat/3870738843518978 https://arxiv.org/pdf/2405.20304 速览 研究动机 传统RLHF忽视群体偏好差异,导致模型对少数群体表现不佳,需提升群体鲁棒性。研究问题 如…...
数据可视化平台产品介绍及功能特色
数据可视化平台是一款适用于高校教学和各领域企业的零门槛可视化工具,能够解决高校数据分析与可视化类课程教学、实训问题。平台通过浏览器即可访问,无需安装客户端。平台内置公式编辑器与指标构建器,学生可通过四则运算、分组聚合等方式衍生…...
MySQL索引优化、SQL分析与运行原理 - Java架构师面试实战
MySQL索引优化、SQL分析与运行原理 - Java架构师面试实战 第一轮提问 面试官:马架构,请问您对MySQL的B树索引有什么理解? 马架构:B树是一种平衡多路查找树,所有的数据节点都存储在叶子节点上。相比于B树,…...
C++学习:六个月从基础到就业——STL:函数对象与适配器
C学习:六个月从基础到就业——STL:函数对象与适配器 本文是我C学习之旅系列的第二十九篇技术文章,也是第二阶段"C进阶特性"的第八篇,主要介绍C STL中的函数对象与适配器。查看完整系列目录了解更多内容。 引言 在前面的…...
Linux基础篇、第四章_02磁盘及分区管理fdisk 和 gdisk
题目:Linux 磁盘及分区管理 版本号: 1.0,0 作者: 老王要学习 日期: 2025.04.25 适用环境: Centos7 文档说明 本教程适用于 Centos7 环境,详细介绍 Linux 磁盘及分区管理操作。包含虚拟机添加磁盘的关机与开机添加方法、MBR 和 GPT 两种分区方式特点、…...
火山云的市场竞争
火山云是字节跳动旗下的云计算服务,对吧?那它的竞争对手应该包括国内外的大型云服务提供商。首先,国际市场上,像AWS、Azure、Google Cloud这些巨头肯定是大头。国内的话,阿里云、腾讯云、华为云这些应该都是主要的竞争…...
创建型设计模式之:简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式
创建型设计模式之:简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式 (一)简单工厂模式 简单工厂模式将对象的实例化过程封装到一个工厂类中,根据输入的条件创建不同类型的对象。 角色划分: 抽象产品…...
【Linux内核设计与实现】第三章——进程管理01
文章目录 1. 引言2. 进程&线程——概念3. 进程控制块/进程描述符(PCB)4. 进程内核栈(Kernel Stack)4.1. 进程内核栈的定义4.2. thread_info 体系结构相关进程描述4.3. 定位进程描述符(task_struct)和内核栈以及内核栈指针的问题 5. 进程 IDÿ…...
正大模型视角下的市场结构判断逻辑
正大模型视角下的市场结构判断逻辑 在多数交易策略中,结构识别往往先于方向判断。以正大的数据研判风格为例,其核心逻辑是:价格行为不能孤立解读,必须结合时间与成交效率来判断当前结构的有效性。 例如,一个上涨过程&…...
4.25学习——文件上传之00截断
继昨天学习的基础文件上传内容,进一步学习文件上传的绕过方式 00截断绕过 原理:00截断是操作系统层的漏洞,由于操作系统是C语言或汇编语言编写的,这两种语言在定义字符串时,都是以\0(即0x00)作…...
黑马Redis(三)黑马点评项目
优惠卷秒杀 一、全局唯一ID 基于Redis实现全局唯一ID的策略: Component RequiredArgsConstructor public class RedisIdWorker {private static final Long BEGIN_TIMESTAMP1713916800L;private static final int COUNT_BITS 32;Resourceprivate final StringRed…...
dedecms织梦arclist标签noflag属性过滤多个参数
织梦dedecms系统arclist标签noflag属性默认是只能过滤一个参数,比如过滤推荐是noflagc,过滤有图片的文章是noflagc,在模板制作过程中,有时候我们为了seo和避免重复,需要过滤多个参数。今天小编就来跟大家讲讲织梦dedec…...
Jira、PingCode、Redmine等18款缺陷管理工具对比评测
本文主要介绍了以下:1. PingCode; 2. Worktile; 3. Jira; 4. Bugzilla; 5. TAPD; 6. 码云; 7. Redmine; 8. Trac; 9. 蓝鲸智云; 10. 阿里云效等等18款缺陷管理工具。 在现代软件开发和项目管理中,缺陷管理工具扮演着至关重要的角色。随着企业对软件质量的…...
京东以图搜图(拍立淘)API接口返回参数详解
京东以图搜图(拍立淘)API接口的返回参数通常以结构化JSON格式呈现,涵盖商品基础信息、相似度评分、库存状态及扩展字段,以下为关键参数详解及使用建议: 一、核心返回参数解析 状态标识类 status:请求状态…...
LSTM+KNN - 多元数据异常检测 !
大家好!我是我不是小 upper~ 今天想和大家分享一个超实用的案例:如何通过 LSTM 与 KNN 实现多元数据异常检测。 想象一下,在工厂的智能化监控场景中,各类传感器实时采集着温度、湿度、压力等海量数据。我们的目标,就是从中精准识别出设备潜在故障等异常情况。 LSTM 作为时…...
OpenHarmony之电源管理子系统公共事件定义
OpenHarmony之电源管理子系统公共事件定义 电源管理子系统面向应用发布如下系统公共事件,应用如需订阅系统公共事件,请参考公共事件接口文档。 COMMON_EVENT_BATTERY_CHANGED 表示电池充电状态、电平和其他信息发生变化的公共事件的动作。 值&#x…...
angular 实现可编辑可选择复制的表格
这个实现的核心就是ag-grid 当然有类似的库就不必多说,React, Vue和纯h5类似。简单贴一下代码 1.首先是h5部分,就一个id为supply-chain-material-grid-table的div,记住要设置高度 <div class"dki-supply-chain-page-body">…...
组织用户数统计实现
# 完整的组织用户数统计实现 完整的组织用户数统计实现,包括模拟SQL查询、完整的Java代码实现以及详细解释。 ## 1. 模拟SQL查询 假设我们有一个组织表(organization)和用户表(user),以下是模拟查询SQL: sql -- 获取各组织及其用户数量&a…...
天机学堂day10作业,完善兑换优惠券功能
UserCouponServiceImpl /*** 兑换码兑换优惠券* param code*/TransactionalOverridepublic void exchangeCoupon(String code) {//1、校验code是否为空if (StringUtils.isBlank(code)) {throw new BadRequestException("非法参数!");}//2、解析兑换码&…...
Python编程的真谛:超越语法,理解编程本质
你是否也曾陷入这样的误区:学了无数的 Python 语法、刷了几十套题,写起代码却仍然卡顿、举步维艰?这时候你才发现,真正阻碍进步的,从不是语法,而是你对“编程本质”的理解。 如果你只是死记硬背Python的语…...
C语言 函数补充
目录 static和extern函数 1.static和extern函数 static和extern都是C语言中的关键字 static 是 静态的 的意思,可以用来: - 修饰局部变量- 修饰全局变量- 修饰函数 extern 是用来声明外部符号的。 在讲解 static 和 extern 之前再讲一下: 作用域和生命周期。 …...
【AI图像创作变现】04实操路径—插图/绘本/创意图集
引言 如果说头像是“一个角色的起点”,那么插图、绘本和图集就是“这个角色能走多远”。相比于头像这种单图任务,插图类创作更强调批量性、叙事性与风格统一性,它既可以承载故事,也可以构成一套完整的内容产品结构。 这类任务特…...
Lesar: 面向 Lustre/Scade 语言的形式化模型检查工具
在《同步反应式系统》的第一课中,介绍了同步数据流语言 Lustre 生态中的形式化模型检查器 Lesar 的用法。Lesar 可对 lustre v4 语言以及 Scade 语言中部分数据流核心特性进行模型检查。 Lesar 介绍 Lesar 是 Verimag 研发维护的形式化方法模型检查工具。该工具的理…...
告别 “幻觉” 回答:RAG 中知识库与生成模型的 7 种对齐策略
一、引言 大语言模型(LLM)在文本生成领域展现出惊人能力,但 “幻觉” 问题(生成虚构或偏离事实的内容)始终是落地应用的核心挑战。检索增强生成(RAG)通过将外部知识库与 LLM 结合,形…...
【Web应用服务器_Tomcat】一、Tomcat基础与核心功能详解
在 Java Web 应用开发领域,Apache Tomcat 是一座不可或缺的基石。作为一款开源、轻量级的 Servlet 容器和 Web 服务器,Tomcat 以其稳定可靠、易于部署和高度可定制性,被广泛应用于各类 Web 应用的部署与运行。 一、Tomcat 简介 Tomcat 是…...
Cesium实现地形可视域分析
Cesium实现可视化分析 一、地形可视域主要实现技术(Ray + 地形碰撞检测) Cesium 本身的 Ray 类可以用来执行非常精确的射线检测,我们可以结合地形高度(sample)来逐点检测光线是否与 terrain 相交,从而判断是否可见。 1.1 优势 实时判断每条射线是否被 terrain 遮挡地形…...
Java—— 常见API介绍 第五期
JDK8以后新增的时间相关类 Date类ZoneId:时区Instant:时间戳ZoneDateTime:带时区的时间 日期格式化类 SimpleDateFormat DateTimeFormatter:用于时间的格式化和解析 日历类 Calendar LocalDate:年、月、日LocalTime…...
ViewPager FragmentPagerAdapter在系统杀死应用后重建时UI不刷新的问题
解决方案 通过重写getItemId方法,返回Fragment的hashCode: Override public long getItemId(int position) {/*** 恢复状态重建时,新的 Fragment 不刷新UI。* 原因:instantiateItem 中通过 mFragmentManager.findFragmentByTag(…...
第3讲、大模型如何理解和表示单词:词嵌入向量原理详解
1. 引言 大型语言模型(Large Language Models,简称LLM)如GPT-4、Claude和LLaMA等近年来取得了突破性进展,能够生成流畅自然的文本、回答复杂问题、甚至编写代码。但这些模型究竟是如何理解人类语言的?它们如何表示和处…...
关于STM32f1新建工程
创建文件夹 首先创建一个存放工程的文件夹,建议建立在D,E盘 新建工程 在kiel5里面 找到刚刚建立的文件夹,然后在此文件夹里面新建一个文件夹用来存放本次工程,文件夹可以根据工程内容所编写,然后给自己工程也就是…...
Linux:进程间通信---匿名管道
文章目录 1. 进程间通信1.1 什么是进程间通信?1.2 为什么进程要进行进程间通信?1.3 怎么实现进程间通信? 2. 匿名管道2.1 匿名管道的原理2.2 匿名管道的系统接口2.3 匿名管道的使用2.4 匿名管道的运用场景 序:在上一篇文章中我们知…...
python代做推荐系统深度学习知识图谱c#代码代编神经网络算法创新
以下是针对推荐系统、深度学习、知识图谱和神经网络算法创新的代码框架及开发建议,适用于C#和Python的跨语言协作项目。以下内容分为几个部分,涵盖技术选型、代码示例和创新方向。 1. 推荐系统(Python C#) Python部分࿰…...
【动手学大模型开发】VSCode 连接远程服务器
Visual Studio Code(VSCode)是一款由微软开发的免费、开源的现代化代码编辑器。它以其轻量级、高性能和广泛的编程语言支持而受到开发者的青睐。VSCode 的核心特点包括: 跨平台:支持 Windows、macOS 和 Linux 操作系统。扩展市场…...
PostgreSQL 漏洞信息详解
PostgreSQL 漏洞信息详解 PostgreSQL 作为一款开源关系型数据库,其安全漏洞会被社区及时发现和修复。以下是 PostgreSQL 漏洞相关的重要信息和资源。 一、主要漏洞信息来源 1. 官方安全公告 PostgreSQL 安全信息页面:https://www.postgresql.org/sup…...
华为L410上制作内网镜像模板:在客户端配置模板内容
华为L410上制作内网镜像模板:在客户端配置模板内容 在本教程中,我们将继续在华为L410上配置内网镜像模板,具体介绍如何在客户端设置以便于在首次开机时自动安装软件。我们将主要使用WeChat作为示例。 1. 制作镜像模板,开启 rc.l…...
分布式队列对消息语义的处理
在分布式系统中,消息的处理语义(Message Processing Semantics)是确保系统可靠性和一致性的关键。有三种语义: 在分布式系统中,消息的处理语义(Message Processing Semantics)是确保系统可靠性和…...
《免费开放”双刃剑:字节跳动Coze如何撬动AI生态霸权与暗涌危机?》
战略动机分析 降低技术门槛为数据采集接口 Coze平台宣称**“30秒无代码生成AI Bot”,大幅降低了企业开发AI应用的技术门槛。任何不懂编程的业务人员都可以通过可视化流程和提示词,在半分钟内搭建聊天机器人或智能代理。这种极低门槛意味着更多企业和个人…...
AI 开发工具提示词集体开源!解锁 Cursor、Cline、Windsurf 等工具的核心逻辑
✨ 前言:提示词,AI 编程工具的灵魂 随着大模型编程能力的迅速提升,AI 编程工具如雨后春笋般涌现,涵盖了从代码编辑器(如 Cursor、Windsurf、Cline)到应用生成服务(如 Lovable、Bolt.new、V0&am…...
MYSQL 常用字符串函数 和 时间函数详解
一、字符串函数 1、CONCAT(str1, str2, …) 拼接多个字符串。 SELECT CONCAT(Hello, , World); -- 输出 Hello World2、SUBSTRING(str, start, length) 或 SUBSTR() 截取字符串。 SELECT SUBSTRING(MySQL, 3, 2); -- 输出 SQ3、LENGTH(str) 与 CHAR_LENGTH…...
Ubuntu 下 Nginx 1.28.0 源码编译安装与 systemd 管理全流程指南
一、环境与依赖准备 为确保编译顺利,我们首先更新系统并安装必要的编译工具和库: sudo apt update sudo apt install -y build-essential \libpcre3 libpcre3-dev \zlib1g zlib1g-dev \libssl-dev \wgetbuild-essential:提供 gcc、make 等基…...
线程怎么创建?Java 四种方式一网打尽
🚀 Java 中线程的 4 种创建方式详解 创建方式实现方式是否推荐场景说明1. 继承 Thread 类class MyThread extends Thread❌ 不推荐简单学习、单线程场景2. 实现 Runnable 接口class MyRunnable implements Runnable✅ 推荐更适合多线程共享资源3. 实现 Callable 接…...
高效使用DeepSeek对“情境+ 对象 +问题“型课题进行开题!
目录 思路"情境 对象 问题"型 课题选题的类型有哪些呢?这要从课题题目的构成说起。通过对历年来国家社会科学基金立项项目进行分析,小编发现,课题选题类型非常丰富,但一般是围绕限定词、研究对象和研究问题进行不同的组…...
【GCC bug】libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found
在 conda 环境安装 gcc/gxx 之后,运行开始遇到了以下的报错 File "/mnt/data/home/xxxx/miniforge3/envs/GAGAvatar/lib/python3.12/site-packages/google/protobuf/internal/wire_format.py", line 13, in <module>from google.protobuf import de…...
python卸载报错:No Python 3.12 installation was detected已解决
问题背景 在卸载Python 3.12.5时,遇到了一个棘手的问题:运行安装包python.exe点击Uninstall后,系统提示No Python 3.12 installation was detected. 尝试了网上各种方法(包括注册表清理、修复repair,卸载unins…...