文章目录
  1. 1. 目录
  2. 2. 选择 Miniconda 的理由
  3. 3. 系统前置:驱动与 CUDA
  4. 4. 下载并安装 Miniconda
  5. 5. 首次启动与基础配置
  6. 6. 配置国内镜像 .condarc
  7. 7. CUDA Toolkit & cuDNN 安装方案
    1. 7.1. 方案 A:系统级 CUDA(驱动自带)
    2. 7.2. 方案 B:Conda CUDA(推荐)
  8. 8. 创建深度学习环境示例
  9. 9. 多 GPU 调优要点
  10. 10. 多人协作与 GPU 使用公约
    1. 10.1. 1. 上机前先 “看一眼”
    2. 10.2. 2. 进程管理
    3. 10.3. 3. 显卡绑定策略
    4. 10.4. 4. 资源配额与排程
    5. 10.5. 5. 环境隔离
    6. 10.6. 6. 紧急处理
  11. 11. 环境管理速查表
  12. 12. 提速技巧与最佳实践
  13. 13. 常见问题 FAQ
  14. 14. 环境备份与迁移
  15. 15. 参考链接

面向 Ubuntu 20.04 / 22.04 + NVIDIA 2080 Ti × 8 服务器,从显卡驱动到 Conda 环境及 多用户协同规范 一篇搞定。

目录

  1. 选择 Miniconda 的理由
  2. 系统前置:驱动与 CUDA
  3. 下载并安装 Miniconda
  4. 首次启动与基础配置
  5. 配置国内镜像 .condarc
  6. CUDA Toolkit & cuDNN 安装方案
  7. 创建深度学习环境示例
  8. 多 GPU 调优要点
  9. 多人协作与 GPU 使用公约
  10. 环境管理速查表
  11. 提速技巧与最佳实践
  12. 常见问题 FAQ
  13. 环境备份与迁移
  14. 参考链接

选择 Miniconda 的理由

方案 体积 控制粒度 典型场景
Docker + Conda 镜像可大 云端 CI/CD & 环境隔离
Anaconda > 4 GB 桌面一次装好所有数据科学包
Miniconda ≈ 100 MB 最高 生产服务器 / 多 GPU 深度学习
  • 精简:仅含 conda 和依赖,减少磁盘与冲突。
  • 跨平台:相同 YAML 可在本地、云端复现。
  • 生态:配合 conda‑forge / pytorch 通道即可拿到预编译 CUDA 包。

系统前置:驱动与 CUDA

下文示例基于 Ubuntu 22.04 + NVIDIA Driver 535 + CUDA 12.1

1
2
3
4
5
6
7
8
9
10
11
12
# 1. 添加官方 PPA 并安装驱动(重启后生效)
sudo add-apt-repository ppa:graphics-drivers/ppa -y
sudo apt update && sudo apt install nvidia-driver-535 -y
# 查看版本
nvidia-smi

# 2. CUDA 工具链(若走 Conda 内置可跳过)
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /" -y
sudo apt update && sudo apt install cuda-toolkit-12-1 -y

提示:若采用 Conda CUDA,可仅安装显卡驱动即可,CUDA runtime 由环境包提供。

下载并安装 Miniconda

1
2
3
4
# 国内镜像(清华)
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 推荐安装路径:~/miniconda3,并选 yes 执行 `conda init`

激活设置:

1
2
source ~/.bashrc      # 或 ~/.zshrc
conda --version

首次启动与基础配置

1
2
3
4
5
6
7
8
# 更新自身
conda update -n base -c defaults conda

# 关闭 base 自动激活
conda config --set auto_activate_base false

# 安装 mamba 提速
conda install -n base -c conda-forge mamba

配置国内镜像 .condarc

路径:~/.condarc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
channels:
- pytorch
- nvidia
- conda-forge
- defaults
channel_priority: flexible
show_channel_urls: true

# 默认 & 自定义镜像(清华)
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
nvidia: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
1
2
# 清理索引缓存
conda clean -i

CUDA Toolkit & cuDNN 安装方案

方案 A:系统级 CUDA(驱动自带)

  • 优点nvcc 可全局使用;可编译自定义 CUDA Kernel。
  • 缺点:升级麻烦;多项目不同 CUDA 版本难以共存。

方案 B:Conda CUDA(推荐)

1
mamba create -n dl python=3.10 cudatoolkit=12.1 cudnn=8.9 -c nvidia -c conda-forge
  • 优点:环境级隔离,锁定版本,彻底避免系统污染。
  • 缺点:需在 Conda 环境内运行可执行文件。

2080 Ti 在 CUDA 12 上表现正常;若需编译旧项目,可切换 cudatoolkit=11.8

创建深度学习环境示例

1
2
3
4
5
6
mamba create -n torch2 python=3.10 pytorch=2.3 torchvision torchaudio pytorch-cuda=12.1 \
ninja numpy pandas scipy matplotlib jupyterlab ipykernel -c pytorch -c nvidia -c conda-forge

# 激活并注册 Jupyter 内核
conda activate torch2
python -m ipykernel install --user --name torch2 --display-name "PyTorch 2 (CUDA12.1)"
  • TensorFlow 2.16 GPU 版示例:
1
mamba create -n tf2 python=3.10 tensorflow=2.16 cudnn=8.9 -c conda-forge -c nvidia

多 GPU 调优要点

变量 说明
export NCCL_SOCKET_IFNAME=eth0 指定 RDMA/以太网接口,避免环回 slow path
export NCCL_IB_DISABLE=1 无 InfiniBand 时可关闭,减少 NCCL 超时
export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 控制进程可见显卡顺序
export TORCH_CUDA_ARCH_LIST=7.5 编译自定义算子时加速(2080 Ti 架构 7.5)

Tip:多卡训练使用 torchrun --nproc_per_node=8 或 deepspeed,并开启 --pin_memory 及混合精度。请定期监控 nvidia-smi dmon

多人协作与 GPU 使用公约

服务器是大家的生产力工具,以下约定请务必遵守:

1. 上机前先 “看一眼”

1
2
nvidia-smi                # 官方命令
alias gpustat='watch -n1 gpustat -cpu' # 推荐安装 gpustat
  • 不占空闲显卡:优先使用温度低、显存占用为 0 的卡。
  • 确认进程归属nvidia-smi 中显示的 username 不是你 → 不要动。

2. 进程管理

  • 绝不手动 kill -9 他人进程。若需沟通请先联系群/Slack。
  • 避免僵尸进程:使用 tmux / screen / nohup 运行训练脚本,断线不中断。
  • 日志必留python train.py > logs/$(date +%F_%T).log 2>&1 &,方便定位问题。

3. 显卡绑定策略

1
2
# 仅让脚本看到指定 GPU:
CUDA_VISIBLE_DEVICES=2,3 python train.py --gpus 2
  • 不要跨卡抢占:4 张卡的任务就绑 4 张相邻的,不要留下碎片。
  • 自动分配脚本:可安装 pip install greencall 或使用下列片段:
1
2
3
4
5
6
free_gpu=$(python - <<'PY'
import GPUtil,os
ids=[g.id for g in GPUtil.getAvailable(order='memory',limit=1)]
print(ids[0] if ids else '')
PY)
CUDA_VISIBLE_DEVICES=$free_gpu python train.py &

4. 资源配额与排程

  • 长期任务 (>24h) 建议用 Slurm 或 cron 配合队列。
  • 实验室小规模可采用 at 或简单 Bash 排队脚本。

5. 环境隔离

  • 每个项目 / 学生单独 Conda env,避免 “依赖地狱”。
  • conda env export > env.yml 分享复现实验环境。

6. 紧急处理

  • 若发现占满显卡却无所属用户、且超过 6 小时无日志更新:

    1. 截图 nvidia-smi 和 ps -aux | grep pid 保存证据。
    2. 在群里 @all 通知 30 分钟。
    3. 超时无人认领再温柔地 kill -15 pid,依然存活才 kill -9

一句话:先观察 → 后沟通 → 再操作,永远不要直接干掉别人的进程。

环境管理速查表

操作 命令
创建环境 mamba create -n myenv python=3.11
激活 / 退出 conda activate myenv / conda deactivate
删除环境 conda remove -n myenv --all
列出包来源 conda list --show-channel-urls
导出 YAML conda env export > env.yml
离线备份 `conda pack -n myenv -o my

提速技巧与最佳实践

  1. mamba 并行解析依赖,速度 10× 于 conda。
  2. conda config --set restore_free_channel true 避免「PackagesNotFoundError」。
  3. 定期 conda clean -a,或将 pkgs_dirs 软链到大容量盘。
  4. GitLab CI 中使用 mamba env create -f env.yml --yes
  5. 若同时依赖 PyPI 包,务必先 mamba 再 pip

常见问题 FAQ

问题 解决方案
Driver 与 CUDA 版本不匹配 查看 nvidia-smi 顶栏显示的 CUDA 版本;Conda 环境需 ≤ 驱动支持版本。
ImportError: libcudart.so not found 环境未安装 cudatoolkit / cudnn;或未 conda activate
多卡训练速率不一致 确认 NCCL_P2P_DISABLE=0;检查 PCIe 绑定与 CPU NUMA 节点。
显存碎片化 torch.cuda.empty_cache();或在启动脚本中加入 export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128.

环境备份与迁移

1
2
3
4
5
# 导出精确锁定文件
conda env export > lock.yml

# 在新服务器离线恢复
mamba env create -f lock.yml # 或 conda env create

生产部署可用 Docker + Conda

1
2
3
4
5
6
7
8
9
FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04
RUN apt-get update && apt-get install -y wget git && rm -rf /var/lib/apt/lists/*
COPY lock.yml /tmp/lock.yml
RUN wget -q https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /tmp/miniconda.sh \
&& bash /tmp/miniconda.sh -b -p /opt/conda && /opt/conda/bin/conda init bash \
&& /opt/conda/bin/conda config --set auto_activate_base false \
&& /opt/conda/bin/mamba env create -f /tmp/lock.yml && rm /tmp/*
ENV PATH="/opt/conda/envs/torch2/bin:/opt/conda/bin:$PATH"
CMD ["python"]

参考链接


写在最后:祝大伙儿都多发顶刊顶会,到时候请给我一个八作,谢谢谢谢谢谢谢谢谢谢谢谢😀

文章目录
  1. 1. 目录
  2. 2. 选择 Miniconda 的理由
  3. 3. 系统前置:驱动与 CUDA
  4. 4. 下载并安装 Miniconda
  5. 5. 首次启动与基础配置
  6. 6. 配置国内镜像 .condarc
  7. 7. CUDA Toolkit & cuDNN 安装方案
    1. 7.1. 方案 A:系统级 CUDA(驱动自带)
    2. 7.2. 方案 B:Conda CUDA(推荐)
  8. 8. 创建深度学习环境示例
  9. 9. 多 GPU 调优要点
  10. 10. 多人协作与 GPU 使用公约
    1. 10.1. 1. 上机前先 “看一眼”
    2. 10.2. 2. 进程管理
    3. 10.3. 3. 显卡绑定策略
    4. 10.4. 4. 资源配额与排程
    5. 10.5. 5. 环境隔离
    6. 10.6. 6. 紧急处理
  11. 11. 环境管理速查表
  12. 12. 提速技巧与最佳实践
  13. 13. 常见问题 FAQ
  14. 14. 环境备份与迁移
  15. 15. 参考链接