1. 背景:为什么选 Orion?

今年做硕士毕业论文,方向是「视觉-语言-动作(VLA)端到端轨迹规划」。调研了一圈开源方案:

于是拍板:就用 Orion 当 baseline,结果环境搭建踩坑两周,差点劝退…… 今天把完整流程+踩坑笔记打包分享,帮大家把“两周”压缩到“半天”。


2. 前置知识 30 秒速览

表格

复制

概念 一句话解释
MMDetection 目标检测界的“安卓”,所有 backbone/head/neck 都能插拔。Orion 只是加了 VLA 新 head。
Bench2Drive 带语言描述的大规模 Carla 闭环场景数据集,官方 200+ 场景,论文里用 20 个就能出曲线。
VLA Vision-Language-Action,把“语言指令”和“视觉观测”一起塞进 Transformer,直接输出未来轨迹。

3. 硬件 & 系统底线

    • 英伟达 OmniDrive:只放论文没放完整代码;

    • LMDrive:语言标注太简单,场景维度不足;

    • 小米 Orion:

      1. 直接把 VLA 模块嵌进 MMDetection,工业界友好;

      2. 配套 Bench2Drive 多场景+语言标注,天然适合写论文做消融;

      3. 代码仓完整,甚至给了 ChatB2D 语言标注模型。

    • Ubuntu 20.04/22.04 均可

    • GPU ≥ RTX3080(10 GB)显存,否则 batch-size=1 都会 OOM

    • CUDA 必须 11.8,作者 hard code 了 flash-attn 0.2.8,CUDA12 会直接炸。

    • Python 3.9(官方推荐),3.10 也能跑,再高会踩 torch 扩展编译坑。

4. 全流程 7 步走

4.1 拉取两级代码

# 1. Bench2DriveZoo 数据工具
git clone https://github.com/Thinklab-SJTU/Bench2DriveZoo.git

# 2. Orion 主仓
git clone https://github.com/xiaomi-mlab/Orion.git

# 3. Bench2Drive 数据工具
git clone https://github.com/Thinklab-SJTU/Bench2Drive.git

4.2 CUDA11.8 + PyTorch1.13.1 精准对齐

# 官网 runfile 安装,不要 apt 版,避免驱动冲突
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 --toolkit --silent --override

# 装好后再上 pytorch
pip install torch==1.13.1+cu118 torchvision==0.14.1+cu118 \
            -f https://download.pytorch.org/whl/torch_stable.html

4.3 一键下载“迷你” Bench2Drive(官方 200G→自选 20G)

cd Bench2Drive
bash tools/download_mini.sh   # 默认下 5 个场景,想多加改脚本循环即可

地图数据按需下:

# 假设你场景里出现 Town05、Town03
git-lfs clone https://huggingface.co/datasets/rethinklab/Bench2Drive-Map
cp -r Bench2Drive-Map/Town05 Bench2Drive-Map/Town03 /path/to/Bench2DriveZoo/data/

最终目录树:

Bench2DriveZoo/data
├─ v1
│  ├─ Accident_Town03_Route156_Weather0
│  └─ ConstructionObstacle_Town05_Route68_Weather8
└─ map
   ├─ Town03.pcd
   └─ Town05.pcd

4.4 先改 json 白名单,再生成索引!

打开 Bench2DriveZoo/configs/_base_/dataset/bench2drive_base_train_val_split.json

只保留你已经下载的场景名(与 data/v1/ 文件夹名称完全一致)。例如:(train:训练集,val:测试集)

{
  "train": [
    "v1/Accident_Town03_Route156_Weather0",
    "v1/ConstructionObstacle_Town05_Route68_Weather8"
  ],
  "val": [
    "v1/DynamicObjectCrossing_Town02_Route13_Weather6",
    "v1/YieldToEmergencyVehicle_Town04_Route165_Weather7"
  ]
}

保存后,运行数据打包脚本:

python tools/prepare_B2D.py

    4.5 把数据“搬进” Orion

    cp -r Bench2DriveZoo/data/*  Orion/data/

    4.6 下载 3 个预训练权重(缺一不可)

    权重 地址 放哪里
    ChatB2D 语言标注 https://huggingface.co/datasets/poleyzdk/Chat-B2D/tree/main Orion/data/chat_b2d/
    Q-Former https://huggingface.co/exiawsh/pretrain_qformer/ Orion/data/pretrain_qformer/
    EVA02 PETR proj https://github.com/NVlabs/OmniDrive/releases/download/v1.0/eva02_petr_proj.pth Orion/data/eva02_petr_proj.pth

    4.7 安装 Orion 依赖 & 解决 flash-attn 0.2.8 地狱

    cd Orion
    pip install -r requirements.txt

    坑来了
    flash-attn==0.2.8 编译报 flash_attn_varlen_kvpacked_func 找不到。
    解法:作者接口名写错,手动改一行:

    # 先装完 0.2.8 轮子(会自动编)
    pip install flash-attn==0.2.8
    
    # 再改源码
    vim orion/models/backbones/flash_attn_1.py
    # 把 flash_attn_varlen_kvpacked_func → flash_attn_unpadded_kvpacked_func
    # 保存后 pip install -e . 重新打包即可

    5. 验证安装:跑通可视化 demo

    Logo

    DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

    更多推荐