YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Reward Model for Robotics
训练视觉奖励模型,为机器人 VLA Policy 训练提供奖励信号
项目目标
训练一个视觉奖励模型,用于评估机器人操作视频:
- 输入:机器人操作视频帧
- 输出:操作阶段、奖励分数、失败检测
- 应用:为 VLA (Vision-Language-Action) 模型的强化学习提供奖励信号
项目结构
RewardModel_v2/
│
├── scripts/ # 核心脚本
│ ├── annotate_gpt.py # GPT 视频标注(主要使用)
│ ├── annotate_hf_dataset.py # HuggingFace 数据集标注
│ ├── extract_frames.py # 从视频提取帧图片
│ ├── convert_to_sft.py # 转换为 SFT 训练格式
│ ├── train_reward_model.sh # ms-swift LoRA 训练
│ └── caption/ # Qwen-VL 视频描述
│ ├── infer_caption.py
│ └── infer_caption_batch.py
│
├── tools/ # 工具脚本
│ ├── count_failure_trajectories.py # 统计失败轨迹
│ ├── check_video_framerate.py # 检查视频帧率
│ ├── prepare_hf_dataset.py # 准备 HuggingFace 数据集
│ ├── upload_to_huggingface.py # 上传到 HuggingFace
│ └── quick_start.sh # 快速开始脚本
│
├── data/ # 数据目录
│ ├── raw/ # 原始数据
│ │ ├── cokecan-50/ # 仿真数据(按类型分类)
│ │ └── droid/ # DROID 元数据
│ ├── training/ # 训练数据
│ │ └── sft_*.json # SFT 格式数据
│ ├── system_prompt.txt # 推理 prompt
│ └── tokens.txt # 特殊 token 定义
│
├── outputs/ # 输出目录
│ ├── labels/ # 标注结果 (.jsonl)
│ ├── frames/ # 提取的帧图片
│ └── weights/ # 训练权重
│
├── models/ # 模型权重
│ ├── weights_reward_sft/ # 标准版本
│ └── weights_reward_sft_special_token/ # Special Token 版本
│
├── docs/ # 文档
│ ├── QUICK_START_FOR_AGENT.md # AI Agent 快速开始
│ ├── PROJECT_STATUS.md # 项目状态快照
│ ├── CODE_GUIDE.md # 代码详细说明
│ ├── PROJECT_OVERVIEW.md # 项目完整概述
│ ├── DEVELOPMENT_LOG.md # 开发历程
│ ├── dataset_source.md # 数据源说明
│ └── ... # 其他文档
│
├── archive/ # 归档(旧版本/历史文件)
│ ├── old_scripts/ # 旧脚本
│ ├── old_outputs/ # 旧输出
│ ├── statistics/ # 统计结果
│ └── droid_processed/ # 处理过的 DROID 样本
│
└── README.md # 本文件
快速开始
1. 环境配置
pip install openai decord pillow python-dotenv tqdm tensorflow_datasets
2. 运行标注
cd /home/jqliu/projects/RewardModel_v2
# 设置 API Key
export OPENAI_API_KEY="your-key-here"
# GPT 标注(推荐)
python scripts/annotate_gpt.py
# 或 Qwen-VL 标注
python scripts/caption/infer_caption_batch.py
3. 数据处理流程
# 1. 标注视频 → outputs/labels/
python scripts/annotate_gpt.py
# 2. 提取帧图片 → outputs/frames/
python scripts/extract_frames.py
# 3. 转换为训练格式 → data/training/
python scripts/convert_to_sft.py
4. 模型训练
# 安装 ms-swift(首次使用)
pip install ms-swift
# 标准模式训练(JSON 输出格式)
bash scripts/train_reward_model.sh
# Special Token 模式训练(结构化输出格式)
bash scripts/train_reward_model.sh --special-token
# 仅打印命令,不执行(用于检查参数)
bash scripts/train_reward_model.sh --dry-run
参数配置
通过环境变量覆盖默认参数:
# 使用更大模型
MODEL=Qwen/Qwen2.5-VL-7B-Instruct bash scripts/train_reward_model.sh
# 调整 LoRA 和训练参数
EPOCHS=5 LORA_RANK=16 LR=2e-5 bash scripts/train_reward_model.sh
# 使用自定义数据集
DATASET=data/training/my_dataset.json bash scripts/train_reward_model.sh
# 指定 GPU
GPU=0,1 bash scripts/train_reward_model.sh
关键参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
MODEL |
Qwen2.5-VL-3B-Instruct | 基座模型 |
DATASET |
自动选择 | 训练数据路径(相对路径) |
LORA_RANK |
8 | LoRA 秩,越大容量越强 |
LORA_ALPHA |
32 | LoRA 缩放系数 |
EPOCHS |
1 | 训练轮数 |
GRAD_ACCUM |
16 | 梯度累积步数 |
LR |
1e-5 | 学习率 |
MAX_LENGTH |
1024 | 最大序列长度 |
数据量与参数建议
| 数据规模 | 建议 EPOCHS | 建议 LORA_RANK |
|---|---|---|
| < 500 条 | 5 ~ 10 | 8 |
| 500 ~ 5000 条 | 1 ~ 3 | 16 ~ 32 |
| > 5000 条 | 1 | 8 ~ 16 |
训练权重输出到 outputs/weights/ 目录,自动带时间戳版本号。
核心脚本说明
| 脚本 | 功能 | 输出 |
|---|---|---|
scripts/annotate_gpt.py |
GPT 视频标注(滑动窗口) | outputs/labels/*.jsonl |
scripts/annotate_hf_dataset.py |
HuggingFace 数据集标注 | outputs/labels/*.jsonl |
scripts/extract_frames.py |
提取视频帧为图片 | outputs/frames/**/*.jpg |
scripts/convert_to_sft.py |
转换为 SFT 训练格式 | data/training/*.json |
scripts/train_reward_model.sh |
ms-swift LoRA 训练 | outputs/weights/ |
项目状态
| 模块 | 状态 |
|---|---|
| 数据处理流水线 | ✅ 完成 |
| GPT 标注系统 | ✅ 完成 |
| 小规模模型训练 | ✅ 完成 |
| 大规模数据标注 | ⏳ 进行中 |
| 模型评估系统 | 📋 待启动 |
文档导航
| 文档 | 用途 |
|---|---|
| QUICK_START_FOR_AGENT.md | AI Agent 快速上手 |
| PROJECT_STATUS.md | 项目状态快照 |
| CODE_GUIDE.md | 所有脚本详细说明 |
| dataset_source.md | 数据源位置 |
数据源
真机数据
- DROID 数据集:
/playpen-ssd/dataset/droid_raw/1.0.1/ - failure 轨迹:15,157 条
仿真数据
- 本地 cokecan-50:
data/raw/cokecan-50/ - fangyu 仿真:
/playpen-ssd/yufang/projects/reward/
归档说明
archive/ 目录包含旧版本文件,保留供参考:
| 目录 | 内容 |
|---|---|
old_scripts/ |
早期脚本版本(api.py, api_batch.py 等) |
old_outputs/ |
历史输出文件 |
statistics/ |
数据统计结果 |
droid_processed/ |
处理过的 DROID 样本数据 |
更新日志
v2.0.0 (2026-01-21)
- 重构项目结构,更加清晰
- 重命名脚本,语义更明确
- 归档旧版本文件
- 统一输出目录
v1.0.0 (2025-11-10)
- 完成基础功能开发
- 完成小规模模型训练
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support