BEHAVIOR-1K 评测#

BEHAVIOR-1K 是基于 OmniGibson 与 Isaac Sim 的大规模家居场景仿真基准,控制双臂 R1 Pro 机器人完成抓取、放置、整理等家庭操作任务。RLinf 支持在 BEHAVIOR 环境中并行评测 OpenPI 等 VLA 策略,并输出 eval/success_once 等指标。

相关训练文档:基于Behavior评测平台的强化学习训练

环境准备#

安装依赖

bash requirements/install.sh embodied --model openpi --env behavior
source .venv/bin/activate

当前 evaluations/behavior/ 仅提供 OpenPI π₀.₅ 示例;训练侧还支持 OpenVLA-OFT,可从 examples/embodiment/config/ 中的训练配置派生评测 YAML(见 配置参考)。

硬件与 Isaac Sim

BEHAVIOR 依赖 Isaac Sim 4.5,对 GPU 与驱动有额外要求,详见训练文档中的 Isaac Sim 依赖说明。要点如下:

  • 建议配备支持 Ray Tracing 的 GPU(如 RTX 30/40 系列);A100、H100 等无 RT 能力的卡渲染质量较差,画面可能出现马赛克或模糊。

  • Hopper 及以上架构 GPU 需使用 570 及以上版本 NVIDIA 驱动。

也可使用官方 Docker 镜像 rlinf/rlinf:agentic-rlinf0.2-behavior 运行评测,详见 基于Behavior评测平台的强化学习训练

环境变量

每次评测前须设置 ISAAC_PATH 与 OmniGibson 数据路径(run_eval.sh 会自动补全 OMNIGIBSON_DATASET_PATH 等衍生变量,以及 EXP_PATHCARB_APP_PATH):

export ISAAC_PATH=/path/to/isaac-sim
export OMNIGIBSON_DATA_PATH=/path/to/BEHAVIOR-1K-datasets
export OMNIGIBSON_DATASET_PATH=${OMNIGIBSON_DATA_PATH}/behavior-1k-assets/
export OMNIGIBSON_KEY_PATH=${OMNIGIBSON_DATA_PATH}/omnigibson.key
export OMNIGIBSON_ASSET_PATH=${OMNIGIBSON_DATA_PATH}/omnigibson-robot-assets/

BEHAVIOR 资源体积超过 30 GB,下载与 license 配置步骤见 基于Behavior评测平台的强化学习训练 中的「资源下载」一节。

示例配置#

evaluations/behavior/ 目录下已有以下示例:

配置文件

环境 preset

模型

behavior_openpi_pi05_eval.yaml

behavior_r1pro

π₀.₅

evaluations/behavior/<config>.yaml 不存在,run_eval.sh 会回退到 examples/embodiment/config/ 下同名配置(例如 behavior_ppo_openpi_pi05_eval)。回退配置包含 actor / algorithm 等训练段,但设置 runner.only_eval: True 后仍可正常评测。

完整评测流程#

Step 1:激活环境并设置路径

source .venv/bin/activate
export ISAAC_PATH=/path/to/isaac-sim
export OMNIGIBSON_DATA_PATH=/path/to/BEHAVIOR-1K-datasets
export OMNIGIBSON_DATASET_PATH=${OMNIGIBSON_DATA_PATH}/behavior-1k-assets/
export OMNIGIBSON_KEY_PATH=${OMNIGIBSON_DATA_PATH}/omnigibson.key
export OMNIGIBSON_ASSET_PATH=${OMNIGIBSON_DATA_PATH}/omnigibson-robot-assets/

Step 2:准备模型

推荐预训练权重:RLinf/RLinf-Pi0-Behavior <https://huggingface.co/RLinf/RLinf-Pi0-Behavior>`_(下载命令见训练文档)。若使用第三方 OpenPI 权重(如 OpenPI-Comet),需先转换为 PyTorch 格式后再填入 ``rollout.model.model_path`

Step 3:编辑配置

复制或编辑目标 YAML,至少修改 rollout.model.model_path。通用 env.eval 字段见 配置参考 中的 env.eval 字段说明;BEHAVIOR 特有字段与评测协议见下文 评测配置详解

示例 behavior_openpi_pi05_eval.yaml 中还需保持与训练一致的 OpenPI 参数(action_dim: 23num_action_chunks: 32openpi.config_name: pi05_behavior 等)。

Step 4:启动评测

bash evaluations/run_eval.sh behavior behavior_openpi_pi05_eval \
  rollout.model.model_path=/path/to/model

Step 5:查看结果

终端输出 eval/success_once;日志与视频见 日志与结果

评测配置详解#

BEHAVIOR 评测 每次运行对应单个任务 (由 omni_config.task.activity_name 指定),不会在一次启动中自动遍历全部 50 个任务。以下字段共同决定并行规模、单条轨迹长度与初始场景实例。

评测协议概述#

BEHAVIOR-1K 共 50 个 household 任务(任务名列表见 rlinf/envs/behavior/behavior_task.jsonl)。behavior_r1pro preset 默认任务为 turning_on_radio,场景为 house_double_floor_lower

每条评测轨迹由以下配置唯一确定:

  • omni_config.task.activity_name:任务名称,决定语言指令与 BDDL 定义;

  • omni_config.task.activity_definition_id:任务定义变体编号(通常为 0);

  • omni_config.task.activity_instance_idinstance_resample_mode:初始物体布局与机器人位姿。

instance_resample_mode 支持三种模式:

  • disabled (默认):每次 reset 加载 activity_instance_id 对应的固定实例;若设置了 activity_instance_dir,则从该目录读取对应 JSON。

  • offline:每次 reset 从 activity_instance_dir随机 选取一个缓存实例(需先下载官方 2025-challenge-task-instances 或用 instance_generator.py 生成)。

  • online:reset 时在线重采样物体布局(需 online_object_sampling: Trueuse_presampled_robot_pose: False,启动较慢)。

备注

单次启动不会自动遍历全部任务或 init state。要评测多个任务,需分别修改 activity_name 并多次运行,或编写批量脚本;要评测多个 instance,请使用 instance_resample_mode: offline 并配合 rollout_epoch 取平均。

env.eval 通用字段#

字段

BEHAVIOR 设置建议

total_num_envs

全局并行环境数。单个 BEHAVIOR 环境约占 10 GiB 显存,请按 GPU 显存酌情设置;示例默认 8

rollout_epoch

评测轮次,相同配置下重复运行并取指标平均;示例默认 2

max_episode_steps

单条轨迹步数上限。π₀.₅ 示例使用 4096 (preset 默认 2000 偏短,长 horizon 任务建议调大)。

max_steps_per_rollout_epoch

每轮 rollout 的总交互步数,必须能被 rollout.model.num_action_chunks 整除。无 auto_reset 时通常等于 max_episode_steps

num_env_subprocess

单个 env worker 内划分的 Isaac 仿真子进程数(默认 1)。适当增大可缓解步进瓶颈,但会成倍增加显存与进程开销;total_num_envs 须能被 num_env_subprocess × pipeline_stage_num 整除。

skip_intermediate_obs_in_chunk

设为 True 时跳过 chunk 内中间 observation,显著加速环境步进;保存的视频仅含 chunk 边界帧。

omni_config 关键字段#

以下字段位于 env.eval.omni_config 下(继承自 examples/embodiment/config/env/behavior_r1pro.yaml,可在评测 YAML 中覆盖):

env:
  eval:
    omni_config:
      task:
        activity_name: turning_on_radio
        activity_definition_id: 0
        activity_instance_id: 0
        activity_instance_dir: null          # 指向缓存 instance JSON 目录
        instance_file_format: tro_state        # template | tro_state
        instance_resample_mode: disabled       # disabled | offline | online
      scene:
        scene_model: house_double_floor_lower
        partial_scene_load: true               # 仅加载任务相关房间,缩短启动时间

更完整的字段说明(partial_scene_loadinstance_generator.py 用法等)见 基于Behavior评测平台的强化学习训练 中的「behavior_r1pro.yaml 关键配置说明」。

GPU 与集群布局#

BEHAVIOR 环境步进较慢,通常建议给 env 分配足够 GPU,并与 rollout 共享或分离 placement:

cluster:
  component_placement:
    rollout,env: all          # env 与 rollout 共享全部 GPU(示例默认)

也可将 env 与 rollout 分到不同 GPU 以缓解显存压力,详见训练文档「关键集群配置」一节。

进阶用法#

切换评测任务

bash evaluations/run_eval.sh behavior behavior_openpi_pi05_eval \
  rollout.model.model_path=/path/to/model \
  env.eval.omni_config.task.activity_name=picking_up_trash

使用离线 instance 随机采样

env:
  eval:
    omni_config:
      task:
        activity_instance_dir: ${oc.env:OMNIGIBSON_DATA_PATH}/2025-challenge-task-instances
        instance_file_format: tro_state
        instance_resample_mode: offline
    rollout_epoch: 5

调整并行规模

bash evaluations/run_eval.sh behavior behavior_openpi_pi05_eval \
  rollout.model.model_path=/path/to/model \
  env.eval.total_num_envs=4 \
  env.eval.num_env_subprocess=2

从训练配置评测

bash evaluations/run_eval.sh behavior behavior_ppo_openpi_pi05_eval \
  rollout.model.model_path=/path/to/model

常见问题#

  • 数据下载: BEHAVIOR 资源体积较大,请按 基于Behavior评测平台的强化学习训练 完成 Isaac Sim、OmniGibson 资产与 license 配置后再评测。

  • ISAAC_PATH 未设置: run_eval.sh 默认值为 /path/to/isaac-sim,未正确设置会导致 Isaac Sim 无法启动。

  • Headless 模式: run_eval.sh 默认设置 OMNIGIBSON_HEADLESS=1

  • 显存不足: 降低 total_num_envsnum_env_subprocess;单个环境约占 10 GiB 显存。

  • 渲染马赛克/模糊: 当前 GPU 无 Ray Tracing 能力,建议换用 RTX 30/40 系列或更高。

  • 启动极慢: 首次加载大场景耗时较长;保持 partial_scene_load: true 可只加载任务相关房间。

  • 视频帧数少于预期: skip_intermediate_obs_in_chunk: True 会跳过 chunk 内中间帧,仅保留策略实际消费的 observation 对应帧。

  • instance 加载失败: activity_instance_dir 中的 JSON 文件名须与 activity_nameactivity_definition_idscene_model 匹配;详见 rlinf/envs/behavior/instance_loader.py

  • 步数校验失败: max_steps_per_rollout_epoch 必须能被 rollout.model.num_action_chunks 整除。