Ubuntu 18.04下GPU版PyTorch与YOLOv5环境搭建
在深度学习项目开发中,一个稳定、可复现的运行环境往往是成功的第一步。尤其是目标检测这类计算密集型任务,能否高效调用 GPU 资源直接决定了训练和推理的速度。Ubuntu 18.04 作为长期支持(LTS)版本,在科研和工业部署中仍被广泛使用,但其默认软件源相对陈旧,手动配置 CUDA 和深度学习框架时常遇到兼容性问题。
本文将带你从零开始,在Ubuntu 18.04上构建一套完整的GPU 加速 YOLOv5 开发环境。我们将采用轻量级的 Miniconda 管理 Python 环境,避免系统污染,并通过国内镜像源大幅提升依赖安装速度。整个过程经过实战验证,适用于本地工作站或远程服务器场景。
核心工具选择:为什么是 Miniconda?
在 Python 生态中,虚拟环境管理至关重要。我们选择Miniconda-Python3.10镜像而非完整 Anaconda,原因很实际:
- 体积小:仅包含 conda、Python 和必要依赖,安装包不到 100MB。
- 启动快:没有预装大量科学计算库,环境初始化更迅速。
- 控制力强:所有第三方库按需安装,避免“包冲突”导致的诡异错误。
- 多环境隔离:可为不同项目创建独立环境,互不干扰。
尤其在团队协作或论文复现时,这种“干净+可控”的策略能极大提升可维护性。你可以轻松导出environment.yml文件供他人一键还原环境。
实践建议:不要在全局 Python 环境中安装任何 AI 框架。一旦出现版本冲突,排查成本极高。
系统准备:硬件识别与基础组件安装
在动手前,请确认你的系统满足以下条件:
- ✅ 运行 Ubuntu 18.04(桌面版或服务器版均可)
- ✅ 配备 NVIDIA GPU(计算能力 ≥ 3.5,如 GTX 10xx / RTX 20/30/40 系列)
- ✅ 已连接互联网并具备 sudo 权限
- ✅ 显卡驱动未被 nouveau 占用
检查 GPU 是否被识别
首先查看 PCI 总线上是否有 NVIDIA 设备:
lspci | grep -i nvidia如果输出类似NVIDIA Corporation GP107 [GeForce GTX 1050 Ti],说明硬件已被内核识别。
接着安装必要的编译工具链和内核头文件,这是后续安装闭源驱动的前提:
sudo apt update sudo apt install build-essential gcc g++ make sudo apt install linux-headers-$(uname -r)这些组件确保了 dkms(Dynamic Kernel Module Support)能够为当前内核编译 NVIDIA 驱动模块。
屏蔽开源驱动:禁用 nouveau
Ubuntu 默认启用的nouveau是一款开源显卡驱动,但它与 NVIDIA 官方闭源驱动无法共存。若不提前禁用,会导致安装后黑屏或驱动加载失败。
编辑黑名单配置文件:
sudo vi /etc/modprobe.d/blacklist-nouveau.conf写入以下内容:
blacklist nouveau options nouveau modeset=0保存后更新 initramfs 并重启:
sudo update-initramfs -u sudo reboot重启完成后,执行:
lsmod | grep nouveau若无任何输出,则表示 nouveau 已成功屏蔽。
小贴士:有些用户会尝试用
nomodeset内核参数临时绕过图形界面,但这只是权宜之计。彻底禁用才是长久之策。
安装 NVIDIA 显卡驱动
Ubuntu 提供了便捷的自动检测工具ubuntu-drivers,可以智能推荐最适合你显卡的驱动版本。
查看推荐选项:
ubuntu-drivers devices输出示例:
driver : nvidia-driver-470 - distro non-free driver : nvidia-driver-450 - distro non-free通常选择列表中最靠前的非 nouveau 选项即可。执行自动安装:
sudo ubuntu-drivers autoinstall安装完成后再次重启系统:
sudo reboot验证驱动状态:
nvidia-smi正常情况下你会看到如下信息:
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 470.182.03 Driver Version: 470.182.03 CUDA Version: 11.4 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | +-------------------------------+----------------------+----------------------+ | 0 GeForce RTX 3060 Off | 00000000:01:00.0 On | N/A | | 30% 45C P8 12W / 170W | 1024MiB / 12288MiB | 5% Default | +-------------------------------+----------------------+----------------------+关键点:
- 驱动版本显示正确
- CUDA Version 字段存在(注意:这是驱动支持的最大 CUDA 版本,不是已安装的 Toolkit)
此时 GPU 已就绪,接下来就可以部署深度学习框架了。
安装 Miniconda 并配置环境
进入主目录下载 Miniconda 安装脚本:
mkdir ~/miniconda && cd ~/miniconda wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.1.0-Linux-x86_64.sh运行安装程序:
bash Miniconda3-py310_23.1.0-Linux-x86_64.sh按提示阅读协议并输入yes接受条款。路径建议保持默认(~/miniconda3),便于后续管理。
安装完成后刷新 shell 环境变量:
source ~/.bashrc此时输入conda --version应能返回版本号。
使用清华源加速包下载
由于官方源位于海外,pip 和 conda 安装速度可能极慢。切换为清华大学镜像可显著提升体验:
# 添加 conda 清华源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes # 设置 pip 使用清华源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这样无论是conda install还是pip install都会优先从国内拉取资源。
关闭 base 环境自动激活
每次打开终端都自动进入(base)会影响脚本执行和其他语言环境。建议关闭:
conda config --set auto_activate_base false此后仅在需要时手动激活基础环境:
conda activate创建 YOLOv5 专用虚拟环境
为保证项目独立性,我们新建一个名为yolov5的环境:
conda create -n yolov5 python=3.10激活该环境:
conda activate yolov5终端前缀变为(yolov5)表示切换成功。此后所有操作都将局限于这个沙箱环境中。
安装 GPU 版 PyTorch
YOLOv5 基于 PyTorch 构建,必须安装支持 CUDA 的 GPU 版本才能发挥显卡性能。
根据nvidia-smi中显示的 CUDA Version(例如 11.4),前往 PyTorch 官网 获取对应安装命令。以 CUDA 11.8 为例:
pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2 --extra-index-url https://download.pytorch.org/whl/cu118⚠️ 注意事项:
- 不要盲目复制官网最新命令。若你的驱动只支持到 CUDA 11.4,则应选择cu114版本。
- 可通过nvidia-smi查看驱动支持的最高 CUDA 版本。
- 若强行安装更高版本的 PyTorch + CUDA,会导致torch.cuda.is_available()返回False。
安装完成后进入 Python 交互环境验证:
import torch print(torch.__version__) print(torch.cuda.is_available()) # 应返回 True print(torch.cuda.get_device_name(0))预期输出:
2.0.1+cu118 True NVIDIA GeForce RTX 3060只有当第二行输出为True时,才说明 GPU 加速已启用。
克隆并配置 YOLOv5 项目
获取官方代码仓库:
git clone https://github.com/ultralytics/yolov5 cd yolov5安装项目依赖项:
pip install -r requirements.txt该脚本会自动安装numpy,matplotlib,Pillow,tqdm,seaborn,scipy等常用库。整个过程约需 2–5 分钟,取决于网络速度。
测试 YOLOv5 推理功能
YOLOv5 自带detect.py脚本,可用于图像、视频或多路流的目标检测。
运行内置示例图片测试:
python detect.py --source data/images/执行完毕后,结果将保存在runs/detect/exp/目录下:
ls runs/detect/exp/你可以通过 SCP 下载这些图片,或在本地图形界面中查看。每张图上都会标注出检测到的对象及其置信度,常见类别包括人、车、狗、自行车等。
常用参数说明
| 参数 | 含义 |
|---|---|
--weights yolov5s.pt | 使用小型模型(也可换为 m/l/x) |
--conf 0.4 | 设置置信度阈值 |
--img-size 640 | 输入图像尺寸(越大越准但越慢) |
--device 0 | 指定使用第一块 GPU |
例如运行中型模型并指定 GPU:
python detect.py --source data/images/ --weights yolov5m.pt --img 640 --device 0首次运行时会自动下载预训练权重文件(如yolov5s.pt),后续无需重复下载。
常见问题排查指南
❌nvidia-smi命令未找到
原因分析:NVIDIA 驱动未正确安装,或系统未重启。
解决方法:
- 确认是否执行了sudo ubuntu-drivers autoinstall
- 安装后务必重启系统
- 检查/usr/bin/nvidia-smi是否存在
❌torch.cuda.is_available()返回 False
这是最常见的 GPU 调用失败问题,可能由多种因素引起:
PyTorch 安装的是 CPU 版本
- 检查安装命令是否包含+cuXXX标识
- 错误示例:pip install torch→ 默认安装 CPU 版CUDA 版本不匹配
- 驱动支持的 CUDA 版本 < PyTorch 所需版本
- 解决方案:降级 PyTorch 或升级驱动显卡被占用或异常
- 执行nvidia-smi查看 GPU 使用情况
- 尝试重启系统释放资源Conda 环境混乱
- 曾混用sudo pip install导致权限错乱
- 建议删除环境重来:conda env remove -n yolov5
调试技巧:运行nvcc --version可查看本地 CUDA Toolkit 版本(非必需,但有助于定位问题)。如果没有安装 CUDA Toolkit,也不影响 PyTorch 使用 GPU,因为其自带 CUDA runtime。
❌ 安装过程中出现权限错误
错误做法:在 Conda 环境中使用sudo pip install
这会导致包安装到系统路径,破坏虚拟环境隔离机制。
✅ 正确做法:
- 在激活的 conda 环境中直接使用pip install
- 如遇权限问题,先升级 pip:pip install --upgrade pip
- 若仍失败,检查家目录权限是否正常
总结与延伸思考
至此,你已经完成了一个功能完备的深度学习开发平台搭建。这套流程不仅适用于 YOLOv5,也为后续接入其他基于 PyTorch 的模型(如 YOLOv8、Mask R-CNN、Transformer 等)打下了坚实基础。
回顾核心步骤:
- 成功禁用了 nouveau 驱动
- 安装了适配的 NVIDIA 官方驱动
- 配置了 Miniconda 实现环境隔离
- 安装了 GPU 版 PyTorch 并验证可用性
- 部署了 YOLOv5 并完成首次推理测试
整套方案强调“最小化依赖 + 最大化可控”,特别适合科研实验、模型复现和自动化部署。
应用扩展建议
- 可视化训练过程:结合 TensorBoard 记录 loss、mAP 等指标
- 自定义数据集训练:编写
.yaml文件进行迁移学习 - 边缘设备部署:导出 ONNX 模型并在 Jetson Nano/TX2 上运行
- 批量处理视频流:接入 RTSP 视频源实现安防监控
现在,你可以放心地投入到模型训练与优化中了——毕竟,一个好的开始,等于成功了一半。
附录:完整命令汇总(一键复制备用)
# 1. 系统准备 sudo apt update sudo apt install build-essential linux-headers-$(uname -r) echo -e "blacklist nouveau\noptions nouveau modeset=0" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf sudo update-initramfs -u sudo reboot # 2. 安装 NVIDIA 驱动 sudo ubuntu-drivers autoinstall sudo reboot # 3. 安装 Miniconda mkdir ~/miniconda && cd ~/miniconda wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.1.0-Linux-x86_64.sh bash Miniconda3-py310_23.1.0-Linux-x86_64.sh source ~/.bashrc # 4. 配置镜像源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple conda config --set auto_activate_base false # 5. 创建虚拟环境 conda create -n yolov5 python=3.10 conda activate yolov5 # 6. 安装 GPU 版 PyTorch pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2 --extra-index-url https://download.pytorch.org/whl/cu118 # 7. 安装 YOLOv5 git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt # 8. 测试 python detect.py --source data/images/