第二章:环境搭建——Ubuntu系统配置、NVIDIA驱动与CUDA安装、Docker环境配置、PyTorch与MMDetection3D安装

说实话,做BEV感知这几年,我见过太多同学在环境搭建这一步就卡住了。明明算法思路都通了,结果装个驱动搞了两天,心态直接崩了。我自己也踩过不少坑,所以这一章,咱们就把环境彻底捋顺。

嗯,先给你看一张整体流程图,心里有个谱:

BEV感知环境搭建全流程 Ubuntu 系统配置 NVIDIA驱动 + CUDA Docker 环境配置 PyTorch 安装 MMDetection3D 可选:裸机直接安装 (不经过Docker) 推荐路径:Ubuntu → 驱动/CUDA → Docker → PyTorch → MMDetection3D 虚线为备选方案,适合不想用Docker的同学

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 不匹配,折腾了一整天。后来学乖了,用了一个稳妥的方法。

先说驱动安装:

  1. 先查你的显卡型号:lspci | grep -i nvidia
  2. 去 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 信息就说明成功了。

我的习惯:我会在 Docker Hub 上拉一个 PyTorch 官方镜像,然后在此基础上搭建环境。这样基础依赖都是现成的,省时省力。

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 .
避坑指南:我曾经因为 MMCV 版本和 PyTorch 不匹配,编译时各种报错。后来发现一定要用官方提供的预编译包,不要自己从源码编译,太容易出问题了。

验证安装:

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 并重启服务

嗯,环境搭建这部分就到这里。说实话,这一步虽然繁琐,但一旦配好了,后面就顺畅多了。我当年第一次配环境花了整整两天,现在熟练了,半小时搞定。你多练几次,也会很快的。

我的建议:把配好的环境打包成 Docker 镜像,以后换机器直接拉下来用,省心省力。

可可精品资料库