面向 Ubuntu 20.04 / 22.04 + NVIDIA 2080 Ti × 8 服务器,从显卡驱动到 Conda 环境及 多用户协同规范 一篇搞定。
目录
选择 Miniconda 的理由
系统前置:驱动与 CUDA
下载并安装 Miniconda
首次启动与基础配置
配置国内镜像 .condarc
CUDA Toolkit & cuDNN 安装方案
创建深度学习环境示例
多 GPU 调优要点
多人协作与 GPU 使用公约
环境管理速查表
提速技巧与最佳实践
常见问题 FAQ
环境备份与迁移
参考链接
选择 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 sudo add-apt-repository ppa:graphics-drivers/ppa -ysudo apt update && sudo apt install nvidia-driver-535 -ynvidia-smi 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-600sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pubsudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /" -ysudo 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
激活设置:
1 2 source ~/.bashrc conda --version
首次启动与基础配置 1 2 3 4 5 6 7 8 conda update -n base -c defaults conda conda config --set auto_activate_base false 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
方案 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 conda activate torch2 python -m ipykernel install --user --name torch2 --display-name "PyTorch 2 (CUDA12.1)"
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'
不占空闲显卡 :优先使用温度低、显存占用为 0 的卡。
确认进程归属 :nvidia-smi
中显示的 username
不是你 → 不要动。
2. 进程管理
绝不手动 kill -9
他人进程 。若需沟通请先联系群/Slack。
避免僵尸进程 :使用 tmux
/ screen
/ nohup
运行训练脚本,断线不中断。
日志必留 :python train.py > logs/$(date +%F_%T).log 2>&1 &
,方便定位问题。
3. 显卡绑定策略 1 2 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. 紧急处理
一句话 :先观察 → 后沟通 → 再操作,永远不要直接干掉别人的进程。
环境管理速查表
操作
命令
创建环境
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
提速技巧与最佳实践
mamba 并行解析依赖,速度 10× 于 conda。
conda config --set restore_free_channel true
避免「PackagesNotFoundError」。
定期 conda clean -a
,或将 pkgs_dirs
软链到大容量盘。
GitLab CI 中使用 mamba env create -f env.yml --yes
。
若同时依赖 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
生产部署可用 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" ]
参考链接
写在最后 :祝大伙儿都多发顶刊顶会,到时候请给我一个八作,谢谢谢谢谢谢谢谢谢谢谢谢😀