wholebody-vlariseworld-modelvlatraininglerobotmanipulationrobot-policyreinforcement-learning

RISE: Hands-on training pipeline tự cải thiện

Từng bước chạy RISE training pipeline: cài đặt, chuẩn bị data LeRobot, offline policy training, dynamics model, và online self-improvement loop trên 4–8 GPU.

Nguyễn Anh Tuấn13 tháng 6, 202612 phút đọc
RISE: Hands-on training pipeline tự cải thiện

Bắt đầu từ đây: pipeline RISE là gì?

Nếu bạn đã đọc bài phân tích kiến trúc RISE, bạn biết ý tưởng cốt lõi: thay vì làm reinforcement learning trực tiếp trên robot thật — tốn thời gian reset, nguy cơ hỏng hardware, throughput thấp — RISE cho policy "thực hành trong đầu". Policy đề xuất action, world model tưởng tượng tương lai, value model chấm điểm, rồi policy được cải thiện theo advantage mà không cần cánh tay robot thật bật nguồn thêm lần nào.

Paper RISE: Self-Improving Robot Policy with Compositional World Model từ OpenDriveLab và các cộng sự đã được nhận vào RSS 2026. Code chính thức nằm ở github.com/OpenDriveLab/RISE, giấy phép Apache 2.0.

Bài này tập trung vào câu hỏi thực tế: chạy pipeline này từ đầu đến cuối như thế nào?

Toàn bộ pipeline gồm 4 giai đoạn cần chạy theo thứ tự nghiêm ngặt:

Giai đoạn 1 → Data preparation  (HDF5 → LeRobot format)
Giai đoạn 2 → Offline training   (policy + value model)
Giai đoạn 3 → Dynamics model    (world model CDM)
Giai đoạn 4 → Online self-improvement (RL trong imagination)

Mỗi giai đoạn phụ thuộc vào output của giai đoạn trước. Bỏ qua hoặc làm sai thứ tự sẽ khiến online loop không converge.

RISE teaser: ba task manipulation thật — dynamic brick sorting, backpack packing, box closing — nguồn: repo OpenDriveLab/RISE
RISE teaser: ba task manipulation thật — dynamic brick sorting, backpack packing, box closing — nguồn: repo OpenDriveLab/RISE

Yêu cầu phần cứng và phần mềm

RISE không phải framework bạn có thể chạy trên laptop hoặc máy workstation thông thường. Online self-improvement loop yêu cầu ít nhất 4 GPU, và paper gốc dùng 8×A100 để training và evaluation.

Hardware tối thiểu để chạy:

  • 4× GPU A100/H100 40GB (hoặc tương đương) cho cấu hình "Complete Sharing"
  • 8× GPU nếu muốn reproduce kết quả paper chính xác
  • RAM hệ thống: ≥ 64 GB
  • Storage: ≥ 500 GB SSD (dynamics model checkpoint lớn + dataset video)

Software requirements:

  • Python 3.11.14 — không phải 3.12+, quan trọng
  • CUDA 12.x
  • Conda (hoặc mamba để install nhanh hơn)
  • ffmpeg (để resize video cho dynamics model)

Nếu bạn chỉ có 4 GPU và muốn test, dùng cấu hình "Complete Sharing" (giải thích ở bước 5). Throughput sẽ thấp hơn nhưng pipeline vẫn chạy được.

Giai đoạn 1: Cài đặt môi trường

# Tạo conda environment với Python 3.11.14
conda create -n rise python=3.11.14 -y
conda activate rise

# Clone repo
git clone https://github.com/OpenDriveLab/RISE.git
cd RISE

# Cài tất cả dependencies qua install script
bash install.sh

Script install.sh tự cài các thư viện lớn: OpenPI fork (VLA backbone), LTX-Video (video generation backbone cho dynamics model), Ray (distributed training framework), và các dependencies robot control. Lần đầu mất 15–30 phút tùy tốc độ mạng.

Lưu ý version: RISE dùng một fork của OpenPI với một số modification cho advantage conditioning. Đừng cài OpenPI vanilla từ pip — dùng version trong install.sh.

Giai đoạn 2: Chuẩn bị data — HDF5 sang LeRobot

RISE được phát triển trên robot Piper của AgileX Robotics với camera setup 3 góc:

  • 1 camera đầu (head view)
  • 2 camera cổ tay (wrist view trái + phải)

Setup này quan trọng vì dynamics model cần sinh multi-view future đồng thời. Nếu bạn dùng robot khác với số camera khác, bạn cần sửa config camera trong phần dynamics model.

2a. Cấu trúc raw data (HDF5)

Data thu thập từ robot được lưu ở dạng HDF5 với video tách biệt:

raw_dataset/
└── aloha_mobile_dummy/
    ├── episode_000.hdf5      # joint angles, actions
    ├── episode_001.hdf5
    └── video/
        ├── episode_000_cam_high.mp4
        ├── episode_000_cam_left_wrist.mp4
        └── episode_000_cam_right_wrist.mp4

2b. Convert sang LeRobot format

LeRobot là format chuẩn của HuggingFace cho robot learning data, dùng parquet cho action/state và mp4 cho video. RISE cung cấp script convert từ HDF5 ALOHA:

cd RISE/policy_and_value/policy_offline_and_value

python examples/aloha_real/convert_to_lerobot.py \
  --data-dir /path/to/raw_dataset \
  --repo-ids aloha_mobile_dummy \
  --prompt "Pick up the block and sort it by color" \
  --save-dir /path/to/lerobot_output \
  --save_repoid brick_sorting

Argument quan trọng nhất là --prompt: đây là task description ngôn ngữ tự nhiên dùng làm conditioning cho VLA. Viết ngắn gọn, rõ ràng, phản ánh đúng task. Policy sẽ conditioned trên prompt này suốt cả pipeline.

Output layout sau khi convert:

brick_sorting/
├── data/
│   └── chunk-000/
│       ├── episode_000000.parquet
│       └── episode_000001.parquet
├── meta/
│   ├── info.json
│   ├── episodes.jsonl
│   ├── episodes_stats.jsonl
│   └── tasks.jsonl
└── videos/
    └── chunk-000/
        └── *.mp4

2c. Resize video cho dynamics model

Dynamics model cần video ở resolution 256×192 để training và inference hiệu quả. RISE cung cấp script ffmpeg tự động:

cd RISE/dynamics/dynamics_model
./preprocess.sh brick_sorting

Script tạo thêm videos_small/ bên cạnh videos/, giữ nguyên bản gốc. Sau bước này dataset sẵn sàng cho cả offline policy training lẫn dynamics model training.

Paper dùng bao nhiêu data? Khoảng 100–200 demonstration episodes mỗi task. Ít hơn 50 episodes sẽ khiến dynamics model overfit và sinh imagined future không ổn định.

Giai đoạn 3: Offline training — Policy và Value model

Đây là bước training "baseline" trước khi tự cải thiện. Cần train 2 model độc lập: VLA policyvalue model.

3a. Tính normalization statistics

Chạy 1 lần để tính mean/std của action space và observation space:

cd RISE/policy_and_value/policy_offline_and_value
python scripts/compute_norm_stats_fast.py --config-name Compute_norm

Kết quả được cache vào file, không cần chạy lại trừ khi thêm data mới.

3b. Các config đã đăng ký

RISE đăng ký 3 config chính trong src/openpi_value/training/config.py:

Config Mục đích Thời gian ước tính
Policy_offline_release Train VLA policy (OpenPI backbone) 1–2 ngày / 8×A100
value_release Train value model (progress estimator) 12–24 giờ / 8×A100
Compute_norm Tính normalization stats <30 phút

3c. Train policy và value model

# Train offline policy trên 8 GPU
bash train.sh Policy_offline_release 8

# Train value model trên 8 GPU
bash train.sh value_release 8

Cả hai có thể chạy song song nếu bạn có đủ GPU. Nếu training bị gián đoạn, resume dễ dàng:

bash train.sh Policy_offline_release 8 --resume

3d. Label dataset với value predictions

Sau khi có checkpoint value model, cần label lại toàn bộ dataset với per-frame advantage signals. Đây là bước "cầu nối" quan trọng: policy sẽ học cách weight demonstration theo chất lượng action, không chỉ imitate blindly.

bash label_value.sh vis_value_release_joint_T \
  /path/to/checkpoints/value_release_joint/<experiment>/<step>

Bước này chạy value model inference trên từng frame của dataset, gán advantage score. Dataset sau khi labeled có thêm cột advantage trong parquet files.

Để visualize value predictions và kiểm tra chất lượng:

bash vis_value.sh vis_value_release_joint_T \
  /path/to/checkpoints/value_release_joint/<experiment>/<step>

Nếu value prediction cho thấy high advantage ở các frame "near success" và low advantage ở các frame "far from goal", value model đã học đúng.

Giai đoạn 4: Dynamics model — Controllable Dynamics Model

Controllable Dynamics Model (CDM) là phần độc đáo nhất của RISE so với các RL robot pipeline khác. CDM là world model học cách sinh multi-view video future từ action sequence và state hiện tại, được build trên LTX-Video backbone.

CDM không phải video generator thông thường — nó được conditioned trên action sequence, tức là bạn có thể "hỏi" CDM: "nếu robot thực hiện action này, future sẽ trông như thế nào từ 3 góc camera?"

4a. Cấu trúc data cho CDM

CDM dùng cùng LeRobot dataset như offline training, nhưng cần thêm videos_small/ đã resize ở bước 2c. Đặt dataset vào thư mục dataset/ trong repo:

cp -r /path/to/brick_sorting RISE/dynamics/dynamics_model/dataset/

4b. Download LTX-Video backbone

CDM finetune từ LTX-Video pretrained checkpoint. Tham khảo hướng dẫn download trong dynamics/dynamics_model/README.md.

4c. Finetune CDM

cd RISE/dynamics/dynamics_model
# Chạy training script theo hướng dẫn trong docs/dynamics_model.md

CDM cần học 2 thứ:

  1. Appearance của robot workspace (phòng thí nghiệm cụ thể, object cụ thể)
  2. Relationship giữa action và visual change (gripper move trái → hình ảnh thay đổi như thế nào)

Insight quan trọng: CDM không cần sinh video photorealistic. Nó chỉ cần đủ chính xác để value model có thể đánh giá tiến triển task. Trong thực tế, video tưởng tượng thường hơi mờ hoặc nhòe ở detail nhỏ, nhưng vẫn đủ để phân biệt "gripper đang tiếp cận object" so với "gripper đang xa object".

Giai đoạn 5: Online self-improvement loop

Đây là bước mà tất cả các phần trước hội tụ. Policy thực sự "tự cải thiện trong imagination" bằng cách:

  1. Rollout policy trong CDM (không cần robot thật)
  2. Value model chấm điểm từng imagined trajectory
  3. Tính advantage = imagined reward - baseline
  4. Update policy theo advantage

5a. Khởi chạy Ray và online loop

bash policy_and_value/policy_online/examples/embodiment/run_embodiment.sh rl_release

Lần chạy đầu tiên mất ~10 phút để:

  • Load CDM checkpoint (lớn)
  • Load policy + value model checkpoint
  • Compile torch graphs với torch.compile
  • Khởi tạo Ray cluster

Đây là bình thường. Từ lần thứ 2 trở đi (hoặc sau resume) thời gian startup nhanh hơn nhiều.

Để debug không cần đợi compile:

# Trong config file
actor:
  model:
    openpi:
      use_torch_compile: False

5b. Cấu hình GPU allocation

Online loop gồm 3 components cần GPU: env (CDM inference), rollout (policy rollout), actor (policy update). Có 3 cách phân bổ:

Partial Sharing — default, balance giữa throughput và GPU count:

cluster:
  num_nodes: 1
  component_placement:
    env: 0-3
    rollout: 4-7
    actor: 0-7

Complete Sharing — khi chỉ có 4 GPU:

cluster:
  num_nodes: 1
  component_placement:
    env,rollout,actor: all

Complete Separation — throughput cao nhất, cần ≥12 GPU:

cluster:
  num_nodes: 1
  component_placement:
    env: 0-1
    rollout: 2-5
    actor: 6-7

5c. Tỷ lệ offline/online data — điểm quan trọng

RISE ablation study cho thấy offline_data_ratio = 0.6 là tối ưu: 60% data từ demonstration offline, 40% từ imagined rollouts. Nếu online ratio quá cao, policy có thể quên chất lượng demonstration gốc và collapse.

algorithm:
  offline_data_ratio: 0.6
  num_group_envs: 32  # số parallel imagined environments

num_group_envs ảnh hưởng trực tiếp đến throughput. Với 4 GPU cho env, đặt num_group_envs: 32 nghĩa là mỗi GPU xử lý 8 imagined environments song song.

5d. Multi-node training

Với dữ liệu lớn hơn hoặc task phức tạp hơn, có thể mở rộng sang nhiều node:

bash policy_and_value/policy_online/examples/embodiment/run_embodiment_ray_unified_multi_task.sh rl_release

Config placement trong multi-node: nếu có 2 node × 8 GPU = 16 GPU tổng, indices chạy từ 0–15.

5e. Resume online training

runner:
  resume_dir: logs/20251221-00:15:14/${runner.logger.experiment_name}/checkpoints/global_step_13000

Sửa timestamp và experiment name khớp với log directory của run bạn muốn resume.

RISE: backpack packing task với +45% improvement sau self-improvement — nguồn: repo OpenDriveLab/RISE
RISE: backpack packing task với +45% improvement sau self-improvement — nguồn: repo OpenDriveLab/RISE

Kết quả trên 3 task thực tế

Paper báo cáo kết quả trên 3 task dexterous manipulation:

Task Offline baseline Sau RISE self-improve Cải thiện
Dynamic Brick Sorting ~50% ~85% +35%
Backpack Packing ~40% ~85% +45%
Box Closing ~50% ~85% +35%

Điểm đáng chú ý: toàn bộ improvement đến mà không cần thêm một lần tương tác robot thật nào sau bước offline training ban đầu. Đây là sự khác biệt cơ bản so với online RL truyền thống.

Những bẫy thường gặp

1. Python version sai. RISE được test kỹ trên Python 3.11.14. Dùng 3.12 có thể gặp lỗi với các dependency cũ hơn trong install.sh. Kiểm tra lại conda info trước khi bắt đầu.

2. Quên label value trước khi online training. Bước label_value.sh ở giai đoạn 3d là bắt buộc. Nếu bỏ qua, online loop sẽ chạy nhưng advantage signal sẽ bằng 0, không có cải thiện.

3. CDM underfitting. Nếu CDM chưa được finetune đủ (quá ít epoch hoặc quá ít data), video tưởng tượng sẽ không realistic. Kiểm tra loss curve của CDM trước khi chạy online loop.

4. OOM với Complete Sharing. Khi tất cả components share cùng GPU, đỉnh VRAM có thể cao hơn tổng VRAM của từng component riêng lẻ. Nếu gặp OOM, giảm num_group_envs xuống hoặc chuyển sang Partial Sharing.

5. Ray cluster không restart sạch. Nếu online loop bị kill đột ngột, Ray head node có thể còn zombie processes. Trước khi resume, chạy ray stopray start lại.

6. Offline/online ratio không đúng. Giữ offline_data_ratio >= 0.6. Paper thử nghiệm thấy ratio thấp hơn (0.3–0.4) dẫn đến policy forgetting và performance collapse sau vài nghìn steps.

So sánh RISE với các phương pháp RL robot khác

Phương pháp Cần robot thật cho RL? Cần simulator? Có VLA? Complexity setup
Direct RL trên robot ✅ Nhiều Thấp nhưng tốn thời gian
RL trong Isaac Lab ✅ Cần sim ❌ Thường không Cao
DreamerV3 Trung bình
RISE ❌ Không cần sau offline ❌ Không cần ✅ OpenPI Cao

RISE lấp đầy một khoảng trống cụ thể: bạn đã có VLA policy baseline từ imitation learning, muốn improve nó thêm mà không có access simulator tốt cho robot cụ thể của bạn (ví dụ robot tay mới chưa có MuJoCo model), và không muốn chạy hàng nghìn episode RL thật.

Tổng kết

Pipeline RISE gồm 4 giai đoạn với logic rõ ràng: data preparation chuẩn hóa format cho tất cả bước sau; offline training tạo baseline policy và evaluation signal; dynamics model tạo "simulator trong đầu" được học từ robot data thật; online loop dùng tất cả để cải thiện policy trong imagination.

Phần khó nhất là dynamics model: CDM cần đủ data (≥100 episodes), đúng resolution (256×192), và đủ training để sinh imagined future có chất lượng. Nếu CDM yếu, toàn bộ online loop sẽ thất bại.

Để đọc thêm về cách RISE hoạt động bên trong ở mức kiến trúc, xem RISE: VLA tự cải thiện bằng imagination. Để hiểu LeRobot format được dùng xuyên suốt pipeline, xem LeRobot ecosystem guide.


Bài viết liên quan

NT

Nguyễn Anh Tuấn

Robotics & AI Engineer. Building VnRobo — sharing knowledge about robot learning, VLA models, and automation.

Khám phá VnRobo

Bài viết liên quan

RISE: robot tự cải thiện bằng world model
wholebody-vla

RISE: robot tự cải thiện bằng world model

13/6/202615 phút đọc
NT
VLA-RFT: RL Fine-Tune VLA trong World Simulator
wholebody-vla

VLA-RFT: RL Fine-Tune VLA trong World Simulator

3/6/202614 phút đọc
NT
Hướng dẫn GigaBrain-0: VLA + World Model + RL
wholebody-vla

Hướng dẫn GigaBrain-0: VLA + World Model + RL

12/4/202611 phút đọc
NT