
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.
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.
| Hiperparameter | ALOHA paper, Table III | lerobot on main |
|---|---|---|
| laju pembelajaran | 1e-5 | optimizer_lr = 1e-5 |
| ukuran batch | 8 | batch_size = 8, in TrainPipelineConfig not ACTConfig |
| lapisan encoder / decoder | 4 / 7 | n_encoder_layers = 4 / n_decoder_layers = 1 |
| ukuran chunk k | 100 | chunk_size = 100 |
| dimensi laten z | tidak ada; Gbr. 11 menunjukkan proyeksi 32 ke 512 | latent_dim = 32 |
| ensembling temporal | tidak ada; --temporal_agg dalam kode referensi | temporal_ensemble_coeff = None |
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_sizedan akan memunculkanValueErrorjika 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.
# 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=cudaAtur --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.
| Kebijakan | Keluarga | Parameter | Per langkah | Tingkat GPU | Episode minimum | Dataset |
|---|---|---|---|---|---|---|
| ACT | Transformer chunking, dari awal | ~80 M | 20 ms | RTX 4090 / 24 GB | 50 | LeRobot v3.0 |
| SmolVLA | VLA Ringkas | ~450 M | 245 ms | RTX 4090 / 24 GB | 30 | LeRobot v3.0 |
| GR00T N1.7 | Dasar VLA, kepala difusi | ~3 B (~40 M trained) | 152 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| GR00T N1.5 | Dasar VLA, pendahulu | ~3 B | 165 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| Pi0.5 | VLA pencocokan aliran, lihat pencocokan aliran | ~3 B, PaliGemma backbone | 485 ms | A100 / H100 80 GB | 50 | LeRobot v3.0 |

- 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.
- 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.
| Lengan | Servo | Tegangan | Biaya suku cadang | Status |
|---|---|---|---|---|
| SO-100 | Feetech STS3215 | 7.4 V | ~110 to 150 EUR | Dukungan penuh, lengan referensi |
| SO-101 | Feetech STS3215 | 7.4 V | ~130 to 170 EUR | Dukungan penuh |
| Koch v1.1 | Dynamixel XL330 / XL430 | 5 V and 12 V rails | ~250 to 350 EUR | Kompatibel |
| LeKiwi | Feetech STS3215 (arm) | 7.4 V arm, 12 V base | ~400 to 500 EUR | Kompatibel |
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.
- 1Instal lerobot dengan ekstensi yang tepat
Perekaman membutuhkan
core_scripts, pelatihantraining, servo Feetechfeetech. Python 3.12+.bashconda 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 - 2Temukan port USB setiap lengan
Jalankan dengan kedua lengan terpasang, cabut salah satunya saat diminta. Di Linux, Anda mungkin perlu membuka izin node.
bashlerobot-find-port # on Linux, if the port exists but is unreadable: sudo chmod 666 /dev/ttyACM0 - 3Atur 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.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 4Kalibrasi 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
idyang sama.bashlerobot-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 - 5Teleoperasikan 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.
bashlerobot-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 - 6Rekam 50 episode
50 adalah minimum AY-Robots dan yang digunakan ALOHA per tugas. lerobot menyarankan 10 per lokasi objek, kamera tetap, genggaman konsisten.
nmengakhiri episode,rmerekam ulang,qberhenti dan mengkodekan.bashHF_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

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.
lerobot-replay \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--dataset.repo_id=${HF_USER}/so100_cube \
--dataset.episode=0Melatih kebijakan ACT
Ini adalah seluruh perintah. Semua yang spesifik untuk ACT sudah menjadi default, itulah mengapa halaman ACT lerobot menyarankan untuk memulai dengan mereka.
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--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.
| Pengaturan | Default lerobot | Formulir ACT AY-Robots | Komentar |
|---|---|---|---|
| ukuran batch | 8 | 8 | Turunkan terlebih dahulu jika Anda mencapai batas VRAM. |
| laju pembelajaran | 1e-5 | 1e-5 | Sama seperti makalah ALOHA. |
| langkah maksimum | 100000 | 100000 | Kira-kira di mana set 50 episode berhenti meningkat. |
| akumulasi gradien | 1 | 1, tidak berlaku | Ubah ukuran batch sebagai gantinya. |
| seed | 1000 | terekspos | Titik masuk tyro GR00T tidak memiliki seed; proses ACT adalah yang dapat direproduksi. |
| chunk_size / n_action_steps | 100 / 100 | 100 / 100, dapat diedit | Horizon prediksi dan eksekusi. Turunkan yang kedua, bukan yang pertama. |
| frekuensi checkpoint | 20000 | tidak terekspos | saveSteps adalah knob GR00T di sini. |
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.
lerobot-train \
--config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
--resume=trueMenjalankan 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.
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=60Evaluasi 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.
- Instal lerobot 0.6.x dengan
core_scripts,training,feetech, ffmpeg. - Temukan port, atur ID motor, kalibrasi kedua lengan, rekam 50 episode.
- Putar ulang beberapa episode untuk mengonfirmasi data berisi tugas tersebut.
- Sewa atau miliki GPU 24 GB, cocokkan CUDA dan PyTorch, jalankan
lerobot-train --policy.type=act. - Tunggu beberapa jam, lalu jalankan
lerobot-rolloutdi mesin pada lengan robot.
# 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=cudaKontrol penuh: edit configuration_act.py, tambahkan kamera, fork trainer. Untuk penelitian daripada pengiriman tugas, platform adalah gangguan.
- Rekam dengan klien desktop, atau bawa ID repo Hugging Face atau dataset lokal.
- Buka panduan ACT di SO-100 dan pilih model serta dataset. Defaultnya adalah yang lerobot; chunkSize, nActionSteps, seed, dan logFreq dapat diedit.
- Backend menyewa GPU berukuran VRAM dan menulis checkpoint ke penyimpanan objek.
/api/inference/podkemudian menyajikan kebijakan ke klien robot lokal. Watchdog yang tidak aktif akan menghancurkan pod, sehingga tidak ada tagihan yang muncul secara diam-diam.- Operasi yang sama ada di CLI, server MCP, dan dokumen pelatihan.
Ini tidak memperbaiki data Anda: dataset dengan kamera yang dipindahkan akan melatih seburuk itu di sini, dan formulir tidak dapat mendeteksinya. Ini juga tidak menghilangkan masalah latensi. Loop kontrol adalah 20 hingga 485 ms per langkah tindakan, dengan perjalanan pulang-pergi internet publik di atasnya, dan ACT paling terpengaruh karena langkahnya yang terpendek: 60 ms adalah perlambatan 12 persen pada 485 ms Pi0.5 tetapi empat kali langkah pada 20 ms ACT. Inferensi jarak jauh cocok untuk pengambilan dan penempatan yang lambat, bukan gerakan reaktif yang cepat.

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.
| Gejala | Penyebab umum | Halaman |
|---|---|---|
| lerobot-find-port tidak menampilkan apa pun | Driver, kabel, atau izin node | lengan tidak terdeteksi |
| Kamera hilang saat waktu perekaman | Indeks berubah saat reboot, atau dua kamera pada satu pengontrol USB | kamera tidak terdeteksi |
| Pelatihan menolak dataset | ACT membutuhkan v3.0, GR00T membutuhkan v2.1 | dataset ditolak sebagai v3 |
| CUDA kehabisan memori | Ukuran batch ditingkatkan, atau frame 1080p alih-alih 480p | kehabisan memori dalam pelatihan |
| Loss terlihat bagus, lengan tidak melakukan apa-apa | Data tidak memiliki tugas, atau kamera bergerak | loss turun, kebijakan tidak melakukan apa-apa |
| Gerakan tersentak-sentak atau jeda di tengah episode | Kurang terlatih, macet di batas chunk, atau panggilan inferensi yang habis waktu | kebijakan 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
| Tingkat | Model | Waktu jalan | Harga per jam | Biaya per jalan |
|---|---|---|---|---|
| RTX 4090 / 24 GB | ACT, SmolVLA | 2 to 5 hours | 0.30 to 0.60 USD | about 1 to 3 USD |
| A100 80 GB / H100 | GR00T N1.7, GR00T N1.5, Pi0.5 | 3 to 6 hours | 1.20 to 2.00 USD | about 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 pelatihanApakah 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.
Sources
- Zhao, Kumar, Levine, Finn: Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (ACT), arXiv 2304.13705
- ALOHA / ACT project page
- tonyzhaozh/act, the reference implementation and its training-length advice
- tonyzhaozh/act issue 25: the action head reads only the first decoder layer
- huggingface/lerobot
- lerobot ACTConfig: chunk_size, n_action_steps, n_decoder_layers and the rest of the defaults
- lerobot TrainPipelineConfig: steps, batch_size, seed, save_freq, log_freq, save_checkpoint_to_hub
- lerobot train_utils: zero-padded checkpoint dirs, the last symlink and checkpoint push tagging
- lerobot v0.6.1 release, 3 August 2026
- LeRobot docs: ACT
- LeRobot docs: imitation learning on real robots (record, replay, train, rollout)
- LeRobot docs: SO-100 setup, motor ids and calibration
- LeRobot docs: installation and the optional extras
- Hugging Face blog: LeRobot Community Datasets, the ImageNet of Robotics, When and How?
- TheRobotStudio/SO-ARM100: Standard Open Arm 100
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started