从零到一:在双系统Ubuntu 24.04上构建CUDA+PyTorch深度学习环境全记录

张开发
2026/4/9 14:05:16 15 分钟阅读

分享文章

从零到一:在双系统Ubuntu 24.04上构建CUDA+PyTorch深度学习环境全记录
1. 双系统安装与Ubuntu 24.04初体验最近在折腾双系统时踩了不少坑特别是选择Ubuntu 24.04这个较新版本后发现很多教程都不太适用。先说说为什么选择双系统Windows虽然方便但做CUDA开发时总会遇到各种奇怪的问题WSL2虽然能跑CUDA但性能损耗和文件系统问题让人头疼。最终决定在笔记本上直接安装Ubuntu 24.04双系统。安装过程最头疼的是BIOS设置。我的联想小新Pro16需要先做三件事关闭Secure Boot否则安装时会报错调整启动模式为UEFI传统Legacy模式会有问题准备一个至少8GB的U盘制作启动盘制作启动盘推荐用Rufus工具记得选择GPT分区方案。安装时有个关键细节要在安装类型选择其他选项手动创建分区。我的分区方案是这样的EFI系统分区512MBswap交换空间内存大小的1.5倍我32GB内存给了48GB/根分区100GB/home分区剩余全部空间安装完成后第一次重启可能会卡在紫屏这时需要长按电源键强制关机再启动。进入系统后第一件事是更新软件源sudo apt update sudo apt upgrade -y2. NVIDIA驱动安装的坑与解决方案Ubuntu 24.04默认用的是开源nouveau驱动根本没法用CUDA。安装闭源驱动时我试过三种方法方法一使用官方.run文件从NVIDIA官网下载驱动后需要先禁用nouveausudo nano /etc/modprobe.d/blacklist-nouveau.conf添加两行blacklist nouveau options nouveau modeset0然后更新initramfs并重启sudo update-initramfs -u sudo reboot这个方法最干净但容易遇到与内核版本不兼容的问题。方法二使用Ubuntu附加驱动在软件和更新→附加驱动里选择专有驱动这是最方便的方式。但Ubuntu 24.04的驱动版本可能比较旧。方法三通过官方PPA安装推荐sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update sudo apt install nvidia-driver-535安装后验证nvidia-smi如果看到类似下面的输出就成功了--------------------------------------------------------------------------------------- | NVIDIA-SMI 535.86.05 Driver Version: 535.86.05 CUDA Version: 12.2 | |------------------------------------------------------------------------------------- | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | || | 0 NVIDIA GeForce RTX 3060 L... On | 00000000:01:00.0 On | N/A | | N/A 50C P8 15W / 80W | 532MiB / 6144MiB | 7% Default | | | | N/A | -------------------------------------------------------------------------------------3. CUDA Toolkit与cuDNN安装实战安装CUDA时有个大坑不要直接安装NVIDIA官网的.run文件在Ubuntu 24.04上推荐用apt安装sudo apt install nvidia-cuda-toolkit这个命令会自动安装与驱动匹配的CUDA版本我装的是12.2。验证安装nvcc --version如果提示命令未找到需要手动添加PATH。编辑~/.bashrc文件export PATH/usr/local/cuda-12/bin:$PATH export LD_LIBRARY_PATH/usr/local/cuda-12/lib64:$LD_LIBRARY_PATH然后安装cuDNN。这里有个技巧直接下载deb包安装比tar包方便很多。到NVIDIA官网下载三个deb包libcudnn8_8.x.x.x-1cuda12.0_amd64.deblibcudnn8-dev_8.x.x.x-1cuda12.0_amd64.deblibcudnn8-samples_8.x.x.x-1cuda12.0_amd64.deb安装命令sudo dpkg -i libcudnn8*.deb验证cuDNN是否正常工作cp -r /usr/src/cudnn_samples_v8/ $HOME cd $HOME/cudnn_samples_v8/mnistCUDNN make clean make ./mnistCUDNN看到Test passed!就说明一切正常。4. PyTorch环境配置技巧创建conda环境时有个细节Ubuntu 24.04自带的Python是3.11但有些库还不支持这么新的版本。我建议用Python 3.8conda create -n pytorch python3.8 conda activate pytorch安装PyTorch时要特别注意CUDA版本匹配。虽然我装的是CUDA 12.2但PyTorch官方还没有对应的版本。经过测试CUDA 12.1的PyTorch也能正常工作pip install torch2.2.0 torchvision0.17.0 torchaudio2.2.0 --index-url https://download.pytorch.org/whl/cu121如果下载速度慢可以临时换清华源pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch2.2.0 torchvision0.17.0 torchaudio2.2.0验证安装import torch print(torch.__version__) # 应该输出2.2.0 print(torch.cuda.is_available()) # 应该输出True print(torch.cuda.get_device_name(0)) # 显示你的GPU型号5. 开发环境优化建议VSCode配置安装VSCode后这几个扩展必不可少PythonPylanceJupyterCUDA C (by vector-of-bool)配置settings.json增加CUDA路径{ terminal.integrated.env.linux: { PATH: /usr/local/cuda/bin:${env:PATH}, LD_LIBRARY_PATH: /usr/local/cuda/lib64:${env:LD_LIBRARY_PATH} } }性能调优关闭GNOME动画gsettings set org.gnome.desktop.interface enable-animations false调整swappiness值echo vm.swappiness10 | sudo tee -a /etc/sysctl.conf sudo sysctl -p使用preload预加载常用库sudo apt install preloadCUDA编程小技巧编译.cu文件时使用以下Makefile模板CCnvcc CFLAGS-O3 -archsm_86 # 根据你的GPU算力修改 TARGETvector_add all: $(TARGET) $(TARGET): $(TARGET).cu $(CC) $(CFLAGS) -o $ $ clean: rm -f $(TARGET)查询GPU算力nvidia-smi --query-gpucompute_cap --formatcsv6. 常见问题排查指南驱动问题如果nvidia-smi报错NVIDIA-SMI has failed尝试sudo apt purge *nvidia* sudo apt autoremove sudo ubuntu-drivers autoinstall sudo rebootCUDA版本混乱当系统中有多个CUDA版本时可以用update-alternatives管理sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-12.2 100 sudo update-alternatives --config cudaPyTorch找不到CUDA如果torch.cuda.is_available()返回False检查CUDA和PyTorch版本是否匹配是否在conda环境中运行尝试重装PyTorchpip uninstall torch torchvision torchaudio pip cache purge pip install torch --no-cache-dir双系统时间不同步Windows和Ubuntu的时间机制不同修复方法timedatectl set-local-rtc 1 --adjust-system-clock折腾环境虽然费时但稳定后的UbuntuCUDAPyTorch环境用起来真的很舒服。记得定期备份重要数据我在调试驱动时至少重装了三次系统。现在这个环境已经稳定运行两个月训练速度比Windows快20%左右值得这些付出。

更多文章