wholebody-vlalerobotvlaqwen3-vlmanipulationopen-sourcerobot-armflow-matchinglaboratoryzjunlp

LabVLA: VLA Mã Nguồn Mở cho Robot Phòng Lab

Hướng dẫn chạy LabVLA — mô hình VLA đầu tiên cho lab khoa học, kết hợp Qwen3-VL-4B với DiT flow-matching và LeRobot v2 format. 71.1% trên LabUtopia benchmark.

Nguyễn Anh Tuấn12 tháng 6, 202614 phút đọc
LabVLA: VLA Mã Nguồn Mở cho Robot Phòng Lab

LabVLA: Mô Hình VLA Mã Nguồn Mở Đầu Tiên cho Robot Phòng Thí Nghiệm

Tưởng tượng bạn có thể đưa cho robot một giao thức thí nghiệm viết tay — "Lấy beaker 100ml, đổ 50ml nước cất, đặt lên máy khuấy từ, bật nhiệt 60°C trong 5 phút" — và robot tự thực hiện toàn bộ quy trình mà không cần lập trình từng bước. Đó chính xác là bài toán mà LabVLA đang giải quyết.

Phát hành tháng 6/2026 bởi nhóm nghiên cứu từ Đại học Chiết Giang, Shanghai AI Laboratory và Đại học Công nghệ Harbin, LabVLA là mô hình Vision-Language-Action (VLA) đầu tiên được thiết kế đặc biệt cho môi trường phòng thí nghiệm khoa học. Khác với các VLA trước đây được train trên dữ liệu hộ gia đình (nhặt đồ vật, mở ngăn kéo, gấp quần áo), LabVLA hiểu được thiết bị phòng lab — beaker, flask, máy khuấy từ, đèn nhiệt — và có thể thực thi giao thức nhiều bước một cách đáng tin cậy.

Paper gốc: LabVLA: Grounding Vision-Language-Action Models in Scientific Laboratories — Ren et al., arXiv:2606.13578, 2026
GitHub: github.com/zjunlp/LabVLA
Model: huggingface.co/zjunlp/LabVLA (5B, MIT License)

Framework tổng quan LabVLA — nguồn: zjunlp.github.io/LabVLA

Tại Sao Phòng Lab Cần VLA Riêng?

Các mô hình VLA hiện tại như π₀ (Pi0 Fast) hay X-VLA được train chủ yếu trên dữ liệu Open X-Embodiment (OXE) — hàng trăm nghìn episode nhặt đồ, dọn bếp, thao tác đồ gia dụng. Tuy nhiên, môi trường phòng thí nghiệm có những đặc thù riêng biệt và khó chịu:

Thách thức nhận thức:

  • Chất lỏng trong suốt (nước, axit, dung môi) — khó phân biệt bằng camera RGB thông thường
  • Thiết bị chuyên dụng (máy khuấy từ, pipette, đèn UV, cân phân tích) không xuất hiện trong dữ liệu kitchen/home
  • Phân biệt nồng độ dung dịch từ màu sắc — đòi hỏi khả năng quan sát tinh tế

Thách thức thực thi:

  • Giao thức cố định và tuần tự: pha dung dịch trước khi đun nóng, không thể đảo thứ tự
  • Độ chính xác cao: thao tác với bình nhỏ miệng hẹp, pipette 1ml
  • An toàn: không đổ chất lỏng ra ngoài, không làm vỡ thiết bị thủy tinh

Nhóm tác giả định nghĩa một khung 4 cấp độ năng lực cho robot lab:

Cấp Tên Mô tả
1 Apprentice Thực hiện thao tác đơn lẻ theo chỉ dẫn
2 Technician Thực thi giao thức nhiều bước ← LabVLA hướng đến
3 Specialist Xử lý dụng cụ chính xác (micropipette, cân phân tích)
4 Scientist Ra quyết định thích ứng dựa trên dữ liệu thực nghiệm

LabVLA nhắm đến Level 2 — Technician: thực hiện các bước trong giao thức viết sẵn, xử lý thay đổi trạng thái vật lý (lỏng→khí, thay đổi màu dung dịch) theo đúng trình tự.

Kiến Trúc LabVLA: Qwen3-VL Gặp DiT Flow-Matching

LabVLA có khoảng 5 tỷ tham số, kết hợp hai thành phần chính vào một hệ thống end-to-end:

1. VLM Backbone: Qwen3-VL-4B-Instruct

Qwen3-VL là multimodal VLM từ Alibaba QwenLM. LabVLA dùng phiên bản 4B instruction-tuned làm "bộ não" để:

  • Hiểu ngôn ngữ hướng dẫn phức tạp với ngữ cảnh nhiều bước
  • Nhận dạng vật thể trong môi trường lab từ multi-view RGB input
  • Tạo hidden state 2560 chiều mã hóa đồng thời ngôn ngữ và thị giác

2. Action Expert: 18-layer DiT Flow-Matching

DiT (Diffusion Transformer) action expert là module độc lập với:

  • 18 transformer layer, width 1024, 8 attention heads, head dimension 128
  • Cross-attention từ DiT đến VLM hidden states (kết nối hai module)
  • Dự đoán action chunk 10 bước liên tục (không phải từng bước rời rạc)
  • Inference chỉ cần 10 Euler steps nhờ deterministic vector field integration

Việc dự đoán action chunk thay vì single action giúp robot chuyển động mượt mà hơn và xử lý latency tốt hơn trong vòng lặp điều khiển thực tế.

Knowledge Insulation — Kỹ Thuật Then Chốt

Đây là điểm sáng thiết kế quan trọng nhất của LabVLA: stop-gradient giữa VLM và action expert trong quá trình flow-matching posttraining.

Tại sao cần? Nếu để gradient từ flow-matching loss chảy ngược vào VLM backbone, mô hình sẽ bị "catastrophic forgetting" — mất dần khả năng hiểu ngôn ngữ và nhận dạng hình ảnh. Đây là vấn đề kinh điển khi fine-tune VLM cho downstream tasks có loss function khác biệt.

Knowledge Insulation đảm bảo VLM backbone giữ nguyên tri thức ngôn ngữ và thị giác đã học, trong khi DiT action expert học độc lập cách biến đổi hidden states thành hành động liên tục.

Pipeline huấn luyện 3 giai đoạn của LabVLA: FAST action-token pretraining, flow-matching posttraining với knowledge insulation, và task fine-tuning
Pipeline huấn luyện 3 giai đoạn của LabVLA: FAST action-token pretraining, flow-matching posttraining với knowledge insulation, và task fine-tuning
Ba giai đoạn huấn luyện LabVLA — nguồn: paper arXiv:2606.13578

RoboGenesis: Engine Tự Động Tạo Dữ Liệu Lab

Thách thức lớn nhất của lab robotics là khan hiếm dữ liệu. Không ai có hàng chục nghìn episode robot thao tác trong phòng thí nghiệm khoa học. Nhóm tác giả giải quyết bằng RoboGenesis — pipeline tự động sinh dữ liệu tổng hợp:

Giai đoạn 1 — Environment Building: Xây dựng 10.000 scene phòng lab khác nhau từ thư viện LabAssetLibrary gồm 2.947 3D asset được chú thích (beaker, flask, hot plate, magnetic stirrer, pipette, v.v.). Các scene được tạo tự động theo nguyên tắc "vật lý hợp lý" — beaker không nổi trên không khí, chất lỏng chảy theo trọng lực.

Giai đoạn 2 — Agentic Workflow Generation: LLM tự động tạo giao thức thí nghiệm bằng ngôn ngữ tự nhiên, sau đó "biên dịch" thành chuỗi atomic skill (Pick, Place, Pour, Stir, Heat, Shake) và phân bổ cho từng robot embodiment với kinematics phù hợp.

Giai đoạn 3 — Domain Randomization: Mỗi giao thức được thực thi với đa dạng hóa: lighting (sáng/tối/bóng đổ), vị trí vật thể, góc camera, vật cản ngẫu nhiên, và texture bề mặt. Chỉ export những episode thành công qua success filter.

Kết quả — LabEmbodied-Data:

  • 4 nhóm tác vụ: single-arm primitives, multistep procedures, bimanual operations, mobile manipulation
  • 16 robot embodiment: 13 single-arm (UR5e, UR16e, FR3, Franka, Festo Rizon 4...) + 3 dual-arm
  • Format: LeRobot v2 (Parquet + metadata JSON, tương thích LeRobot framework)
  • 15 annotation stream: RGB multi-view, joint state, action labels, language instruction, depth

Quan trọng: LabEmbodied-Data có thể dùng để fine-tune các VLA khác. Thực nghiệm cho thấy X-VLA fine-tuned trên dataset này cải thiện +15.0 điểm in-distribution+19.3 điểm OOD.

Cài Đặt LabVLA

Yêu cầu hệ thống:

  • Python 3.10
  • CUDA 12.6
  • PyTorch 2.7.1
  • GPU: A100 80GB cho training; inference có thể dùng GPU nhỏ hơn

Bước 1 — Clone và tạo conda environment:

git clone https://github.com/zjunlp/LabVLA
cd LabVLA

conda create -n labvla python=3.10 -y
conda activate labvla

Bước 2 — Cài PyTorch với CUDA 12.6:

pip install torch==2.7.1 torchvision==0.22.1 \
    --index-url https://download.pytorch.org/whl/cu126

Bước 3 — Cài Flash Attention:

# --no-build-isolation để Flash Attention dùng PyTorch đã cài, không tạo env mới
pip install flash_attn==2.8.3 --no-build-isolation

Bước 4 — Cài dependencies còn lại:

pip install -r requirements.txt

Bước 5 — Tải pretrained checkpoint:

# ~10GB, BF16 safetensors
huggingface-cli download zjunlp/LabVLA --local-dir ./LabVLA-checkpoint

Pipeline Huấn Luyện 3 Giai Đoạn

LabVLA dùng recipe π0.5 được điều chỉnh cho lab domain. Nếu bạn muốn fine-tune trên dữ liệu robot của riêng mình, đây là pipeline đầy đủ:

Giai Đoạn 0: Chuẩn Bị Dữ Liệu

# Scan dataset, phát hiện lỗi (episode ngắn bất thường, action outlier)
python -m data_process scan \
    --root /path/to/your/dataset \
    --out /tmp/report.json

# Clean: loại bỏ episode lỗi, chuẩn hóa action range
python -m data_process clean \
    --src /path/to/your/dataset \
    --dst /path/to/clean_dataset \
    --report /tmp/report.json

# Kiểm tra thống kê cuối cùng
python -m data_process stats \
    --dataset /path/to/clean_dataset \
    --schema robointer_droid

Dữ liệu phải ở LeRobot v2 format: mỗi episode là file Parquet với các cột observation.images.*, observation.state, action, timestamp. Script data_process tự động kiểm tra và chuẩn hóa.

Giai Đoạn 1: VLM Pre-Training với FAST Action Tokens

bash launch/vlm_pretrain/train_vlm_pretrain.sh

Ở giai đoạn này, backbone Qwen3-VL học cách "đọc" action thông qua FAST action tokenization — biểu diễn action liên tục thành discrete tokens rồi train cross-entropy loss (giống language modeling). Mục tiêu: làm cho VLM "biết" không gian hành động trước khi chuyển sang flow-matching.

Thống kê hiệu năng (A100 80GB, DeepSpeed ZeRO-2):

Giai đoạn BS/GPU Global BS Thời gian/bước
VLM Pretraining 24 1,536 ~7 giây
KI Posttraining 16 1,024 ~5 giây
Task Fine-tuning 4 192 ~3 giây

Liger-Kernel ops và selective gradient checkpointing giúp giảm đáng kể memory footprint so với naive implementation.

Giai Đoạn 2: Flow-Matching Post-Training với Knowledge Insulation

bash launch/ki_posttrain/train_ki_posttrain.sh

DiT action expert được train với flow-matching objective để học cách tích phân vector field từ noise đến target action. Stop-gradient (Knowledge Insulation) ngăn gradient từ flow loss ảnh hưởng VLM backbone.

Giai Đoạn 3: Task Fine-Tuning

# Fine-tune trên LabUtopia tasks
bash launch/finetune/train_labutopia.sh

# Hoặc fine-tune trên dataset tùy chỉnh
bash launch/finetune/train_custom.sh \
    --data_path /path/to/clean_dataset \
    --output_dir ./checkpoints/my_labvla \
    --num_epochs 50

Fine-tuning là giai đoạn quan trọng nhất để adapt LabVLA với robot cụ thể của bạn. Dữ liệu real-robot (dù chỉ vài trăm episode) kết hợp với LabEmbodied-Data cho kết quả tốt hơn nhiều so với chỉ dùng sim data.

Inference và Deployment

LabVLA dùng giao thức OpenPI msgpack WebSocket — chuẩn giao tiếp phổ biến trong robot learning frameworks:

Khởi động inference server:

PRETRAINED_PATH=./LabVLA-checkpoint bash deployment/deploy.sh

Server lắng nghe WebSocket, nhận observation (ảnh RGB multi-view + joint state + ngôn ngữ), trả về action chunk 10 bước. Nhờ chỉ cần 10 Euler steps, latency inference đủ thấp để chạy closed-loop control.

Ví dụ Python client cơ bản:

import asyncio
import msgpack
import websockets
import numpy as np

async def get_lab_action(obs_images, joint_state, instruction):
    uri = "ws://localhost:8080"
    async with websockets.connect(uri) as ws:
        payload = msgpack.packb({
            "images": [img.tolist() for img in obs_images],
            "state": joint_state.tolist(),
            "instruction": instruction
        })
        await ws.send(payload)
        response = await ws.recv()
        result = msgpack.unpackb(response)
        # (10, 7): 10 action steps, 7 DOF for Franka
        return np.array(result["actions"])

# Ví dụ sử dụng:
actions = asyncio.run(get_lab_action(
    obs_images=[front_cam_frame, wrist_cam_frame],
    joint_state=robot.get_joint_positions(),
    instruction="Pour the liquid from the beaker into the flask carefully"
))

# Thực thi action chunk trên robot
for action_step in actions:
    robot.move_to_joint_positions(action_step)

Thiết kế WebSocket server cho phép LabVLA chạy trên máy tính mạnh (với GPU) trong khi robot controller chạy trên embedded computer — kiến trúc phân tán phổ biến trong lab automation.

Các robot embodiment được LabVLA hỗ trợ: UR5e, UR16e, FR3, Franka và các biến thể dual-arm, tất cả từ một bộ weights duy nhất
Các robot embodiment được LabVLA hỗ trợ: UR5e, UR16e, FR3, Franka và các biến thể dual-arm, tất cả từ một bộ weights duy nhất
16 robot embodiment LabVLA hỗ trợ từ một weights duy nhất — nguồn: zjunlp.github.io/LabVLA

Kết Quả: LabUtopia Benchmark

Nhóm tác giả xây dựng LabUtopia — bộ benchmark 6 tác vụ đặc trưng cho phòng thí nghiệm, kiểm tra cả in-distribution (ID) và out-of-distribution (OOD):

Tác vụ LabVLA ID LabVLA OOD π₀ 3B ID GR00T N1.5 ID
Pick Up 49.2% 48.3% 21.7% 40.8%
Press Button 100% 98.3% 92.5% 99.2%
Open Door 65.0% 65.8% 51.6% 6.7%
Pour Liquid 43.3% 34.2% 37.5% 0%
Heat Beaker 83.3% 87.5% 90.0% 99.2%
Transport Beaker 85.8% 85.8% 86.7% 69.2%
Trung bình 71.1% 70.0% 63.3% 52.5%

Điểm nổi bật:

  • LabVLA vượt π₀ (3B) 7.8 điểm in-distribution và 6.8 điểm OOD
  • Chênh lệch ID → OOD chỉ 1.1 điểm (cực kỳ ổn định trước distribution shift)
  • GR00T N1.5 fail hoàn toàn ở "Pour Liquid" (0%) — liquid handling là điểm mù của model không train domain-specific data
  • LabVLA cân bằng tốt nhất qua cả 6 tác vụ, không có tác vụ nào dưới 43%

Kết Quả Thực Tế trên Robot Franka

Ngoài simulation, nhóm test LabVLA trên Franka Emika với 4 tác vụ composite, 50 rollout mỗi tác vụ trong cả 4 điều kiện:

Tác vụ In-domain ID Clutter OOD Clean OOD Clutter
Shake Liquid 92% 86% 84% 80%
Pour Liquid 86% 78% 76% 72%
Magnetic Stir 88% 80% 80% 74%
Stopper Plug/Unplug 80% 76% 80% 70%
Trung bình 86.5% 80.0% 80.0% 74.0%

86.5% trên in-domain clean là con số ấn tượng cho tác vụ lab. "Shake Liquid" ở 92% đòi hỏi kiểm soát cả quỹ đạo lắc lẫn biên độ — robot phải giữ chất lỏng không đổ ra trong suốt quá trình. "Stopper Plug/Unplug" ở 80% đặc biệt thách thức vì cần căn chỉnh chính xác dưới 2mm.

Thiết lập thực nghiệm thực tế: robot Franka thao tác với beaker, flask, máy khuấy từ và đèn nhiệt trong điều kiện in-domain và OOD
Thiết lập thực nghiệm thực tế: robot Franka thao tác với beaker, flask, máy khuấy từ và đèn nhiệt trong điều kiện in-domain và OOD
Setup thực nghiệm với Franka trong điều kiện in-domain và OOD — nguồn: zjunlp.github.io/LabVLA

So Sánh Tổng Quan

Model Params LabUtopia Avg ID Dữ liệu lab riêng License
LabVLA 5B 71.1% ✅ LabEmbodied-Data MIT
π₀ (HF) 3B 63.3% Apache-2.0
GR00T N1.5 3B 52.5% NVIDIA
X-VLA 1B 57.5% Apache-2.0
SmolVLA 450M 38.2% Apache-2.0

Ưu thế của LabVLA không chỉ là điểm số cao hơn — mà là sự cân bằng. Các baseline như GR00T N1.5 đạt 99.2% ở "Heat Beaker" nhưng hoàn toàn thất bại ở "Pour Liquid". LabVLA không có tác vụ nào dưới 43%, chứng tỏ khả năng tổng quát tốt hơn trong domain lab.

Giới Hạn và Hướng Phát Triển

Nhóm tác giả thừa nhận một số điểm yếu hiện tại:

  1. Chưa đạt Level 3 (Specialist): Thao tác với micropipette (1µl), cân phân tích 0.001g precision vẫn ngoài tầm hiện tại
  2. Chất lỏng đặc biệt: Chất lỏng màu, foam, chất nhớt cao độ chưa được test đầy đủ
  3. Hardware requirements: Training đòi hỏi A100 80GB, chưa phù hợp cho lab nhỏ không có GPU cloud
  4. Single-stage multistep: Giao thức rất dài (>10 bước) chưa được đánh giá nghiêm túc

Roadmap: Level 3 (precision instruments) và Level 4 (adaptive decision-making) đang trong kế hoạch phát triển tiếp theo.

Tổng Kết

LabVLA đánh dấu một hướng đi mới: VLA chuyên biệt cho domain cụ thể thay vì chỉ generalist. Bằng cách kết hợp Qwen3-VL-4B với DiT flow-matching và dữ liệu lab được tổng hợp qua RoboGenesis, mô hình đạt 71.1% in-distribution và 86.5% trên Franka thực tế — vượt trội so với các baseline không có domain-specific data.

Điều đáng chú ý hơn: toàn bộ pipeline (model, code, training recipe, benchmark) được mở nguồn hoàn toàn dưới MIT license. Nếu bạn đang nghiên cứu robotics trong lĩnh vực dược phẩm, hóa học, sinh học hay bất kỳ ngành nào cần tự động hóa phòng lab, LabVLA cung cấp nền tảng vững chắc để bắt đầu.


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

A1 VLA: Deploy VLA SOTA với Latency Giảm 72%
wholebody-vla

A1 VLA: Deploy VLA SOTA với Latency Giảm 72%

1/6/202612 phút đọc
NT
X-VLA ICLR 2026: Soft-Prompted VLA 0.9B cho beginner LeRobot
wholebody-vla

X-VLA ICLR 2026: Soft-Prompted VLA 0.9B cho beginner LeRobot

20/5/202611 phút đọc
NT
HEX: VLA Toàn Thân Đa Embodiment cho Humanoid
wholebody-vla

HEX: VLA Toàn Thân Đa Embodiment cho Humanoid

10/6/202610 phút đọc
NT