news 2026/2/25 9:46:58

Ubuntu 18.04配置TensorFlow与PyTorch GPU环境

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/22 18:48:32

SHA-256 哈希实现最基本的加密

SHA-256 是哈希算法(无密钥)import hashlib# 核心一行:字符串 → 编码 → SHA-256 加密 → 十六进制密文 cipher_text hashlib.sha256("要加密的内容".encode("utf-8")).hexdigest()print("SHA-256 密文&#xff1…

作者头像 李华
网站建设 2026/2/17 23:18:51

LobeChat能否设置访问密码?简单认证防护设置方法

LobeChat 能否设置访问密码?简单认证防护设置方法 在如今越来越多个人开发者和企业尝试搭建私有 AI 对话系统的背景下,LobeChat 凭借其现代化的界面设计、对多种大模型的良好支持以及开源可定制的特性,逐渐成为构建个性化 AI 助手门户的热门选…

作者头像 李华
网站建设 2026/2/23 4:40:36

FLUX.1-ControlNet-Union性能调优全指南

FLUX.1-ControlNet-Union性能调优全指南 在高分辨率AI图像生成日益普及的今天,你是否经历过这样的场景:等待一张图生成近一分钟,显存突然爆满导致任务中断,或者多个控制信号相互干扰,最终画面结构错乱?这些…

作者头像 李华
网站建设 2026/2/23 15:04:36

使用Miniconda管理Python多版本环境

使用 Miniconda 管理 Python 多版本环境 在日常开发中,尤其是从事 AI、数据科学或算法研究时,你是否曾遇到过这样的场景:某个项目依赖 PyTorch 1.13,要求 Python 3.9;而另一个老项目却只能运行在 TensorFlow 1.15 和 P…

作者头像 李华
网站建设 2026/2/24 23:30:41

LobeChat能否模拟面试官?AI面试训练营开课

LobeChat 能否模拟面试官?AI 面试训练营已上线 在程序员求职季,一场真实的面试可能意味着数周准备、反复打磨简历、模拟问答,甚至还要应对“你最大的缺点是什么”这类经典难题。但现实是,大多数人并没有足够的机会进行高质量的实战…

作者头像 李华