manipulationwall-ossvlalerobotmanipulationzero-shot

Chạy Wall-OSS-0.5 với LeRobot

Hướng dẫn chạy Wall-OSS-0.5, VLA 4B open-source zero-shot cho robot manipulation, từ paper đến LeRobot training và inference.

Nguyễn Anh Tuấn3 tháng 6, 202613 phút đọc
Chạy Wall-OSS-0.5 với LeRobot

Tổng quan

Wall-OSS-0.5 là một trong những release đáng chú ý nhất của nhóm VLA trong năm 2026: một model Vision-Language-Action 4B open-source, do X Square Robot công bố, được thiết kế để có thể đo năng lực robot ngay từ checkpoint pretraining thay vì chỉ báo cáo kết quả sau fine-tuning. Điều này quan trọng vì trong robot learning, nhiều model được gọi là "foundation model" nhưng kết quả mạnh nhất thường đến từ vài trăm demonstration trên đúng task test. Với Wall-OSS-0.5, paper đặt câu hỏi trực diện hơn: nếu chưa fine-tune task cụ thể, pretrained VLA có tạo ra hành vi robot thật hay chỉ là initialization tốt?

Theo technical report trên arXiv, model được xây trên backbone Qwen2.5-VL-3B-Instruct, mở rộng thành hơn 4B parameters bằng action-generation components. Dữ liệu pretraining bao phủ hơn 20 robot embodiments, xử lý hơn 1 triệu robot trajectories mỗi epoch, kết hợp với một multimodal corpus có dữ liệu grounded cho embodied understanding. Checkpoint pretrained được đánh giá zero-shot trên 17 real-robot tasks, sau đó fine-tune trên 15 tasks để so sánh với các pretrained robot foundation models khác như π0.5 và DreamZero.

Robot arm cho VLA manipulation zero-shot

Bài này đi theo hướng thực dụng: đọc paper để hiểu vì sao Wall-OSS-0.5 khác các VLA trước đó, sau đó biến phần đó thành checklist cài đặt, training và inference trong LeRobot. Nếu bạn mới bắt đầu với LeRobot, nên đọc trước LeRobot framework và bài VLA models cho robotics. Nếu mục tiêu là deploy model đã fine-tune lên robot thật, phần cuối có liên hệ với PEFT/LoRA và deployment.

Nguồn kỹ thuật chính trong bài gồm: Wall-OSS-0.5 Technical Report, GitHub Wall-X, Hugging Face model card, và LeRobot WALL-OSS docs.

Ý tưởng chính của paper

Điểm mới của Wall-OSS-0.5 không chỉ nằm ở size 4B. Điểm đáng chú ý là cách paper phân tách ba câu hỏi vốn hay bị trộn lẫn trong VLA:

  1. Model có còn hiểu ảnh và ngôn ngữ sau khi học action không?
  2. Backbone VLM có nhận được gradient đủ mạnh để trở nên action-aware không?
  3. Action output dùng để điều khiển robot thật có đủ liên tục và mượt không?

Nhiều VLA dùng continuous action head, diffusion hoặc flow matching để sinh action. Cách này hợp lý cho deployment vì robot cần các giá trị liên tục: end-effector delta, orientation, gripper, joint state. Nhưng paper chỉ ra một vấn đề: flow matching là objective tốt cho action execution, nhưng tín hiệu gradient đi vào VLM backbone tương đối yếu sau giai đoạn đầu. Ngược lại, discrete action token prediction dùng cross-entropy giống language modeling, nên gradient rất "native" với VLM. Nhưng nếu chỉ decode discrete tokens thành action thật, precision thường không đủ tốt cho manipulation tinh.

Wall-OSS-0.5 giải quyết bằng gradient-bridged co-training. Trong training, discrete action prediction đóng vai trò cầu nối gradient để làm backbone hiểu action. Multimodal prediction giữ lại năng lực visual grounding và instruction following. Continuous flow matching là interface dùng khi inference để sinh action liên tục. Nói ngắn gọn: discrete pathway chủ yếu để dạy backbone, continuous pathway chủ yếu để chạy robot.

Paper báo cáo ba objective trong cùng công thức loss:

L = L_flow + lambda_act * L_act-CE + lambda_mm * L_mm-CE

Trong đó L_act-CE là autoregressive loss cho RVQ action tokens, L_mm-CE là multimodal next-token loss, còn L_flow là flow matching loss cho continuous action chunks. Technical report dùng lambda_act = lambda_mm = 0.01, và batch composition action:multimodal khoảng 9:1. Chi tiết này hữu ích khi bạn fine-tune: nếu chỉ train flow-only, model có thể học action head nhưng backbone không được điều chỉnh đủ tốt theo task robotics; nếu bỏ multimodal anchor, model có nguy cơ mất phần grounded vision-language.

Kiến trúc Wall-OSS-0.5

Wall-OSS-0.5 khởi tạo từ Qwen2.5-VL-3B-Instruct và mở rộng bằng Mixture-of-Transformers (MoT). Ở mỗi layer, model có hai nhánh chuyên môn:

  • VL Expert xử lý vision tokens, language tokens, proprioception tokens và discrete action tokens.
  • Action Expert xử lý noisy continuous action tokens cho flow matching.

Điểm cần hiểu là MoT ở đây không phải chỉ gắn thêm một action head ở cuối backbone. Paper mô tả routing decomposition: các token khác nhau đi qua expert phù hợp, nhưng gradient vẫn flow end-to-end. Attention mask giữ discrete action pathway và continuous action pathway không nhìn trực tiếp nhau trong forward pass, nhờ đó hai pathway có thể học objective riêng. Tuy vậy, Action Expert vẫn có thể nhận thông tin từ visual-language context khi tạo action liên tục.

Logo và model release Wall-OSS chính thức

Thành phần thứ hai là Vision-Aligned RVQ Action Tokenizer. Các model như Pi0-FAST dùng FAST tokenizer để nén action thành tokens hiệu quả, nhưng FAST thiên về rule-based compression. Wall-OSS-0.5 thay bằng learned residual vector quantization tokenizer. Tokenizer này làm việc trong delta-action space, nén action chunk qua encoder, RVQ codebooks và decoder. Ngoài reconstruction, nó còn dùng visual-action alignment, next-frame prediction và DCT-domain reconstruction để token không chỉ là mã số cơ học mà có liên hệ với hậu quả thị giác của action.

Thành phần thứ ba là Action-Space Supervision cho flow matching. Thay vì chỉ tối ưu velocity field như flow matching chuẩn, paper đặt loss trong raw action space để nhấn mạnh cấu trúc low-frequency của trajectory robot. Trực giác ở đây khá hợp lý: action của robot arm thường mượt, low-dimensional, nhiều thông tin nằm ở shape toàn cục của trajectory hơn là chi tiết nhiễu tần số cao.

Action representation của Wall-OSS-0.5 cũng đáng chú ý. Paper dùng relative actions và 6D rotations để tránh discontinuity của Euler angles hoặc quaternion ambiguity. Action space chuẩn là 26-dimensional, tương ứng với bimanual end-effector poses, rotation 6D, gripper và joint-related state tùy cấu hình. Với beginner, điều này có nghĩa là bạn không nên vội nối model vào robot bất kỳ nếu action schema chưa map đúng. Trước khi chạy closed-loop, hãy kiểm tra camera names, proprio fields, normalization key, action dimension, action horizon và unit của controller.

Chuẩn bị môi trường

Wall-OSS-0.5 đã có trong hệ sinh thái LeRobot với policy.type=wall_x. Tuy nhiên, tài liệu LeRobot cho biết bản main yêu cầu cài từ source; nếu dùng bản stable, hãy kiểm tra version mới nhất trước khi chạy. Môi trường thực tế nên có Ubuntu 22.04, Python 3.10, CUDA tương thích với PyTorch, GPU đủ VRAM cho model 4B, camera calibration ổn định và controller có emergency stop. Với 4B parameters và tensor BF16/F32 trên Hugging Face, hãy xem 24GB VRAM là mức tối thiểu thực dụng cho thử nghiệm nghiêm túc; nếu OOM, giảm batch size, dùng BF16, giảm số camera hoặc chạy inference server riêng.

Thiết lập theo hướng Wall-X native:

conda create --name wallx python=3.10
conda activate wallx

pip install torch torchvision transformers
pip install huggingface_hub

git clone https://github.com/X-Square-Robot/wall-x.git
cd wall-x
pip install -r requirements.txt
MAX_JOBS=4 pip install flash-attn==2.7.4.post1 --no-build-isolation
MAX_JOBS=4 pip install --no-build-isolation --verbose -e .

Nếu bạn đang làm trong LeRobot source tree, tài liệu LeRobot đưa ra cách cài extra:

pip install -e ".[wallx]"

Sau đó kiểm tra import tối thiểu:

python - <<'PY'
import torch
print(torch.__version__, torch.cuda.is_available())
import wall_x
print("wall_x import ok")
PY

Với beginner, lỗi hay gặp nhất không nằm ở model mà nằm ở dependency CUDA. flash-attn cần đúng CUDA/PyTorch ABI và thường compile lâu. Nếu bạn chỉ muốn chạy inference test trước, có thể bắt đầu với attention implementation eager hoặc sdpa, rồi tối ưu flash_attention_2 sau. Đừng kết nối robot thật khi chưa chạy được fake inference và open-loop plot.

Chuẩn bị dữ liệu LeRobot

Để fine-tune, dataset nên ở LeRobot format. Một episode tối thiểu cần có image observations, proprioception, action và language instruction. Camera nên đặt tên nhất quán, ví dụ face_view cho camera ngoài và right_wrist_view cho wrist camera. Nếu robot của bạn chỉ có một arm, vẫn cần quyết định action schema tương thích với policy: position delta, orientation 6D hoặc axis-angle đã convert, gripper scalar, joint positions nếu cần.

Checklist dữ liệu:

  • Mỗi episode có instruction rõ ràng: "pick up the red cup", "place the block into the matching tray".
  • FPS action và camera đồng bộ, không lệch timestamp quá lớn.
  • Action không bị idle quá nhiều; paper cũng lọc outlier và idle actions để tránh overfitting vào đứng yên.
  • Train/validation split tách theo scene hoặc object nếu muốn đo generalization thật.
  • Normalization stats được lưu cùng dataset hoặc policy config.

Nếu bạn mới thu dữ liệu, hãy bắt đầu với 50-100 episodes cho một task đơn giản như cup grasping hoặc block sorting. Wall-OSS-0.5 là prior mạnh, nhưng fine-tuning vẫn nhạy với data quality. Năm mươi demonstration tốt, camera sạch và language consistent thường hữu ích hơn vài trăm episode có gripper delay, occlusion và label mơ hồ.

Training trong LeRobot

LeRobot docs cho Wall-X dùng lerobot-train với policy.type=wall_x. Ví dụ tối giản:

lerobot-train \
  --dataset.repo_id=your-username/robot_pick_place \
  --policy.type=wall_x \
  --output_dir=./outputs/wallx_pick_place \
  --job_name=wallx_pick_place \
  --policy.repo_id=your-username/wallx_pick_place \
  --policy.pretrained_name_or_path=x-square-robot/wall-oss-flow \
  --policy.prediction_mode=diffusion \
  --policy.attn_implementation=eager \
  --steps=3000 \
  --policy.device=cuda \
  --batch_size=32

Giải thích các tham số quan trọng:

  • --dataset.repo_id: dataset trên Hugging Face Hub hoặc local repo đã port sang LeRobot format.
  • --policy.type=wall_x: chọn implementation Wall-X trong LeRobot.
  • --policy.pretrained_name_or_path: checkpoint khởi tạo, ví dụ x-square-robot/wall-oss-flow hoặc checkpoint Wall-OSS phù hợp.
  • --policy.prediction_mode=diffusion: trong docs, mode này dùng iterative denoising/flow-style generation; một số nhánh hỗ trợ fast cho next-token prediction.
  • --policy.attn_implementation=eager: an toàn để debug; sau khi ổn có thể thử sdpa hoặc flash_attention_2.
  • --batch_size: giảm xuống 1, 2, 4 hoặc 8 nếu GPU OOM.

Với native Wall-X repo, tài liệu hướng dẫn dùng workspace/lerobot_example/run.sh sau khi chỉnh workspace/README.md và config. Cách này phù hợp nếu bạn muốn kiểm soát sâu hơn: GPU setup, model/data paths, robot DOF configuration, hyperparameters, evaluation script. Với beginner, nên bắt đầu bằng LeRobot CLI vì dễ audit hơn.

Một training run tốt nên có ba loại log: train loss, validation open-loop error và video rollout hoặc real-robot dry run. Nếu loss giảm nhưng action chunk bị lệch scale, hãy kiểm tra normalizer trước khi sửa model. Nếu model hiểu instruction nhưng gripper sai thời điểm, kiểm tra latency và gripper command mapping. Nếu object grounding sai, tăng diversity ảnh và instruction, hoặc thêm wrist camera.

Inference và kiểm tra trước khi chạy robot thật

Model card có ví dụ fake inference dùng checkpoint x-square-robot/wall-oss-0.5, build adapter, tạo fake observation gồm eef_pos, eef_axisangle, gripper, face_view, wrist_view, rồi gọi generate_flow_action. Repo Wall-X cũng có script:

python ./scripts/fake_inference.py
python ./scripts/draw_openloop_plot.py
python ./scripts/vqa_inference.py

Thứ tự kiểm tra nên là:

  1. Fake inference: model load được, dtype đúng, output không NaN, shape [horizon, action_dim] đúng.
  2. Open-loop evaluation: dùng recorded observations để so sánh action predicted với action demonstration.
  3. VQA/COT test: kiểm tra model có localize object và hiểu next step trong scene của bạn không.
  4. Robot dry run: disable gripper hoặc scale action xuống 10-20%, chạy trong vùng an toàn.
  5. Closed-loop rollout: chỉ bật full action khi emergency stop, workspace limit và collision limit đã hoạt động.

Frame kiểm tra embodied reasoning từ Wall-X repo

Khi nối vào robot thật, bạn cần viết adapter chuyển action chunk thành command cho controller. Với một robot arm phổ biến, pipeline thường là:

camera frames + proprio + instruction
-> LeRobot processor / Wall-X adapter
-> action chunk in normalized relative action space
-> denormalize
-> convert 6D rotation to controller orientation
-> apply workspace and velocity limits
-> send to robot at fixed control rate

Paper báo cáo inference 15 Hz ở input resolution cao cho pretrained policy. Tuy vậy, con số thực tế phụ thuộc GPU, số camera, attention backend và controller loop. Nếu robot control loop chạy 50-100 Hz, bạn thường cần action chunking hoặc hold-last-action giữa hai lần policy inference. Với manipulation, độ ổn định timing quan trọng không kém accuracy của model.

Kết quả paper

Zero-shot suite gồm 17 real-robot tasks: 12 seen tasks trong phân phối pretraining và 5 unseen tasks là cấu hình held-out không được thu thập giống hệt trên embodiment hiện tại. Paper dùng task progress thay cho binary success rate, mỗi task chấm tối đa 100 và đánh giá trên 10 trajectories. Cách đo này hợp lý cho foundation policy vì robot có thể hoàn thành 70% bước task nhưng fail ở bước cuối; binary success sẽ làm mất thông tin.

Ở checkpoint 400k, average task progress đạt 51.1% trên 17 tasks, trong đó seen average là 50.0% và unseen average là 53.6%. Sáu task đạt ít nhất 60% zero-shot: Block Sorting 100%, Fruit Sorting 96%, Ring Stacking 86%, Rope Tightening 82%, Cup Grasping 64% và Bean Pouring 60%. Rope Tightening là unseen deformable manipulation task, nên đây là kết quả đáng chú ý nhất để chứng minh model không chỉ nhớ template task cứng.

Nhưng paper cũng rất rõ về giới hạn. Các task như Towel Folding 10%, Table Setting 9% và Charger Plugging 9% vẫn gần như ngoài tầm zero-shot. Đây đều là task cần fine-grained alignment, deformable state tracking hoặc insertion precision. Nếu bạn định dùng Wall-OSS-0.5 cho connector plugging, folding hoặc dexterous hands, hãy coi checkpoint pretrained là prior, không phải policy production.

Sau fine-tuning, Wall-OSS-0.5 đạt 60.5% average task progress trên 15 real-robot tasks, hơn π0.5 17.5 percentage points và hơn DreamZero khoảng 27.1 points theo model card/technical report summary. Trong 15 tasks đó có 10 manipulation tasks và 5 reasoning tasks, mỗi task fine-tune với khoảng 500 trajectories theo cùng protocol. Ablation cũng cho thấy co-training đầy đủ đạt 57.0% trên 5 ablation tasks, cao hơn flow-only 36.6%, stop-gradient 31.9% và stop-gradient-to-co-training 49.6%. Với tokenizer, Vision-Aligned RVQ tăng average task progress từ 29.3% lên 48.1% trên 4 real-robot tasks trong cùng co-training setting.

Điểm mình rút ra là: Wall-OSS-0.5 không xóa nhu cầu data collection, nhưng làm thay đổi baseline. Thay vì train từ policy nhỏ cho từng task, bạn bắt đầu từ một VLA đã có embodied grounding, semantic manipulation và action prior. Fine-tuning lúc này giống chỉnh lại distribution của robot, camera, object và task hơn là dạy model từ con số không.

Khi nào nên dùng Wall-OSS-0.5?

Nên thử Wall-OSS-0.5 nếu bạn có robot arm thật, muốn làm language-conditioned manipulation, có GPU đủ mạnh, và đã quen với LeRobot dataset format. Model đặc biệt phù hợp với task có semantics rõ: sort theo màu, pick object theo instruction, place vào vùng được chỉ định, pour đơn giản, hoặc task cần generalize object/scene vừa phải.

Không nên bắt đầu bằng Wall-OSS-0.5 nếu bạn chỉ có laptop không GPU, chưa có emergency stop, chưa calibrate camera, hoặc task cần sub-centimeter precision. Với trường hợp đó, bắt đầu bằng ACT hoặc Diffusion Policy trên task hẹp sẽ dễ debug hơn. Sau khi pipeline data/controller đã ổn, bạn chuyển sang VLA lớn để tăng generalization.

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

NEWDeep Dive
WBC + VLA mới nhất cho humanoid
wbcvlawhole-body-controlhumanoidloco-manipulation

WBC + VLA mới nhất cho humanoid

Deep dive WholeBodyVLA, LMO RL và xu hướng WBC + VLA giúp humanoid vừa đi vừa thao tác trong không gian lớn.

3/6/202615 phút đọc
NEWDeep Dive
VLA-RFT: RL Fine-Tune VLA trong World Simulator
vlavla-rftreinforcement-learningworld-modelgrpoliberoopenhelixmanipulation

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
NEWDeep Dive
SafeContract: Giám sát action VLA
vlalerobotsafecontractsmolvlaopenvlarobot-safety

SafeContract: Giám sát action VLA

Cách dùng SafeContract để kiểm tra, hiệu chỉnh và chặn action nguy hiểm khi deploy SmolVLA/OpenVLA trên LeRobot.

3/6/202614 phút đọc