news 2026/4/3 6:26:17

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/4/1 18:12:34

使用LLaMA-Factory对GLM-4-9B-Chat进行LoRA微调

使用LLaMA-Factory对GLM-4-9B-Chat进行LoRA微调 在大模型应用日益普及的今天,如何快速、低成本地定制一个符合特定场景需求的语言模型,已经成为开发者和企业关注的核心问题。直接全参数微调动辄数十GB显存消耗,对大多数团队而言并不现实。而像…

作者头像 李华
网站建设 2026/3/13 21:04:21

Wan2.2-T2V-A14B硬件要求全解析

Wan2.2-T2V-A14B硬件要求全解析 在生成式AI的演进中,文本到视频(T2V)一直被视为最后一道“圣杯级”关卡。静态图像可以靠瞬间爆发力生成,但一段流畅、连贯、具备物理逻辑和情感表达的视频,意味着系统必须同时处理语义理…

作者头像 李华
网站建设 2026/3/13 8:57:17

异常场景设计 —— 数据交换风险解决方案

文章目录 异常场景设计 —— 数据交换风险解决方案场景一 MQ消息丢失一、先搞懂MQ消息丢失的3个常见环节二、方案拆解:每个环节如何防丢失?1. 生产者同步日志:记录“消息已发出”的证据2. 消费者ACK确认:让MQ知道“我真的处理完了…

作者头像 李华
网站建设 2026/4/2 3:04:41

HTTP SSE 流式响应处理:调用腾讯 智能应用开发平台ADP智能体的 API

一、场景背景 腾讯 ADP(智能应用开发平台)提供的大模型问答接口基于 HTTP SSE(Server-Sent Events)协议返回流式数据,数据分批次推送且通过is_final字段标识最终完整结果。本文聚焦该场景,提供通用的 SSE 流式响应处理方案,精准提取接口返回的最终结果,保证 UTF-8 编码…

作者头像 李华
网站建设 2026/3/31 19:59:52

LobeChat能否生成Latex公式?学术写作加速器

LobeChat能否生成Latex公式?学术写作加速器 在科研和工程领域,一个常见的场景是:你正在撰写一篇论文,突然需要插入薛定谔方程或麦克斯韦方程组的精确表达式。手动回忆并编写 LaTeX 代码不仅耗时,还容易出错——尤其是当…

作者头像 李华
网站建设 2026/4/3 3:21:54

中烟创新BI数据大屏:赋能烟草营销智能决策与专卖精准监管

面对供应链复杂化、监管趋严与市场多变的新常态,烟草企业急需深化数据整合、洞察与敏捷响应,以推动治理现代化与营销精准化进程。北京中烟创新科技有限公司(简称:中烟创新)开发的BI数据大屏解决方案,正是针…

作者头像 李华