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. RynnVLA-Latent: học VLA 3D từ dữ liệu mẫu
wholebody-vlavlarynnvla-latentlatent-actionsimitation-learningmanipulationpolicy-training

RynnVLA-Latent: học VLA 3D từ dữ liệu mẫu

Hiểu latent actions 3D, cài RynnVLA-Latent, chạy dữ liệu mẫu và đi từ pretraining đến policy robot qua Stage 2.

Nguyễn Anh Tuấn1 tháng 11, 202614 phút đọc
RynnVLA-Latent: học VLA 3D từ dữ liệu mẫu

Video cho thấy một người nhấc cốc, nhưng không cho biết motor của robot phải quay bao nhiêu. Ngay cả dữ liệu robot cũng khó ghép: một hệ điều khiển nhận joint positions, hệ khác nhận end-effector pose, robot hai tay lại có số chiều khác. RynnVLA-Latent tìm một lớp biểu diễn trung gian để học chuyển động từ nhiều nguồn video trước khi học lệnh điều khiển của robot đích.

Bài này bắt đầu bằng dữ liệu tổng hợp đi kèm repository. Bạn sẽ hiểu kiến trúc, cài môi trường, kiểm tra dataset, chạy smoke training, rồi biết cần bổ sung gì để post-train và inference. Không cần sở hữu robot để thực hiện phần đầu. Tuy nhiên, checkpoint Stage 1 chưa phải policy điều khiển; muốn đánh giá closed-loop phải hoàn thành Stage 2 với demonstrations có nhãn hành động.

Nguồn chính là paper RynnVLA-Latent của Haoyu Zhao và cộng sự, bản preprint ngày 25/10/2026, cùng repository chính thức. Các lệnh bên dưới được đối chiếu với mã nguồn công khai ngày 01/11/2026; bài viết không tuyên bố đã chạy GPU training hay tái lập benchmark.

1. Ý tưởng: học chuyển động trước, căn chỉnh điều khiển sau

VLA là Vision-Language-Action: mô hình nhận quan sát hình ảnh, instruction và, tùy giai đoạn, trạng thái robot để dự đoán hành động. Khó khăn nằm ở chữ Action. Cùng thao tác đặt cốc xuống bàn nhưng tay người, gripper và bàn tay nhiều ngón không dùng chung command space.

RynnVLA-Latent chia việc học thành hai giai đoạn policy. Stage 1 học dự đoán latent actions, tức vector mô tả chuyển tiếp giữa các quan sát, từ hình ảnh và ngôn ngữ. Stage 2 dùng demonstrations của embodiment đích để chuyển đầu ra thành native robot actions. Robot vẫn cần dữ liệu điều khiển thật ở giai đoạn cuối; video không tự loại bỏ nhu cầu đó.

Công cụ tạo nhãn là RynnLAM, một latent-action model học self-supervised. Nó xem cặp frame hiện tại và tương lai để tạo descriptor. Sau đó policy học dự đoán descriptor ấy chỉ từ thông tin quan sát được tại thời điểm quyết định. Việc RynnLAM nhìn frame tương lai khi tạo nhãn offline không có nghĩa robot cần nhìn tương lai lúc chạy.

Nếu muốn củng cố khái niệm observation, episode và policy trước, hãy đọc thực hành LeRobot cho người mới.

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 →

2. Vì sao latent actions cần thông tin 3D?

Trong video egocentric, camera có thể quay khi người đang đứng yên. Nếu mô hình chỉ nhìn chuyển động pixel, nó dễ nhầm camera motion với hành động thao tác. RynnLAM dùng geometric supervision để khuyến khích biểu diễn gắn với chuyển động vật lý.

Kiến trúc RynnLAM với motion tokens, action latent và camera latent — nguồn: paper RynnVLA-Latent
Kiến trúc RynnLAM với motion tokens, action latent và camera latent — nguồn: paper RynnVLA-Latent

Nguồn: Figure 3 trong paper RynnVLA-Latent của nhóm tác giả.

Descriptor ktoken_zcam có 608 chiều, gồm ba phần:

Thành phần Số chiều Vai trò
Local motion tokens 8 × 64 = 512 Nén thông tin chuyển động cục bộ
Global action latent 64 Tóm tắt chuyển tiếp liên quan đến thao tác
Camera latent 32 Biểu diễn chuyển động camera tương đối

Backbone của RynnLAM dựa trên Depth Anything 3. Encoder sử dụng gated temporal difference giữa đặc trưng của hai frame, làm nổi bật thay đổi và giảm ảnh hưởng của nội dung tĩnh. Các readout tokens và motion queries tạo những thành phần của latent.

Năm mục tiêu huấn luyện bổ sung cho nhau. Residual feature reconstruction dự đoán thay đổi đặc trưng thay vì sao chép toàn bộ ảnh. Dynamic 3D flow sử dụng pseudo-label từ depth, camera poses và optical flow, có bù camera motion. Contrastive feature loss khuyến khích đặc trưng sau flow warping gần frame đích hơn frame nguồn. Camera pose loss buộc camera latent mang thông tin pose. Gradient reversal làm global action latent khó tiết lộ camera pose.

Một chi tiết cần giữ chính xác: cơ chế camera decoupling tác động lên global action latent. Toàn bộ descriptor 608 chiều vẫn chứa camera latent, vì vậy không nên gọi toàn bộ vector là hoàn toàn camera-invariant. Geometric pseudo-label cũng là ước lượng; chúng có thể sai khi bị che khuất hoặc khi ước lượng depth kém.

3. Policy kết hợp VLM và action expert như thế nào?

RynnVLA-Latent dùng Mixture-of-Transformers. RynnBrain xử lý instruction và ảnh nhiều góc nhìn thành VLM prefix. Một action expert hẹp hơn tương tác với prefix qua attention theo từng layer, nhưng có đường projection và feed-forward riêng. Prefix giữ causal attention; action suffix được nhìn prefix và tương tác hai chiều bên trong phần hành động.

Pipeline Stage 1 dự đoán latent actions và Stage 2 căn chỉnh native robot actions — nguồn: paper RynnVLA-Latent
Pipeline Stage 1 dự đoán latent actions và Stage 2 căn chỉnh native robot actions — nguồn: paper RynnVLA-Latent

Nguồn: Figure 4 trong paper RynnVLA-Latent của nhóm tác giả.

Tên 2B và 4B chỉ backbone, không phải tổng số tham số policy. Paper báo tổng khoảng 2,51B và 5,04B sau khi cộng action expert. Expert có hidden size 768. Giao diện quan sát hỗ trợ sáu camera slots; view không có được mask khỏi attention và loss. Điều đó giúp trộn dữ liệu có camera khác nhau, nhưng không bảo đảm thành công với mọi góc nhìn mới.

Policy học bằng flow matching. Có thể hình dung mô hình nhận một action chunk bị trộn với Gaussian noise và học hướng biến đổi từ noise về chunk hợp lý, có điều kiện theo ảnh và ngôn ngữ. Inference bắt đầu từ noise, tích phân velocity field bằng Euler steps. VLM prefix được tái sử dụng qua các bước này.

Stage 1 dự đoán chunk gồm sáu latent targets. Trong config còn có action_chunk_size: 30; đây không phải cách nói rằng có 30 descriptor 608 chiều. Cần đọc cùng latent_action_chunk_size: 6 và latent_action_stride: 5. Stage 2 chuyển sang native action chunk dài 10 trong preset V5, thêm proprioception và đổi projection đầu ra. Không có một decoder latent-to-motor độc lập được gắn thêm sau policy.

Để so sánh với hướng học đặc trưng video, xem VLA-JEPA và latent world models.

4. Cài đặt trong môi trường riêng

Phần training hướng đến Linux và NVIDIA CUDA. requirements.txt hiện tham chiếu Python 3.10, PyTorch 2.7.1 CUDA 12.6, Transformers 5.2.0 và flash-attn wheel cho Linux x86_64. Vì wheel có ràng buộc ABI, không nên mặc định nó chạy trên ARM64, macOS hoặc mọi tổ hợp Python/CUDA.

Bạn có thể tải source archive mà không cần Git. Thực hiện trong thư mục học tập riêng, chưa có thư mục RynnVLA-Latent-main:

bash
curl -fL https://github.com/alibaba-damo-academy/RynnVLA-Latent/archive/refs/heads/main.tar.gz -o rynnvla-latent-main.tar.gz
tar -xzf rynnvla-latent-main.tar.gz
cd RynnVLA-Latent-main
conda create -y -n rynnvla python=3.10
conda activate rynnvla
python -m pip install -r requirements.txt

Archive main có thể thay đổi về sau. Khi làm thí nghiệm cần tái lập, ghi lại phiên bản source bạn tải cùng toàn bộ config và model identifier. Không dùng tên model làm bằng chứng rằng hai lần chạy có cùng weights.

Kiểm tra môi trường trước khi training:

bash
python -c "import torch; print(torch.__version__); print(torch.cuda.is_available())"
python -c "import rynnvla, rynnlam; print('packages OK')"
python -c "import flash_attn_2_cuda; print('flash-attn extension OK')"

Import compiled extension giúp phát hiện wheel thiếu hoặc sai ABI. Nếu gặp lỗi wheel tải về có dung lượng bằng không, xử lý download trước; nếu báo undefined symbol, kiểm tra tổ hợp Torch, CUDA, Python và ABI. Đừng thay hàng loạt package trong môi trường training đang sử dụng cho dự án khác.

5. Bắt đầu với hai bộ dữ liệu mẫu

Repository cung cấp hai corpus synthetic, có mục đích kiểm tra đường đi dữ liệu và training:

Thư mục Nội dung Dùng cho
data/sample/ 3 episodes, mỗi episode 24 latents 608 chiều; video, index và stats Dataset Stage 1 của VLA
data/sample_lam/ 3 scenes, mỗi scene 12 frames kích thước 56 × 56 RynnLAM training

Bắt đầu bằng kiểm tra CPU, chưa cần backbone weights:

bash
bash scripts/smoke.sh --only data

Script đọc dữ liệu bằng LatentPretrainDataset, không chỉ kiểm tra file có tồn tại. Nó xác nhận có ảnh giải mã được, trường text, slot mask và latent targets hữu hạn có chiều cuối bằng 608. Kết quả mong đợi là thông báo [verify] OK; số sample thực tế phải lấy từ log, không suy ra bằng cách nhân số episode với số latent.

Mixture mẫu có cấu trúc sau, được trích từ data/sample/sample_mixture.json:

json
[
  {
    "data_type": "LatentPretrainDataset",
    "data_path": "data/sample/build/index_c6.npz",
    "latent_stats_path": "data/sample/build/latent_stats.json",
    "latent_chunk": 6,
    "latent_step_seconds": 0.25,
    "dataset_weights": {"SampleToy": 1.0}
  }
]

data_path trỏ đến index, không phải thư mục video bất kỳ. latent_stats_path cung cấp thống kê tương ứng với latent corpus. Khi đổi dữ liệu, phải bảo đảm video, latent timestamps, index và stats cùng khớp. Launcher không tự tải dataset, trích latent hay xây index. JSON cũng không tự mở rộng biến môi trường trong chuỗi đường dẫn.

6. Chạy RynnLAM smoke training

Sau khi kiểm tra dataset, chạy:

bash
bash scripts/smoke.sh

Mặc định script kiểm tra dữ liệu rồi chạy RynnLAM hai optimizer steps. Config rynnlam/configs/smoke.yaml sử dụng encoder khởi tạo ngẫu nhiên, batch size 1, không cần DA3 weights bên ngoài. Cả năm nhánh loss đều được bật để kiểm tra training, checkpointing và internal evaluation.

Checkpoint nằm dưới runs/smoke_lam. Hãy xác nhận process kết thúc thành công, loss hữu hạn và checkpoint được ghi. Loss nhỏ trên dữ liệu synthetic không chứng minh encoder hiểu chuyển động thật. Smoke recipe cũng không phải phiên bản thu nhỏ đủ để tái lập benchmark.

Nếu muốn gọi riêng trainer, dùng lệnh sau thay cho wrapper:

bash
python scripts/train_rynnlam.py --config rynnlam/configs/smoke.yaml

Để huấn luyện RynnLAM thật, repository yêu cầu DA3-Large encoder weights đúng kiến trúc, bao gồm QK normalization. Paper mô tả giai đoạn encoder frozen 36.000 steps rồi unfrozen 20.000 steps. Hai giai đoạn của RynnLAM này khác với Stage 1/Stage 2 của VLA policy. Đặt tên run rõ ràng giúp tránh nạp nhầm checkpoint của hai loại mô hình.

7. Smoke VLA và bước sang training thật

Để smoke cả VLA, cần một local RynnBrain-2B hoặc checkpoint thuộc họ Qwen3-VL được script hỗ trợ để lấy tokenizer/processor assets. Thay đường dẫn ví dụ bằng thư mục đã tải đầy đủ:

bash
bash scripts/smoke.sh --src /path/to/RynnBrain-2B

Script tạo tiny backbone khoảng 44M tham số với weights ngẫu nhiên rồi chạy hai steps. Đây không phải fine-tune nguyên mô hình 2B. Nếu không truyền --src và chưa có tiny backbone, VLA stage được ghi là skipped; wrapper chạy thành công không đồng nghĩa mọi stage đã chạy.

Khi chuyển sang Stage 1 thật, trước hết chuẩn bị local RynnBrain weights và mixture/index/stats của corpus đã được RynnLAM gán nhãn. Lệnh sau là mẫu cho các assets phải có sẵn, không phải lệnh tải tự động:

bash
python -m rynnvla.api.launch \
  --stage stage1_2b \
  --model-path models/RynnBrain-2B \
  --data-mixture configs/data_latent_pretrain.local.json \
  --output-dir runs/stage1-2b \
  --nproc-per-node 8

Có thể thêm --dry-run để xem command mà chưa khởi động training. Preset tham chiếu dùng micro batch 4, gradient accumulation 4 và tám ranks, tương ứng global batch 128. Giảm xuống một GPU không tự giữ nguyên batch hay learning rate. Gradient checkpointing và bf16 hỗ trợ tiết kiệm bộ nhớ, nhưng bài này không đưa ra cam kết VRAM tối thiểu vì còn phụ thuộc ảnh, sequence length và optimizer.

8. Stage 2: biến mô hình thành policy robot

Bạn có thể dùng Stage-1 export mình huấn luyện hoặc checkpoint Stage 1 do tác giả phát hành. Tải đủ assets về local trước; runtime dùng local_files_only=True.

Nếu dùng run Stage 1 của mình, ví dụ export EMA tại step 60.000:

bash
mkdir -p models
python -m rynnvla.api.export_checkpoint \
  --checkpoint-dir runs/stage1-2b/checkpoint-60000 \
  --output-dir models/stage1-2b-ema \
  --weights ema --format safetensors

Checkpoint phải tồn tại và có ema_model.bin; lựa chọn EMA không âm thầm fallback sang live weights. Thư mục đích export chưa được tồn tại. Tiếp theo, chuẩn bị các LIBERO demonstrations theo layout của configs/data_libero_joint40.example.json, sửa đường dẫn vào một mixture local hợp lệ, rồi chạy:

bash
python -m rynnvla.api.launch \
  --stage stage2_2b \
  --model-path models/stage1-2b-ema \
  --data-mixture configs/data_libero_joint40.local.json \
  --output-dir runs/stage2-2b \
  --nproc-per-node 8

Đây là optimizer run mới, không phải resume Stage 1. --resume chỉ dành cho tiếp tục cùng stage và cùng output directory. Sample synthetic không thay thế demonstrations có nhãn của Stage 2. Bạn cũng cần kiểm tra camera mapping, state schema, normalization và action representation theo embodiment, nhất là khi chuyển từ một tay sang hai tay.

9. Inference: kiểm tra offline trước, closed-loop sau

Sau Stage 2, export một checkpoint có thật sang HF directory; ví dụ dưới đây giả định run đã lưu checkpoint tại step 2.000:

bash
mkdir -p exports
python -m rynnvla.api.export_checkpoint \
  --checkpoint-dir runs/stage2-2b/checkpoint-2000 \
  --output-dir exports/stage2-2b \
  --weights model --format safetensors
python -m rynnvla.api.predict --help

Offline predictor nhận JSON có instruction, state, front, wrist, với hai trường cuối trỏ đến ảnh tương đối so với JSON. state phải đúng LIBERO schema; không điền vector tùy ý. Output là .npy chứa raw OSC commands dạng (T, 7). Dùng --sample và --output theo CLI để kiểm tra một observation đã chuẩn bị, trước khi nối simulator.

Closed-loop cần cài upstream LIBERO cùng robosuite/MuJoCo, BDDL tasks và offscreen rendering; repository này không cung cấp simulator. Sau khi tương thích môi trường được giải quyết, dùng:

bash
python -m rynnvla.api.eval_libero \
  --model-path exports/stage2-2b \
  --suite libero_spatial --task-id 0 --episodes 1 \
  --seed 7 --output-dir results/libero-spatial-task0 \
  --replan-steps 10 --denoising-steps 10 --save-frames

Adapter chịu trách nhiệm image orientation, state conversion và chuyển rot6d thành OSC. Không tự xoay ảnh hoặc rescale action lần nữa trước adapter. Một episode chỉ xác nhận integration; để báo benchmark cần suite đầy đủ, nhiều episodes, checkpoint cụ thể, seeds và ngân sách rollout/replanning rõ ràng.

10. Kết quả paper và cách đọc đúng

Các nguồn video người, robot và simulation trong corpus pretraining — nguồn: project RynnVLA-Latent
Các nguồn video người, robot và simulation trong corpus pretraining — nguồn: project RynnVLA-Latent

Nguồn: hình Training Data trên project page chính thức.

Paper dùng 30,1 nghìn giờ video từ 25 datasets, tạo khoảng 745,52 triệu descriptors. Đây là quy mô nghiên cứu, khác hoàn toàn ba episode synthetic. Các kết quả dưới đây là tác giả báo cáo cho policy 4B đã post-train, không phải kết quả của hướng dẫn này:

Benchmark Kết quả báo cáo Phạm vi cần nhớ
LIBERO 98,8% Trung bình trên các suites theo protocol paper
LIBERO-Plus 84,7% Checkpoint fine-tune LIBERO, không adaptation riêng cho Plus
RoboTwin 2.0 88,6% Trung bình theo Native protocol
VLABench 51,9% Trung bình năm tracks

Nguồn số liệu: paper, phần Experiments và bảng Results của project. “Zero-shot” trên LIBERO-Plus không có nghĩa policy chưa từng được học robot actions. Paper còn đánh giá sáu tác vụ thật trên hai platforms, nhưng không suy ra tỷ lệ thành công tương tự trên robot, vật thể và camera của bạn.

Các hạn chế thực tế gồm chất lượng geometric pseudo-label, chi phí auto-labeling và training, sự cần thiết của demonstrations đích, cùng khoảng cách giữa synthetic smoke và closed-loop manipulation. RoboTwin/VLABench có policy adapters nhưng simulator, runner và corpus không được phân phối đầy đủ trong repo; không nên hứa một lệnh sẽ tái lập mọi bảng số liệu.

Bước học tiếp hợp lý là giữ bộ sample làm kiểm tra cài đặt, sau đó chọn một embodiment và một task có demonstrations đáng tin cậy. Ghi riêng dataset validation, training loss, offline prediction và closed-loop success. Chỉ khi các lớp này đều được kiểm chứng mới mở rộng sang nhiều task hoặc robot thật. Nếu muốn đối chiếu một cách dùng future prediction khác, đọc PLAW và V-JEPA 2 cho LIBERO.

Bài viết liên quan

  • Thực hành LeRobot cho người mới
  • VLA-JEPA và latent world models
  • PLAW: future prediction cho VLA trên LIBERO
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
PrecisionReach-GS: Dữ liệu 3DGS cho VLA π0.5

Bài viết liên quan

Tutorial
AgenticRoboRL: Huấn luyện planner gọi VLA bằng RL
vlaagenticroborlrl
wholebody-vla

AgenticRoboRL: Huấn luyện planner gọi VLA bằng RL

Hướng dẫn AgenticRoboRL trên LIBERO-PRO: kiến trúc planner–VLA, cài RPent, tải checkpoint mở, chạy inference và tiếp tục multi-turn RL.

22/10/202614 phút đọc
NT
Tutorial
VLA-Δ: chạy manipulation học biến đổi trên LIBERO
vlavla-deltalibero
wholebody-vla

VLA-Δ: chạy manipulation học biến đổi trên LIBERO

Hướng dẫn VLA-Δ với checkpoint mở: hiểu physical state transition, cài môi trường, chạy LIBERO, fine-tune và đọc đúng kết quả.

19/10/202614 phút đọc
NT
Tutorial
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
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