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

Ubuntu 18.04配置TensorFlow与PyTorch GPU环境

Ubuntu 18.04 搭建深度学习 GPU 环境实战指南

你有没有过这样的经历?明明买了 RTX 2080 Ti 这样的高性能显卡,跑 PyTorch 却提示CUDA not available;或者安装 TensorFlow 花了一整天,最后发现根本没走 GPU。在 Ubuntu 上配置深度学习环境看似简单,实则步步惊心——驱动冲突、版本不匹配、路径缺失……任何一个环节出错都会导致前功尽弃。

本文基于真实项目部署经验,手把手带你避开这些“坑”,完整构建一个稳定可靠的 GPU 开发环境。我们将以Ubuntu 18.04.5 LTS + NVIDIA RTX 2080 Ti为基准平台,通过国内镜像优化下载流程,确保每一步都能顺利执行。最终目标:同时支持TensorFlow-GPUPyTorch-GPU,并实现环境隔离、依赖清晰、长期可维护。


整个搭建过程可以归纳为五个关键阶段:系统准备 → 显卡驱动 → 计算底座(CUDA/cuDNN)→ 环境管理 → 框架安装。下面我们就从最基础的系统源更换开始,一步步推进。

首先解决的是网络问题。Ubuntu 默认使用国外源,更新软件包时经常卡住甚至超时。我们切换到阿里云镜像站,大幅提升下载速度:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo gedit /etc/apt/sources.list

将文件内容替换为以下阿里云源配置:

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

保存后立即刷新缓存并升级系统:

sudo apt-get update sudo apt-get upgrade -y

如果遇到锁文件错误:

sudo rm /var/lib/dpkg/lock-frontend sudo rm /var/lib/dpkg/lock

顺便装上vim,后续编辑配置会更方便:

sudo apt-get install vim -y

接下来是重头戏——NVIDIA 驱动安装。这里最容易踩的坑就是开源驱动nouveau的干扰。它会在内核加载时抢先启动,导致官方驱动无法正常工作。我们必须提前禁用它。

编辑黑名单文件:

sudo vim /etc/modprobe.d/blacklist.conf

在末尾添加:

blacklist vga16fb blacklist nouveau blacklist rivafb blacklist rivatv blacklist nvidiafb

然后更新 initramfs 并重启:

sudo update-initramfs -u sudo reboot

重启后验证是否禁用成功:

lsmod | grep nouveau

没有输出说明已生效。这一步看似繁琐,但至关重要——我曾见过太多人跳过此步直接安装.run文件,结果反复失败还找不到原因。

现在进入驱动安装环节。先装编译工具链:

sudo apt-get install build-essential dkms -y

前往 NVIDIA 官网 下载对应驱动(如NVIDIA-Linux-x86_64-520.61.05.run)。进入下载目录后赋予执行权限:

cd ~/Downloads chmod +x NVIDIA-Linux-x86_64-*.run

建议关闭图形界面避免冲突:

sudo init 3

然后运行安装命令:

sudo ./NVIDIA-Linux-x86_64-*.run \ --no-x-check \ --no-nouveau-check \ --no-opengl-files

参数解释:
---no-x-check:跳过 X Server 检查,防止因图形界面运行而中断
---no-nouveau-check:我们已手动禁用,无需再次检查
---no-opengl-files:这是关键!避免替换系统 OpenGL 库,否则可能导致登录后黑屏

安装完成后恢复图形界面:

sudo init 5

或直接重启:

sudo reboot

验证安装结果:

nvidia-smi

只要能看到显卡型号、温度、驱动版本和 CUDA 版本信息,就说明驱动已经就位。这是整个流程的第一个里程碑。

接下来我们引入 Anaconda 来管理 Python 环境。为什么不用系统自带的 pip?因为 TensorFlow 和 PyTorch 对 Python 版本、CUDA 支持有严格要求,混用容易引发依赖冲突。Anaconda 提供了干净的虚拟环境机制,非常适合多项目共存。

下载并安装 Anaconda:

wget https://repo.anaconda.com/archive/Anaconda3-2023.09-Linux-x86_64.sh bash Anaconda3-*.sh

阅读协议后输入yes,接受默认路径。当询问是否运行conda init时,选择no—— 我们希望手动控制 PATH 变量,避免污染全局环境。

安装完成后,编辑.bashrc文件进行环境隔离:

vim ~/.bashrc

加入以下两行(请替换用户名):

alias python3="/usr/bin/python3.6" export PATH="/home/your_username/anaconda3/bin:$PATH"

这样设置后:
-python命令指向 conda 环境中的解释器
-python3明确调用系统的 Python 3.6
避免了版本混乱的问题。

使配置生效:

source ~/.bashrc

测试效果:

python --version # 输出 conda 中的版本(如 3.9+) python3 --version # 输出系统版本 3.6

接下来创建两个独立环境,分别用于 TensorFlow 和 PyTorch:

# 创建 TensorFlow 环境 conda create -n tensorflow python=3.8 -y conda activate tensorflow # 创建 PyTorch 环境 conda create -n pytorch python=3.8 -y conda activate pytorch

查看所有环境:

conda env list

随时可以通过conda deactivate切换环境。这种隔离设计让你可以在不同项目间自由切换,互不影响。

现在进入核心组件安装阶段:CUDA Toolkit 和 cuDNN。

虽然现代框架(如 PyTorch)可以通过 conda 自动安装 CUDA runtime,但从工程稳定性角度考虑,我还是推荐手动部署完整版 CUDA Toolkit。原因有三:
1. 更好地控制版本一致性
2. 支持更多底层调试工具(如 nvprof)
3. 避免某些边缘情况下的动态库查找失败

前往 CUDA Toolkit 存档页,选择CUDA 11.8(兼容性最佳),下载 runfile 安装包(如cuda_11.8.0_520.61.05_linux.run)。

安装前务必注意:不要勾选 Driver 安装项!因为我们已经装好了最新驱动。

chmod +x cuda_*.run sudo ./cuda_*.run

安装过程中:
- 输入accept接受协议
- 使用方向键取消 “Install NVIDIA Accelerated Graphics Driver” 选项
- 其余组件保持默认(Toolkit、Samples、Documentation)

安装完成后,CUDA 会被放置在/usr/local/cuda-11.8目录下。

接下来配置环境变量:

vim ~/.bashrc

添加:

export PATH=/usr/local/cuda-11.8/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH export CUDA_HOME=/usr/local/cuda-11.8

刷新配置:

source ~/.bashrc

验证安装:

nvcc --version

应显示 CUDA 编译器版本信息。注意这里的nvcc是编译时工具,而nvidia-smi显示的是运行时驱动版本,两者不必完全一致,但需满足兼容性要求(一般 CUDA Toolkit ≤ Driver 支持的最大版本即可)。

然后是 cuDNN —— 深度神经网络加速库。它是 TensorFlow 和 PyTorch 实现高效卷积运算的核心依赖。

访问 cuDNN 下载页,注册账号后下载与 CUDA 11.8 匹配的版本(如cudnn-linux-x86_64-8.7.0.84_cuda11-archive.tar.xz)。

解压并复制文件:

tar -xvf cudnn-linux-*.tar.xz sudo cp cuda/include/cudnn*.h /usr/local/cuda/include/ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

不需要额外配置环境变量,因为它被复制到了 CUDA 默认搜索路径中。

至此,底层 GPU 支持栈(Driver + CUDA + cuDNN)全部就绪。你可以把它看作一座大厦的地基,上面才能安稳地搭建各种框架。

下面我们分别安装 PyTorch 和 TensorFlow。

先激活 PyTorch 环境:

conda activate pytorch

由于国内网络限制,直接使用pip install torch经常失败。推荐使用清华 TUNA 镜像进行离线安装。

打开浏览器访问:
👉 https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/

查找适配 CUDA 11.8 的包,例如:

  • pytorch-1.13.1-py3.8_cuda11.8_cudnn8.7.0_0.tar.bz2
  • torchvision-0.14.1-py3.8_cu118.tar.bz2
  • torchaudio-0.13.1-py3.8_cu118.tar.bz2

下载这三个文件到本地(如 Downloads 目录),然后执行:

conda install --offline ~/Downloads/pytorch-*.tar.bz2 conda install --offline ~/Downloads/torchvision-*.tar.bz2 conda install --offline ~/Downloads/torchaudio-*.tar.bz2

验证安装:

python -c " import torch print('PyTorch Version:', torch.__version__) print('CUDA Available:', torch.cuda.is_available()) print('CUDA Version:', torch.version.cuda) print('GPU Count:', torch.cuda.device_count()) if torch.cuda.is_available(): print('Current GPU:', torch.cuda.get_device_name(0)) "

看到CUDA Available: True就表示成功了。

接着安装 TensorFlow。激活对应环境:

conda activate tensorflow

同样使用清华镜像加速。访问:
👉 https://pypi.tuna.tsinghua.edu.cn/simple/tensorflow/

下载适配包,如:

tensorflow-2.12.0-cp38-cp38-linux_x86_64.whl

安装:

pip install ~/Downloads/tensorflow-*.whl

注意:TensorFlow 2.11+ 仅支持 Python 3.7~3.11,因此我们创建环境时指定了 Python 3.8。

验证:

python -c " import tensorflow as tf print('TensorFlow Version:', tf.__version__) print('GPU Available:', tf.config.list_physical_devices('GPU')) print('Built with CUDA:', tf.test.is_built_with_cuda()) "

预期输出中应包含 GPU 设备信息,并确认Built with CUDA: True

到这里,双框架 GPU 环境均已就绪。不过实际使用中仍可能遇到一些典型问题,这里总结几个高频故障及其解决方案:

问题现象根本原因解决方案
nvidia-smi命令未找到驱动未正确安装或 PATH 未包含重新安装驱动,确认/usr/bin在 PATH 中
torch.cuda.is_available()返回 FalseCUDA 动态库未被加载检查LD_LIBRARY_PATH是否包含/usr/local/cuda/lib64
报错libcudart.so.11.0: cannot open shared object fileCUDA runtime 缺失或路径错误确认 CUDA 安装路径并更新LD_LIBRARY_PATH
conda: command not foundconda 未初始化且 PATH 未设置手动将anaconda3/bin添加到.bashrc
安装过程中图形界面崩溃X Server 与驱动安装冲突使用init 3进入纯文本模式再操作

特别提醒:如果你在笔记本或多显卡设备上操作,请留意 Bumblebee 或 PRIME 设置的影响。对于台式机单卡用户,上述流程已足够覆盖绝大多数场景。

整套环境搭建完成后,不仅可以流畅运行主流模型训练任务,还能轻松扩展至分布式训练、模型服务化等高级场景。更重要的是,通过 Anaconda 虚拟环境实现了良好的隔离性,未来升级某个框架也不会影响其他项目。

最后,写一段简单的测试脚本验证整体状态:

# test_gpu.py import torch import tensorflow as tf print("🚀 PyTorch GPU:", torch.cuda.is_available()) print("🚀 TensorFlow GPU:", len(tf.config.list_physical_devices('GPU')) > 0)

运行它,看到两个 ✅ 图标闪烁,那一刻的成就感,值得所有折腾。

这种高度集成且稳定的开发环境,已经成为当前 AI 工程实践的标准起点。无论是学术研究还是工业落地,一套可靠的基础架构能让你把精力真正集中在模型创新本身,而不是被环境问题牵绊。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/86861.html

相关文章:

  • YOLOv5网络结构解析与代码实现
  • 使用线性回归算法预测房价
  • gpt-oss-20b微调与扩展全指南
  • 「ECG信号处理——(29)基于分层分类的ECG心律失常检测系统设计与实现」2025年12月16日
  • FaceFusion报错:未检测到源人脸
  • Tigshop 开源商城系统 【商品预售功能】上新!全款+定金双模式深度适配全行业经营需求
  • YOLOv8官方文档中文解读:新手必读
  • 基于深度学习的植物病害检测系统(UI界面+YOLOv8/v7/v6/v5代码+训练数据集)
  • Stable Diffusion 3.5本地部署指南与一键整合包
  • Wan2.2-T2V-A14B本地部署与多GPU推理指南
  • 基于深度学习的跌倒检测系统(UI界面+YOLOv8/v7/v6/v5代码+训练数据集)
  • 构建个性化AI助手:LobeChat + 开源大模型完美组合
  • 免费守护网站安全:精选一年期SSL证书获取攻略
  • 私有化部署AI知识库——Anything-LLM企业级解决方案详解
  • 如何利用PaddlePaddle和清华源快速搭建高性能NLP训练环境
  • NVIDIA TensorRT镜像安装包下载与CUDA安装全攻略
  • kotaemon配置全解析:轻松定制文档问答系统
  • ACE-Step:开源生成式AI音乐模型解析
  • Seed-Coder-8B-Base能否辅助编写Istio AuthorizationPolicy?
  • Langflow本地部署:解决pip安装卡顿问题
  • LobeChat如何应对高并发请求?压力测试结果公布
  • LobeChat能否组织线上讲座?知识传播新形式
  • Qwen3-VL-8B如何实现近实时视频分析?
  • ACE-Step:开源生成式AI音乐大模型详解
  • LobeChat能否写作小说?创意灵感激发神器
  • Java大厂面试实录:面试官与谢飞机的爆笑对战
  • Bootstrap:随机森林的“多样性引擎”与量化利器
  • 块状Bootstrap:让金融时间序列“记忆”不丢失的魔法
  • 利用清华源加速TensorRT相关依赖的npm安装过程
  • 跨界转型AI产品经理:非算法专业出身的成功之道,揭秘大模型时代的新机遇!