
SmolVLA là một VLA 450 triệu tham số có thể tinh chỉnh trên một card 24 GB duy nhất. Các lệnh lerobot 0.6.1 thực tế, các cài đặt mặc định thực tế, những cạm bẫy tốn một ngày và chi phí cho một lần chạy.
SmolVLA trong một màn hình
- •450 M tham số, khoảng 100 M trong số đó là chuyên gia hành động khớp luồng. lerobot chỉ huấn luyện chuyên gia đó và giữ VLM đóng băng, đó là lý do tại sao nó vừa vặn trên một card.
- •Hướng dẫn tính toán của LeRobot ước tính nhóm smolvla cần khoảng 10 đến 16 GB VRAM cao điểm ở batch 8 với AdamW. Do đó là 24 GB.
- •Điểm khởi đầu là lerobot-train. Bài đăng blog SmolVLA tháng 6 năm 2025 vẫn in python lerobot/scripts/train.py, một đường dẫn không còn tồn tại. Mọi thứ bên dưới là lerobot 0.6.1.
- •Lịch trình cosine được đặt trước để giảm dần trong 30000 bước. lerobot 0.6.1 điều chỉnh lại xuống cho một lần chạy ngắn hơn và ghi nhật ký, nhưng không bao giờ lên: lần chạy 100000 bước tiêu chuẩn kết thúc ở mức sàn 2.5e-6 trong 70000 bước.
- •Ba mươi tập là mức tối thiểu của AY-Robots, trên một cấp 24 GB có giá 1 đến 3 USD mỗi lần chạy so với 4 đến 12 USD cho các mô hình 80 GB.
Hầu hết những người muốn một mô hình hành động ngôn ngữ thị giác trên một cánh tay robot thực tế thường dừng lại ở giới hạn phần cứng. GR00T N1.7 và Pi0.5 có khoảng ba tỷ tham số mỗi loại và yêu cầu A100 80 GB hoặc H100. Nếu bạn sở hữu một PC chơi game với RTX 4090, đó là giới hạn. SmolVLA là một ngoại lệ: 450 M tham số, bên trong LeRobot, được xây dựng để tinh chỉnh trên một card tiêu dùng và phục vụ từ CPU.
Trước tiên là cách thủ công: cài đặt lerobot, kéo checkpoint lerobot/smolvla_base, chạy lệnh thực tế, đọc quá trình chạy khi nó diễn ra. Sau đó là cách nền tảng, và những điểm nó không giúp ích.
SmolVLA là gì, với các con số bạn có thể kiểm tra
SmolVLA là một khớp dòng chảy chính sách được tích hợp vào một mô hình ngôn ngữ thị giác nhỏ. Kiến trúc cốt lõi là SmolVLM2-500M-Video-Instruct; bài báo chỉ giữ lại 16 lớp đầu tiên của mô hình ngôn ngữ, giới hạn mỗi khung hình camera ở 64 token thị giác bằng cách sử dụng pixel shuffle thay vì xếp gạch hình ảnh, và xen kẽ cơ chế cross attention với một lớp self attention sau mỗi khối thứ hai. Chi phí suy luận là một ràng buộc thiết kế, không phải là một yếu tố được xem xét sau.
| Thuộc tính | Giá trị | Nguồn |
|---|---|---|
| Tổng số tham số | about 450 M | paper |
| Chuyên gia hành động | about 100 M, flow matching | paper |
| Kiến trúc cốt lõi VLM | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| Các lớp VLM được sử dụng | first 16 of the language model | num_vlm_layers = 16 |
| Token thị giác mỗi khung hình | 64, pixel shuffle, no tiling | paper |
| Huấn luyện trước | 481 community datasets, 22.9 K episodes, 10.6 M frames; 200000 steps at global batch 256 on 4 GPUs | paper |
Các điểm chuẩn là lý do tại sao mọi người quan tâm đến một mô hình 450 triệu tham số. Trên LIBERO, nó đạt trung bình 87.3 percent so với 76.5 của OpenVLA ở 7 B và 86.0 của Pi0 được huấn luyện trước cho robot ở 3.3 B; trên Meta-World, 57.3 so với 47.9. Trên phần cứng SO-100 thực tế, huấn luyện đa nhiệm mang lại 75 percent cho tác vụ nhặt và đặt, 90 cho xếp chồng, 70 cho phân loại, trung bình 78.3, trong khi ACT được huấn luyện cho từng tác vụ đạt trung bình 48.3. Các hàng tương tự nằm cạnh mọi VLA đã xuất bản trong mục nhập đấu trường SmolVLA và so sánh ACT với SmolVLA.
SmolVLA không tốt hơn một mô hình 3 tỷ tham số ở mọi khía cạnh. Bảng SO-101 của chính bài báo đã chỉ ra điều đó: 90 percent thành công trong phân phối, 50 percent ngoài phân phối, trên một nền tảng mà nó chưa từng được huấn luyện trước. Điều mà nó tuyên bố và hỗ trợ là so với Pi0, nó huấn luyện nhanh hơn khoảng 40 percent với bộ nhớ ít hơn 6 times.
Tại sao thẻ 24 GB là lựa chọn phù hợp cho lần chạy đầu tiên
LeRobot cung cấp hướng dẫn định cỡ tính toán, trang hữu ích nhất trong kho lưu trữ cho mục đích này. Hướng dẫn này nhóm các chính sách theo kích thước backbone và cung cấp một giới hạn VRAM cho mỗi nhóm, được đo ở kích thước batch 8 với AdamW, cài đặt mặc định của lerobot. Riêng trạng thái bộ tối ưu hóa đã thêm 30 đến 100 phần trăm so với một lượt truyền xuôi và ngược đơn thuần, vì vậy đây không phải là các con số chỉ riêng trọng số.
| Nhóm | Chính sách | VRAM tối đa (batch 8, AdamW) | GPU khởi đầu |
|---|---|---|---|
| BC nhẹ | act, vqbet, tdmpc | about 2 to 6 GB | RTX 3060, L4 |
| Khuếch tán | diffusion, multi_task_dit | about 8 to 14 GB | RTX 4070+, L4 |
| VLA nhỏ | smolvla | about 10 to 16 GB | RTX 4080+, L4, A10G |
| VLA lớn | pi0, pi0_fast, pi05, xvla, wall_x | about 24 to 40 GB | A100 40 GB+ |
| Đa phương thức | groot, eo1 | about 24 to 40 GB | A100 40 GB+ |
Mười đến mười sáu gigabyte ở batch 8 là lập luận: một thẻ 24 GB phù hợp với dung lượng đó cộng với dataloader. AY-Robots đặt SmolVLA trên RTX 4090 hoặc bất kỳ thẻ 24 GB nào, tối thiểu 30 tập, LeRobot v3.0 dữ liệu, 245 ms mỗi bước hành động. Thuê, đó là 2 đến 5 giờ với giá 0.30 đến 0.60 USD một giờ, khoảng 1 đến 3 USD cho một lần tinh chỉnh lần chạy, so với 4 đến 12 USD trên cấp 80 GB mà GR00T và Pi0.5 cần (giá cả). Một lần chạy SmolVLA thất bại chỉ tốn một ly cà phê; một lần chạy GR00T thất bại, tốn một bữa trưa.

- Phù hợp với phần cứng bạn có thể đã sở hữu: khoảng 10 đến 16 GB ở batch 8.
- Một lần chạy lãng phí tốn hàng giờ và vài đô la, vì vậy bạn có thể chấp nhận sai lầm về tập dữ liệu.
- Được huấn luyện trước trên các tập dữ liệu cộng đồng được chia sẻ dưới thẻ lerobot, với kết quả SO-100 và SO-101 thực tế.
- Nó nằm trong chính lerobot: không có kho lưu trữ của nhà cung cấp, và smolvla_base không bị giới hạn.
- 450 M vẫn là 450 M: tỷ lệ thành công ngoài phân phối giảm từ 90 xuống 50 phần trăm trong bảng SO-101 của bài báo.
- Nó yêu cầu dữ liệu LeRobot v3.0; một bản ghi v2.1 phải được chuyển đổi (tập dữ liệu bị từ chối v3).
- 245 ms cho mỗi bước hành động là một bộ điều khiển chọn và đặt có năng lực, không phải là bộ điều khiển phản ứng.
- Ví dụ trong tài liệu chạy batch 64 trên A100; trên 24 GB bạn đánh đổi batch lấy thời gian thực.
Bước 0: tập dữ liệu quyết định lần chạy, không phải các cờ
Không có gì dưới đây quan trọng nếu bản ghi kém chất lượng. Trang LeRobot SmolVLA thẳng thắn: tập dữ liệu tham chiếu là 50 tập trên 5 vị trí khối, 10 tập mỗi vị trí, và cùng một nhiệm vụ với 25 tập đã thực hiện kém. Lặp lại theo từng biến thể sẽ tổng quát hóa, số lượng tập thô thì không. Chưa bao giờ ghi lại một cái? Bắt đầu tại ghi lại tập dữ liệu đầu tiên của bạn, với ứng dụng máy tính để bàn, cái mà ghi định dạng LeRobot từ một điều khiển từ xa phiên, hoặc mượn một cái từ thư mục tập dữ liệu.
- Ít nhất 30 tập trên AY-Robots, khoảng 50 tập cho công thức tham chiếu LeRobot.
- Mọi biến thể bạn mong đợi khi triển khai, lặp lại nhiều lần.
- Một chuỗi tác vụ, được viết giống hệt nhau tại thời điểm ghi và triển khai. Mô hình được điều kiện hóa dựa trên văn bản đó.
- Camera cố định. Camera bị di chuyển giữa lúc ghi và triển khai là lý do phổ biến nhất khiến đường cong mất mát sạch cho ra một cánh tay không chuyển động.
- Một biến thể được giữ lại mà bạn chưa bao giờ huấn luyện, để bạn có thứ gì đó trung thực để kiểm tra.
SmolVLA, Pi0.5 và ACT yêu cầu LeRobot v3.0. GR00T N1.7 và N1.5 yêu cầu v2.0 hoặc v2.1 và trình tải của chúng bị lỗi trên v3.0. Ghi một lần, lên kế hoạch so sánh các mô hình sau này, và bạn sẽ chuyển đổi theo cách này hay cách khác: dataset rejected v3.
# v2.1 -> v3.0: aggregates per-episode files into shards and writes the episode offsets
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=${HF_USER}/so100_pick_placeTìm hiểu thêm về điều này tại cách thu thập dữ liệu huấn luyện VLA chất lượng cao. Tóm lại: 30 đến 50 tập sạch của một tác vụ với biến thể có chủ ý đánh bại 200 tập cẩu thả của ba tác vụ, với một biên độ mà không siêu tham số nào có thể thu hẹp.
Cài đặt lerobot 0.6.1
# LeRobot needs Python 3.12 or newer as of 0.6.x
conda create -y -n lerobot python=3.12
conda activate lerobot
# TorchCodec decodes the dataset videos and wants ffmpeg
conda install ffmpeg -c conda-forge
# Base package is deliberately thin; extras pull the rest
pip install 'lerobot[smolvla,training,core_scripts]'
# Sanity check: prints the lerobot version, the GPU torch sees, and the console scripts you got
lerobot-infoBản cài đặt lerobot cơ bản khá gọn nhẹ và quản lý các phụ thuộc nặng thông qua các gói bổ sung (extras): smolvla bổ sung transformers, num2words và accelerate, training bổ sung ngăn xếp dữ liệu và wandb, core_scripts bổ sung các phụ thuộc phần cứng và trực quan hóa. Trên Linux, đường dẫn cài đặt cũng quyết định phiên bản CUDA wheel của bạn: mặc định của PyPI là cu130 wheel với yêu cầu driver tối thiểu là 580.65, vì vậy trên driver cũ hơn, hãy cài đặt torch từ chỉ mục cu128 trước, sau đó là lerobot.
--policy.path=lerobot/smolvla_base tải checkpoint 450 M đã được huấn luyện trước và tinh chỉnh nó. --policy.type=smolvla xây dựng một SmolVLA mới, và giá trị mặc định của cấu hình load_vlm_weights = False có nghĩa là nó sẽ không tải trọng số backbone của SmolVLM2 trừ khi bạn yêu cầu. Nếu làm sai, quá trình chạy vẫn sẽ diễn ra bình thường, tốn chi phí tương tự, nhưng không học được gì có thể chuyển giao.
Quá trình huấn luyện, từng lệnh một
- 1Xác thực với Hub
Checkpoint cơ sở đến từ Hub, và tập dữ liệu của bạn có thể cũng vậy.
bashhf auth login - 2Đọc các tùy chọn một lần
Mọi trường trong cấu hình pipeline và policy đều là một cờ (flag). Hãy lướt qua nó trước khi đi sâu vào mã nguồn.
bashlerobot-train --help - 3Bắt đầu tinh chỉnh
Ví dụ trong tài liệu chạy batch 64 trên một A100 duy nhất; hướng dẫn tính toán của riêng A100 40 GB là batch 16, và 8 là tương đương với 24 GB. Không có cờ scheduler ở đây một cách có chủ ý, xem bên dưới.
bashlerobot-train \ --policy.path=lerobot/smolvla_base \ --dataset.repo_id=${HF_USER}/so100_pick_place \ --batch_size=8 \ --steps=20000 \ --save_freq=2000 \ --log_freq=200 \ --seed=1000 \ --output_dir=outputs/train/smolvla_pick_place \ --job_name=smolvla_pick_place \ --policy.device=cuda \ --wandb.enable=true - 4Đọc dòng nhật ký, không chỉ riêng loss
Mỗi --log_freq bước, lerobot in ra loss, grdn, lr, updt_s, data_s, smp/s và, trên CUDA, mem_gb. mem_gb cho biết liệu batch có vừa không, lr cho biết liệu lịch trình có đang giảm dần không, và data_s tiến gần đến updt_s có nghĩa là dataloader là nút thắt cổ chai, chứ không phải GPU.
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5Thu thập các checkpoint bạn có thể so sánh
save_freq mặc định là 20000, vì vậy một lần chạy 20000 bước chỉ để lại một checkpoint và không có gì để so sánh. Đặt là 2000. Đẩy lên Hub cần --policy.repo_id.
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6Tiếp tục nếu máy gặp sự cố
Chỉ --config_path vào train_config.json bên cạnh checkpoint. lerobot từ chối bắt đầu vào một output_dir hiện có trừ khi bạn đang tiếp tục, vì vậy bạn không thể vô tình ghi đè một lần chạy.
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
Các cờ thực sự thay đổi kết quả
| Cờ | Chức năng | Trên 24 GB |
|---|---|---|
| --batch_size | Số mẫu mỗi bước, xấp xỉ tuyến tính với VRAM | 4 to 8 |
| --steps | Tổng số bước tối ưu hóa | 20000 lần chạy đầu tiên |
| --policy.scheduler_decay_steps | Độ dài suy giảm cosine, cài đặt sẵn 30000 | Chỉ có tác dụng trên 30000 |
| --policy.use_amp | Độ chính xác hỗn hợp; SmolVLA không có trường dtype | true khi bộ nhớ hạn chế |
| --num_workers | Số tiến trình Dataloader, mặc định 4 | Tăng cho đến khi data_s ngừng tăng |
| --dataset.eval_split | Tỷ lệ các tập được giữ lại cho mỗi tác vụ | 0.1, with --eval_steps |
| --policy.freeze_vision_encoder | Giữ cho tháp thị giác đóng băng | true trên 24 GB |
| --policy.train_expert_only | Chỉ chuyên gia ~100 M nhận gradient | true lần đầu |
SmolVLA đặt trước một lịch trình cosine: `scheduler_warmup_steps = 1000`, `scheduler_decay_steps = 30000`, `scheduler_decay_lr = 2.5e-6`. Lời khuyên cũ cho rằng một lần chạy 20000 bước sẽ bị đình trệ giữa quá trình suy giảm. Trong 0.6.1 thì không: `CosineDecayWithWarmupSchedulerConfig.build()` được truyền `--steps`, và dưới `num_decay_steps` nó điều chỉnh lại cả hai, warmup 1000 thành 666 và decay 30000 thành 20000, in ra Auto-scaling LR scheduler khi thực hiện. Nó không bao giờ điều chỉnh tăng lên: sự suy giảm được giới hạn bằng `min(current_step, decay_steps)`, vì vậy `--steps=100000` mặc định sẽ nằm ở mức thấp nhất từ bước 30000 đến cuối, chiếm 70 phần trăm thời gian chạy. Chỉ có phần dài đó vẫn cần `--policy.scheduler_decay_steps`. Cột `lr` là nơi bạn kiểm tra.
Các giá trị mặc định bạn kế thừa nếu không thay đổi gì
Một cấu hình trong lerobot mang theo bộ tối ưu hóa và cài đặt lịch trình riêng, và trừ khi bạn đặt use_policy_training_preset=false các cài đặt trước đó sẽ được ưu tiên. Một nửa số câu hỏi mọi người hỏi về việc huấn luyện SmolVLA được trả lời bởi một giá trị mặc định mà họ không biết là có tồn tại.
| Cài đặt | Mặc định trong lerobot 0.6.1 | Được định nghĩa trong |
|---|---|---|
| chunk_size / n_action_steps | 50 / 50 | SmolVLAConfig |
| num_steps (flow matching denoise) | 10 | SmolVLAConfig |
| optimizer_lr | 1e-4 | SmolVLAConfig |
| scheduler_warmup_steps | 1000 | SmolVLAConfig |
| scheduler_decay_steps | 30000 | SmolVLAConfig |
| scheduler_decay_lr | 2.5e-6 | SmolVLAConfig |
| freeze_vision_encoder | true | SmolVLAConfig |
| train_expert_only | true | SmolVLAConfig |
| batch_size / steps | 8 / 100000 | TrainPipelineConfig |
| seed / save_freq / num_workers | 1000 / 20000 / 4 | TrainPipelineConfig |
Hai dòng khiến mọi người ngạc nhiên là freeze_vision_encoder và train_expert_only, cả hai đều đúng. Ngay từ đầu, bạn huấn luyện khoảng 100 triệu tham số, không phải 450 triệu, đó là lý do tại sao nó vừa với 24 GB. Chạy tham chiếu của LeRobot trên cụm H100 bốn GPU chuyển cả hai thành false; trên một card 24 GB, điều đó biến một lần chạy hoạt động thành một lỗi tràn bộ nhớ.
Lời khuyên của hướng dẫn khi bạn bị giới hạn bộ nhớ là giảm kích thước batch và sử dụng tích lũy gradient để khôi phục batch hiệu quả. Không có tích lũy gradient trong lerobot 0.6.1: TrainPipelineConfig không có trường như vậy và chuỗi này không xuất hiện ở bất kỳ đâu trong gói đã phát hành. Biểu mẫu AY-Robots hiển thị giá trị tích lũy gradient là 8 cho SmolVLA và cũng không áp dụng nó. Các đòn bẩy của bạn trên 24 GB là --batch_size, hai giá trị mặc định đóng băng, và --policy.use_amp.
Thời gian chạy mất bao lâu và bao nhiêu bước là đủ
LeRobot công bố các mốc thời gian thực cho năm epoch trên một tập dữ liệu khoảng 50 tập, khoảng 45000 khung hình ở 30 fps. Các tài liệu nói rằng đây là những con số ước tính, nhưng chúng tạo ra sự khác biệt giữa việc mong đợi một giờ và một ngày.
| Thiết lập | Policy | Lô | Thời gian thực tế |
|---|---|---|---|
| Một L4 / A10G (24 GB) | smolvla | 4 | khoảng 3 đến 6 giờ |
| Một A100 40 GB | smolvla | 16 | khoảng 1 đến 2 giờ |
| 4 x H100 80 GB với accelerate | smolvla | 32 | khoảng 1 đến 2 giờ |
| Một RTX 4090 / RTX 3090 (24 GB) | act | 8 | khoảng 30 đến 60 phút |
Quy tắc là 5 đến 10 epoch trên tập dữ liệu, không phải số bước cố định: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). Trên tập dữ liệu tham chiếu mà tài liệu đề cập, lerobot/svla_so100_pickplace, siêu dữ liệu báo cáo 50 tập và 19631 khung hình: lô 8 cho khoảng 2454 bước mỗi epoch, vì vậy 20000 bước tương đương khoảng 8 epoch. Giảm một nửa kích thước lô và cùng một ngân sách sẽ mua được một nửa số epoch, vì vậy hãy thực hiện lại điều này bất cứ khi nào bạn thay đổi --batch_size.
Chạy lại chính sách đã tinh chỉnh trên cánh tay robot
lerobot-rollout \
--strategy.type=base \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower_arm \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
--task="Grasp the cube and put it in the box." \
--policy.path=${HF_USER}/smolvla_pick_place245 ms mỗi bước hành động dễ bị hiểu sai: chính sách phát ra chunk_size = 50 hành động mỗi lần chuyển tiếp và thực hiện n_action_steps = 50 trong số đó, vì vậy tần suất bạn phải trả chi phí đó được đặt bởi các thông số này, chứ không phải bởi tần suất servo nhận lệnh. Đó là điều mà mang lại, và tại sao một mô hình 245 ms có thể điều khiển một cánh tay 30 Hz. Phần còn lại là ở cuối phân đoạn.
| Đo lường (SmolVLA, SO-100 thực) | Đồng bộ | Bất đồng bộ |
|---|---|---|
| Thời gian hoàn thành, nhặt và đặt, 10 lần thử | 13.75 s | 9.70 s |
| Chu kỳ nhặt và đặt trong một khoảng thời gian cố định | 9 | 19 |
| Tỷ lệ thành công trung bình trên ba tác vụ | 78.3 % | 73.3 % |
Hàng thứ ba đó là điều mà hầu hết các bài viết bỏ qua. Suy luận bất đồng bộ nhanh hơn khoảng 30 phần trăm và gần như tăng gấp đôi thông lượng trong một khoảng thời gian cố định, và bài báo gọi tỷ lệ thành công là tương đương, điều này đúng trên mức trung bình. Bên dưới đó, việc sắp xếp giảm từ 70 xuống 50 phần trăm trong khi nhặt và đặt tăng 5. lerobot 0.6.1 mang theo đòn bẩy khác trong cùng một tệp nhị phân: --inference.type=rtc chuyển đổi quá trình triển khai sang phân đoạn thời gian thực, điều mà khối sử dụng của tập lệnh khuyến nghị cho các VLA chậm, Pi0, Pi0.5 và SmolVLA.
Vòng điều khiển là 20 đến 485 ms mỗi bước hành động tùy thuộc vào mô hình, và các chuyến đi khứ hồi qua internet công cộng sẽ biến một chính sách hoạt động thành một chính sách do dự. Suy luận từ xa khả thi cho các tác vụ nhặt và đặt chậm, không phải cho chuyển động phản ứng nhanh: nếu tác vụ cần sửa lỗi nhanh chóng, GPU phải nằm trên cùng mạng LAN với cánh tay.
Không liên quan trực tiếp đến quá trình huấn luyện, nhưng điều này kết thúc nhiều dự án SO-100 hơn bất kỳ siêu tham số nào. Các servo Feetech STS3215 trong SO-100 và SO-101 chạy ở 7.4 V; 12 V sẽ làm hỏng chúng. LeKiwi kết hợp một cánh tay 7.4 V với một đế 12 V, đây là cách mà giắc cắm nguồn sai tìm thấy ổ cắm sai.
Hai lộ trình đến cùng một điểm kiểm tra
Bạn sở hữu máy móc, môi trường và việc gỡ lỗi. Phụ thuộc đám mây duy nhất là việc tải xuống điểm kiểm tra cơ sở từ Hub. Đây là lộ trình phù hợp nếu bạn muốn sửa đổi chính sách, nếu dữ liệu không thể rời khỏi mạng của bạn, hoặc nếu card đang rảnh.
- Bạn kiểm soát CUDA wheel, driver, bản dựng ffmpeg và dataloader.
- Bạn có thể vá configuration_smolvla.py và huấn luyện lại ngay trong cùng buổi chiều.
- Bạn trả tiền điện và thời gian, không phải theo mỗi lần chạy, và tự gỡ lỗi TorchCodec.
pip install 'lerobot[smolvla,training,core_scripts]'
hf auth login
lerobot-train \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=${HF_USER}/so100_pick_place \
--batch_size=8 --steps=20000 \
--save_freq=2000 --seed=1000 \
--output_dir=outputs/train/smolvla_pick_place \
--job_name=smolvla_pick_place \
--policy.device=cuda --wandb.enable=trueCùng một lần chạy đằng sau một biểu mẫu: bạn chọn mô hình và tập dữ liệu, backend thuê GPU theo VRAM yêu cầu, chạy trình huấn luyện và ghi các điểm kiểm tra vào bộ nhớ đối tượng. Tập dữ liệu có thể đến từ một repo id của Hugging Face, thư mục, hoặc máy của bạn. Bắt đầu tại SmolVLA trên SO-100, hoặc ma trận trên trang huấn luyện.
| Trường | Mặc định nền tảng gửi cho SmolVLA | Ghi chú |
|---|---|---|
| kích thước lô | 2 | Thận trọng cho tầng 24 GB |
| tốc độ học | 1e-4 | Thiết lập sẵn của lerobot |
| số bước tối đa | 20000 | Lần chạy tham chiếu trong tài liệu LeRobot |
| tích lũy gradient | 8 | Hiển thị trong biểu mẫu, không áp dụng |
| các tùy chỉnh bổ sung | seed, logFreq | Seed giúp lần chạy có thể lặp lại |
- 2 đến 5 giờ trên tầng 24 GB, khoảng 1 đến 3 USD mỗi lần chạy.
- Các thao tác tương tự từ một terminal tại /cli và từ các tác nhân AI tại /mcp.
- Các pod suy luận mang theo một watchdog rảnh rỗi, vì vậy một pod bị quên sẽ tự hủy thay vì âm thầm tính phí.
- Chưa có cánh tay robot? /live phát trực tiếp một SO-100 vật lý mà bạn có thể điều khiển mà không cần đăng ký.
Một công việc bị kẹt trong hàng đợi là một triệu chứng của thị trường giao ngay, không phải lỗi: công việc huấn luyện bị kẹt trong hàng đợi. Từng bước một: huấn luyện chính sách đầu tiên của bạn và tài liệu huấn luyện.
Khi SmolVLA là lựa chọn sai lầm
Bài kiểm tra xem SmolVLA có phải là lần chạy đầu tiên phù hợp hay không không phải là liệu nó có hoạt động hay không, mà là liệu thất bại đó có cho bạn biết điều gì đó hay không. Đạt 60 hoặc 70 phần trăm và một mô hình lớn hơn là một khoản đầu tư tiếp theo hợp lý: dữ liệu mang tín hiệu. Đạt 10 phần trăm và một mô hình 3 B rất có thể cũng đạt 10 phần trăm, điều mà bạn vừa học được với ba đô la thay vì mười hai.

Đáng đọc trước khi chi tiêu thêm: Pi0.5 so với SmolVLA để có thêm dung lượng với cùng ý tưởng, và GR00T N1.7 so với SmolVLA cho lộ trình NVIDIA, cả hai đều ở cấp 80 GB với giá 4 đến 12 USD mỗi lần chạy. Cách khác, ACT là nền tảng cơ bản rẻ hơn: 80 triệu tham số, 20 ms mỗi bước hành động, không có điều kiện ngôn ngữ. Cả năm đều nằm trên trang chính sách; đấu trường có 85 mô hình và 332 kết quả benchmark.

Danh sách kiểm tra trước khi bạn mở rộng quy mô bất cứ điều gì
- `lr` đã đạt đến mức sàn 2.5e-6 chưa? Dưới 30000 bước, lerobot sẽ điều chỉnh lại độ suy giảm và thông báo khi khởi động; trên mức đó, hãy tự đặt `--policy.scheduler_decay_steps`.
- Có nhiều hơn một checkpoint, và các tập được giữ lại với `--dataset.eval_split` để tổn thất đánh giá có ý nghĩa.
- Chính sách có di chuyển chút nào không? Tổn thất giảm với cánh tay bất động có những nguyên nhân cụ thể: tổn thất giảm, chính sách không làm gì.
- Nó có tồn tại khi thay đổi cảnh không? Nếu không: chính sách chỉ hoạt động trong một thiết lập.
- Bạn đã ghi lại seed chưa? lerobot mặc định là 1000, vì vậy hai lần chạy không thay đổi vẫn có thể so sánh được.
- Chỉ sau đó: nhiều tập hơn, nhiều biến thể hơn, hoặc một mô hình lớn hơn. Theo thứ tự đó.
Để hiểu tại sao các mô hình này tồn tại và chúng làm gì với đầu vào ngôn ngữ, , là thông tin cơ bản; chạy lắp ráp thông qua đến lần chạy đầu tiên. Đối với checkpoint đã hoàn thành, ; nếu cánh tay không bao giờ xuất hiện, .
Huấn luyện SmolVLA trên cánh tay của riêng bạn
Chọn mô hình và cánh tay, hướng dẫn sẽ cung cấp cho bạn các giá trị mặc định chính xác, định dạng tập dữ liệu và chi phí cho mỗi lần chạy. SmolVLA nằm trong gói 24 GB với chi phí 1 đến 3 USD cho mỗi lần chạy.
Mở hướng dẫn huấn luyệnTôi có thực sự có thể tinh chỉnh SmolVLA trên RTX 4090 không?▾
Có. Hướng dẫn tính toán của LeRobot cho biết SmolVLA yêu cầu khoảng 10 đến 16 GB VRAM cao điểm ở batch 8 với AdamW và liệt kê các card tiêu dùng 24 GB là đủ thoải mái cho nó. Batch 64 trong ví dụ tài liệu được ghép nối với một A100 duy nhất. Bộ nhớ mở rộng gần như tuyến tính với batch, vì vậy hãy sử dụng 4 hoặc 8 và theo dõi mem_gb.
Tôi thực sự cần bao nhiêu tập (episode)?▾
AY-Robots đặt mức tối thiểu là 30. Tài liệu của LeRobot khuyến nghị khoảng 50 và báo cáo rằng 25 tập của cùng một nhiệm vụ hoạt động kém. Cấu trúc quan trọng hơn số lượng: bộ tham chiếu là 5 vị trí khối lập phương với 10 tập mỗi vị trí, và sự lặp lại đó là điều giúp tổng quát hóa.
Tài liệu nói batch 64, nền tảng gửi batch 2. Cái nào đúng?▾
Cả hai, tùy thuộc vào phần cứng khác nhau. Ví dụ trong tài liệu sử dụng batch 64 và ước tính khoảng 4 giờ cho 20000 bước trên một A100 duy nhất; điểm neo A100 40 GB của hướng dẫn tính toán là batch 16. Batch 2 là những gì AY-Robots gửi trên cấp 24 GB. Cục bộ, 4 đến 8 là mức trung bình, và phép tính epoch thay đổi theo đó.
SmolVLA hay ACT cho lần chạy đầu tiên trên SO-100?▾
ACT nếu nhiệm vụ là một chuyển động lặp đi lặp lại và bạn muốn vòng lặp nhanh nhất: 20 ms mỗi bước hành động, 80 M tham số, không có điều kiện ngôn ngữ. SmolVLA nếu bạn muốn điều kiện ngôn ngữ, nhiều chuỗi nhiệm vụ trong một checkpoint, và một nền tảng được huấn luyện trước. Cả hai đều nằm trên cấp 24 GB, vì vậy lựa chọn là nhiệm vụ, không phải ngân sách.
Tôi có phải đặt --policy.scheduler_decay_steps không?▾
Chỉ khi --steps trên 30000. SmolVLA đặt trước suy giảm cosine ở 30000 bước, và lerobot 0.6.1 tự động điều chỉnh lại cho một lần chạy ngắn hơn, ghi nhật ký "Auto-scaling LR scheduler" khi nó thực hiện. Nó không bao giờ điều chỉnh tăng lên, vì vậy --steps=100000 mặc định sẽ để 70000 bước cuối cùng ở mức sàn 2.5e-6.
Sources
- SmolVLA: Một mô hình Thị giác-Ngôn ngữ-Hành động cho Robot giá cả phải chăng và hiệu quả
- SmolVLA: Mô hình Thị giác-Ngôn ngữ-Hành động hiệu quả (blog Hugging Face)
- Thẻ mô hình lerobot/smolvla_base
- Tài liệu LeRobot: SmolVLA
- Tài liệu LeRobot: Hướng dẫn phần cứng tính toán cho huấn luyện LeRobot
- Tài liệu LeRobot: Cài đặt
- Tài liệu LeRobot: LeRobotDataset v3.0 và bộ chuyển đổi v2.1
- Tài liệu LeRobot: Suy luận không đồng bộ
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (chiến lược và suy luận RTC)
- lerobot v0.6.1: pyproject.toml (phần bổ sung và điểm vào bảng điều khiển)
- lerobot trên PyPI
- Tập dữ liệu lerobot/svla_so100_pickplace (50 tập, 19631 khung hình, v3.0)
Sources
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
- SmolVLA: Efficient Vision-Language-Action Model (Hugging Face blog)
- lerobot/smolvla_base model card
- LeRobot docs: SmolVLA
- LeRobot docs: Compute HW Guide for LeRobot Training
- LeRobot docs: Installation
- LeRobot docs: LeRobotDataset v3.0 and the v2.1 converter
- LeRobot docs: Asynchronous Inference
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (strategies and RTC inference)
- lerobot v0.6.1: pyproject.toml (extras and console entry points)
- lerobot on PyPI
- lerobot/svla_so100_pickplace dataset (50 episodes, 19631 frames, v3.0)
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started