第二章:环境搭建——Ubuntu系统配置、NVIDIA驱动与CUDA安装、Docker环境配置、PyTorch与MMDetection3D安装
说实话,做BEV感知这几年,我见过太多同学在环境搭建这一步就卡住了。明明算法思路都通了,结果装个驱动搞了两天,心态直接崩了。我自己也踩过不少坑,所以这一章,咱们就把环境彻底捋顺。
嗯,先给你看一张整体流程图,心里有个谱:
2.1 Ubuntu 系统配置
我个人习惯用 Ubuntu 20.04 LTS,原因很简单——生态最成熟。你想想看,大部分自动驾驶开源项目都是基于这个版本测试的,遇到问题搜一下,基本都有答案。
安装时注意几点:
- 分区建议:/ 分区至少 100GB,/home 分区留 200GB 以上。我刚开始做的时候只给了 80GB,结果装了几个数据集就满了,后来还得重新分区,麻烦得很。
- 软件源:安装完第一件事,换国内源。阿里云、清华、中科大都可以,速度差好几倍。
- 必备工具:装好系统后,先把这些装上:
sudo apt update
sudo apt upgrade -y
sudo apt install -y build-essential git vim curl wget net-tools
2.2 NVIDIA 驱动与 CUDA 安装
这一步是坑最多的地方。我曾经因为驱动版本和 CUDA 不匹配,折腾了一整天。后来学乖了,用了一个稳妥的方法。
先说驱动安装:
- 先查你的显卡型号:
lspci | grep -i nvidia - 去 NVIDIA 官网查对应驱动版本。或者直接用 Ubuntu 的附加驱动工具:
sudo ubuntu-drivers autoinstall
这个命令会自动推荐合适的驱动版本。我个人建议用 535 或 545 系列,比较稳定。
再说 CUDA 安装:
这里有个关键点——CUDA 版本要和 PyTorch 版本匹配。比如 PyTorch 2.0 以上推荐 CUDA 11.8 或 12.1。我一般用 CUDA 11.8,兼容性最好。
# 下载 CUDA 11.8 runfile
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run
装完后配置环境变量:
echo 'export PATH=/usr/local/cuda-11.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
验证一下:nvcc --version,看到版本号就对了。
2.3 Docker 环境配置
说实话,Docker 是我做 BEV 感知以来最庆幸学会的工具。你想想看,团队里每个人系统不一样,依赖版本不一样,用 Docker 直接打包,省了多少扯皮的时间。
安装 Docker:
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
安装 nvidia-docker:这样才能在容器里用 GPU。
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update
sudo apt install -y nvidia-docker2
sudo systemctl restart docker
测试一下:
docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu20.04 nvidia-smi
看到 GPU 信息就说明成功了。
2.4 PyTorch 安装
PyTorch 安装其实很简单,关键就是选对版本。我个人推荐 PyTorch 2.0 以上,因为 torch.compile 确实能提速不少。
# 在 Docker 容器内或裸机上执行
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118
验证:
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
输出 True 就对了。如果显示 False,八成是 CUDA 没装对,回去检查一下。
2.5 MMDetection3D 安装
MMDetection3D 是 BEV 感知绕不开的工具库。安装它之前,需要先装好 MMCV 和 MMDetection。
安装顺序很重要:
# 1. 安装 MMCV
pip install mmcv-full==1.7.1 -f https://download.openmmlab.com/mmcv/dist/cu118/torch2.0/index.html
# 2. 安装 MMDetection
pip install mmdet==3.0.0
# 3. 安装 MMDetection3D
git clone https://github.com/open-mmlab/mmdetection3d.git
cd mmdetection3d
pip install -v -e .
验证安装:
python -c "import mmdet3d; print(mmdet3d.__version__)"
看到版本号,恭喜你,环境搭好了。
2.6 环境验证与常见问题
最后,我建议你跑一个简单的 demo 来验证整个环境是否通畅。MMDetection3D 官方提供了很多预训练模型,随便挑一个跑跑看。
常见问题汇总:
| 问题 | 原因 | 解决方法 |
|---|---|---|
| nvidia-smi 找不到 | 驱动没装好 | 重新安装驱动,注意内核版本 |
| PyTorch 检测不到 GPU | CUDA 版本不匹配 | 检查 torch 和 cuda 版本是否对应 |
| MMCV 编译报错 | 依赖版本冲突 | 使用预编译包,不要源码编译 |
| Docker 无法使用 GPU | nvidia-docker 没装 | 安装 nvidia-docker2 并重启服务 |
嗯,环境搭建这部分就到这里。说实话,这一步虽然繁琐,但一旦配好了,后面就顺畅多了。我当年第一次配环境花了整整两天,现在熟练了,半小时搞定。你多练几次,也会很快的。
可可精品资料库