在复杂的现实环境中运行的自动驾驶车辆需要准确预测交通参与者之间的交互行为。GameFormer模型结合了一个Transformer编码器,以及一个分层Transformer解码器结构,来有效地模拟场景元素之间的关系。在每个解码层级,除了共享的环境上下文之外,解码器还利用前一级别的预测结果来迭代地完善交互过程。该模型在WOMD数据集上验证了有效性,取得了领先的性能。本仓库将GameFormer模型迁移到昇腾NPU,并进行了性能优化。
本仓已经支持以下模型任务类型
模型 | 任务列表 | 是否支持 |
---|---|---|
GameFormer | 训练 | ✔ |
参考实现:
url=https://github.com/MCZhi/GameFormer
commit_id=fcb0d4a0f5cbbcecf69f9b9796366d6f5f2ce128
适配昇腾 AI 处理器的实现:
url=https://gitee.com/ascend/DrivingSDK.git
code_path=model_examples/GameFormer
请参考昇腾社区中《Pytorch框架训练环境准备》文档搭建昇腾环境,本仓已支持表1中软件版本。
表 1 昇腾软件版本支持表
软件类型 | 支持版本 |
---|---|
FrameworkPTAdapter | 7.0.0 |
CANN | 8.1.RC1 |
表 2 三方库版本支持表
三方库 | 支持版本 |
---|---|
PyTorch | 2.1.0 |
激活 CANN 环境 将 CANN 包目录记作 cann_root_dir,执行以下命令以激活环境
source {cann_root_dir}/set_env.sh
参考《Pytorch框架训练环境准备》安装 2.1.0 版本的 PyTorch 框架和 torch_npu 插件,并安装其它依赖项。
cd DrivingSDK/model_examples/GameFormer
conda create -n GameFormer python=3.9
conda activate GameFormer
pip install torch==2.1.0
pip install torch_npu==2.1.0
pip install -r requirements.txt
安装waymo-open-dataset库:
对于x86架构Linux系统:
pip install waymo-open-dataset-tf-2-11-0==1.5.0
对于arm64架构Linux系统,waymo官方并没有提供预先编译好whl包。为了方便用户使用,我们提供arm64系统编译的whl包,可以直接在华为云OBS上进行下载。
wget --no-check-certificate https://pytorch-package.obs.cn-north-4.myhuaweicloud.com/DrivingSDK/packages/waymo_open_dataset_tf_2.11.0-1.5.0-py3-none-any.whl
pip install -r requirements_waymo.txt
pip install waymo_open_dataset_tf_2.11.0-1.5.0-py3-none-any.whl
拉取GamFormer模型代码仓库:
git clone https://github.com/MCZhi/GameFormer.git
cd GameFormer
git checkout fcb0d4a0f5cbbcecf69f9b9796366d6f5f2ce128
git apply ../patch/gameformer.patch
cd ..
安装 tcmalloc 高效内存资源分配库
mkdir gperftools && cd gperftools
wget --no-check-certificate https://github.com/gperftools/gperftools/releases/download/gperftools-2.16/gperftools-2.16.tar.gz
tar -zvxf gperftools-2.16.tar.gz
cd gperftools-2.16
./configure
make
make install
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so.4
cd ..
~/waymo
└── motion
├── training
│ ├── training.tfrecord-00000-of-01000
│ ├── training.tfrecord-00001-of-01000
│ ├── ...
│ ├── training.tfrecord-00997-of-01000
│ ├── training.tfrecord-00998-of-01000
│ └── training.tfrecord-00999-of-01000
└── validation
├── validation.tfrecord-00000-of-00150
├── validation.tfrecord-00001-of-00150
├── ...
├── validation.tfrecord-00148-of-00150
├── validation.tfrecord-00147-of-00150
└── validation.tfrecord-00149-of-00150
cd GameFormer/interaction_prediction
python data_process.py \
--load_path waymo/motion/training \
--save_path waymo/motion/training_processed \
--use_multiprocessing \
--processes=8
python data_process.py \
--load_path waymo/motion/validation \
--save_path waymo/motion/validation_processed \
--use_multiprocessing \
--processes=8
本任务主要提供单机8卡的训练脚本。
# 8卡性能 (1 epoch)
bash script/train_interaction_performance.sh 8
# 8卡精度 (30 epoch)
bash script/train_interaction.sh 8
芯片 | 卡数 | global batch size | Precision | epoch | ADE | FDE | 性能-单步迭代耗时(ms) |
---|---|---|---|---|---|---|---|
竞品A | 8p | 4096 | fp32 | 30 | 1.47 | 2.82 | 640 |
Atlas 800T A2 | 8p | 4096 | fp32 | 30 | 1.47 | 2.81 | 702 |
2025.01.22:首次发布。
2025.02.17:BUG修复。
2025.04.24:增加global batch size数据
在某些操作系统里,可能由于缺少依赖库的原因,pip install openexr执行失败,解决方案是升级gcc、g++、cmake版本,并且安装OpenEXR和OpenEXR-devel库。EulerOS/CentOS系统,执行以下命令:
sudo yum makecache sudo yum install gcc gcc-c++ cmake sudo yum install OpenEXR sudo yum install OpenEXR-devel
对于Ubuntu系统,执行以下命令:
```
sudo apt-get update
sudo apt install build-essential
sudo apt install cmake
sudo apt install openexr libopenexr-dev
```
此外,如果在编译过程中遇到git网络问题,可以尝试以下命令:
```
git config --global http.sslVerify false
git config --global https.sslVerify false
export GIT_SSL_NO_VERIFY=1
pip install -r requirements_waymo.txt
```
这是由于操作系统的GLIBC版本过低,waymo-open-dataset库需要GLIBC的版本在2.31以上。可以通过ldd --version命令查看GLIBC版本,若小于2.31需升级系统的GLIBC库。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。