ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux下PyTorch深度学习环境搭建与CUDA版本匹配实操

Linux下PyTorch深度学习环境搭建与CUDA版本匹配实操 简介面向Linux环境深度学习初学者的PyTorch环境搭建完整指南以Ubuntu为平台从零构建可用于科研与开发的高性能GPU计算环境。教程以实操步骤为主线依次讲解系统镜像源配置、build-essential等必要工具安装、Anaconda下载安装与环境变量配置、CUDA及显卡驱动安装、Anaconda虚拟环境创建、PyTorch安装和常用依赖库安装并对安装过程中可能遇到的权限、路径、版本冲突等常见报错给出了解决思路同时补充了Python环境维护、PyCharm IDE安装及Jupyter Notebook启动方法。适合已具备一定Linux命令行基础和Python编程能力、希望快速投入PyTorch项目的初级开发者。资源为1个PDF文件压缩包大小仅3.05MB全文按步骤组织每一阶段都配有操作截图便于跟随复现。目前已有277人学习下载是一份兼顾完整性与可操作性的PyTorch环境搭建实战手册。1. 从零搭PyTorch卡住的从来不是安装本身在一台刚装好Ubuntu的机器上搭PyTorch环境大多数教程会让你依次装Anaconda、CUDA、PyTorch然后跑一条官网页面上复制来的命令。但真正动手的人通常会在三个地方停下来装完Anaconda后普通用户没有权限、nvidia-smi显示的CUDA版本和PyTorch要求的对不上、依赖库安装时报PackagesNotFoundError。这篇文章不打算复述官网文档而是按一条验证过的路径把Linux环境下PyTorch深度学习框架的搭建过程拆开讲从软件源、Anaconda的权限处理到CUDA与PyTorch的版本匹配再到PyCharm和Jupyter的收尾。既适合第一次在Linux下建环境的初级开发者当操作手册也能让有经验的工程师在排错和版本选择上少走弯路。2. Ubuntu软件源与Anaconda先把底座打牢2.1 镜像源替换为什么第一件事是改sources.list在国内网络环境下Ubuntu默认的官方源下载速度不稳定apt-get update经常超时。所以第一步是换成阿里云或清华镜像源这一步直接影响后续所有apt包的安装效率。先确认系统版本不同版本对应的镜像源配置不同cat /etc/issue比如输出Ubuntu 22.04.3 LTS就到阿里云或清华镜像源官网找到对应的源配置。替换前先备份sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo vi /etc/apt/sources.list把文件内容整体替换为对应版本的镜像源然后刷新并安装基础编译工具sudo apt-get update sudo apt-get install build-essential这里有几个细节值得说明。备份这个动作不只是养成习惯装完CUDA或某些依赖后如果系统源被改坏一条cp命令就能还原。build-essential包含了gcc、g、make等编译工具链后续在conda环境下编译一些Python扩展包时会直接依赖它。完整的镜像源配置一次到位比半路发现某个包拉不下来再回头改源要省事得多。2.2 Anaconda安装目录选择决定你后面省不省心从Anaconda官网下载Linux版本的.sh安装文件下载后放到Ubuntu能访问的目录执行sh Anaconda3-2023.09-0-Linux-x86_64.sh安装过程中有两个关键交互点。一是提示选择安装目录二是询问是否初始化conda环境输入yes会自动在~/.bashrc中写入conda初始化脚本。对于安装目录建议安装在普通用户可访问的位置比如/usr/local、/opt或/home下。如果你直接把Anaconda装到/root/anaconda3那么之后普通用户登录时发现conda命令不可用还要额外处理权限不如一开始就避免。安装完成后验证conda是否可用conda --version如果提示command not found说明~/.bashrc里的环境变量没有生效或没有被加载。此时手动编辑vi ~/.bashrc在文件末尾追加export PATH/opt/anaconda3/bin:$PATH路径改成你实际的安装位置然后source ~/.bashrc2.3 权限问题root装的Anaconda怎么给普通用户用这是个很容易踩的坑。很多教程推荐用root用户安装Anaconda装完后普通用户执行conda却报错。如果你已经装在/opt或/usr/local下普通用户无法直接使用可以在普通用户下执行/opt/anaconda3/bin/conda init bash conda env listconda init会在当前用户的~/.bashrc中生成初始化块这样普通用户打开终端时会自动加载conda。反过来如果你是普通用户安装的Anaconda想给root用就用root执行/home/xxx/anaconda3/bin/conda init bash另外把环境变量写入~/.bashrc比写到/etc/profile更推荐。2.4 卸载重装Anaconda环境坏了怎么彻底清掉Anaconda环境出问题很多时候直接卸载重装比排查更快。卸载分三步rm -rf /root/anaconda3 vi ~/.bashrc source ~/.bashrcrm -rf /root/anaconda3这一步删除安装目录然后编辑~/.bashrc注释或删除与anaconda3相关的PATH配置最后source使其生效。注意如果还残留了~/.conda目录建议一并删除否则重装后旧环境信息可能干扰新环境的创建。操作命令说明备份源sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak保留可回滚的快照安装编译工具sudo apt-get install build-essential提供gcc、make等工具链查看conda版本conda --version验证安装是否成功初始化权限/opt/anaconda3/bin/conda init bash让普通用户继承conda环境删除环境变量条目vi ~/.bashrc 后删除对应行卸载时清理残留配置3. CUDA与显卡驱动GPU加速的关键链路3.1 nvidia-smi告诉你该装哪个CUDA版本PyTorch的GPU版本依赖CUDA运行时库而CUDA运行时要与显卡驱动协同工作。很多人在这一步出错是因为直接去官网下载了最新的CUDA版本装完发现与驱动冲突。正确做法是先装好显卡驱动再用nvidia-smi看到驱动支持的CUDA版本号。nvidia-smi输出的右上角会显示CUDA Version这个版本号代表当前驱动向下兼容的最高CUDA版本。例如显示12.1那么装CUDA 12.1或更低版本都能正常运行。这里有个常见的误解nvidia-smi显示的版本号不等于你已经安装了CUDA Toolkit它只表示驱动层面的兼容上限。3.2 CUDA Toolkit安装runfile方式与Driver冲突确认版本后去NVIDIA官网下载对应版本的CUDA Toolkit安装文件这里以12.1为例wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run下载后赋予执行权限并运行chmod 777 cuda_12.1.0_530.30.02_linux.run sudo sh cuda_12.1.0_530.30.02_linux.run安装过程的交互界面中有个关键选择当你看到Driver组件时按Enter取消勾选。因为你已经单独装过显卡驱动如果再让CUDA安装器重装驱动很可能覆盖掉当前正常工作的驱动版本导致重启后进不了图形界面或nvidia-smi报错。只保留CUDA Toolkit本身和相关组件然后Install即可。安装完成后系统会在/usr/local下生成一个cuda软链接指向cuda-12.1目录这个软链接方便后续环境变量引用。3.3 环境变量配置与安装验证安装完毕还要把CUDA的库路径写进环境变量否则运行PyTorch时加载不到libcudart.so。编辑~/.bashrcexport PATH/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH/usr/local/cuda/lib64:/usr/local/cuda/extras/CPUTI/lib64 export CUDA_HOME/usr/local/cuda/bin然后source ~/.bashrc生效。验证安装是否成功nvcc -V cd /usr/local/cuda/extras/demo_suite/ ./bandwidthTestnvcc -V显示CUDA编译器的版本信息bandwidthTest则做一次实际的GPU带宽测试输出Result PASS表示CUDA运行时环境正常。这一步验证比单纯用nvcc更可靠因为有些机器nvcc存在但运行时库缺失bandwidthTest直接调用runtime API能暴露底层链路的问题。检查项命令预期结果驱动支持的CUDA版本nvidia-smi右上角显示Version 12.1CUDA编译器版本nvcc -V显示release 12.1运行时与设备通信./bandwidthTestResult PASS4. 虚拟环境与PyTorch安装从conda create到可import4.1 为什么不用base环境直接装PyTorchAnaconda默认的base环境承担了conda自身的管理职责直接往里面装PyTorch和一堆深度学习依赖会带来两个问题一是base环境的Python版本是固定的换项目时想用另一个Python版本就得动base二是不同项目可能依赖不同版本的PyTorch或torchvision混在同一个环境里很容易出现依赖冲突。所以更稳妥的做法是为深度学习单独建一个虚拟环境比如叫ai。创建并激活环境conda create -n ai python3.9 conda activate ai创建时指定python3.9按照自己的需要调整版本。注意官方PyTorch对不同Python版本的支持范围过新的Python版本可能还没有对应的torch wheel。4.2 常用conda命令速查这部分命令在后续维护环境时会频繁使用提前梳理清楚能减少很多试错。conda --version # 查看conda版本 conda env list # 列出所有虚拟环境 source activate ai # 激活ai环境(旧写法) conda activate ai # 激活ai环境(官方推荐) conda deactivate # 退出当前环境 conda remove -n ai --all # 删除ai环境及其所有依赖包 pip list # 查看当前环境已安装的包推荐使用conda activate作为标准方式source activate是旧版conda的写法这两种方式在部分版本上混用可能导致PATH切换不彻底。删除环境时加--all会连带删除该环境下的所有包不会再占用磁盘空间。4.3 安装PyTorch官网命令与CUDA版本兼容性进入PyTorch官网选择Linux、pip、Python和你需要的CUDA版本官网会根据选项生成一条安装命令。以CUDA 11.8为例pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118如果你的驱动支持CUDA 12.1而PyTorch官网只提供了11.8的安装命令这不是问题。PyTorch官方明确说明CUDA 11.8构建的包可以运行在更新的驱动和CUDA运行时之上因为CUDA向后兼容。只要驱动版本足够新cu118的wheel在CUDA 12.x环境下可以正常工作。装完验证python import torch print(torch.__version__) print(torch.cuda.is_available())torch.cuda.is_available()返回True说明PyTorch能正常调用GPU。这一步建议在激活虚拟环境后执行避免误用系统的Python环境。如果返回False按顺序检查驱动是否正常nvidia-smi、环境变量是否生效、以及是否在conda虚拟环境内安装的PyTorch。安装场景命令适用条件GPU版CUDA 11.8pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118驱动支持CUDA 11.8及以上GPU版CUDA 12.1官网生成对应index-url驱动版本较新CPU版本pip3 install torch torchvision torchaudio无GPU或仅调试用5. 依赖库与开发工具OpenCV、PyCharm、Jupyter的收尾5.1 依赖库安装conda与pip的选择逻辑深度学习项目除了PyTorch本体通常还需要OpenCV做图像处理、torchvision下载预训练模型、tensorboardx做训练可视化。这些库的安装相对简单但要注意渠道选择。conda activate ai conda install opencv conda install torchvision conda install -c conda-forge tensorboardxconda安装的优势在于它会自动解析依赖库之间的版本兼容性并且把依赖的底层库如libjpeg、libpng一并装好。而pip install opencv-python装的是预编译的wheel有时会与conda的底层库产生ABI不兼容问题。所以能用conda装的就优先conda。常见的报错是PackagesNotFoundError意思是当前PyTorch库不在已配置的conda channel中。可以先尝试conda update --all更新所有包和channel索引后重新安装。如果还不行去Anaconda官网搜索包名找到对应的conda-forge或pytorch-lts channel用-c参数指定channel安装conda install -c pytorch-lts pytorch这种指定channel的方式对解决包版本冲突很有用尤其当默认源里只有旧版本的包时。5.2 PyCharm Community安装与解释器配置PyCharm Community版免费且支持Python开发的主要功能对深度学习调试足够用。从官网下载tar.gz包tar -zxvf pycharm-community-2023.2.3.tar.gz cd pycharm-community-2023.2.3/bin sh ./pycharm.sh如果启动时出现权限问题通常是解压目录的所有者不对用chown切换到当前用户sudo chown -R 用户名:用户组 /opt/pycharm-community-2023.2.3/首次启动后在Settings - Project - Python Interpreter中选择conda环境的Python解释器路径通常是/anaconda3/envs/ai/bin/python选对后PyCharm里的终端也会自动激活ai环境。5.3 Jupyter Notebook启动与内核绑定Anaconda自带了Jupyter Notebook在ai环境下启动jupyter notebook运行后浏览器会打开Notebook界面。有个细节值得注意如果PyCharm和Jupyter混用Jupyter默认使用的是启动时激活的环境。如果你希望不同conda环境之间共享Notebook需要把当前环境注册为IPython内核conda activate ai conda install ipykernel python -m ipykernel install --user --name ai --display-name ai(pytorch)这个命令把环境注册成可选的Kernel之后在Jupyter的New菜单里就能看到名为ai(pytorch)的内核。这样做的好处是隔离性更好每个项目一个环境、一个内核互不污染。调试完CUDA版本后可以用一个简洁的脚本快速验证GPU链路是否完全打通这也是我日常检查环境是否可用的固定动作python -c import torch; print(fPyTorch {torch.__version__}); print(fCUDA available: {torch.cuda.is_available()}); print(fGPU: {torch.cuda.get_device_name(0) if torch.cuda.is_available() else None})输出PyTorch版本号和GPU型号名称即表示整条链路正常可以开始训练模型或跑实验了。本文还有配套的精品资源点击获取
返回列表