mcpField
E
evaluating-cosmos-policy

evaluating-cosmos-policy

github.com/kalarislabs测试与质量7344 次安装4 天前更新
代码仓库

关于 evaluating-cosmos-policy

用于在 LIBERO 和 RoboCasa 仿真环境中设置并运行 NVIDIA Cosmos Policy 推理评估的技能。它帮助研究人员完成无头 GPU 运行、结果检查和推理分析,不涵盖训练或真实机器人评估。

主要功能

  1. 01LIBERO 基准评估
  2. 02RoboCasa 任务评估
  3. 03无头 GPU 与 EGL 配置
  4. 04冒烟测试和结果验证
  5. 05推理延迟与吞吐量分析

适用场景

  1. 01复现 LIBERO 策略评分
  2. 02在 RoboCasa 中评估策略
  3. 03准备无头 GPU 集群
  4. 04分析推理性能

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/kalarislabs/research-agent-skills --skill evaluating-cosmos-policy

安装后在 Claude Code 中输入/evaluating-cosmos-policy确认已加载。

附带文件references/libero-commands.mdreferences/robocasa-commands.md

详细介绍

Cosmos Policy 评估

用于在 LIBERO 和 RoboCasa 仿真环境中评估 NVIDIA Cosmos Policy 的工作流,基于公开的 cosmos-policy 仓库。涵盖空白机器设置、无头 GPU 评估和推理性能分析。

快速开始

使用官方公开评估模块运行最简 LIBERO 评估:

uv run --extra cu128 --group libero --python 3.10 \
  python -m cosmos_policy.experiments.robot.libero.run_libero_eval \
    --config cosmos_predict2_2b_480p_libero__inference_only \
    --ckpt_path nvidia/Cosmos-Policy-LIBERO-Predict2-2B \
    --config_file cosmos_policy/config/config.py \
    --use_wrist_image True \
    --use_proprio True \
    --normalize_proprio True \
    --unnormalize_actions True \
    --dataset_stats_path nvidia/Cosmos-Policy-LIBERO-Predict2-2B/libero_dataset_statistics.json \
    --t5_text_embeddings_path nvidia/Cosmos-Policy-LIBERO-Predict2-2B/libero_t5_embeddings.pkl \
    --trained_with_image_aug True \
    --chunk_size 16 \
    --num_open_loop_steps 16 \
    --task_suite_name libero_10 \
    --num_trials_per_task 1 \
    --local_log_dir cosmos_policy/experiments/robot/libero/logs/ \
    --seed 195 \
    --randomize_seed False \
    --deterministic True \
    --run_id_note smoke \
    --ar_future_prediction False \
    --ar_value_prediction False \
    --use_jpeg_compression True \
    --flip_images True \
    --num_denoising_steps_action 5 \
    --num_denoising_steps_future_state 1 \
    --num_denoising_steps_value 1 \
    --data_collection False

核心概念

Cosmos Policy 是什么:NVIDIA Cosmos Policy 是一种视觉-语言-动作(VLA)模型,它使用 Cosmos Tokenizer 将视觉观测编码为离散 token,然后根据语言指令和视觉上下文预测机器人动作。

关键架构选择:

组件设计
视觉编码器Cosmos Tokenizer(离散 token)
语言条件对语言嵌入进行交叉注意力
动作预测自回归生成动作 token

公开命令接口:受支持的评估入口为 cosmos_policy.experiments.robot.libero.run_libero_eval 和 cosmos_policy.experiments.robot.robocasa.run_robocasa_eval。复现说明应以这些公开模块及其文档中说明的标志为准。

计算要求

任务GPU显存典型耗时
LIBERO 冒烟评估(1 次试验)1x A40/A100~16 GB5-10 分钟
LIBERO 完整评估(50 次试验)1x A40/A100~16 GB2-4 小时
RoboCasa 单任务(2 次试验)1x A40/A100~18 GB10-15 分钟
RoboCasa 全部任务1x A40/A100~18 GB4-8 小时

适用场景与替代方案

适用于以下场景:

  • 在 LIBERO 或 RoboCasa 基准上评估 NVIDIA Cosmos Policy
  • 分析 Cosmos Policy 的推理延迟和吞吐量
  • 在 GPU 集群上为机器人仿真设置无头 EGL 渲染

以下场景请使用替代方案:

  • 从头训练或微调 Cosmos Policy(请使用官方 Cosmos 训练文档)
  • 使用基于 OpenVLA 的策略(请使用 fine-tuning-openvla-oft)
  • 使用 Physical Intelligence pi0 模型(请使用 fine-tuning-serving-openpi)
  • 运行真实机器人评估,而非仿真评估

工作流 1:LIBERO 评估

复制此清单并跟踪进度:

LIBERO Eval Progress:
- [ ] Step 1: Install environment and dependencies
- [ ] Step 2: Configure headless EGL rendering
- [ ] Step 3: Run smoke evaluation
- [ ] Step 4: Validate outputs and parse results
- [ ] Step 5: Run full benchmark if smoke passes

步骤 1:安装环境

git clone https://github.com/NVlabs/cosmos-policy.git
cd cosmos-policy
# Follow SETUP.md to build and enter the supported Docker container.
# Then, inside the container:
uv sync --extra cu128 --group libero --python 3.10

步骤 2:配置无头渲染

export CUDA_VISIBLE_DEVICES=0
export MUJOCO_EGL_DEVICE_ID=0
export MUJOCO_GL=egl
export PYOPENGL_PLATFORM=egl

步骤 3:运行冒烟评估

uv run --extra cu128 --group libero --python 3.10 \
  python -m cosmos_policy.experiments.robot.libero.run_libero_eval \
    --config cosmos_predict2_2b_480p_libero__inference_only \
    --ckpt_path nvidia/Cosmos-Policy-LIBERO-Predict2-2B \
    --config_file cosmos_policy/config/config.py \
    --use_wrist_image True \
    --use_proprio True \
    --normalize_proprio True \
    --unnormalize_actions True \
    --dataset_stats_path nvidia/Cosmos-Policy-LIBERO-Predict2-2B/libero_dataset_statistics.json \
    --t5_text_embeddings_path nvidia/Cosmos-Policy-LIBERO-Predict2-2B/libero_t5_embeddings.pkl \
    --trained_with_image_aug True \
    --chunk_size 16 \
    --num_open_loop_steps 16 \
    --task_suite_name libero_10 \
    --num_trials_per_task 1 \
    --local_log_dir cosmos_policy/experiments/robot/libero/logs/ \
    --seed 195 \
    --randomize_seed False \
    --deterministic True \
    --run_id_note smoke \
    --ar_future_prediction False \
    --ar_value_prediction False \
    --use_jpeg_compression True \
    --flip_images True \
    --num_denoising_steps_action 5 \
    --num_denoising_steps_future_state 1 \
    --num_denoising_steps_value 1 \
    --data_collection False

步骤 4:验证并解析结果

import json
import glob

# Find latest evaluation result from the official log directory
log_files = sorted(glob.glob("cosmos_policy/experiments/robot/libero/logs/**/*.json", recursive=True))
with open(log_files[-1]) as f:
    results = json.load(f)

print(results)

步骤 5:扩大评估规模

使用全部四个 LIBERO 任务套件运行 50 次试验:

for suite in libero_spatial libero_object libero_goal libero_10; do
  uv run --extra cu128 --group libero --python 3.10 \
    python -m cosmos_policy.experiments.robot.libero.run_libero_eval \
      --config cosmos_predict2_2b_480p_libero__inference_only \
      --ckpt_path nvidia/Cosmos-Policy-LIBERO-Predict2-2B \
      --config_file cosmos_policy/config/config.py \
      --use_wrist_image True \
      --use_proprio True \
      --normalize_proprio True \
      --unnormalize_actions True \
      --dataset_stats_path nvidia/Cosmos-Policy-LIBERO-Predict2-2B/libero_dataset_statistics.json \
      --t5_text_embeddings_path nvidia/Cosmos-Policy-LIBERO-Predict2-2B/libero_t5_embeddings.pkl \
      --trained_with_image_aug True \
      --chunk_size 16 \
      --num_open_loop_steps 16 \
      --task_suite_name "$suite" \
      --num_trials_per_task 50 \
      --local_log_dir cosmos_policy/experiments/robot/libero/logs/ \
      --seed 195 \
      --randomize_seed False \
      --deterministic True \
      --run_id_note "suite_${suite}" \
      --ar_future_prediction False \
      --ar_value_prediction False \
      --use_jpeg_compression True \
      --flip_images True \
      --num_denoising_steps_action 5 \
      --num_denoising_steps_future_state 1 \
      --num_denoising_steps_value 1 \
      --data_collection False
done

工作流 2:RoboCasa 评估

复制此清单并跟踪进度:

RoboCasa Eval Progress:
- [ ] Step 1: Install RoboCasa assets and verify macros
- [ ] Step 2: Run single-task smoke evaluation
- [ ] Step 3: Validate outputs
- [ ] Step 4: Expand to multi-task runs

步骤 1:安装 RoboCasa

git clone https://github.com/moojink/robocasa-cosmos-policy.git
uv pip install -e robocasa-cosmos-policy
python -m robocasa.scripts.setup_macros
python -m robocasa.scripts.download_kitchen_assets

此分支会安装 Cosmos Policy 所需的 robocasa Python 包,同时保留公开 RoboCasa 评估路径中使用的已修补环境更改。请确认 macros_private.py 存在且路径正确。

步骤 2:运行单任务冒烟评估

uv run --extra cu128 --group robocasa --python 3.10 \
  python -m cosmos_policy.experiments.robot.robocasa.run_robocasa_eval \
    --config cosmos_predict2_2b_480p_robocasa_50_demos_per_task__inference \
    --ckpt_path nvidia/Cosmos-Policy-RoboCasa-Predict2-2B \
    --config_file cosmos_policy/config/config.py \
    --use_wrist_image True \
    --num_wrist_images 1 \
    --use_proprio True \
    --normalize_proprio True \
    --unnormalize_actions True \
    --dataset_stats_path nvidia/Cosmos-Policy-RoboCasa-Predict2-2B/robocasa_dataset_statistics.json \
    --t5_text_embeddings_path nvidia/Cosmos-Policy-RoboCasa-Predict2-2B/robocasa_t5_embeddings.pkl \
    --trained_with_image_aug True \
    --chunk_size 32 \
    --num_open_loop_steps 16 \
    --task_name TurnOffMicrowave \
    --obj_instance_split A \
    --num_trials_per_task 2 \
    --local_log_dir cosmos_policy/experiments/robot/robocasa/logs/ \
    --seed 195 \
    --randomize_seed False \
    --deterministic True \
    --run_id_note smoke \
    --use_variance_scale False \
    --use_jpeg_compression True \
    --flip_images True \
    --num_denoising_steps_action 5 \
    --num_denoising_steps_future_state 1 \
    --num_denoising_steps_value 1 \
    --data_collection False

步骤 3:验证输出

  • 确认评估日志输出了预期任务名称、对象划分和检查点/配置值。
  • 检查日志中最后的 Success rate: 行。

步骤 4:扩大范围

增加 --num_trials_per_task 的值或添加更多任务。为确保多次运行结果可比较,请保持 --obj_instance_split 不变。


工作流 3:空白机器集群启动

Cluster Launch Progress:
- [ ] Step 1: Clone the public repo and enter the supported runtime
- [ ] Step 2: Sync the benchmark-specific dependency group
- [ ] Step 3: Export rendering and cache environment variables before eval

步骤 1:克隆并进入受支持的运行环境

git clone https://github.com/NVlabs/cosmos-policy.git
cd cosmos-policy
# Follow SETUP.md, start the Docker container, and enter it before continuing.

步骤 2:同步依赖项

uv sync --extra cu128 --group libero --python 3.10
# or, for RoboCasa:
uv sync --extra cu128 --group robocasa --python 3.10
# then install the Cosmos-compatible RoboCasa fork:
git clone https://github.com/moojink/robocasa-cosmos-policy.git
uv pip install -e robocasa-cosmos-policy

步骤 3:导出运行环境

export CUDA_VISIBLE_DEVICES=0
export MUJOCO_EGL_DEVICE_ID=0
export MUJOCO_GL=egl
export PYOPENGL_PLATFORM=egl
export HF_HOME=${HF_HOME:-$HOME/.cache/huggingface}
export TRANSFORMERS_CACHE=${TRANSFORMERS_CACHE:-$HF_HOME}

预期性能基准

官方评测的参考值(与特定设置和种子相关):

任务套件成功率备注
LIBERO-Spatial98.1%官方 LIBERO 空间任务结果
LIBERO-Object100.0%官方 LIBERO 物体任务结果
LIBERO-Goal98.2%官方 LIBERO 目标任务结果
LIBERO-Long97.6%官方 LIBERO 长时程任务结果
LIBERO-Average98.5%LIBERO 各套件的官方平均结果
RoboCasa67.1%官方 RoboCasa 平均结果

复现说明:已发布的成功率仍取决于检查点选择、任务套件、种子和模拟器设置。报告任何数值时,都应记录确切的命令和环境。


不容妥协的规则

  • EGL 对齐:在无头 GPU 节点上,始终同时设置 CUDA_VISIBLE_DEVICES、MUJOCO_EGL_DEVICE_ID、MUJOCO_GL=egl 和 PYOPENGL_PLATFORM=egl。
  • 优先使用官方运行环境:如果在宿主机 Python 中安装时遇到二进制兼容性问题,请先改用 SETUP.md 中支持的容器工作流,再调试软件包内部问题。
  • 缓存一致性:在安装和评测过程中使用相同的缓存目录,以便复用 Hugging Face 和依赖项缓存。
  • 运行可比性:重复运行时,固定任务名称、物体划分、种子和试验次数。

常见问题

问题:宿主机 Python 出现二进制兼容性或加载器故障

解决方法:在 SETUP.md 中的官方容器/运行环境内重新运行。不要认为在宿主机上重建软件包就能与公开发行环境一致。

问题:LIBERO 在非交互式 Shell 中提示输入配置路径

解决方法:预先创建 LIBERO_CONFIG_PATH/config.yaml:

import os, yaml

config_dir = os.path.expanduser("~/.libero")
os.makedirs(config_dir, exist_ok=True)
with open(os.path.join(config_dir, "config.yaml"), "w") as f:
    yaml.dump({"benchmark_root": "/path/to/libero/datasets"}, f)

问题:EGL 初始化或关闭时出现噪声

解决方法:先对齐 EGL 环境变量。除非作业以非零状态退出,否则将仅在清理阶段出现的 EGL_NOT_INITIALIZED 警告视为低相关性信息。

问题:RoboCasa 中 Kitchen 物体采样出现 NaN 或资源查找失败

解决方法:重新运行资源安装,并确认打过补丁的 robocasa 安装完好:

python -m robocasa.scripts.download_kitchen_assets
python -c "import robocasa; print(robocasa.__file__)"

问题:MuJoCo 渲染不匹配

解决方法:验证 GPU 设备是否对齐:

import os
cuda_dev = os.environ.get("CUDA_VISIBLE_DEVICES", "not set")
egl_dev = os.environ.get("MUJOCO_EGL_DEVICE_ID", "not set")
assert cuda_dev == egl_dev, f"GPU mismatch: CUDA={cuda_dev}, EGL={egl_dev}"
print(f"Rendering on GPU {cuda_dev}")

高级主题

LIBERO 命令矩阵:参见 references/libero-commands.md RoboCasa 命令矩阵:参见 references/robocasa-commands.md

资源

Agent 操作流程

  1. 检查环境。 确认 GPU 内存、模型检查点和许可证、框架版本及输入格式。
  2. 明确输入。 根据数据或用户确认格式、标识符和参数。任何会改变结果的值都应询问,而不是猜测。
  3. 先运行小规模版本。 先以低分辨率或较短时长对单个样本运行推理。
  4. 使用上述说明和参考资料 执行完整任务。
  5. 验证结果。 通过定性检查和任务指标检查输出;检查生成内容的许可证限制。
  6. 报告。 说明运行了什么(版本、命令、参数)、检查了什么,以及还有哪些不确定之处。
如果发生这种情况请这样做
大型输入导致内存不足降低分辨率或序列长度、使用半精度,或将输入分块。
这些说明中的函数、标志或端点在已安装版本中不存在查看已安装版本自己的文档(help()、--help、官方文档),调整做法并告知用户。切勿虚构 API。
所需输入、标识符或参数不明确询问用户,或在运行前明确说明所作的假设。

诚信守则

  • 切勿捏造结果、参数、标识符、引用或统计数据。如果无法运行或验证某项内容,请如实说明。
  • 在用于商业用途或公开发布之前,检查模型和数据集的许可证。
  • 此处与特定版本相关的细节可能已过时:请根据已安装版本的官方文档进行确认。
  • 对于需要付费、占用共享 GPU 或云配额、涉及个人或患者数据,或无法撤销的操作,请先征求同意。

相关技能

  • fine-tuning-serving-openpi:使用 JAX 或 PyTorch 后端微调并部署 Physical Intelligence OpenPI 模型(pi0、pi0-fast、pi0.5),用于机器人策略推理……
  • fine-tuning-openvla-oft:微调并评估 OpenVLA-OFT 和 OpenVLA-OFT+ 策略,以生成机器人动作;支持连续动作头、LoRA 适配等……
  • phoenix-observability:用于 LLM 跟踪、评估和监控的开源 AI 可观测性平台。

评论

支持 Markdown