LeRobot documentation
SARM: Mô hình hóa phần thưởng theo giai đoạn
SARM: Mô hình hóa phần thưởng theo giai đoạn
SARM (Stage-Aware Reward Modeling) là một khung mô hình hóa phần thưởng dựa trên video cho các thao tác robot có tầm nhìn xa. Hướng dẫn này bao gồm cách huấn luyện các mô hình phần thưởng SARM và tùy chọn sử dụng chúng với Reward-Aligned Behavior Cloning (RA-BC).
Bài báo: SARM: Stage-Aware Reward Modeling for Long Horizon Robot Manipulation
Tại sao cần Mô hình Phần thưởng?
Behavior cloning tiêu chuẩn coi mọi khung hình trong dữ liệu minh chứng là ngang nhau, nhưng các bộ dữ liệu robot trong thực tế thường lộn xộn. Chúng chứa những khoảnh khắc do dự, các lần sửa lỗi và các quỹ đạo có chất lượng không đồng đều. Các mô hình phần thưởng giải quyết vấn đề này bằng cách học một khái niệm khái quát hóa về tiến độ nhiệm vụ từ các dữ liệu minh chứng: khi được cung cấp các khung hình video và mô tả nhiệm vụ, chúng dự đoán mức độ gần hoàn thành nhiệm vụ của robot (0→1). Tín hiệu “tiến độ” học được này có thể được sử dụng theo nhiều cách, trong đó hai ứng dụng đầy hứa hẹn là: (1) học bắt chước có trọng số (RA-BC), trong đó các khung hình có tiến độ cao nhận trọng số lớn hơn trong quá trình huấn luyện chính sách, và (2) học tăng cường, trong đó mô hình phần thưởng cung cấp phần thưởng dày đặc để cải thiện chính sách trực tuyến hoặc ngoại tuyến.
Tổng quan
SARM có các tính năng sau:
- Kiến trúc nhận thức giai đoạn: Dự đoán đồng thời giai đoạn tác vụ cấp cao và tiến độ chi tiết trong từng giai đoạn
- Ghi chú phụ nhiệm vụ: Sử dụng ghi chú phụ nhiệm vụ bằng ngôn ngữ tự nhiên để suy ra các nhãn tiến độ nhất quán
- Tỷ lệ thời gian: Tính các tiên nghiệm ở cấp độ tập dữ liệu (α̅_k) cho từng nhiệm vụ con để chuẩn hóa tiến độ giữa các bài diễn giải có độ dài khác nhau
SARM huấn luyện trên mục tiêu stage+tau gọn nhẹ cho mỗi khung hình:
- stage: chỉ số stage nguyên
k ∈ {0, ..., K-1} - τ (tau): tiến độ trong giai đoạn
τ ∈ [0, 1] - mã hóa đích:
y = k + τ(đây là thứ mà bộ xử lý tập dữ liệu tạo ra)
Vào thời điểm suy luận (và trong RA-BC hạ nguồn), SARM chuyển đổi giá trị thô k + τ thành tiến độ đã chuẩn hóa trong [0, 1] bằng cách sử dụng tỷ lệ thời gian ở cấp độ tập dữ liệu α̅_k (được lưu trong meta/temporal_proportions_*.json).
Điều này khớp với Công thức (2) trong bài báo:
progress_t = P_{k-1} + α̅_k × τ_tTrong đó:
τ_t = (t - s_k) / (e_k - s_k)là thời gian được chuẩn hóa trong từng tiểu tác vụP_{k-1}là phần trước tích lũy (tổng các tỷ lệ của các nhiệm vụ con trước đó)α̅_klà tỷ lệ thời gian cho nhiệm vụ con k
Điều này đảm bảo rằng các trạng thái tác vụ giống hệt nhau được ánh xạ đến các giá trị tiến độ nhất quán, ngay cả giữa các bài diễn giải có độ dài khác nhau.
Đầu vào và Mục tiêu (Những gì mã mới mong đợi)
SARM được huấn luyện thông qua bộ xử lý của nó (src/lerobot/rewards/sarm/processor_sarm.py), bao gồm:
- Mã hóa hình ảnh và văn bản tác vụ bằng CLIP (ViT-B/32) thành
video_featuresvàtext_features - Đệm/cắt ngắn trạng thái robot thành
state_features(tối đamax_state_dim) - Xây dựng các mục tiêu dưới dạng
sparse_targets(vàdense_targetstrongdense_only/dual) bằng cách mã hóa stage+tauy = k + τ - Masks rewind frames sử dụng tensor
lengthscho từng mẫu (rewind là một kỹ thuật tăng cường dữ liệu trong quá trình huấn luyện)
Tối thiểu, mỗi mẫu huấn luyện cần:
task(chuỗi): mô tả tác vụ- các hình ảnh
reward_model.image_keyvà trạng tháireward_model.state_keytừ bộ dữ liệu
Chế độ chú thích
Bạn có thể chọn từ 3 chế độ chú thích xác định cách tính nhãn tiến độ:
| Chế độ | Cần chú thích | Đầu | Trường hợp sử dụng |
|---|---|---|---|
single_stage | Không | Chỉ thưa | Nhiệm vụ đơn giản, thử nghiệm nhanh, không cần VLM |
dense_only | Dense (VLM) | Dual (tự động tạo thưa) | Theo dõi chi tiết các nhiệm vụ con mà không cần xác định các giai đoạn cấp cao |
dual | Sparse + Dense (VLM) | Dual | Cấu hình đầy đủ của bài báo SARM với cả hai mức độ chi tiết |
Chi tiết chế độ
Không yêu cầu chú thích. Toàn bộ tập được xử lý như một giai đoạn duy nhất gọi là "task", và tiến độ tăng tuyến tính từ 0 đến 1 trong suốt thời lượng của tập.
- Đầu thưa: 1 giai đoạn (“task”), tiến tuyến tính
- Đầu Dense: Không được sử dụng
- Phù hợp nhất cho: Các tác vụ đơn giản, thử nghiệm nhanh, hoặc khi không có sẵn chú thích VLM
Cài đặt môi trường
- Cài đặt LeRobot bằng cách làm theo Hướng dẫn cài đặt của chúng tôi.
- Cài đặt các phụ thuộc của SARM bằng cách chạy:
pip install -e ".[sarm]"Quy trình làm việc:
1. Train SARM → 2. Visualize predictions → 3. (Optional) Train policy with RA-BCChỉ có chú thích dạng đặc (mức độ chi tiết) từ VLM. Đầu thưa tự động sử dụng một giai đoạn "task" duy nhất bao phủ toàn bộ tập dữ liệu, trong khi đầu đặc học được sự tiến triển chi tiết của các nhiệm vụ con.
- Đầu thưa: 1 giai đoạn (“task”), tiến trình tuyến tính (tự động tạo)
- Đầu Dense: Nhiều giai đoạn chi tiết từ chú thích VLM
- Phù hợp nhất: Khi bạn muốn theo dõi chi tiết các tác vụ con nhưng không cần xác định các giai đoạn cấp cao
Quy trình làm việc:
1. Annotate (dense) → 2. Verify → 3. Train SARM → 4. Visualize → 5. (Optional) Train policy with RA-BCCả chú thích thưa và đặc từ VLM. Chế độ hai đầu đầy đủ như mô tả trong bài báo SARM, với cả dự đoán giai đoạn cấp cao (thưa) và chi tiết (đặc).
- Đầu thưa: Các giai đoạn cấp cao từ chú thích VLM
- Đầu Dense: Các giai đoạn chi tiết từ chú thích VLM
- Phù hợp nhất cho: Các tác vụ đa giai đoạn phức tạp, nơi cả hai mức độ chi tiết đều hữu ích
Quy trình làm việc:
1. Annotate (sparse+dense) → 2. Verify → 3. Train SARM → 4. Visualize → 5. (Optional) Train policy with RA-BCBước 1: Gán nhãn cho các nhiệm vụ con
Không cần chú thích! Bỏ qua hoàn toàn bước này. Mô hình sẽ sử dụng mô tả tác vụ của tập và tự động tính toán tiến độ tuyến tính.
Chỉ tạo ghi chú chi tiết (mật độ cao) bằng VLM. Giai đoạn thưa sẽ được tạo tự động.
python src/lerobot/data_processing/sarm_annotations/subtask_annotation.py \
--repo-id your-username/your-dataset \
--dense-only \
--dense-subtasks "Bring robot arms up from starting position,Grab near side and do 1st fold,Grab side and do 2nd fold,Grab side and do 3rd fold to finish folding" \
--video-key observation.images.base \
--num-workers 4 \
--push-to-hubNhững gì được lưu:
meta/temporal_proportions_sparse.json- Tỷ lệ thưa được tạo tự động ({"task": 1.0})meta/temporal_proportions_dense.json- Tỷ lệ thời gian dạng đặc- Các cột theo từng episode trong
episodes/*.parquet:dense_subtask_names,dense_subtask_start_frames,dense_subtask_end_frames- (cũng bao gồm các cột dựa trên thời gian:
dense_subtask_start_times,dense_subtask_end_times)
Tạo cả chú thích thưa (mức cao) và chú thích dày (chi tiết) bằng VLM.
python src/lerobot/data_processing/sarm_annotations/subtask_annotation.py \
--repo-id your-username/your-dataset \
--sparse-subtasks "Bring arms up from starting position,Fold the towel (3 folds in total)" \
--dense-subtasks "Bring robot arms up from starting position,Grab near side and do 1st fold,Grab side and do 2nd fold,Grab side and do 3rd fold to finish folding" \
--video-key observation.images.base \
--num-workers 4 \
--push-to-hubNhững gì được lưu:
meta/temporal_proportions_sparse.json- Tỉ lệ thời gian thưameta/temporal_proportions_dense.json- Tỷ lệ thời gian dạng đặc- Các cột theo từng episode trong
episodes/*.parquet:sparse_subtask_names,sparse_subtask_start_frames,sparse_subtask_end_framesdense_subtask_names,dense_subtask_start_frames,dense_subtask_end_frames- (cũng bao gồm các cột dựa trên thời gian:
*_subtask_start_times,*_subtask_end_times)
Đối số chú thích
| Tham số | Mô tả |
|---|---|
--repo-id | ID của kho dữ liệu HuggingFace |
--sparse-subtasks | Danh sách tên các tác vụ con cấp cao, phân tách bằng dấu phẩy |
--dense-subtasks | Danh sách tên các nhiệm vụ con chi tiết, phân tách bằng dấu phẩy |
--dense-only | Chỉ tạo chú thích dạng đặc (tự động tạo giai đoạn “task” dạng thưa) |
--video-key | Khóa camera/video cần sử dụng (ví dụ: observation.images.top) |
--num-workers | Số lượng worker GPU song song (mặc định: 1) |
--episodes | Chỉ mục tập cụ thể cần chú thích (mặc định: tất cả) |
--skip-existing | Bỏ qua các tập đã có chú thích |
--model | Mô hình VLM (mặc định: Qwen/Qwen3-VL-30B-A3B-Instruct) |
--num-visualizations | Số lượng tập để trực quan hóa sau khi chú thích (mặc định: 5, đặt thành 0 để bỏ qua) |
Lưu ý: Sau khi chú thích hoàn tất, mặc định sẽ tự động trực quan hóa 5 tập. Sử dụng
--num-visualizations 0để bỏ qua bước này.
Bước 2: Xác minh chú thích
Không cần xác minh! Bỏ qua bước này.
Trực quan hóa chú thích bằng cờ --visualize-only:
python src/lerobot/data_processing/sarm_annotations/subtask_annotation.py \ --repo-id your-username/your-dataset \ --visualize-only \ --visualize-type dense \ --num-visualizations 5 \ --video-key observation.images.base \ --output-dir ./subtask_viz
Trực quan hóa chú thích bằng cờ --visualize-only:
python src/lerobot/data_processing/sarm_annotations/subtask_annotation.py \ --repo-id your-username/your-dataset \ --visualize-only \ --visualize-type both \ --num-visualizations 5 \ --video-key observation.images.base \ --output-dir ./subtask_viz
Điều này tạo ra các hình ảnh trực quan hóa hiển thị các khung hình video với các ranh giới của các nhiệm vụ con được phủ lên và dòng thời gian của các nhiệm vụ con.
Các đối số trực quan hóa
| Tham số | Mô tả |
|---|---|
--visualize-only | Chỉ trực quan hóa các chú thích hiện có (không tạo mới) |
--num-visualizations | Số lượng tập để trực quan hóa (mặc định: 5) |
--visualize-type | Loại chú thích để trực quan hóa: sparse, dense hoặc both |
Mẹo: Nếu chú thích không chính xác, hãy điều chỉnh mô tả các nhiệm vụ con cho cụ thể hơn và chạy lại.
Bước 3: Huấn luyện SARM
Huấn luyện với không có chú thích - sử dụng tiến trình tuyến tính từ 0 đến 1:
lerobot-train \
--dataset.repo_id=your-username/your-dataset \
--reward_model.type=sarm \
--reward_model.annotation_mode=single_stage \
--reward_model.image_key=observation.images.base \
--output_dir=outputs/train/sarm_single \
--batch_size=32 \
--steps=5000 \
--trackio.enable=true \
--trackio.project=sarm \
--reward_model.repo_id=your-username/your-model-nameHuấn luyện với chỉ chú thích dày đặc (tự động tạo thưa):
lerobot-train \
--dataset.repo_id=your-username/your-dataset \
--reward_model.type=sarm \
--reward_model.annotation_mode=dense_only \
--reward_model.image_key=observation.images.base \
--output_dir=outputs/train/sarm_dense \
--batch_size=32 \
--steps=5000 \
--trackio.enable=true \
--trackio.project=sarm \
--reward_model.repo_id=your-username/your-model-nameHuấn luyện với cả chú thích thưa và chú thích đặc:
lerobot-train \
--dataset.repo_id=your-username/your-dataset \
--reward_model.type=sarm \
--reward_model.annotation_mode=dual \
--reward_model.image_key=observation.images.base \
--output_dir=outputs/train/sarm_dual \
--batch_size=32 \
--steps=5000 \
--trackio.enable=true \
--trackio.project=sarm \
--reward_model.repo_id=your-username/your-model-nameĐào tạo đa GPU
Thêm accelerate launch --multi_gpu --num_processes=4 để sử dụng nhiều GPU cho việc huấn luyện.
Tham số huấn luyện
| Tham số | Mô tả | Mặc định |
|---|---|---|
--reward_model.annotation_mode | single_stage, dense_only hoặc dual | single_stage |
--reward_model.image_key | Phím camera cho hình ảnh | observation.images.top |
--reward_model.state_key | Khóa cho các trạng thái liên hợp | observation.state |
--reward_model.n_obs_steps | Các bước lịch sử quan sát (tổng số khung quan sát = n_obs_steps + 1) | 8 |
--reward_model.frame_gap | Khoảng cách (tính bằng số khung hình) giữa các quan sát được lấy mẫu (ở 30 fps: 30 ≈ 1 giây) | 30 |
Bước 4: Trực quan hóa các dự đoán
Sử dụng compute_rabc_weights.py với --visualize-only để trực quan hóa các dự đoán của mô hình (và, nếu có, các mục tiêu được suy ra từ chú thích) mà không ghi tệp parquet.
python -m lerobot.rewards.sarm.compute_rabc_weights \ --dataset-repo-id your-username/your-dataset \ --reward-model-path your-username/sarm-model \ --visualize-only \ --num-visualizations 5 \ --head-mode sparse \ --output-dir ./sarm_viz
python -m lerobot.rewards.sarm.compute_rabc_weights \ --dataset-repo-id your-username/your-dataset \ --reward-model-path your-username/sarm-model \ --visualize-only \ --num-visualizations 5 \ --head-mode dense \ --output-dir ./sarm_viz
python -m lerobot.rewards.sarm.compute_rabc_weights \ --dataset-repo-id your-username/your-dataset \ --reward-model-path your-username/sarm-model \ --visualize-only \ --num-visualizations 5 \ --head-mode both \ --output-dir ./sarm_viz
Trực quan hóa cho thấy:
- Biểu đồ tiến độ: Tiến độ dự kiến (và “GT” tùy chọn có nguồn gốc từ chú thích khi có sẵn và
--stride 1) - Xác suất giai đoạn: Biểu đồ diện tích chồng chất của xác suất giai đoạn dự đoán
- Khung mẫu: Các khung chính từ tập với nhãn tiến độ/giai đoạn
Các đối số trực quan hóa
| Tham số | Mô tả |
|---|---|
--visualize-only | Chỉ trực quan hóa các dự đoán (không tính toán RABC) |
--num-visualizations | Số lượng tập để trực quan hóa (mặc định: 5) |
--head-mode | Đầu SARM cần sử dụng: sparse, dense hoặc both |
--stride | Tính toán mỗi N khung hình, nội suy phần còn lại (mặc định: 1) |
Bước 5 (Tùy chọn): Huấn luyện Policy với RA-BC
Behavior Cloning theo hướng phần thưởng (RA-BC) sử dụng mô hình SARM đã được huấn luyện để gán trọng số cho các mẫu huấn luyện dựa trên mức cải thiện tiến độ dự kiến. Quy trình này yêu cầu hai bước:
- Tính trước các giá trị tiến độ cho tất cả các khung hình bằng mô hình SARM đã được huấn luyện
- Đào tạo chính sách với trọng số RA-BC bằng cách sử dụng các giá trị đã tính trước
Cách RA-BC hoạt động
Với mỗi mẫu huấn luyện, RA-BC tính toán độ tiến bộ delta:
r_i = φ(o_{t+Δ}) - φ(o_t)Trong đó φ là dự đoán tiến độ SARM và Δ là chunk_size của chính sách. Các mẫu có tiến độ dương (các minh chứng tốt) nhận trọng số cao hơn, trong khi các mẫu có tiến độ âm hoặc bằng không bị giảm trọng số.
Việc gán trọng số tuân theo Phương trình 8-9 trong bài báo:
- Trọng số mềm:
w̃_i = clip((r_i − (μ − 2σ)) / (4σ + ε), 0, 1) - Trọng số cuối cùng:
w_i = 𝟙{r_i > κ} + 𝟙{0 ≤ r_i ≤ κ} × w̃_i
Bước 5a: Tính các giá trị tiến độ SARM
Đầu tiên, chạy mô hình SARM trên tất cả các khung hình trong bộ dữ liệu của bạn để tính các giá trị tiến độ:
python -m lerobot.rewards.sarm.compute_rabc_weights \ --dataset-repo-id your-username/your-dataset \ --reward-model-path your-username/sarm-model \ --head-mode sparse \ --num-visualizations 5 \ --push-to-hub
Script này:
- Xử lý tất cả các khung hình và tính toán các giá trị tiến độ
- Lưu các giá trị tiến độ vào tệp parquet nằm cạnh bộ dữ liệu trên đĩa (mặc định là
<dataset_root>/sarm_progress.parquet) - Tạo trực quan hóa cho N tập đầu tiên (mặc định: 5)
Các đối số:
| Tham số | Mô tả | Mặc định |
|---|---|---|
--reward-model-path | Đường dẫn đến mô hình SARM đã được huấn luyện | (bắt buộc) |
--head-mode | Đầu SARM cần sử dụng: sparse, dense hoặc both | sparse |
--device | Thiết bị để suy luận | cuda |
--visualize-only | Chỉ trực quan hóa các dự đoán (không tính toán RA-BC) | false |
--num-visualizations | Số lượng tập để trực quan hóa (mặc định: 5, đặt thành 0 để bỏ qua) | 5 |
Định dạng đầu ra (sarm_progress.parquet):
| Cột | Mô tả |
|---|---|
index | Chỉ số khung toàn cục trong bộ dữ liệu |
episode_index | Số tập |
frame_index | Chỉ số khung cục bộ trong tập |
progress_sparse | Giá trị tiến độ của đầu thưa [0, 1] |
progress_dense | Giá trị tiến độ của đầu Dense [0, 1] (nếu được tính toán) |
Bước 5b: Huấn luyện Policy với RA-BC
Khi đã có tệp tiến độ, hãy huấn luyện chính sách của bạn với trọng số RA-BC. Tệp tiến độ sẽ được tự động phát hiện từ đường dẫn bộ dữ liệu (sarm_progress.parquet) nếu không được cung cấp rõ ràng. Hiện tại, PI0, PI0.5, SmolVLA và FastWAM được hỗ trợ với RA-BC:
lerobot-train \ --dataset.repo_id=your-username/your-dataset \ --policy.type=pi0 \ --sample_weighting.type=rabc \ --sample_weighting.head_mode=sparse \ --sample_weighting.kappa=0.01 \ --output_dir=outputs/train/policy_rabc \ --batch_size=32 \ --steps=40000
Tệp kịch bản huấn luyện tự động:
- Tải các giá trị tiến độ đã tính trước từ tệp parquet
- Sử dụng
chunk_sizecủa chính sách để tính toán các mức tăng tiến độ (Δ) - Tính toán trọng số mẫu dựa trên mức độ cải thiện tiến độ
- Áp dụng tổn thất có trọng số trong quá trình huấn luyện
Lập luận RA-BC:
| Tham số | Mô tả | Mặc định |
|---|---|---|
--sample_weighting.type | Loại chiến lược trọng số (rabc hoặc uniform) | rabc |
--sample_weighting.progress_path | Đường dẫn đến tệp parquet tiến độ | sarm_progress.parquet |
--sample_weighting.head_mode | Tiến độ của đầu SARM nào cần sử dụng: sparse hay dense | sparse |
--sample_weighting.kappa | Ngưỡng κ cho các mẫu chất lượng cao | 0.01 |
--sample_weighting.epsilon | Hằng số nhỏ để đảm bảo ổn định số | 1e-6 |
Điều chỉnh RA-BC Kappa
Tham số kappa là ngưỡng xác định mẫu nào nhận trọng số đầy đủ (w=1). Việc hiểu cách tinh chỉnh tham số này là rất quan trọng để RA-BC hoạt động hiệu quả.
Cách thức hoạt động của trọng số:
| Điều kiện | Trọng số |
|---|---|
delta > kappa | 1.0 (ngưỡng cứng) |
0 ≤ delta ≤ kappa | Trọng số mềm từ Phương trình 8 |
delta < 0 | 0.0 (tiến độ âm) |
Chẩn đoán các vấn đề về kappa:
Theo dõi các chỉ số Trackio này trong quá trình huấn luyện:
| Chỉ số | Khoảng an toàn | Chỉ báo vấn đề |
|---|---|---|
sample_weight_mean_weight | 0.3 - 0.8 | ≈ 1.0 nghĩa là kappa quá thấp |
sample_weighting/delta_mean | > 0 | Phải là số dương |
sample_weighting/delta_std | > 0 | Biến động trong chất lượng dữ liệu |
Nếu sample_weight_mean_weight ≈ 1.0: Kappa của bạn quá thấp. Hầu hết các mẫu có delta > kappa và bỏ qua hoàn toàn việc gán trọng số mềm. RA-BC trở nên tương đương với BC thông thường.
Đặt kappa dựa trên dữ liệu của bạn:
Giá trị mặc định kappa=0.01 được tinh chỉnh cho tác vụ gấp áo thun trong bài báo (các tập hợp ~90 giây ở 30fps). Đối với bộ dữ liệu của bạn, hãy kiểm tra sample_weighting/delta_mean và sample_weighting/delta_std được ghi log:
# If delta_mean ≈ 0.03 and delta_std ≈ 0.02:
# Most deltas fall in range [0.01, 0.05]
# Option 1: Set kappa = delta_mean (medium selectivity)
--sample_weighting.kappa=0.03
# Option 2: Set kappa = delta_mean + delta_std (high selectivity)
--sample_weighting.kappa=0.05
# Option 3: Set kappa = delta_mean + 2*delta_std (very selective)
--sample_weighting.kappa=0.07Khi nào RA-BC có thể không hữu ích:
Nếu tập dữ liệu của bạn đã có chất lượng cao (tiến bộ nhất quán trên tất cả các minh chứng), RA-BC sẽ không mang lại nhiều lợi ích vì không có gì để lọc.
Đào tạo đa GPU với RA-BC
accelerate launch \ --multi_gpu \ --num_processes=4 \ src/lerobot/scripts/lerobot_train.py \ --dataset.repo_id=your-username/your-dataset \ --policy.type=pi0 \ --sample_weighting.type=rabc \ --sample_weighting.kappa=0.01 \ --output_dir=outputs/train/policy_rabc \ --batch_size=32 \ --steps=40000
Mẹo & Thực hành tốt
Chọn một Chế độ
- Bắt đầu với
single_stagecho các thí nghiệm nhanh - không cần chi phí gán nhãn - Sử dụng
dense_onlykhi bạn muốn theo dõi tiến độ chi tiết nhưng các tác vụ không có các giai đoạn cấp cao rõ ràng - Sử dụng
dualcho các tác vụ phức tạp, nơi cả tiến độ tổng quát lẫn chi tiết đều có ý nghĩa
Chất lượng chú thích
- Cụ thể hóa tên các nhiệm vụ con: Thay vì “fold”, hãy dùng “grab near side and fold toward center”
- Xác minh bằng trực quan hóa: Luôn kiểm tra một vài tập trước khi huấn luyện
- Đặt tên nhất quán: Sử dụng cùng tên các nhiệm vụ con trong tất cả các tập
RA-BC
- Đào tạo SARM trước: Chất lượng của RA-BC phụ thuộc hoàn toàn vào chất lượng của SARM
- Theo dõi
sample_weight_mean_weight: Nếu giá trị ≈ 1.0, hãy tăng kappa (xem Điều chỉnh Kappa của RA-BC)
Trích dẫn
@article{chen2025sarm,
title={SARM: Stage-Aware Reward Modeling for Long Horizon Robot Manipulation},
author={Chen, Qianzhong and Yu, Justin and Schwager, Mac and Abbeel, Pieter and Shentu, Yide and Wu, Philipp},
journal={arXiv preprint arXiv:2509.25358},
year={2025}
}