本文旨在为安装并调试Carla AD Leaderboard的研究人员提供报错解决的参考
Carla leaderboard 是一个重要的自动驾驶算法评估系统,其提供了诸多交通场景,并通过agent的表现对自动驾驶算法进行测评。用户可以通过统一的接口,将所需的传感器数据传递给待测试的自动驾驶模型,并将模型输出的控制指令传输给测试agent,完成测试任务。诸多SOTA自动驾驶算法的闭环测试都使用了Carla leaderboard,例如Transfuser,Reasonet等。因此,能够成功安装Carla leaderboard,并复现这些AD算法是自动驾驶算法研究的先决条件。
Carla leaderboard官方教程:Get started with Leaderboard 1.0 - CARLA Autonomous Driving Leaderboard
许多算法也将整合leaderboard后的算法发布在github仓库,似乎复现这些算法只需按照步骤运行即可。然而,由于Carla leaderboard发布时间较早,版本问题成为了一个重要挑战。以下是作者在复现Transfuser过程中遇到的问题,在本文记录,供诸位参考。
Transfuser: https://github.com/autonomousvision/transfuser
测试环境:Ubuntu22.04,RTX4090
一、合适的CUDA与Pytorch
一些算法的提出时间大多在2021年前后,他们使用了较为陈旧的cuda版本(例如10.2),而40系显卡需要更高版本的cuda支持,因此我们需要安装较新的cuda。多个版本的cuda管理是个非常麻烦的事情,这里推荐在conda安装cudatoolkit与cudnn便捷实现conda环境与cuda版本的统一管理,具体方法参考:conda虚拟环境中安装cuda和cudnn,再也不用头疼版本号的问题了_conda cudnn-CSDN博客
尽管40系列显卡推荐11.8以上的cuda,但是实测下来,11.3的cuda也可以支持40系列显卡。在安装好cuda相关内容,便可以开始安装pytorch,这里使用了1.11.0的版本,安装命令如下:
# CUDA 11.3
# Conda install
conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=11.3 -c pytorch
# Pip install
pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113
同时,你可能需要安装合适的pytorch_scatter, 官方仓库: https://data.pyg.org/whl/
二、合适的c++动态链接库
当你遇到如下报错时,这大概率是conda的动态链接库老旧导致的:
_scatter_cuda.so: undefined symbol: _ZSt28__throw_bad_array_new_lengthv
解决方法很简单,用你本地系统的连接库替换conda库即可,参考:
# 原文件位置
anaconda3/envs/your_env_name/lib
# 删除原有链接
rm libstdc++.so libstdc++.so.6
# 创建新的软链接
sudo ln -s libstdc++.so.6.0.30 libstdc++.so.6
sudo ln -s libstdc++.so.6.0.30 libstdc++.so
运行效果如下: