VnRoboVnRobo
Về chúng tôiBảng giáBlogLiên hệ
🇺🇸ENĐăng nhậpBắt đầu học
🇺🇸EN
VnRobo logoVnRobo logo

Học Physical AI và thử mô phỏng trong trình duyệt. Kết nối fleet khi bạn có robot thật.

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ậpBắt đầu học
🇺🇸EN
  1. Trang chủ
  2. Blog
  3. SLA: Continual Pre-training π0.5 với Giám Sát 3D Tăng 24%
wholebody-vlavlapi0manipulationspatialcontinual-pretraining3d-perceptionimitation-learning

SLA: Continual Pre-training π0.5 với Giám Sát 3D Tăng 24%

SLA căn chỉnh embedding thị giác với mô hình 3D đóng băng trong quá trình continual pre-training, cải thiện thành công real-world 24 điểm phần trăm mà không đổi kiến trúc inference.

Nguyễn Anh Tuấn13 tháng 11, 202612 phút đọc
SLA: Continual Pre-training π0.5 với Giám Sát 3D Tăng 24%

Thao tác robot đáng tin cậy đòi hỏi không chỉ hiểu ngữ nghĩa mà còn phải thực thi hành động chính xác trong không gian 3D. Vấn đề là hầu hết các mô hình VLA hiện nay — kể cả π0.5 — được khởi tạo từ VLM được pre-train trên ảnh 2D, thiếu hoàn toàn hiểu biết về không gian ba chiều.

SLA (Spatial-Language-Action Model) từ nhóm nghiên cứu HKUST (Guangzhou), OLA Dimensions, Viện AI Bắc Kinh và Đại học Thanh Hoa đề xuất một hướng giải quyết độc đáo: thay vì yêu cầu dữ liệu độ sâu tường minh hoặc thay đổi kiến trúc, SLA căn chỉnh ngầm các visual embedding trung gian với biểu diễn 3D từ mô hình perception đóng băng — ngay trong giai đoạn continual pre-training, không phải chỉ fine-tuning.

Kết quả: trung bình +24.0 điểm phần trăm so với π0.5 trên 8 điều kiện triển khai real-world.

Paper gốc: SLA: Scaling Spatial-Language-Action Model via Continual Pre-training — Fuhao Li et al., arXiv:2611.08373, 05/11/2026.

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 →

Vấn đề cốt lõi: VLA 2D không "thấy" không gian 3D

Hãy thử tưởng tượng: bạn muốn gắp một cái ly đặt sau một vật cản nhỏ. Với camera RGB thông thường, hai vật cùng bình diện nhìn có thể trông như nằm chồng lên nhau. Nhưng trong thực tế, cánh tay robot phải điều hướng trong 3D — xác định chính xác vị trí tương đối, tránh va chạm, chọn góc cầm nắm phù hợp.

Các mô hình VLA hiện tại như π0.5, OpenVLA đều inherit visual backbone từ VLM được pre-train trên ảnh 2D. Khi chúng học robot manipulation, hiểu biết về không gian 3D thực sự — nếu có — chỉ hình thành ngầm từ dữ liệu demo, không có supervision tường minh.

Có một số cách tiếp cận để bổ sung 3D:

  • Dùng depth camera: thêm modality, nhưng depth sensor thường nhiễu, cồng kềnh, không phải robot nào cũng có
  • Dùng point cloud: cần encode riêng, thêm kiến trúc, khó scale
  • Post-training với 3D: chỉ fine-tuning cuối, không build được nền tảng 3D từ sớm

SLA chọn con đường khác: implicit spatial alignment trong suốt quá trình continual pre-training, không cần depth sensor khi inference.

Ý tưởng thiết kế: "Teacher đóng băng" dạy học sinh thấy không gian

Trực giác chính đứng sau SLA là: hành động được sinh ra từ visual và language representation — do đó nếu visual token chứa thông tin 3D tốt hơn, hành động sẽ chính xác hơn.

Thay vì yêu cầu visual token học 3D từ đầu, SLA dùng một mô hình 3D perception đã được train sẵn (OmniVGGT) làm "teacher" và căn chỉnh intermediate visual embedding của VLA với các spatial feature từ teacher đó. Teacher này không tham gia inference — chỉ dùng trong training.

Cụ thể, pipeline như sau:

  1. Base model: Khởi tạo từ π0.5 pretrained — giữ nguyên toàn bộ kiến trúc
  2. Frozen teacher: OmniVGGT nhận RGB + optionally depth/calibration → trích xuất spatial feature
  3. Alignment projector: Học ánh xạ từ visual embedding của VLA sang không gian feature của teacher
  4. Mục tiêu huấn luyện kép:
    • Action loss (giống π0.5 — flow matching)
    • Alignment loss (cosine similarity giữa projected VLA embedding và teacher feature)
    • Tổng: L = L_action + α × L_align

Điều quan trọng nhất: sau khi train xong, bỏ hết teacher, alignment projector và gate selection. Inference hoàn toàn giống π0.5.

Kiến trúc chi tiết: 4 thành phần kỹ thuật

1. External Spatial Supervision — OmniVGGT làm teacher

OmniVGGT là mô hình 3D perception foundation đã được train sẵn, nhận:

  • RGB ảnh (bắt buộc)
  • Depth map (tùy chọn — nếu có dataset support)
  • Camera intrinsics/extrinsics (tùy chọn — nếu được calibrate)

Với các dataset không có depth, OmniVGGT vẫn chạy được nhờ RGB. Khi thêm calibration, kết quả có thể tăng thêm vài điểm (ví dụ từ 42.8% lên 46.0% trong ablation).

Spatial feature từ OmniVGGT phục vụ như "ground truth" về không gian 3D để guide VLA học.

2. Adaptive Layer Selection — Chọn layer phù hợp từng domain

Một phát hiện của nhóm tác giả: lớp intermediate của VLA "tốt nhất" để alignment không giống nhau cho mọi loại data. Dataset thao tác bàn tay khác với dataset di chuyển tay máy; robot 7-DOF khác robot 2 tay.

Feature-dependent gates giải quyết vấn đề này: thay vì chọn 1 layer cố định, gates học cách kết hợp adaptively visual embedding từ nhiều layer của VLA, với trọng số phụ thuộc vào feature đang xử lý.

Kết quả ablation cho thấy adaptive selection rõ ràng vượt trội so với chọn single layer cố định.

SLA probing analysis — nguồn: arxiv.org/abs/2611.08373
SLA probing analysis — nguồn: arxiv.org/abs/2611.08373

3. State Dropout — Tránh shortcut qua robot state

Trong robot manipulation, model thường có thể "gian lận": nếu proprioceptive state (vị trí khớp, góc cuối tay...) đủ mạnh, model có thể dự đoán hành động tiếp theo chủ yếu từ state mà bỏ qua visual input.

Probabilistic state dropout ngẫu nhiên mask robot state trong training, buộc model phải dựa vào visual cue. Điều này không chỉ cải thiện khả năng generalization mà còn làm cho spatial alignment có ý nghĩa hơn — model thực sự cần visual token để suy luận.

4. Rotation Representation — Góc biểu diễn hành động

Thay vì dùng euler angles hay quaternion, SLA dùng rotation vectors (axis-angle) để biểu diễn rotation trong action space. Ablation cho thấy điều này cải thiện học và precision của hành động cuối tay máy.

Dữ liệu Continual Pre-training

Để scale spatial alignment, SLA cần dữ liệu đa dạng. Nhóm tác giả đã tổng hợp 6 dataset robot lớn từ cộng đồng:

Dataset Embodiment Scale
Open X-Embodiment Nhiều loại Lớn
RoboData Nhiều loại Trung
DROID Franka Lớn
BridgeV2 WidowX Trung
Oxe-Mix Nhiều loại Lớn
Internal demos Phân kỳ Nhỏ

Tổng cộng khoảng 1.7 triệu episodes, ~14,330 giờ demo trải rộng 1,504 task.

Để unify, nhóm tác giả chuẩn hóa:

  • State và action: end-effector representation thống nhất
  • Coordinate: quy ước tọa độ nhất quán
  • Downsampling: loại bỏ frame thừa, giữ actionable transitions
  • Filtering: loại bỏ demo chất lượng thấp

Kết quả thực nghiệm

Benchmarks mô phỏng

Benchmark π0.5 Spatial Forcing SLA
LIBERO-Plus ~60% ~56% 87.4%
RoboTwin 2.0 (C2R) — — 72.3%
RoboCasa-Panda — — 68.4% (50 demo)
RoboDojo-Real 12.8% — 33.9%

Điểm đặc biệt ở RoboCasa-Panda: SLA đạt 68.4% chỉ với 50 demo mỗi task, trong khi các phương pháp khác cần 300-3,000 demo. Đây là bằng chứng mạnh về data efficiency khi nền tảng 3D đã được xây dựng từ trước.

Real-world: +24.0 điểm phần trăm

SLA scaling trend — nguồn: arxiv.org/abs/2611.08373
SLA scaling trend — nguồn: arxiv.org/abs/2611.08373

Trên 8 điều kiện triển khai thực tế bao gồm:

  • Bimanual coordination — phối hợp 2 tay
  • Spatial generalization — vị trí vật thể thay đổi
  • Dynamic generalization — môi trường thay đổi khi thực hiện
  • Few-shot cross-embodiment — adapt sang robot mới chỉ với ít demo
  • Instruction following — tuân theo lệnh ngôn ngữ đa dạng

SLA đạt 83.8% trung bình vs 59.8% của π0.5. Đây là kết quả trên mọi 8 điều kiện — SLA giành chiến thắng ở tất cả, không thua ở bất kỳ điều kiện nào.

SLA real-world vegetable task — nguồn: arxiv.org/abs/2611.08373
SLA real-world vegetable task — nguồn: arxiv.org/abs/2611.08373

Ablation quan trọng: Pre-training vs Post-training alignment

Một trong những ablation thú vị nhất: so sánh giữa 3 cách áp dụng spatial alignment:

  1. Chỉ trong post-training (như Spatial Forcing)
  2. Chỉ trong continual pre-training
  3. Cả hai giai đoạn (SLA đầy đủ)

Kết quả rõ ràng: áp dụng cả hai giai đoạn vượt trội ở mọi tỷ lệ dữ liệu được test, xác nhận rằng xây dựng nền tảng 3D từ sớm trong pre-training là cần thiết.

Cách chạy SLA — Hướng dẫn thực tế

Hiện tại code SLA được phát hành qua project page tại embodiedsla.github.io. Nhóm tác giả liên kết với repository của Spatial Forcing làm nền tảng (OpenHelix-Team).

Yêu cầu môi trường

bash
# Python 3.10+, CUDA 12.x
# GPU: A100/H100 để train; inference chạy được trên RTX 3090+
conda create -n sla python=3.10
conda activate sla

# Clone từ repo chính thức
git clone https://github.com/OpenHelix-Team/SpatialForcing
cd SpatialForcing
pip install -r requirements.txt

Cấu trúc kiến trúc inference

Điều thú vị nhất về SLA từ góc độ deploy: không cần thay đổi gì. Nếu bạn đã có setup π0.5 inference, SLA chạy với cùng code:

python
# Inference: hoàn toàn giống pi0.5
# Không cần OmniVGGT, không cần alignment projector
# Chỉ dùng checkpoint đã được train với SLA objective

from pi05_policy import Pi05Policy

policy = Pi05Policy.from_pretrained("path/to/sla-checkpoint")

# Giống hệt pi0.5 inference
action = policy.predict(
    image=rgb_obs,          # RGB only - không cần depth!
    language="pick up the cup",
    robot_state=joint_angles
)

Training pipeline

Nếu muốn train SLA từ đầu (hoặc continual pre-train thêm):

python
# Step 1: Load pi0.5 checkpoint
base_policy = load_pi05_checkpoint("pi05-pretrained.pt")

# Step 2: Setup teacher (chỉ dùng lúc training)
teacher = OmniVGGT.from_pretrained("omni-vggt-weights")
teacher.eval()  # Frozen! Không update gradient

# Step 3: Alignment projector + gates
alignment_projector = AlignmentMLP(
    vla_dim=1024,  # π0.5 hidden dim
    teacher_dim=teacher.output_dim
)
layer_gates = AdaptiveLayerGates(num_layers=base_policy.num_layers)

# Step 4: Combined loss
def compute_sla_loss(batch, policy, teacher, projector, gates):
    # Action loss (flow matching như pi0.5)
    action_loss = policy.flow_matching_loss(batch)
    
    # Spatial alignment loss
    with torch.no_grad():
        # Teacher nhận RGB + optional depth/calibration
        spatial_features = teacher(
            rgb=batch["images"],
            depth=batch.get("depth"),          # Optional
            calibration=batch.get("calib")     # Optional
        )
    
    # Lấy intermediate visual embeddings từ nhiều layer
    vla_embeddings = policy.get_intermediate_embeddings(batch["images"])
    
    # Adaptive layer selection
    aggregated = layer_gates(vla_embeddings)  # Weighted sum
    
    # Project + compute cosine similarity
    projected = projector(aggregated)
    align_loss = 1 - F.cosine_similarity(projected, spatial_features, dim=-1).mean()
    
    alpha = 0.1  # Alignment loss weight
    return action_loss + alpha * align_loss

# Step 5: Probabilistic state dropout
def apply_state_dropout(batch, dropout_prob=0.3):
    if random.random() < dropout_prob:
        batch["robot_state"] = torch.zeros_like(batch["robot_state"])
    return batch

Tips khi áp dụng SLA cho custom task

1. Continual pre-training có cần thiết không?

Nếu bạn chỉ có dataset task-specific nhỏ, bỏ qua continual pre-training và chỉ áp dụng SLA objective trong post-training vẫn cho lợi ích (đây là Spatial Forcing). Nhưng để đạt full benefit, cần pre-train trên tập dữ liệu đa dạng trước.

2. Rotation representation

Chuyển action space của bạn sang rotation vectors thay vì euler angles. Đây là thay đổi nhỏ nhưng ablation cho thấy cải thiện đáng kể:

python
from scipy.spatial.transform import Rotation

def euler_to_rotvec(euler_angles):
    return Rotation.from_euler('xyz', euler_angles).as_rotvec()

3. Camera calibration

Nếu dataset của bạn có camera intrinsics/extrinsics, cung cấp cho OmniVGGT. Nếu không, RGB-only vẫn chạy được (OmniVGGT dự đoán depth từ monocular cues).

4. State dropout schedule

Bắt đầu với dropout_prob=0.3, giảm dần trong giai đoạn post-training cuối để model học balance giữa visual và state cues.

So sánh với Spatial Forcing

SLA là continuation của Spatial Forcing (cùng nhóm OpenHelix-Team). Điểm khác biệt chính:

Spatial Forcing SLA
Scope Post-training only Pre-training + Post-training
Data diversity Task-specific Heterogeneous multi-embodiment
Layer selection Fixed layer Adaptive gates
State dropout Không Có
Data efficiency Trung bình Cao (50 demo đủ)

SLA không "thay thế" Spatial Forcing — nó là Spatial Forcing được nâng lên continual pre-training và thêm các kỹ thuật cải thiện.

Điểm mạnh và hạn chế

Điểm mạnh nổi bật:

  • Không đổi kiến trúc inference — tương thích hoàn toàn với pipeline π0.5 hiện có
  • Không bắt buộc depth sensor — RGB là đủ
  • Data efficiency vượt trội: 50 demo thay vì 3,000
  • Generalization tốt: thắng tất cả 8 điều kiện real-world
  • Continual pre-training là scalable foundation — càng nhiều data, càng tốt

Hạn chế cần lưu ý:

  • OmniVGGT là thành phần đóng (không open-source đầy đủ tại thời điểm viết) — cần xem xét accessibility
  • Chi phí continual pre-training cao (1.7M episodes cần GPU cluster lớn)
  • Code chính thức chưa đầy đủ documentation tại thời điểm paper published
  • Chưa rõ performance trên các robot arm không phải Franka/UR series

Ý nghĩa rộng hơn: Hướng đi của VLA Foundation Model

SLA đặt ra một câu hỏi quan trọng cho cộng đồng nghiên cứu: nên build 3D understanding vào foundation model ngay từ giai đoạn pre-training, hay chỉ add-on lúc fine-tuning?

Kết quả ablation của SLA ủng hộ rõ ràng cho hướng đầu — tương tự như cách mà LLM benefit từ being pre-trained on code, math trước khi fine-tune cho specific task, VLA benefit từ having spatial understanding baked in từ foundation.

Đây là hướng nghiên cứu có thể dẫn đến thế hệ VLA tiếp theo — không chỉ "học tốt hơn từ demo" mà "hiểu không gian sâu hơn từ nền tảng".

Bài viết liên quan

  • SpatialVLA và 3D Perception cho Robot Manipulation
  • OmniManip: Spatial Reasoning cho Manipulation
  • STAR: Cải Thiện π0.5 trên LIBERO-PRO Không Cần Train Lại
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
Chạy BitVLA trên LIBERO với robot.cpp và I2S

Bài viết liên quan

Tutorial
FluxVLA Engine: Nền tảng one-stop triển khai VLA mới nhất
vlalerobotpi0
wholebody-vla

FluxVLA Engine: Nền tảng one-stop triển khai VLA mới nhất

FluxVLA Engine — nền tảng kỹ thuật VLA open-source từ LimX Dynamics, hỗ trợ Pi0, GR00T, OpenVLA với pipeline đầy đủ từ data đến robot thực.

17/9/202611 phút đọc
NT
Tutorial
STAR: Cải thiện VLA π0.5 không cần huấn luyện lại
vlapi0pi05
wholebody-vla

STAR: Cải thiện VLA π0.5 không cần huấn luyện lại

Hướng dẫn STAR trên LIBERO-PRO: hiểu residual steering, cài π0.5, chạy inference và phân biệt kết quả README với paper v1.

3/11/202614 phút đọc
NT
Tutorial
RynnVLA-Latent: học VLA 3D từ dữ liệu mẫu
vlarynnvla-latentlatent-actions
wholebody-vla

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.

1/11/202614 phút đọc
NT
VnRobo logoVnRobo logo

Học Physical AI và thử mô phỏng trong trình duyệt. Kết nối fleet khi bạn có robot thật.

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