VnRoboVnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
VnRobo logoVnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam
VnRoboVnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpDùng thử miễn phí
🇺🇸EN
  1. Trang chủ
  2. Blog
  3. PLaW-VLA trên LIBERO: dự đoán tương lai với V-JEPA 2
wholebody-vlavlavjepa2plaw-vlaliberoworld-modelpolicy-trainingmanipulation

PLaW-VLA trên LIBERO: dự đoán tương lai với V-JEPA 2

Hướng dẫn PLaW-VLA từ kiến trúc V-JEPA 2 đến cài đặt, training và inference LIBERO; phân biệt quickstart hiện tại với kết quả paper.

Nguyễn Anh Tuấn12 tháng 10, 202615 phút đọc
PLaW-VLA trên LIBERO: dự đoán tương lai với V-JEPA 2

Robot có thể gắp đúng chiếc cốc nhưng vẫn thất bại khi phải mở hộp, đặt cốc vào trong rồi đóng nắp. Mỗi thao tác riêng lẻ không quá khó; vấn đề nằm ở việc duy trì tiến trình và hiểu trạng thái trung gian. Một ảnh hiện tại đôi khi không cho biết vật thể vừa được di chuyển, đang bị che khuất hay đã hoàn thành bước trước.

PLaW-VLA — Predictive Latent World Modeling for Vision-Language-Action Policies bổ sung một nguồn thông tin cho policy: biểu diễn của những trạng thái tương lai có thể xảy ra. Thay vì dựng video đẹp để robot xem lại, hệ thống dự đoán feature trong latent space của một V-JEPA 2 encoder đã được huấn luyện trước và đóng băng. Action expert dùng các feature đó cùng ảnh, lịch sử quan sát và instruction để tạo action chunk.

Hướng dẫn này dựa trên paper gốc, project page và tài liệu repo RainyRobo/PLaW-VLA. Các lệnh dưới đây dành cho máy thực hành của bạn, chạy tại thư mục gốc của repo PLaW-VLA.

Tình trạng phát hành khi kiểm tra ngày 12/10/2026: code, converter và pipeline LIBERO đã công khai, nhưng checkpoint PLaW-VLA pretrained chính thức còn pending. Quickstart hiện dùng foundation weights π₀.₅ và khởi tạo mới world-model modules. Vì vậy, hoàn thành quickstart không đồng nghĩa tái lập đầy đủ model đã qua Stage I–II trong paper.

Khuyến nghị công cụ

Stack train/deploy cho VLA

Train trên cloud/workstation, deploy bản tối ưu xuống Jetson hoặc robot computer.

Cloud GPU for VLA / policy training Dùng cho imitation learning, diffusion policy, RL và fine-tuning model robotics. Xem cloud GPU → NVIDIA Jetson Orin NX / Orin Nano Máy deploy edge cho perception, logging và inference đã tối ưu. Xem Jetson → Hugging Face / robotics dataset hosting Lưu dataset, checkpoint và model card để workflow LeRobot/VLA dễ chia sẻ hơn. Xem platform →

1. Hiểu bài toán trước khi cài đặt

VLA nhận vision, language và robot state để tạo action. Với một reactive policy, quyết định chủ yếu xuất phát từ quan sát hiện tại. Khi tác vụ gồm nhiều bước, hai ảnh gần giống nhau có thể cần hai hành động khác nhau: trước khi gắp vật thể thì đóng gripper; sau khi đặt vật thể thì mở gripper và rút tay.

Observation history giúp nhận ra diễn biến trước đó. Future prediction bổ sung khả năng ước lượng diễn biến tiếp theo. Ví dụ minh họa, khi đặt một vật vào hộp, policy có thể hưởng lợi từ feature mô tả tay đã hạ xuống và vật thể nằm trong hộp. Đây là cách diễn giải trực quan, không có nghĩa model xuất ra một câu mô tả hoặc một ảnh tương lai dễ đọc.

Có ba khái niệm nên nhớ. Latent là vector feature được encoder trích xuất; action chunk là một chuỗi target cho nhiều thời điểm; EEF, hay end-effector, là đầu thao tác như gripper. LIBERO dùng robot Franka trong mô phỏng để kiểm tra manipulation theo instruction, nên bạn có thể học toàn bộ luồng mà chưa cần robot thật.

PLaW-VLA không thực hiện một vòng tìm kiếm tường minh qua hàng loạt action candidate như một planner truyền thống. Trong công thức của paper, latent world model dự đoán tương lai từ lịch sử và task context; action expert sau đó dùng dự đoán ấy làm conditioning. Không nên tự thêm giả định rằng mỗi future token là kết quả mô phỏng một action candidate.

2. Kiến trúc: ba expert phối hợp

Kiến trúc PLaW-VLA với vision-language, latent world model và action expert — nguồn: paper PLaW-VLA, Figure 2
Kiến trúc PLaW-VLA với vision-language, latent world model và action expert — nguồn: paper PLaW-VLA, Figure 2

Hệ thống dùng Mixture-of-Transformers, gồm ba expert có nhiệm vụ khác nhau nhưng trao đổi thông tin qua attention được cấu trúc. Vision-language expert dựa trên PaliGemma, xử lý ảnh hiện tại từ nhiều góc nhìn cùng instruction để tạo semantic context. World-model expert nhận context đó và feature lịch sử để dự đoán feature tương lai. Action expert tạo chuỗi action liên tục, có điều kiện trên context, lịch sử và future tokens.

V-JEPA 2 encoder là không gian đích của future prediction. Encoder đóng băng giúp feature target ổn định trong training. Learnable future queries đại diện các mốc tương lai, được xử lý song song thay vì phải sinh từng frame rồi decode toàn bộ pixel. Model học dự đoán những vector mà encoder sẽ trích xuất từ future observation thật trong demonstration.

Luồng dữ liệu có thể đọc như sau:

text
Current multi-view RGB + instruction -> vision-language context
Observation history -> frozen V-JEPA 2 -> history latents
Context + history + future queries -> predicted future latents
Context + history + predicted future -> action expert -> action chunk
Action chunk -> output transforms -> absolute EEF targets -> controller

Structured causal attention giữ đúng hướng truyền thông tin giữa các expert. Điểm quan trọng cho beginner là future observation thật chỉ cung cấp supervision khi training; nó không được đưa vào inference như một dữ liệu đầu vào có sẵn. Nếu vô tình trộn future frame vào observation history của client, phép đánh giá không còn phản ánh khả năng dự đoán thực tế.

3. Model học những gì?

World-model loss so sánh predicted latent với feature của future frame thật, theo mean squared error và stop-gradient ở target. Action expert dùng flow matching để học action chunk liên tục. Có thể hình dung quá trình này là học một trường vector chuyển mẫu nhiễu thành chuỗi hành động phù hợp, thay vì chọn token ngôn ngữ như chatbot.

Trong Stage II và III, hai mục tiêu được tối ưu cùng nhau. Paper dùng world-model branch dropout với xác suất 0,3: ở một số batch, cả historical và predicted latent tokens của nhánh này được bỏ khỏi action conditioning, đồng thời world-model loss không hoạt động; action loss vẫn được tính. Cơ chế này hạn chế việc policy phụ thuộc quá mức vào dự đoán tương lai vốn có thể sai.

Đây cũng là lý do cần xem cả rollout lẫn loss. World-model loss thấp cho biết feature prediction gần target hơn, nhưng không tự chứng minh robot hoàn thành tác vụ. Một policy có thể dự đoán diễn biến hình ảnh khá tốt mà vẫn sai gripper timing hoặc sai chuyển đổi action sang controller.

4. Chuẩn bị máy và hai môi trường Python

Theo hướng dẫn cài đặt của repo, môi trường training yêu cầu Linux x86_64, NVIDIA GPU với driver tương thích CUDA 12.8 và Python 3.12. Cần FFmpeg để đọc video, EGL/OpenGL để rendering và đủ dung lượng cho dataset lẫn checkpoint. Repo không đưa ra một cấu hình GPU tối thiểu đảm bảo chạy mọi recipe, nên không nên suy ra rằng một GPU phổ thông chắc chắn chứa được model và optimizer.

Trước tiên kiểm tra GPU và cài thư viện hệ thống:

bash
nvidia-smi
sudo apt-get update
sudo apt-get install -y git ffmpeg libgl1 libegl1 libglib2.0-0

Cài uv theo tài liệu chính thức, sau đó lấy repo và tạo môi trường root:

bash
git clone https://github.com/RainyRobo/PLaW-VLA.git
cd PLaW-VLA
git submodule update --init third_party/libero
GIT_LFS_SKIP_SMUDGE=1 uv sync --python 3.12 --frozen
bash scripts/setup/install_transformers_patch.sh

--frozen giữ đúng dependency lock; patch Transformers là bước của repo, không nên bỏ vì nghĩ rằng package đã được cài. Nếu Python hệ thống thiếu development headers, dùng Python do uv quản lý:

bash
uv python install 3.12
UV_PYTHON_PREFERENCE=only-managed GIT_LFS_SKIP_SMUDGE=1 \
  uv sync --python 3.12 --frozen
bash scripts/setup/install_transformers_patch.sh

Simulator client dùng Python 3.8 trong môi trường riêng, còn training và policy server dùng root .venv Python 3.12:

bash
uv sync --project examples/libero --python 3.8 --frozen
.venv/bin/python -c "import torch; print(torch.cuda.is_available())"

Giữ hai môi trường tách biệt giúp tránh xung đột dependency của simulator với stack training. Nếu kiểm tra CUDA trả False, giải quyết driver và môi trường trước khi tải dataset lớn hoặc khởi chạy training.

5. Đường ngắn nhất: fine-tune LIBERO

Quickstart chuẩn bị foundation checkpoint, V-JEPA 2 facebook/vjepa2-vitl-fpc64-256, tokenizer, LIBERO EEF dataset và normalization statistics tương ứng. Nếu mục tiêu là làm quen với pipeline, đây là điểm bắt đầu hợp lý hơn việc tải toàn bộ pretraining mixture.

bash
STAGE3_BASE_SOURCE=pi05 \
NUM_GPUS=8 EXP_NAME=libero_finetune \
  bash scripts/train/run_stage3_libero_quickstart.sh

Bài này chọn pi05 tường minh để nguồn initialization không thay đổi khi checkpoint chính thức được phát hành. README dùng auto, hiện cũng resolve sang π₀.₅; sau release, auto có thể resolve sang checkpoint PLaW-VLA đầy đủ. Hãy lưu source được resolve trong log để so sánh experiment đúng cách.

Recipe Stage III mặc định chạy 50.000 optimization steps, global batch 256, warmup 10.000 steps và lưu checkpoint mỗi 5.000 steps. Với 8 GPU, global batch chia đều thành 32 sample trên mỗi process ở cấu hình này. NUM_GPUS phải phù hợp số GPU visible và chia hết global batch.

Để kiểm tra đường đi với một GPU trước khi đầu tư chạy đầy đủ, có thể dùng experiment riêng:

bash
STAGE3_BASE_SOURCE=pi05 NUM_GPUS=1 EXP_NAME=libero_smoke \
  bash scripts/train/run_stage3_libero_quickstart.sh \
  --batch-size 1 --num-train-steps 20 --save-interval 10 \
  --no-wandb-enabled

Đây chỉ là smoke run, không phải recipe tái lập benchmark và cũng không bảo đảm đủ VRAM trên mọi card. DDP giữ một bản đầy đủ của model và optimizer trên mỗi GPU; thêm GPU không tự chia model như tensor parallelism. Nếu hết VRAM, cần đánh giá bộ nhớ thực tế thay vì chỉ tăng process count.

Checkpoint của experiment đầy đủ nằm tại:

text
checkpoints/stage3_finetuning_libero/libero_finetune/<step>/

Giữ nguyên cả step directory, gồm weights, assets và training state. Resume phải giữ source, batch size, process count cùng các override ban đầu:

bash
STAGE3_BASE_SOURCE=pi05 NUM_GPUS=8 EXP_NAME=libero_finetune \
  bash scripts/train/run_stage3_libero_quickstart.sh --resume

Các lựa chọn và cơ chế handoff được giải thích trong pretraining guide. Nếu đã đổi flag ở lần chạy đầu, lặp lại chúng khi resume.

6. Đường đầy đủ: Stage I → II → III

Muốn tiếp cận setup của paper, cần chuẩn bị năm nguồn cho Stage I: InternData-A1, AgiBotWorld, RoboTwin, LIBERO và EgoDex. Stage II chỉ dùng bốn nguồn robot có action; EgoDex cung cấp video action-free cho Stage I. Converted pretraining mixture không được phân phối sẵn, và repo lưu ý việc khớp chính xác mixture của paper còn phụ thuộc author-verified source manifest.

Vì vậy, ba lệnh dưới đây chỉ là bước training sau khi bạn hoàn thành acquisition, conversion, validation và normalization trong data guide. Đừng tạo thư mục rỗng rồi kỳ vọng launcher tự tải đủ corpus.

bash
export DATA_ROOT="$PWD/data/pretrain"
NUM_GPUS=8 EXP_NAME=stage1_world_model \
  bash scripts/train/run_stage1_world_model_pretraining.sh

NUM_GPUS=8 STAGE1_EXP_NAME=stage1_world_model EXP_NAME=stage2_joint \
  bash scripts/train/run_stage2_pretraining.sh

NUM_GPUS=8 STAGE2_EXP_NAME=stage2_joint EXP_NAME=libero \
  bash scripts/train/run_stage3_finetuning_libero.sh
Stage Mục tiêu Steps Global batch
I Học dự đoán latent từ video, chỉ train LWM 100.000 512
II Joint future prediction và action learning 100.000 256
III Thích nghi tác vụ LIBERO 50.000 256

Trước Stage II, tính training normalization trên dữ liệu đã qua canonical transforms:

bash
.venv/bin/python scripts/train/compute_norm_stats.py \
  --config-name stage2_pretraining --batch-size 32

Không thay thế kết quả này bằng meta/stats.json của converter: raw feature statistics và statistics sau transform khác nhau. Recipe thời gian mặc định dùng sáu history frames kể cả frame hiện tại, sáu future frames cách nhau 0,2 giây và action interval 0,1 giây. Giữ temporal configuration nhất quán khi chuyển checkpoint giữa các stage.

7. Action representation: nơi dễ mắc lỗi nhất

Một EEF pose một tay gồm position, quaternion scalar-first qw, qx, qy, qz và gripper, tổng cộng 8 chiều. Dataset Stage III lưu absolute targets, nhưng training chuyển từng target trong chunk thành delta so với cùng current state. Target thứ hai không phải delta so với target thứ nhất.

Khi inference, output transform khôi phục absolute EEF targets từ current state đó. Policy server trả target vật lý có timestamp; LIBERO client nội suy và chuyển pose error thành lệnh robosuite OSC. Controller OSC_POSE nhận command chuẩn hóa, không nhận trực tiếp vector absolute pose 8 chiều.

Quy ước gripper cũng phải khớp. Physical width, open fraction và signed controller command là ba dạng khác nhau. Raw RLDS converter trong repo xuất signed controller commands, nên không được thay tùy tiện cho EEF dataset của Stage III. Normalization guide mô tả contract cần giữ cùng checkpoint.

8. Inference: server và simulator client

Ở terminal thứ nhất, thay đường dẫn bằng checkpoint thực sự đã tạo. Chọn 30000 khi bạn có checkpoint đó; đây là mốc được paper dùng để báo cáo LIBERO dù lịch training kết thúc ở 50k.

bash
.venv/bin/python scripts/serve/serve_policy.py \
  --env LIBERO --port 8001 policy:checkpoint \
  --policy.config=stage3_finetuning_libero \
  --policy.dir=checkpoints/stage3_finetuning_libero/libero_finetune/30000

Chờ server thông báo listening. Ở terminal thứ hai, bắt đầu bằng một task và vài trial để kiểm tra rendering, kết nối và action adapter:

bash
MUJOCO_GL=egl uv run --project examples/libero --frozen \
  python examples/libero/main.py \
  --task-suite-name libero_spatial --seed 42 \
  --task-ids 0 --num-trials-per-task 3 --record-video all

Smoke checkpoint 10 hoặc 20 bước phải dùng đường dẫn experiment libero_smoke tương ứng; nó chỉ giúp kiểm tra cơ chế, khó tạo hành vi thành công. Đừng đánh giá chất lượng model dựa trên ba trial của một task.

Sau khi pipeline chạy ổn, đánh giá đầy đủ:

bash
for suite in libero_spatial libero_object libero_goal libero_10; do
  MUJOCO_GL=egl uv run --project examples/libero --frozen \
    python examples/libero/main.py \
    --task-suite-name "$suite" --seed 42 --record-video failure
done

libero_10 tương ứng suite thường được gọi LIBERO-Long trong bảng paper. Client mặc định chạy 50 trials mỗi task; mỗi suite có 10 task. Để so sánh nghiêm túc, lặp lại với ba evaluation seeds và ghi rõ seed bạn chọn, nguồn initialization, checkpoint step cùng mọi thay đổi recipe. Paper có ba seeds; một lượt seed 42 không tương đương giao thức đó.

Failed-rollout videos mặc định nằm trong results/libero/videos. LIBERO evaluation guide còn có batch scheduling và checkpoint sweeps. Server chạy eager mặc định; đừng bật compile trong lần chạy đầu nếu bạn chưa tách được lỗi simulator khỏi độ trễ compilation.

9. Đọc kết quả đúng phạm vi

Phương pháp Spatial Object Goal Long Average
π₀.₅ 98,8 98,2 98,0 92,4 96,9
PLaW-VLA 98,9 99,0 97,1 94,6 97,4

Theo Table 1 của paper, mức tăng trung bình là 0,5 điểm phần trăm, còn Long tăng 2,2 điểm. Goal lại thấp hơn backbone. Điều này giúp nhìn rõ lợi ích tập trung vào một số đặc tính temporal, thay vì tuyên bố model tốt hơn ở mọi suite.

Trên LIBERO-Plus zero-shot, tác giả báo cáo task-weighted average 72,7%; đây là benchmark perturbation khác LIBERO chuẩn. Trên RoboTwin Hard Horizon III, kết quả tăng từ 67,4% lên 79,2%, tức 11,8 điểm phần trăm. Không gán mức tăng đó cho LIBERO. Các số này là kết quả tác giả công bố, không phải benchmark do hướng dẫn này chạy lại. Nguồn: phần Experiments.

Ablation thay V-JEPA 2 bằng Cosmos VAE cho LIBERO-Plus đạt 70,93%, thấp hơn 1,77 điểm; masking toàn bộ future states tại inference làm LIBERO giảm còn 93,05%. Những so sánh ấy hỗ trợ vai trò của latent space và future conditioning, nhưng không chứng minh một world model luôn hữu ích trên mọi robot. Nguồn: Table 4.

Đánh giá robot thật trên gấp khăn, đóng gói đồ chơi, bóng rổ và sắp xếp văn phòng phẩm — nguồn: paper PLaW-VLA, Figure 4
Đánh giá robot thật trên gấp khăn, đóng gói đồ chơi, bóng rổ và sắp xếp văn phòng phẩm — nguồn: paper PLaW-VLA, Figure 4

Robot thật được đánh giá bằng normalized task progress, khác success rate nhị phân trong mô phỏng. Nhớ kiểm tra định nghĩa metric trước khi đặt hai biểu đồ cạnh nhau. Một rollout hoàn thành ba bước trong bốn bước có thể nhận progress score cao nhưng vẫn thất bại theo tiêu chí hoàn thành toàn tác vụ.

10. Kiểm tra lỗi và chọn experiment tiếp theo

Nếu gặp EGL error, kiểm tra driver cùng runtime rendering trước; tài liệu cho phép MUJOCO_GL=glx với hệ thống có X display. Nếu client không kết nối, kiểm tra server đã listening, host và port. Nếu robot chuyển động vô lý dù inference trả output, kiểm tra normalization assets, quaternion order và gripper convention trước khi sửa kiến trúc.

Nếu action loss giảm nhưng success rate không tăng, xem video theo từng giai đoạn: tiếp cận, gắp, di chuyển và thả. Đếm failure mode giúp bạn phân biệt lỗi perception, sai controller adapter và thiếu dữ liệu phục hồi. Khi so sánh baseline, giữ dataset, seed, budget và execution adapter giống nhau; thay đổi nhiều yếu tố cùng lúc sẽ làm mất khả năng quy kết cải thiện.

Mốc hoàn thành đầu tiên nên là một checkpoint hợp lệ, một policy server hoạt động và một rollout được lưu. Mốc tiếp theo là đánh giá toàn suite có ghi provenance. Chỉ khi hai bước đó rõ ràng mới đáng mở rộng sang pretraining đầy đủ hoặc robot thật. Latent future prediction cung cấp thêm context cho hành động, còn chất lượng dữ liệu và execution contract vẫn quyết định robot có thực hiện đúng hay không.

Bài viết liên quan

  • InternVLA-A1: Mixture-of-Transformers và world model
  • LingBot-VA: world model nhân quả cho manipulation
  • VLA và LeRobot: xử lý tác vụ long-horizon
NT

Nguyễn Anh Tuấn

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

Khám phá VnRobo

Fleet MonitoringROS 2 IntegrationAMR Solutions
← Bài trước
RoboDojo: benchmark π0.5, SmolVLA và GR00T
Bài sau →
SmolWAM: Chạy VLA dự đoán tương lai với 2,4 GiB VRAM

Bài viết liên quan

NEWTutorial
SmolWAM: Chạy VLA dự đoán tương lai với 2,4 GiB VRAM
vlasmolwamworld-action-model
wholebody-vla

SmolWAM: Chạy VLA dự đoán tương lai với 2,4 GiB VRAM

Hướng dẫn cài SmolWAM, chạy LIBERO, đọc dự đoán tương lai và tái lập training; hiểu đúng kết quả 95,5% cùng mức VRAM inference.

13/10/202615 phút đọc
NT
Nghiên cứu
LingBot-VA: World Model Nhân Quả cho Robot Manipulation
world-modelvlamanipulation
wholebody-vla

LingBot-VA: World Model Nhân Quả cho Robot Manipulation

Kiến trúc MoT kết hợp video prediction và policy trong latent space chung — LingBot-VA đạt 98.5% LIBERO và vượt π0.5 trên 6 tác vụ thực tế.

3/7/202613 phút đọc
NT
Deep Dive
VLA-RFT: RL Fine-Tune VLA trong World Simulator
vlavla-rftreinforcement-learning
wholebody-vla

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

VLA-RFT dùng world model làm simulator để fine-tune VLA bằng GRPO, reward kiểm chứng và code GitHub trên LIBERO.

3/6/202614 phút đọc
NT
VnRobo logoVnRobo logo

Hạ tầng AI cho robot công nghiệp thế hệ mới.

Sản phẩm

  • Tính năng
  • Bảng giá
  • Kiến thức
  • Dịch vụ

Công ty

  • Về chúng tôi
  • Blog
  • Liên hệ

Pháp lý

  • Chính sách bảo mật
  • Điều khoản sử dụng

© 2026 VnRobo. Bảo lưu mọi quyền.

Được tạo với♥tại Việt Nam