在 Ubuntu 24.04 LTS 上使用 Conda 配置 PyTorch 深度学习环境,最佳实践是优先使用 conda-forge 渠道安装官方支持的 PyTorch 构建(含 CUDA 支持),并严格遵循 PyTorch 官方推荐方式(避免混用 pip/conda)。以下是经过验证、安全、可复现的完整指南(适用于 CPU + GPU 场景):
✅ 前提条件检查
# 1. 确保系统已更新(Ubuntu 24.04 默认含较新内核和驱动支持)
sudo apt update && sudo apt upgrade -y
# 2. 【GPU 用户必做】验证 NVIDIA 驱动与 CUDA 兼容性(PyTorch 2.3+ 推荐 CUDA 12.1/12.4)
nvidia-smi # 查看驱动版本 → 驱动 ≥ 535(支持 CUDA 12.x)
# 若未安装驱动:参考 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/
# ⚠️ Ubuntu 24.04 默认仓库的 `nvidia-driver-535` 或 `545` 已足够,无需手动编译
# 3. 安装基础依赖(Conda 所需)
sudo apt install -y curl wget git build-essential libssl-dev libffi-dev
🐍 步骤 1:安装 Miniconda(轻量、推荐,替代 Anaconda)
# 下载最新 Miniconda3(Linux x86_64,Python 3.11+ 兼容 Ubuntu 24.04)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
source $HOME/miniconda3/bin/activate # 初始化 conda(或重启终端后运行:conda init bash)
# 验证
conda --version # 应 ≥ 24.3.0
💡 为什么 Miniconda?
更小体积(~100MB)、无预装包冲突风险;Anaconda 的预装包(如 numpy/scipy)可能与 PyTorch 的 CUDA 构建不兼容。
🧪 步骤 2:创建专用环境(推荐 Python 3.11 或 3.12)
# 创建环境(指定 Python 版本,避免默认 3.13 —— PyTorch 2.3 尚未完全支持)
conda create -n pytorch-env python=3.11 -y
conda activate pytorch-env
# 添加 conda-forge(PyTorch 官方推荐渠道,比 defaults 更新更快、CUDA 支持更全)
conda config --add channels conda-forge
conda config --set channel_priority strict # 关键!防止 defaults 与 conda-forge 冲突
⚙️ 步骤 3:安装 PyTorch(根据硬件选择方案)
✅ 方案 A:GPU(CUDA 12.1)→ 最推荐(PyTorch 2.3+ 官方默认 CUDA 版本)
# 安装 PyTorch + torchvision + torchaudio(conda-forge 提供完整 CUDA 12.1 构建)
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia -y
# 验证 CUDA 是否可用
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.cuda.device_count())"
# ✅ 输出示例:2.3.0, True, 1+
✅ 方案 B:GPU(CUDA 12.4)→ 适合新驱动(如 NVIDIA 550+)
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia -y
✅ 方案 C:CPU-only(无 GPU 或仅测试)
conda install pytorch torchvision torchaudio cpuonly -c pytorch -y
🔑 关键说明:
- 使用
-c pytorch和-c nvidia渠道(非 conda-forge 的 PyTorch 包),确保 CUDA 运行时、cuDNN、NCCL 严格匹配。pytorch-cuda=12.1是 meta-package,自动拉取对应 CUDA 版本的 PyTorch + CUDA 工具链(无需单独装 cudatoolkit)。- ❌ 避免
pip install torch:在 conda 环境中混用 pip 可能破坏 CUDA 库链接(尤其libcudnn.so版本冲突)。
🧰 步骤 4:安装常用深度学习工具(conda 优先)
# 数据科学 & DL 生态(全部通过 conda 安装,保证 ABI 兼容)
conda install -y jupyter matplotlib scikit-learn pandas tqdm ipykernel
# 可选:提速库(如 cuBLAS 替代 OpenBLAS)
conda install -y mkl # CPU 提速(Intel 处理器推荐)
# 或 conda install -y openblas # AMD/通用
# 添加 Jupyter 内核(使环境在 Jupyter 中可见)
python -m ipykernel install --user --name pytorch-env --display-name "Python (pytorch-env)"
🛡️ 步骤 5:安全加固与最佳实践
# 1. 锁定环境(生成可复现的锁文件)
conda list --explicit > pytorch-env-spec.txt
# 后续重建:conda create --name new-env --file pytorch-env-spec.txt
# 2. 禁用自动更新(防止意外升级破坏 CUDA 兼容性)
conda config --set auto_update_conda false
conda config --set notify_outdated_contras false
# 3. 【GPU 用户】验证 CUDA 性能(可选)
python -c "
import torch
x = torch.randn(1000, 1000, device='cuda')
y = torch.randn(1000, 1000, device='cuda')
%timeit torch.mm(x, y) # 应在毫秒级(CPU 版本会报错或极慢)
"
🚫 常见错误规避清单
| 问题 | 原因 | 解决方案 |
|---|---|---|
torch.cuda.is_available() == False |
驱动/CUDA 版本不匹配;环境变量污染 | 用 nvidia-smi + nvcc --version 检查;删除 LD_LIBRARY_PATH 中冲突的 CUDA 路径 |
ImportError: libcudnn.so.8: cannot open shared object file |
conda 安装的 cuDNN 与 PyTorch 不匹配 | 不要手动装 cudnn!pytorch-cuda=12.1 已包含正确版本 |
OSError: [Errno 12] Cannot allocate memory(GPU 训练) |
Ubuntu 24.04 默认 cgroup v2 内存限制 | 在 /etc/default/grub 中添加 systemd.unified_cgroup_hierarchy=0,然后 sudo update-grub && reboot(官方已知问题) |
| Jupyter 无法识别环境 | kernel 未注册 | 运行 python -m ipykernel install...(见步骤 4) |
📦 补充:快速一键脚本(保存为 setup_pytorch.sh)
#!/bin/bash
set -e
echo "✅ Setting up PyTorch on Ubuntu 24.04..."
wget -q https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
source $HOME/miniconda3/bin/activate
conda create -n pytorch-env python=3.11 -y
conda activate pytorch-env
conda config --add channels conda-forge --add channels pytorch --add channels nvidia
conda config --set channel_priority strict
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -y
conda install jupyter matplotlib scikit-learn pandas tqdm ipykernel -y
python -m ipykernel install --user --name pytorch-env --display-name "PyTorch (CUDA 12.1)"
echo "🎉 Done! Run 'conda activate pytorch-env' and 'jupyter lab'"
运行:bash setup_pytorch.sh
✅ 最终验证(复制粘贴执行)
conda activate pytorch-env
python -c "
import torch
print('PyTorch version:', torch.__version__)
print('CUDA available:', torch.cuda.is_available())
if torch.cuda.is_available():
print('CUDA version:', torch.version.cuda)
print('GPU count:', torch.cuda.device_count())
print('Current device:', torch.cuda.get_device_name(0))
print('All OK! 🚀')
"
✅ 输出应显示
CUDA available: True及 GPU 名称(如NVIDIA RTX 4090)。
如需进一步优化(多卡训练、TensorRT 提速、W&B 集成、Docker 封装),欢迎继续提问!
记住核心原则:conda-forge 用于通用包,pytorch/nvidia 渠道专用于 PyTorch CUDA 构建,绝不混用 pip 安装核心框架。
PHPWP博客