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. Fine-tune UnifoLM-WLA-1.0 cho Unitree G1
wholebody-vlaunifolm-wlaunitree-g1whole-bodyvlawbcfine-tuninglorahumanoid

Fine-tune UnifoLM-WLA-1.0 cho Unitree G1

Hướng dẫn beginner fine-tune UnifoLM-WLA-1.0: model 6B open-source cho tabletop và whole-body manipulation trên Unitree G1.

Nguyễn Anh Tuấn9 tháng 10, 202613 phút đọc
Fine-tune UnifoLM-WLA-1.0 cho Unitree G1

Fine-tune UnifoLM-WLA-1.0 cho Unitree G1: từ tabletop đến whole-body manipulation

UnifoLM-WLA-1.0 là bước nâng cấp quan trọng của Unitree so với dòng UnifoLM-VLA cũ: thay vì chỉ nói về một action head cho tabletop manipulation, release mới gom perception, embodied reasoning, interaction-centric world modeling và action generation vào một pipeline mở hơn. Theo repo chính thức, model có khoảng 6B tham số, được huấn luyện trên khoảng 2.500 giờ dữ liệu robot thật, điều phối 64 task trên Unitree G1, gồm 54 tabletop manipulation task và 10 whole-body manipulation task.

Điểm hay cho người mới là Unitree không chỉ thả một video demo. Họ đã mở repo, checkpoint UnifoLM-WLA-1.0-Base, các model reasoner UnifoLM-ER-1 và UnifoLM-ER-Flow, dataset collection Dex1/WBT, tài liệu action-state processing, script evaluation, script fine-tune full và script LoRA. Nếu bạn từng đọc series unifolm-vla + G1 architecture hoặc bài fine-tune unifolm-vla trên G1, hãy xem bài này như bản 2026 thực dụng hơn: checkpoint nền đã public, data format rõ ràng hơn, và whole-body action space không còn là phần phụ.

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 →
Demo UnifoLM-WLA-1.0 trên Unitree G1 - nguồn: project page Unitree

UnifoLM-WLA-1.0 giải quyết bài toán gì?

Vấn đề của humanoid manipulation không chỉ là cánh tay. Với một G1 đang đứng trước bàn, policy phải nhìn object, hiểu instruction, biết object nào sẽ thay đổi, giữ thăng bằng, chọn quỹ đạo tay, điều khiển gripper hoặc dexterous hand, đồng thời không ra lệnh chân/waist/torso làm robot mất ổn định. Với tabletop task đơn giản, bạn có thể khóa lower body rồi điều khiển hai tay. Với whole-body manipulation như nhặt gối, sắp xếp kệ, làm giường, đặt đĩa vào máy rửa, robot phải dùng toàn thân: base, torso, waist, arm, hand, leg state.

UnifoLM-WLA-1.0 tách bài toán thành ba lớp:

Lớp Vai trò Thành phần chính
Embodied Reasoner Hiểu ảnh, instruction, vị trí, quan hệ không gian, object tương tác UnifoLM-ER-1, dựa trên Qwen3-VL-4B
Interaction/world modeling Dự đoán vùng nào sẽ thay đổi trong tương lai optical flow, dynamic mask, VQ-VAE token
WLA action expert Sinh continuous action chunk cho robot UnifoLM-ER-Flow + MMDiT action expert

Project page mô tả UnifoLM-ER-1 được train trên hơn 5 triệu mẫu, gồm image point prediction, object detection, multi-image reasoning, 2D trajectory prediction, 3D object detection và spatial QA. Sau đó UnifoLM-ER-Flow thêm discrete action token và future dynamic-region mask token để nối ngôn ngữ, hình ảnh và hành động. Lớp WLA phía sau dùng MMDiT flow decoder để sinh action liên tục.

Ảnh robot-view tại t0 trong pipeline dynamic-region prediction - nguồn: project page Unitree UnifoLM-WLA
Ảnh robot-view tại t0 trong pipeline dynamic-region prediction - nguồn: project page Unitree UnifoLM-WLA

Ý tưởng paper/project: nhìn vùng thay đổi trước khi ra hành động

Tài liệu chính thức hiện là project page + repo kỹ thuật, chưa thấy một arXiv paper độc lập cho WLA-1.0 tại thời điểm viết bài. Nhưng ý tưởng nghiên cứu đã khá rõ: muốn robot thao tác tốt, VLM không nên chỉ trả lời "vật ở đâu"; nó cần học xem hành động sẽ làm cảnh thay đổi ở đâu. Unitree dùng optical flow giữa frame t0 và t1 để tách vùng động, rồi dùng VQ-VAE rời rạc hóa dynamic mask thành token. Condition là ảnh hiện tại và instruction/action. VLM học dự đoán token của vùng tương lai.

Optical flow từ frame t0 sang t1 trong UnifoLM-WLA - nguồn: project page Unitree UnifoLM-WLA
Optical flow từ frame t0 sang t1 trong UnifoLM-WLA - nguồn: project page Unitree UnifoLM-WLA

Sau đó action cũng được rời rạc hóa theo ba nhóm: end-effector pose, end-effector joint/gripper/dexterous hand, và lower-body motion. RVQ tạo token như EEF, HAND, LOWER, giúp VLM học alignment thời gian giữa ảnh, prompt, state và action. Khi sang WLA model, phần action expert không chỉ copy discrete token, mà học sinh continuous action chunk để điều khiển robot thật.

Điểm cần nhớ: đây không phải "LLM gọi API robot". Đây là imitation/diffusion-style policy có ngôn ngữ làm điều kiện. Ngôn ngữ giúp chọn task; state và camera giúp xác định tình huống hiện tại; action head sinh lệnh robot.

Dynamic-region mask overlay cho vùng sẽ thay đổi - nguồn: project page Unitree UnifoLM-WLA
Dynamic-region mask overlay cho vùng sẽ thay đổi - nguồn: project page Unitree UnifoLM-WLA

Kiến trúc cần hiểu trước khi fine-tune

Checkpoint UnifoLM-WLA-1.0-Base chứa VLM, tokenizer/config, action model và statistics. Config fine-tune mặc định dùng framework QwenMMDiT. Phần VLM có hidden dimension 2560 và dùng flash_attention_2. Robot-state projector bật mặc định, nhận input 120 chiều. Action model là DiT-L, hidden size 1024, 16 layer, 32 attention head, action dimension 54, action horizon 30, và inference dùng 4 diffusion timesteps.

Bạn không cần thuộc hết các con số này, nhưng cần hiểu ý nghĩa:

Cấu hình Ý nghĩa thực tế
action_dim: 54 Mỗi timestep sinh vector hành động 54 chiều
action_horizon: 30 Mỗi lần policy dự đoán một chunk 30 bước
target_fps: 30 Chunk mặc định phủ khoảng 1 giây
robot_state_projector.input_dim: 120 60 state + 60 validity mask
freeze_modules: qwen_vl_interface Fine-tune mặc định đóng băng VLM, train action expert và state projector
per_device_batch_size: 1 + gradient_accumulation_steps: 8 Cấu hình nhắm tới một GPU 24GB

Tài liệu action-state processing là phần quan trọng nhất nếu bạn tự thu data. Action vector 54 chiều gồm left/right end-effector, gripper, dexterous hand, waist, torso, base velocity, base pose, height và leg action. State vector 60 chiều gồm pose tay trái/phải dạng xyz + rotation-6D, gripper/hand state, waist, torso, base velocity, gravity direction, angular velocity, height và joint chân. Model-facing state là 120 chiều vì nối thêm validity mask để model biết module nào có thật trên embodiment hiện tại.

Nếu bạn đã quen với whole-body VLA teleop pipeline, hãy xem UnifoLM-WLA như một chuẩn hóa mạnh tay hơn: mọi embodiment được ép về các slot thống nhất, còn mask nói cho model biết slot nào có dữ liệu.

Chuẩn bị máy và repo

Bạn cần một Linux box có NVIDIA GPU. Fine-tune full action expert mặc định nhắm tới một GPU 24GB. Nếu ít VRAM hơn, giảm batch size, giảm worker, hoặc dùng LoRA. Nếu muốn mở khóa VLM để co-train, hãy chuẩn bị nhiều VRAM hơn đáng kể.

bash
mkdir -p ~/robot_ws
cd ~/robot_ws

git clone https://github.com/unitreerobotics/unifolm-wla.git
cd unifolm-wla

curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync
uv pip install flash-attn --no-build-isolation
source .venv/bin/activate

Kiểm tra nhanh:

bash
python -c "import torch; print(torch.cuda.is_available())"
python -c "import unifolm_wla; print('unifolm_wla import ok')"
hf --help | head

Nếu flash-attn build fail, thường là do CUDA/PyTorch mismatch. Với beginner, cách dễ nhất là dùng image CUDA/PyTorch ổn định hoặc thuê cloud GPU đã có PyTorch + CUDA khớp phiên bản. Đừng bắt đầu bằng việc debug driver trên máy production của robot.

Tải checkpoint và dataset

Tải checkpoint nền:

bash
hf download unitreerobotics/UnifoLM-WLA-1.0-Base \
  --local-dir playground/Pretrained_models/UnifoLM-WLA-1.0-Base

Layout đúng phải có:

text
UnifoLM-WLA-1.0-Base/
├── checkpoints/
│   └── model.safetensors
├── config.yaml
├── dataset_statistics.json
└── tokenizer/

Với data, Unitree chia thành nhiều dataset repo. Dex1 là nhóm tabletop/two-finger hoặc dexterous tabletop; WBT là whole-body teleoperation/manipulation. Ví dụ:

bash
export DATA_ROOT=$HOME/unifolm_data

hf download unitreerobotics/G1_Dex1_Stack_Block --repo-type dataset \
  --local-dir $DATA_ROOT/UnifoLM_G1_Dex1_Dataset/G1_Dex1_Stack_Block

hf download unitreerobotics/G1_WBT_Brainco_Make_The_Bed --repo-type dataset \
  --local-dir $DATA_ROOT/UnifoLM_WBT_Dataset/G1_WBT_Brainco_Make_The_Bed

Tổ chức thư mục nên giống tài liệu gốc:

text
$DATA_ROOT/
├── UnifoLM_G1_Dex1_Dataset/
│   ├── G1_Dex1_Stack_Block/
│   └── G1_Dex1_Wipe_Table/
└── UnifoLM_WBT_Dataset/
    ├── G1_WBT_Brainco_Make_The_Bed/
    └── G1_WBT_Brainco_Pickup_Pillow/

Collection Hugging Face hiện liệt kê hàng chục task Dex1 và WBT. Dex1 có các task như Stack_Block, Fold_Towel, Organize_Tools, Pour_Drink, Open_Bottle_Cap. WBT có các task như Make_The_Bed, Pickup_Pillow, Collect_Plates_Into_Dishwasher, Put_Clothes_into_Washing_Machine. Với bài tập đầu tiên, chọn 1-2 task gần task bạn muốn fine-tune. Không nên trộn 20 task ngay từ đầu vì bạn sẽ khó biết lỗi đến từ schema, data hay training.

Cấu hình unitree.yaml

Trong repo, file config dataset cần trỏ về root data và cache. Ý tưởng:

yaml
data_base: "/home/user/unifolm_data"
cache_dir: "/home/user/unifolm_cache"

datasets:
  - <<: *unitree_base
    name: "unifolm_g1_dex1"
    data_path: "UnifoLM_G1_Dex1_Dataset"
    image_keys: *unitree_img_with_stereo

  - <<: *unitree_fullbody_base
    name: "unifolm_wbt"
    data_path: "UnifoLM_WBT_Dataset"
    image_keys: *unitree_img_wo_stereo

Hai lỗi beginner hay gặp:

Lỗi Triệu chứng Cách sửa
Sai đơn vị Loss giảm nhưng action deploy bị giật, scale sai Convert về meter, radian, m/s, rad/s
Sai quaternion order End-effector xoay lạ, pose plot méo Dùng xyzw, không phải wxyz
Sai left/right convention Robot làm ngược bên Không mirror trục tay phải; cả hai tay cùng base frame
Thiếu statistics Eval chạy nhưng denormalize sai Giữ dataset_statistics.json cùng layout checkpoint
Data WBT nhưng server Dex1 Không có base/finger action khi serve Mở rộng adapter/protocol trước khi deploy WBT

Chạy evaluation trước khi train

Trước khi fine-tune, hãy chạy evaluation local để chắc checkpoint, config và data đọc được:

bash
python -m examples.unifolm_wla.eval_files.unitree.eval_local_episode \
  --ckpt_path playground/Pretrained_models/UnifoLM-WLA-1.0-Base/checkpoints/model.safetensors \
  --data_config_path unifolm_wla/dataloader/multi_source_dataset/configs/unitree.yaml \
  --episode_idx 0 \
  --save_dir results/eval_local_episode

Script này chạy checkpoint theo từng chunk trên một episode và plot predicted vs ground-truth action. Đây là sanity check tốt hơn nhiều so với nhìn loss. Nếu plot end-effector relative pose lệch hoàn toàn, hãy dừng lại kiểm schema. Nếu plot bám được xu hướng nhưng biên độ sai, kiểm normalization và statistics. Nếu chỉ một module sai, ví dụ gripper hoặc right leg, kiểm slice mapping của module đó.

Fine-tune full action expert

Fine-tune mặc định đóng băng VLM, chỉ train action expert MMDiT và robot-state projector. Đây là lựa chọn hợp lý cho beginner vì giữ perception/language prior ổn định, giảm VRAM, và tránh làm model quên khả năng spatial reasoning.

bash
base_model_dir=playground/Pretrained_models/UnifoLM-WLA-1.0-Base \
bash examples/unifolm_wla/train_files/run_finetune_mmdit_frozen_vlm.sh

Các tham số đáng chỉnh trong unifolm_wla/config/training/mmdit_finetune_frozen_vlm.yaml:

Tham số Mặc định Khi nào chỉnh
max_train_steps 20000 Giảm xuống 2000-5000 để smoke test
save_interval 2000 Giảm nếu muốn checkpoint sớm
learning_rate.base 1e-4 Giảm nếu loss dao động mạnh
per_device_batch_size 1 Giữ 1 nếu GPU 24GB
gradient_accumulation_steps 8 Tăng nếu muốn effective batch lớn hơn
freeze_modules qwen_vl_interface Xóa chỉ khi có nhiều VRAM và data đủ lớn

Với task nhỏ, hãy chạy ba pha:

  1. Smoke test 200-500 step: mục tiêu là không crash, cache data đúng, loss finite.
  2. Pilot 2.000-5.000 step: xem plot evaluation có cải thiện không.
  3. Run chính 20.000 step: chỉ chạy khi schema và metric đã rõ.

Đừng deploy lên robot thật chỉ vì training loss giảm. Với humanoid, một action channel sai scale cũng đủ tạo chuyển động nguy hiểm. Hãy đọc thêm hướng kiểm tra low-level ở cuRobo + G1 whole-body planning nếu bạn cần một lớp motion/planning safety bên dưới policy.

LoRA fine-tune khi ít VRAM hoặc ít data

Repo có config LoRA cho qwen_vl_interface và action_model. Với beginner, lựa chọn an toàn là giữ VLM frozen và LoRA action model:

bash
base_model_dir=playground/Pretrained_models/UnifoLM-WLA-1.0-Base \
bash examples/unifolm_wla/train_files/run_lora_finetune_mmdit_frozen_vlm.sh

Block LoRA mẫu:

yaml
trainer:
  lora:
    enabled: true
    action_model:
      enabled: true
      r: 16
      lora_alpha: 32
      lora_dropout: 0.05
      target_modules: ["to_q", "to_k", "to_v", "to_out.0", "add_q_proj", "add_k_proj", "add_v_proj", "to_add_out"]
      bias: "none"

LoRA ghi ra adapter checkpoint nhỏ như adapter.safetensors hoặc steps_<n>_adapter.safetensors. Đây là artifact dễ chia sẻ hơn full checkpoint. Nếu bạn fine-tune một task tabletop mới với vài trăm episode, LoRA thường là điểm bắt đầu hợp lý. Nếu bạn muốn đổi embodiment, thêm hand mới, hoặc fine-tune WBT phức tạp, full action expert có thể cần thiết.

Inference và giới hạn hiện tại của model server

Repo có server:

bash
python -m model_server.action_server_wbc_msgpack_unitree \
  --ckpt_path playground/Pretrained_models/UnifoLM-WLA-1.0-Base/checkpoints/model.safetensors \
  --host 0.0.0.0 --port 8600 \
  --instruction "pick up the object"

Sau đó có thể chạy evaluator client:

bash
python -m model_server.eval_local_episode_wbc_msgpack_server_only \
  --ckpt_path playground/Pretrained_models/UnifoLM-WLA-1.0-Base/checkpoints/model.safetensors \
  --data_config_path unifolm_wla/dataloader/multi_source_dataset/configs/unitree.yaml \
  --host 127.0.0.1 --port 8600 \
  --episode_idx 0 \
  --save_dir results/eval_local_episode_wbc_msgpack

Nhưng tài liệu gốc ghi rõ server hiện tại là Dex1 only. Adapter _ACTIVE_SLOT_SPECS mirror unitree_base, chưa có left_fig6d, right_fig6d và base_pose, tức các field quan trọng cho WBT. Muốn serve checkpoint WBT, bạn cần mở rộng slot spec và protocol encode/decode để mang finger angles, base pose và action keys tương ứng. Vì vậy trong bài này, inference an toàn cho beginner là local evaluation hoặc Dex1 server; whole-body live deploy cần thêm engineering.

Đọc kết quả như thế nào?

Kết quả chính thức có ba tầng. Tầng embodied reasoning: project page báo UnifoLM-ER-1-4B dẫn đầu open-source model trên 7 benchmark trong nhóm spatial/multimodal embodied reasoning và có bảng so sánh với RoboBrain2.0, Qwen3-VL, Cosmos, Thinker, Gemini/GPT API. Tầng data: WLA train trên khoảng 2.500 giờ robot thật, gồm Unitree Open Datasets và BitRobot-HIW-500. Tầng robot: một model chạy 64 task trên G1, gồm 54 tabletop và 10 whole-body task, hỗ trợ two-finger gripper và nhiều five-finger dexterous hand.

Khi fine-tune nội bộ, bạn nên báo cáo đơn giản hơn:

Metric Vì sao cần
Local episode action MSE theo module Biết tay, gripper, base hay chân sai
End-effector pose error Gần với outcome tabletop
Gripper open/close accuracy Sai gripper thường phá task dù pose đúng
Chunk smoothness Phát hiện action giật giữa các horizon
Offline replay video Dễ review với team không đọc tensor
Real-robot success rate Chỉ chạy sau safety gate

Một baseline tốt cho team nhỏ: lấy checkpoint base, eval trên một task gần nhất; fine-tune 2.000 step; eval cùng episode và một episode held-out; nếu plot tốt hơn và video replay ổn, mới chạy pilot trên robot với speed/torque limit thấp.

Checklist an toàn trước khi cho G1 chạy thật

  • Camera stream đúng: head/wrist camera không bị đảo trái phải.
  • State vector đúng 60 chiều và mask đúng module.
  • Action vector đúng 54 chiều; đặc biệt slice [42:48] và [48:54] trong action là left/right leg, nhưng state slice tương ứng khác ngữ cảnh.
  • Unit đúng: meter, radian, m/s, rad/s.
  • Base frame đúng: x forward, y left, z up.
  • Gravity direction ở state [41:44] normalized.
  • Checkpoint có config.yaml và dataset_statistics.json cạnh thư mục checkpoints.
  • Có nút e-stop vật lý, workspace trống, speed limit thấp.
  • Không dùng WBT live server nếu chưa mở rộng Dex1-only adapter.

Nguồn đã kiểm

  • Project page: UnifoLM-WLA-1.0
  • Repo: unitreerobotics/unifolm-wla
  • Model collection: UnifoLM-WLA-1.0 trên Hugging Face
  • Dataset Dex1: UnifoLM_G1_Dex1_Dataset
  • Dataset WBT: UnifoLM_WBT_Dataset

Bài viết liên quan

  • unifolm-vla + Unitree G1: kiến trúc
  • Fine-tune unifolm-vla trên Unitree G1
  • WholeBodyVLA: teleop, train, deploy
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
DreamMimic: world model cho điều khiển toàn thân
Bài sau →
RoboDojo: benchmark π0.5, SmolVLA và GR00T

Bài viết liên quan

Nghiên cứu
EgoHumanoid: Dạy Robot từ Demo VR Người, Không Cần Teleop
egohumanoidwholebody-vlavla
wholebody-vla

EgoHumanoid: Dạy Robot từ Demo VR Người, Không Cần Teleop

EgoHumanoid (RSS 2026) chứng minh co-train VLA từ egocentric human demo + ít robot data vượt robot-only baseline 51% ở môi trường mới.

13/9/202614 phút đọc
NT
Nghiên cứu
LeVERB: Benchmark WBC-VLA đầu tiên với Latent Action Space
humanoidwholebody-vlavla
wholebody-vla

LeVERB: Benchmark WBC-VLA đầu tiên với Latent Action Space

LeVERB (UC Berkeley) — framework và benchmark đầu tiên nối VLA với Whole-Body Control qua latent action space, đạt 58.5% success rate, zero-shot sim-to-real.

24/6/202615 phút đọc
NT
NEWTutorial
DreamMimic: world model cho điều khiển toàn thân
whole-bodywbcworld-model
wholebody-vla

DreamMimic: world model cho điều khiển toàn thân

Hiểu RSSM, latent dynamics và teacher–student distillation của DreamMimic; hướng dẫn cài đặt, training và đánh giá humanoid trong mô phỏng.

8/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