Matriks pelatihan AY-Robots dengan lima baris kebijakan dan empat kolom lengan robot, setiap sel terhubung ke panduan pelatihan model dan lengan tertentu
ACTSO-100lerobotpembelajaran imitasipelatihan kebijakan

Cara Melatih ACT pada SO-100 dari Awal

AY-Robots ResearchAugust 23, 202616 menit baca

Latih Action Chunking Transformer dari awal pada SO-100 dengan lerobot: konfigurasi act, chunk_size dan n_action_steps, jadwal 100000 langkah, inferensi 20 ms.

ACT adalah pengecualian di antara kebijakan SO-100. GR00T N1.7 dan N1.5 dimulai dari nvidia/GR00T-N1.7-3B dan nvidia/GR00T-N1.5-3B, Pi0.5 dari lerobot/pi05_base. ACT dimulai dari nol: tidak ada checkpoint dasar, karena ini bukan model dasar. Ini adalah transformer dengan sekitar 80 juta parameter yang Anda latih dari awal untuk satu tugas, pada lengan Anda, di bawah pencahayaan Anda.

Itulah mengapa ia menjalankan langkah kontrol dalam 20 ms di mana VLA 3 miliar parameter membutuhkan 152 hingga 485 ms, dan biayanya 1 hingga 3 USD per jalankan, bukan 4 hingga 12. Panduan ini menelusuri rute manual dengan lerobot pada SO-100: perekaman, konfigurasi act, apa yang dikendalikan oleh chunk_size dan n_action_steps, jadwal 100000 langkah, dan rollout. Kemudian pekerjaan yang sama pada AY-Robots, termasuk di mana platform tidak membantu.

Yang perlu Anda ketahui

  • ACT dilatih dari awal: tidak ada model dasar, tidak ada pra-pelatihan, tidak ada masukan bahasa. Satu checkpoint, satu tugas.
  • Makalahnya: sekitar 80 juta parameter, sekitar 5 jam pada RTX 2080 Ti 11 GB, inferensi 0,01 detik.
  • Default lerobot: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 langkah, seed 1000.
  • Pada AY-Robots: 20 ms per langkah, yang tercepat dari kelimanya. Minimum 50 episode, LeRobot v3.0, kartu 24 GB, 1 hingga 3 USD per jalankan.
  • Ia menang pada tugas yang pernah dilihatnya, dan kalah saat Anda menginginkan pengkondisian bahasa.
Versi yang dijelaskan ini

Diperiksa 23 Agustus 2026 terhadap lerobot 0.6.x: pyproject.toml pada main membaca version = "0.6.2", tag terbaru v0.6.1, 3 Agustus 2026. Tutorial yang dimulai dengan python lerobot/scripts/train.py mendahului titik masuk konsol lerobot-train, lerobot-record, dan lerobot-rollout.

Apa sebenarnya ACT itu

Action Chunking with Transformers berasal dari makalah ALOHA, Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware, oleh Zhao, Kumar, Levine, dan Finn, arXiv, 23 April 2023. Rig merekam pada 50 Hz dengan empat webcam yang mengalirkan 480x640 pada 30 fps: dua pada gripper, satu di atas, satu di depan. Abstrak mengklaim enam keterampilan dengan tingkat keberhasilan 80 hingga 90 persen, di antaranya membuka cangkir bumbu transparan dan memasukkan baterai, dari 10 menit demonstrasi.

Bagian utama lebih berguna saat merencanakan sesi perekaman: 50 demonstrasi per tugas, kecuali Thread Velcro pada 100, yaitu 10 hingga 20 menit data dan 30 hingga 60 menit waktu nyata setelah reset dihitung. Keberhasilan juga tidak seragam: Thread Velcro berakhir pada 20 persen, Put On Shoe pada 92, Cup Open 84, Prep Tape 64.

HiperparameterALOHA paper, Table IIIlerobot on main
laju pembelajaran1e-5optimizer_lr = 1e-5
ukuran batch8batch_size = 8, in TrainPipelineConfig not ACTConfig
lapisan encoder / decoder4 / 7n_encoder_layers = 4 / n_decoder_layers = 1
ukuran chunk k100chunk_size = 100
dimensi laten ztidak ada; Gbr. 11 menunjukkan proyeksi 32 ke 512latent_dim = 32
ensembling temporaltidak ada; --temporal_agg dalam kode referensitemporal_ensemble_coeff = None
Baris lapisan dekoder bukan salah ketik

Makalah tersebut mencantumkan 7 lapisan dekoder, lerobot mengirimkan 1, secara sengaja. Komentar di configuration_act.py menyatakan bahwa implementasi aslinya memiliki bug yang berarti hanya lapisan pertama yang digunakan, mengutip masalah 25 di tonyzhaozh/act: kepala aksi membaca hs[0], sehingga ketujuh lapisan berjalan tetapi hanya keluaran pertama yang mencapai prediksi. Masalah tersebut terbuka dan belum terjawab sejak 23 April 2024. lerobot mencocokkan perilaku yang menghasilkan hasil yang dipublikasikan, bukan angka yang tercetak. Tingkatkan --policy.n_decoder_layers dan Anda melatih model yang tidak pernah dievaluasi oleh makalah tersebut.

Pengelompokan aksi adalah inti idenya

Kloning perilaku biasa memetakan satu observasi ke satu aksi, dan kesalahan menumpuk: penyimpangan menempatkan lengan di luar distribusi, menghasilkan aksi yang lebih buruk, dan tiga puluh langkah kemudian gripper tidak berada di dekat objek. Pengelompokan aksi memprediksi k aksi sekaligus dan mengeksekusinya, mengurangi horizon efektif dengan faktor k. Ini juga menangani gangguan khusus data manusia: teleoperator berhenti sejenak, dan Markovian satu langkah kebijakan tidak dapat memodelkan jeda yang bergantung pada apa yang terjadi sebelumnya.

Makalah tersebut menguji k daripada menegaskannya. Dengan temporal ensembling dimatikan, dirata-ratakan di atas empat pengaturan, keberhasilan meningkat dari 1 persen pada k = 1 menjadi 44 persen pada k = 100, kemudian melandai pada 200 dan 400 saat kebijakan mendekati kontrol loop terbuka. Kurva itulah mengapa nilai default adalah 100.

  • chunk_size: berapa banyak aksi masa depan yang diprediksi oleh dekoder per forward pass. Default 100.
  • n_action_steps: berapa banyak dari aksi tersebut yang Anda eksekusi sebelum melakukan kueri lagi. Default 100, sehingga lerobot menjalankan seluruh chunk secara open loop.
  • lerobot memvalidasi n_action_steps <= chunk_size dan akan memunculkan ValueError jika Anda mengaturnya terbalik.

Yang penting secara operasional adalah chunk_size dibagi dengan frame rate. Pada 30 fps yang digunakan contoh SO-100 lerobot, sebuah chunk berisi 100 aksi mewakili sekitar 3,3 detik dari satu observasi. Jika tugas memerlukan koreksi dalam jendela waktu tersebut, turunkan n_action_steps, bukan chunk_size: Anda tetap mempertahankan prediksi panjang dan mengobservasi ulang lebih sering.

bash
# predict 100 actions, re-query after 25 of them (about 0.8 s at 30 fps)
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --policy.chunk_size=100 \
  --policy.n_action_steps=25 \
  --policy.device=cuda
Memperpendek bagian chunk yang dieksekusi tanpa memperpendek prediksi.
Jebakan ensembling temporal

Atur --policy.temporal_ensemble_coeff dan lerobot akan membutuhkan n_action_steps = 1, memunculkan NotImplementedError jika tidak. Ensembling melakukan kueri kebijakan setiap timestep dan memadukan prediksi yang tumpang tindih untuk timestep tersebut dengan bobot w_i = exp(-m * i), di mana yang tertua mendapatkan w_0. Makalah ini menempatkannya pada 3,3 persen untuk ACT: nyata tetapi sederhana, dan ini melipatgandakan jumlah inferensi dengan panjang chunk. Terjangkau pada 20 ms per langkah, tidak pada 485 ms. Lihat inference latency.

Ketika ACT mengungguli model dasar

Lima kebijakan yang dapat dilatih secara berdampingan, dengan angka-angka yang diukur dan digunakan AY-Robots untuk menentukan ukuran GPU yang disewanya.

KebijakanKeluargaParameterPer langkahTingkat GPUEpisode minimumDataset
ACTTransformer chunking, dari awal~80 M20 msRTX 4090 / 24 GB50LeRobot v3.0
SmolVLAVLA Ringkas~450 M245 msRTX 4090 / 24 GB30LeRobot v3.0
GR00T N1.7Dasar VLA, kepala difusi~3 B (~40 M trained)152 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
GR00T N1.5Dasar VLA, pendahulu~3 B165 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
Pi0.5VLA pencocokan aliran, lihat pencocokan aliran~3 B, PaliGemma backbone485 msA100 / H100 80 GB50LeRobot v3.0
The AY-Robots policies page showing a comparison table of ACT, SmolVLA, GR00T N1.5, GR00T N1.7 and Pi0.5 with parameter counts, GPU requirements, inference latency and minimum episode counts
Tabel /policies: ACT memiliki jumlah parameter terkecil dan waktu langkah terpendek.
Melatih ACT dari awal
Keuntungan
  • 20 ms per langkah aksi, tercepat dari lima, pada kartu 24 GB bukan A100.
  • 1 hingga 3 USD per eksekusi dibandingkan 4 hingga 12 untuk kelas 3 B.
  • Presisi pada pekerjaan yang kaya kontak yang pernah dilihatnya: 88 dan 96 persen pada Slide Ziploc dan Slot Battery, di mana metode sebelumnya tidak pernah melewati tahap satu.
Kompromi
  • Tanpa pengkondisian bahasa: string tugas diabaikan, sehingga satu checkpoint adalah satu tugas.
  • Tanpa prior semantik: semua yang diketahuinya berasal dari 50 episode Anda.
  • Generalisasi sempit: pindahkan kamera dan Anda harus melatih ulang.
  • Gagal secara diam-diam: loss turun, lengan tidak melakukan apa-apa, log tidak mengatakan apa-apa.
  • Keunggulan kecepatan hanya membantu jika inferensi berada di dekat servo.

Pilih ACT ketika tugas dan adegan tetap dan gerakan harus cepat dan presisi. Pilih ketika satu checkpoint harus mencakup beberapa instruksi. Dua halaman membahas keputusan secara langsung: dan . Untuk benchmark yang dipublikasikan, menautkan setiap angka ke sumbernya.

Apa yang Anda butuhkan sebelum memulai

Satu lengan pengikut, satu lengan pemimpin untuk , setidaknya satu kamera, GPU 24 GB. ACT hanya membaca gambar dan posisi sendi. Dua kamera adalah titik terbaik: tampilan depan tetap untuk lokasi objek, kamera pergelangan tangan untuk apa yang akan disentuh oleh , seperti pada ALOHA.

LenganServoTeganganBiaya suku cadangStatus
SO-100Feetech STS32157.4 V~110 to 150 EURDukungan penuh, lengan referensi
SO-101Feetech STS32157.4 V~130 to 170 EURDukungan penuh
Koch v1.1Dynamixel XL330 / XL4305 V and 12 V rails~250 to 350 EURKompatibel
LeKiwiFeetech STS3215 (arm)7.4 V arm, 12 V base~400 to 500 EURKompatibel
7.4 V, bukan 12 V

SO-100 dan SO-101 menggunakan servo Feetech STS3215 pada rel 7.4 V. Memberi mereka 12 V akan merusaknya, cukup tenang sehingga orang-orang menyalahkan perangkat lunak terlebih dahulu, dan catu daya Koch 12 V secara fisik cocok dengan papan SO-100. Periksa labelnya. Gejala: servo tidak merespons, lengan berkedut lalu melorot. Juga SO-100 vs SO-101.

Dari lengan kosong hingga kumpulan data terekam

Alur di bawah ini adalah lerobot 0.6.x. Lewati jika Anda memiliki lengan yang sudah dikalibrasi dan kumpulan data. Jika tidak, panduan memulai SO-100 mencakup perakitan, panduan perekaman mencakup pengambilan dan dokumen kumpulan data formatnya.

  1. 1
    Instal lerobot dengan ekstensi yang tepat

    Perekaman membutuhkan core_scripts, pelatihan training, servo Feetech feetech. Python 3.12+.

    bash
    conda create -y -n lerobot python=3.12
    conda activate lerobot
    conda install ffmpeg -c conda-forge
    
    pip install 'lerobot[core_scripts,training,feetech]'
    lerobot-info
  2. 2
    Temukan port USB setiap lengan

    Jalankan dengan kedua lengan terpasang, cabut salah satunya saat diminta. Di Linux, Anda mungkin perlu membuka izin node.

    bash
    lerobot-find-port
    # on Linux, if the port exists but is unreadable:
    sudo chmod 666 /dev/ttyACM0
  3. 3
    Atur ID motor dan baudrate

    Pada SO-100, ini terjadi sebelum perakitan: tidak seperti SO-101, konektor tidak dapat dijangkau setelah dirakit. Skrip akan memindai bus satu motor pada satu waktu dari gripper, menulis ID ke EEPROM.

    bash
    lerobot-setup-motors \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0
    
    lerobot-setup-motors \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1
  4. 4
    Kalibrasi kedua lengan

    Atur setiap sendi ke tengah jangkauannya, tekan Enter, lalu sapukan masing-masing sendi melalui seluruh jangkauannya. Kalibrasi memungkinkan kebijakan yang dilatih pada satu lengan berjalan pada lengan lainnya. Gunakan kembali id yang sama.

    bash
    lerobot-calibrate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower
    
    lerobot-calibrate \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader
  5. 5
    Teleoperasikan sekali dengan kamera menyala

    Aturan praktis lerobot: Anda harus dapat melakukan tugas hanya dengan melihat gambar kamera. Jika tidak bisa, ACT juga tidak bisa. Ini menangkap lebih banyak dataset yang buruk daripada debugging di kemudian hari.

    bash
    lerobot-teleoperate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --display_data=true
  6. 6
    Rekam 50 episode

    50 adalah minimum AY-Robots dan yang digunakan ALOHA per tugas. lerobot menyarankan 10 per lokasi objek, kamera tetap, genggaman konsisten. n mengakhiri episode, r merekam ulang, q berhenti dan mengkodekan.

    bash
    HF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}')
    
    lerobot-record \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --dataset.repo_id=${HF_USER}/so100_cube \
        --dataset.num_episodes=50 \
        --dataset.single_task="Grab the black cube and put it in the bin" \
        --display_data=true
Halaman tutorial perekaman AY-Robots yang menjelaskan cara menangkap dataset format LeRobot dari sesi teleoperasi
Tutorial perekaman. Klien desktop menulis tata letak yang sama dengan lerobot-record.
Jebakan yang menghabiskan waktu sehari: dataset yang tidak konsisten

ACT tidak memiliki prioritas untuk dijadikan acuan, sehingga setiap inkonsistensi menjadi permanen. Tiga yang paling merugikan: kamera yang sedikit bergeser antara episode 20 dan 21, cahaya yang berubah karena Anda merekam separuh set di sore hari, genggaman yang dilakukan dengan dua cara. Masing-masing menghasilkan kurva kerugian yang tampak sempurna dan lengan yang bergerak ke tempat yang salah. Lihat kerugian menurun, kebijakan tidak melakukan apa-apa, kebijakan hanya berfungsi dalam satu pengaturan dan mengumpulkan data pelatihan berkualitas tinggi.

Sebelum pelatihan, putar ulang setidaknya lima episode. Format dataset LeRobot menyimpan aliran kamera, status sendi, dan tindakan per episode, dan pemutaran ulang mendorong tindakan tersebut kembali ke lengan. Jika pemutaran ulang tidak melakukan tugas, data tidak mengandungnya dan pelatihan tidak akan menciptakannya.

bash
lerobot-replay \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower \
    --dataset.repo_id=${HF_USER}/so100_cube \
    --dataset.episode=0
Memutar ulang episode 0. Jika ini gagal, hentikan dan rekam ulang.

Melatih kebijakan ACT

Ini adalah seluruh perintah. Semua yang spesifik untuk ACT sudah menjadi default, itulah mengapa halaman ACT lerobot menyarankan untuk memulai dengan mereka.

bash
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --output_dir=outputs/train/act_so100_cube \
  --job_name=act_so100_cube \
  --policy.device=cuda \
  --wandb.enable=true \
  --policy.repo_id=${HF_USER}/act_so100_cube
Perintah pelatihan dari dokumentasi lerobot 0.6.x, pada dataset SO-100.

--policy.type=act memuat ACTConfig, yang beradaptasi dengan berapa pun jumlah motor dan kamera yang direkam oleh dataset Anda, sehingga Anda tidak perlu mendeklarasikan bentuk observasi. --wandb.enable=true bersifat opsional dan sepadan: kurva kerugian adalah satu-satunya sinyal murah dalam proses 100000 langkah. Jadwal berasal dari konfigurasi pelatihan lerobot, bukan ACTConfig: 100000 langkah, batch 8, seed 1000, sebuah checkpoint setiap 20000 langkah, pencatatan setiap 200.

Proses penuh menyisakan lima direktori checkpoint, 020000 hingga 100000, ditambah sebuah last symlink. Simpan semuanya: kebijakan terbaik seringkali bukan yang terakhir.

PengaturanDefault lerobotFormulir ACT AY-RobotsKomentar
ukuran batch88Turunkan terlebih dahulu jika Anda mencapai batas VRAM.
laju pembelajaran1e-51e-5Sama seperti makalah ALOHA.
langkah maksimum100000100000Kira-kira di mana set 50 episode berhenti meningkat.
akumulasi gradien11, tidak berlakuUbah ukuran batch sebagai gantinya.
seed1000tereksposTitik masuk tyro GR00T tidak memiliki seed; proses ACT adalah yang dapat direproduksi.
chunk_size / n_action_steps100 / 100100 / 100, dapat dieditHorizon prediksi dan eksekusi. Turunkan yang kedua, bukan yang pertama.
frekuensi checkpoint20000tidak terekspossaveSteps adalah knob GR00T di sini.
Kekurangan memori adalah masalah ukuran batch, bukan masalah kartu

ACT dengan ukuran batch 8 dan dua kamera 640x480 muat dengan nyaman di 24 GB. Ini berhenti muat ketika orang menaikkan ukuran batch untuk kecepatan, atau memberinya frame 1920x1080 yang ditunjukkan oleh salah satu contoh rekaman lerobot. Dua backbone ResNet-18 pada 1080p memiliki profil memori yang sangat berbeda. Turunkan --batch_size menjadi 4 sebelum menyewa kartu yang lebih besar. Lihat kekurangan memori dalam pelatihan.

Durasi: sekitar 5 jam pada RTX 2080 Ti 11 GB dalam makalah, beberapa jam untuk 100 ribu langkah per halaman ACT lerobot, 2 hingga 5 jam pada tingkatan AY-Robots 24 GB. Jangan dipersingkat. README repo referensi menyatakan bahwa kebijakan yang tersendat-sendat atau berhenti sejenak biasanya hanya membutuhkan lebih banyak pelatihan, karena keberhasilan dan kehalusan terus meningkat setelah kerugian mencapai dataran tinggi: untuk data dunia nyata, dibutuhkan setidaknya 5000 epoch, atau 3 hingga 4 kali durasi lagi setelah dataran tinggi.

bash
lerobot-train \
  --config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
  --resume=true
Melanjutkan eksekusi yang terinterupsi dari checkpoint terakhirnya.

Menjalankan kebijakan yang telah dilatih pada lengan robot

Penerapan menggunakan lerobot-rollout. Kunci kamera harus sesuai dengan yang direkam: kebijakan yang dilatih pada front dan wrist tidak akan menerima cam0 dan cam1, dan rename_map tidak membantu, karena membutuhkan checkpoint yang sudah dilatih sebelumnya. String tugas dapat dihilangkan; contoh lerobot sendiri menandainya dapat dilewati untuk ACT.

bash
lerobot-rollout \
  --strategy.type=base \
  --policy.path=${HF_USER}/act_so100_cube \
  --robot.type=so100_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_follower \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
  --display_data=true \
  --duration=60
Rollout otonom tanpa perekaman. Gunakan --strategy.type=sentry untuk merekam episode evaluasi.
Perintah ini baru-baru ini diganti namanya, jadi tutorial lama tidak sesuai

Evaluasi dulunya dijalankan melalui lerobot-record --policy.path=.... Dalam 0.6.x, itu adalah lerobot-rollout dengan pemilih --strategy.type: base, sentry (perekaman dengan unggah otomatis), highlight (buffer cincin disimpan dengan penekanan tombol), dagger (manusia dalam lingkaran), dan episodic. Per 23 Agustus 2026, halaman dokumentasi ACT masih menyatakan "menggunakan perintah lerobot-record" tepat di atas blok yang menjalankan lerobot-rollout. Ikuti perintahnya, bukan kalimatnya.

Untuk menyematkan checkpoint daripada model akhir, tambahkan --policy.pretrained_revision. Itu membutuhkan eksekusi yang dimulai dengan --save_checkpoint_to_hub=true, nonaktif secara default: tanpanya lerobot mendorong model akhir dan tidak ada yang lain. Dengan itu, setiap checkpoint ditandai dengan langkah yang diisi nol, jadi --policy.pretrained_revision=060000 memulihkan yang langkah 60000. Membandingkannya dengan 100000 pada lengan robot nyata adalah eksperimen termurah yang tersedia.

Dua jalur ke checkpoint yang sama

Semua di atas adalah jalur manual dan berhasil. Jalur platform menukar kontrol dengan tidak perlu memiliki GPU atau lingkungan Python.

  1. Instal lerobot 0.6.x dengan core_scripts, training, feetech, ffmpeg.
  2. Temukan port, atur ID motor, kalibrasi kedua lengan, rekam 50 episode.
  3. Putar ulang beberapa episode untuk mengonfirmasi data berisi tugas tersebut.
  4. Sewa atau miliki GPU 24 GB, cocokkan CUDA dan PyTorch, jalankan lerobot-train --policy.type=act.
  5. Tunggu beberapa jam, lalu jalankan lerobot-rollout di mesin pada lengan robot.
bash
# the two commands that matter, end to end
lerobot-record --robot.type=so100_follower --robot.port=/dev/ttyACM0 \
  --teleop.type=so100_leader --teleop.port=/dev/ttyACM1 \
  --dataset.repo_id=${HF_USER}/so100_cube --dataset.num_episodes=50 \
  --dataset.single_task="Grab the black cube"

lerobot-train --dataset.repo_id=${HF_USER}/so100_cube --policy.type=act \
  --output_dir=outputs/train/act_so100_cube --policy.device=cuda
Apa yang diberikan jalur ini kepada Anda

Kontrol penuh: edit configuration_act.py, tambahkan kamera, fork trainer. Untuk penelitian daripada pengiriman tugas, platform adalah gangguan.

Matriks pelatihan AY-Robots dengan lima baris kebijakan dan empat kolom lengan robot, di mana setiap sel terhubung ke panduan pelatihan spesifik untuk kombinasi model dan lengan tersebut
Matriks di /train. Baris ACT terhadap kolom SO-100 adalah panduan artikel ini.

Apa yang sebenarnya salah

Hampir tidak ada kesulitan dalam perintah pelatihan. Kesulitan ada pada hal-hal di sekitarnya, diurutkan berdasarkan seberapa sering mereka menjadi masalah pertama kali.

GejalaPenyebab umumHalaman
lerobot-find-port tidak menampilkan apa punDriver, kabel, atau izin nodelengan tidak terdeteksi
Kamera hilang saat waktu perekamanIndeks berubah saat reboot, atau dua kamera pada satu pengontrol USBkamera tidak terdeteksi
Pelatihan menolak datasetACT membutuhkan v3.0, GR00T membutuhkan v2.1dataset ditolak sebagai v3
CUDA kehabisan memoriUkuran batch ditingkatkan, atau frame 1080p alih-alih 480pkehabisan memori dalam pelatihan
Loss terlihat bagus, lengan tidak melakukan apa-apaData tidak memiliki tugas, atau kamera bergerakloss turun, kebijakan tidak melakukan apa-apa
Gerakan tersentak-sentak atau jeda di tengah episodeKurang terlatih, macet di batas chunk, atau panggilan inferensi yang habis waktukebijakan membeku di tengah gerakan

Dua baris patut ditekankan. ACT melatih pada LeRobot v3.0 sementara loader GR00T mengalami crash padanya dan membutuhkan v2.1, sehingga dataset yang melatih ACT dapat menggagalkan eksekusi GR00T. Dan baris terakhir memiliki dua perbaikan: penulis ACT menjawab gerakan tersentak-sentak dengan lebih banyak pelatihan, sementara dengan n_action_steps pada 100, kemacetan yang sebenarnya terjadi pada batas chunk, jeda yang terlihat setiap 3.3 detik pada 30 fps. Dua hal lagi yang perlu diketahui: satu sendi mati biasanya adalah id servo yang tidak pernah ditulis, dan gripper yang mendekat tetapi tidak pernah menutup berarti jangkauan gripper terlalu kecil dalam demonstrasi. Indeks lengkap: halaman mode kegagalan.

Berapa biaya satu eksekusi

TingkatModelWaktu jalanHarga per jamBiaya per jalan
RTX 4090 / 24 GBACT, SmolVLA2 to 5 hours0.30 to 0.60 USDabout 1 to 3 USD
A100 80 GB / H100GR00T N1.7, GR00T N1.5, Pi0.53 to 6 hours1.20 to 2.00 USDabout 4 to 12 USD

Ini adalah argumen untuk memulai dengan ACT meskipun Anda menginginkan VLA nanti. Sebuah percobaan ACT yang gagal hanya seharga secangkir kopi dan memberi tahu Anda dalam beberapa jam apakah dataset Anda berisi tugas tersebut. Sebuah percobaan GR00T yang gagal menghabiskan biaya empat kali lipat untuk pelajaran yang sama. Pindah ke GR00T N1.7 atau SmolVLA setelahnya adalah perubahan bentuk, bukan pembangunan ulang. Latar belakang: model visi-bahasa-aksi, panduan lengkap SO-100, latih kebijakan pertama Anda dan pembelajaran imitasi. Tidak punya lengan? Halaman langsung menyiarkan SO-100 sungguhan untuk dikendalikan tanpa perlu mendaftar.

Latih ACT di SO-100 Anda

Panduan untuk kombinasi persis ini: default, tingkat GPU, dan biaya setiap percobaan. Pilih dataset, backend menyewa kartu dan menulis checkpoint.

Buka panduan pelatihan
Apakah ada model ACT yang sudah dilatih sebelumnya yang bisa saya fine-tune?

Tidak. ACT tidak memiliki model dasar; ia hanya ada setelah Anda melatihnya. Itu bukan celah dalam perkakas, itulah ACT: makalah ini melatih kebijakan dari awal untuk setiap tugas. Untuk checkpoint vendor, gunakan GR00T N1.7 atau Pi0.5.

Berapa banyak episode yang sebenarnya saya butuhkan?

50: apa yang direkam ALOHA per tugas (100 untuk Thread Velcro, yang paling sulit) dan minimum AY-Robots. lerobot menyarankan sekitar 10 per lokasi objek, kamera tetap, genggaman konsisten. Lima puluh episode bersih lebih baik daripada seratus episode di mana kamera bergerak.

Haruskah saya mengubah chunk_size dari 100?

Biasanya tidak. Ablasi naik dari 1 persen pada k = 1 menjadi 44 persen pada k = 100 dan melandai setelahnya, jadi 100 berada di dekat puncak. Jika lengan berkomitmen terlalu lama, turunkan n_action_steps sebagai gantinya: pada 30 fps, 25 kueri ulang setiap 0.8 detik.

Berapa lama waktu yang dibutuhkan untuk satu sesi pelatihan, dan bisakah saya menghentikannya lebih awal?

Dua hingga lima jam pada kartu 24 GB untuk 100000 langkah. Checkpoint disimpan setiap 20000 langkah dan --resume=true melanjutkan sesi, jadi menghentikan lebih awal aman. Hanya saja jangan pada bagian datar pertama: kehalusan meningkat setelah kerugian mencapai dataran.

Kerugian menurun tetapi lengan masih gagal. Apa selanjutnya?

Hampir selalu datasetnya. Putar ulang episode yang direkam pada lengan: jika pemutaran ulang tidak melakukan tugas, data tidak mengandungnya. Kemudian periksa apakah ada yang bergerak, terutama kamera. ACT tidak memiliki prior, jadi dorongan pada episode 21 bersifat permanen.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started