Trang mô hình SmolVLA trên AY-Robots hiển thị số lượng tham số, cấp độ GPU, độ trễ suy luận trên mỗi bước hành động và số lượng tập tối thiểu
SmolVLALeRobotHuấn luyện VLATinh chỉnhSO-100

Cách huấn luyện SmolVLA trên GPU 24 GB (lerobot 0.6.1)

AY-Robots ResearchAugust 23, 202617 phút đọc

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.7Pi0.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ínhGiá trịNguồn
Tổng số tham sốabout 450 Mpaper
Chuyên gia hành độngabout 100 M, flow matchingpaper
Kiến trúc cốt lõi VLMHuggingFaceTB/SmolVLM2-500M-Video-Instructvlm_model_name
Các lớp VLM được sử dụngfirst 16 of the language modelnum_vlm_layers = 16
Token thị giác mỗi khung hình64, pixel shuffle, no tilingpaper
Huấn luyện trước481 community datasets, 22.9 K episodes, 10.6 M frames; 200000 steps at global batch 256 on 4 GPUspaper

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 SmolVLAso sánh ACT với SmolVLA.

Phiên bản trung thực của tuyên bố về kích thước

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ómChính sáchVRAM tối đa (batch 8, AdamW)GPU khởi đầu
BC nhẹact, vqbet, tdmpcabout 2 to 6 GBRTX 3060, L4
Khuếch tándiffusion, multi_task_ditabout 8 to 14 GBRTX 4070+, L4
VLA nhỏsmolvlaabout 10 to 16 GBRTX 4080+, L4, A10G
VLA lớnpi0, pi0_fast, pi05, xvla, wall_xabout 24 to 40 GBA100 40 GB+
Đa phương thứcgroot, eo1about 24 to 40 GBA100 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.

Bảng chi phí AY-Robots: thẻ cho mỗi chính sách, thời gian chạy, giá mỗi lần chạy, số tập cần thiết
SmolVLA và ACT nằm trên hàng 24 GB, ba mô hình 3 B nằm trên hàng 80 GB.
Bắt đầu với SmolVLA thay vì mô hình 3 B
Những gì bạn nhận được
  • 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.
Những gì bạn phải từ bỏ
  • 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.
Cái bẫy tập dữ liệu làm mất một ngày

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.

bash
# 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_place
Bộ chuyển đổi được tích hợp sẵn trong lerobot, vì vậy không cần cài đặt thêm gì. Không có bộ chuyển đổi theo hướng ngược lại trong gói.

Tì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

bash
# 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-info
Đường dẫn PyPI. Để vá lỗi trình huấn luyện, hãy sao chép kho lưu trữ và sử dụng `pip install -e ".[smolvla,training]"` thay thế.

Bả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` và `policy.type` không phải là cùng một cờ

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

  1. 1
    Xá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.

    bash
    hf auth login
  2. 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.

    bash
    lerobot-train --help
  3. 3
    Bắ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.

    bash
    lerobot-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. 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
  5. 5
    Thu 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
  6. 6
    Tiế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.

    bash
    lerobot-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ăngTrên 24 GB
--batch_sizeSố mẫu mỗi bước, xấp xỉ tuyến tính với VRAM4 to 8
--stepsTổng số bước tối ưu hóa20000 lần chạy đầu tiên
--policy.scheduler_decay_stepsĐộ dài suy giảm cosine, cài đặt sẵn 30000Chỉ 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 dtypetrue khi bộ nhớ hạn chế
--num_workersSố tiến trình Dataloader, mặc định 4Tăng cho đến khi data_s ngừng tăng
--dataset.eval_splitTỷ lệ các tập được giữ lại cho mỗi tác vụ0.1, with --eval_steps
--policy.freeze_vision_encoderGiữ cho tháp thị giác đóng băngtrue trên 24 GB
--policy.train_expert_onlyChỉ chuyên gia ~100 M nhận gradienttrue lần đầu
Lịch trình: những gì 0.6.1 xử lý và những gì nó không xử lý

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 đặtMặc định trong lerobot 0.6.1Được định nghĩa trong
chunk_size / n_action_steps50 / 50SmolVLAConfig
num_steps (flow matching denoise)10SmolVLAConfig
optimizer_lr1e-4SmolVLAConfig
scheduler_warmup_steps1000SmolVLAConfig
scheduler_decay_steps30000SmolVLAConfig
scheduler_decay_lr2.5e-6SmolVLAConfig
freeze_vision_encodertrueSmolVLAConfig
train_expert_onlytrueSmolVLAConfig
batch_size / steps8 / 100000TrainPipelineConfig
seed / save_freq / num_workers1000 / 20000 / 4TrainPipelineConfig

Hai dòng khiến mọi người ngạc nhiên là freeze_vision_encodertrain_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ớ.

Nút điều chỉnh bộ nhớ không tồn tại

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ậpPolicyThời gian thực tế
Một L4 / A10G (24 GB)smolvla4khoảng 3 đến 6 giờ
Một A100 40 GBsmolvla16khoảng 1 đến 2 giờ
4 x H100 80 GB với acceleratesmolvla32khoảng 1 đến 2 giờ
Một RTX 4090 / RTX 3090 (24 GB)act8khoảng 30 đến 60 phút
Thực hiện phép tính epoch trước khi chọn --steps

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

bash
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_place
Chuỗi tác vụ phải khớp với chuỗi bạn đã ghi lại. Mô hình được điều kiện hóa theo văn bản đó, vì vậy một cách diễn giải khác sẽ là một hướng dẫn khác.

245 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 s9.70 s
Chu kỳ nhặt và đặt trong một khoảng thời gian cố định919
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.

Suy luận phải nằm cạnh các servo

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.

7.4 V, không phải 12 V

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-100SO-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.
bash
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=true
Toàn bộ lộ trình thủ công trong một khối, lerobot 0.6.1.

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.

Ma trận huấn luyện AY-Robots: năm chính sách theo hàng, bốn cánh tay robot theo cột
Mỗi ô là một hướng dẫn riêng. SmolVLA có một ô cho mỗi trong bốn cánh tay.

Đá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.

So sánh chính sách của AY-Robots: tham số, cấp GPU, độ trễ, số tập tối thiểu
Bốn con số quyết định một lần chạy.

Danh sách kiểm tra trước khi bạn mở rộng quy mô bất cứ điều gì

  1. `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`.
  2. 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.
  3. 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ì.
  4. 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.
  5. 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.
  6. 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ện
Tô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.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started