关于 evaluating-cosmos-policy
用于在 LIBERO 和 RoboCasa 仿真环境中设置并运行 NVIDIA Cosmos Policy 推理评估的技能。它帮助研究人员完成无头 GPU 运行、结果检查和推理分析,不涵盖训练或真实机器人评估。
主要功能
- 01LIBERO 基准评估
- 02RoboCasa 任务评估
- 03无头 GPU 与 EGL 配置
- 04冒烟测试和结果验证
- 05推理延迟与吞吐量分析
适用场景
- 01复现 LIBERO 策略评分
- 02在 RoboCasa 中评估策略
- 03准备无头 GPU 集群
- 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 GB | 5-10 分钟 |
| LIBERO 完整评估(50 次试验) | 1x A40/A100 | ~16 GB | 2-4 小时 |
| RoboCasa 单任务(2 次试验) | 1x A40/A100 | ~18 GB | 10-15 分钟 |
| RoboCasa 全部任务 | 1x A40/A100 | ~18 GB | 4-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-Spatial | 98.1% | 官方 LIBERO 空间任务结果 |
| LIBERO-Object | 100.0% | 官方 LIBERO 物体任务结果 |
| LIBERO-Goal | 98.2% | 官方 LIBERO 目标任务结果 |
| LIBERO-Long | 97.6% | 官方 LIBERO 长时程任务结果 |
| LIBERO-Average | 98.5% | LIBERO 各套件的官方平均结果 |
| RoboCasa | 67.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
资源
- Cosmos Policy 仓库:https://github.com/NVlabs/cosmos-policy
- LIBERO 基准测试:https://github.com/Lifelong-Robot-Learning/LIBERO
- 兼容 Cosmos 的 RoboCasa 分支:https://github.com/moojink/robocasa-cosmos-policy
- RoboCasa 上游项目:https://github.com/robocasa/robocasa
- MuJoCo 文档:https://mujoco.readthedocs.io/
Agent 操作流程
- 检查环境。 确认 GPU 内存、模型检查点和许可证、框架版本及输入格式。
- 明确输入。 根据数据或用户确认格式、标识符和参数。任何会改变结果的值都应询问,而不是猜测。
- 先运行小规模版本。 先以低分辨率或较短时长对单个样本运行推理。
- 使用上述说明和参考资料 执行完整任务。
- 验证结果。 通过定性检查和任务指标检查输出;检查生成内容的许可证限制。
- 报告。 说明运行了什么(版本、命令、参数)、检查了什么,以及还有哪些不确定之处。
| 如果发生这种情况 | 请这样做 |
|---|---|
| 大型输入导致内存不足 | 降低分辨率或序列长度、使用半精度,或将输入分块。 |
| 这些说明中的函数、标志或端点在已安装版本中不存在 | 查看已安装版本自己的文档(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 可观测性平台。