Matriks latihan AY-Robots dengan lima baris polisi dan empat lajur lengan robot, setiap sel pautan ke panduan latihan model dan lengan tertentu
ACTSO-100lerobotpembelajaran tiruanlatihan polisi

Cara Melatih ACT pada SO-100 dari Awal

AY-Robots ResearchAugust 23, 202616 min bacaan

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

ACT adalah yang paling berbeza di antara polisi SO-100. GR00T N1.7 dan N1.5 bermula dari nvidia/GR00T-N1.7-3B dan nvidia/GR00T-N1.5-3B, Pi0.5 dari lerobot/pi05_base. ACT bermula dari kosong: tiada titik semak asas, kerana ia bukan model asas. Ia adalah transformer dengan kira-kira 80 juta parameter yang anda latih dari awal untuk satu tugas, pada lengan anda, di bawah pencahayaan anda.

Itulah juga sebabnya ia menjalankan langkah kawalan dalam 20 ms di mana VLA 3 bilion parameter memerlukan 152 hingga 485 ms, dan kos 1 hingga 3 USD setiap larian berbanding 4 hingga 12. Panduan ini menerangkan laluan manual dengan lerobot pada SO-100: rekod, konfigurasi act, apa yang chunk_size dan n_action_steps kawal, jadual 100000 langkah, pelancaran. Kemudian kerja yang sama pada AY-Robots, termasuk di mana platform tidak membantu.

Apa yang perlu anda tahu

  • ACT dilatih dari awal: tiada model asas, tiada pra-latihan, tiada input bahasa. Satu titik semak, satu tugas.
  • Kertas kerja: kira-kira 80 J parameter, sekitar 5 jam pada RTX 2080 Ti 11 GB, inferens 0.01 s.
  • Lalai lerobot: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 langkah, seed 1000.
  • Pada AY-Robots: 20 ms setiap langkah, yang terpantas antara lima. Minimum 50 episod, LeRobot v3.0, kad 24 GB, 1 hingga 3 USD setiap larian.
  • Ia menang pada tugas yang pernah dilihatnya, dan kalah sebaik sahaja anda mahukan pengkondisian bahasa.
Versi mana yang diterangkan ini

Disemak 23 Ogos 2026 terhadap lerobot 0.6.x: pyproject.toml on main reads version = "0.6.2", newest tag v0.6.1, 3 Ogos 2026. Tutorial yang bermula 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 kertas kerja ALOHA, Pembelajaran Manipulasi Bimanual Berbutir Halus dengan Perkakasan Kos Rendah, oleh Zhao, Kumar, Levine dan Finn, arXiv, 23 April 2023. Pelantar ini merekod pada 50 Hz dengan empat kamera web menstrim 480x640 pada 30 fps: dua pada pengepit, satu di atas, satu di hadapan. Abstrak tersebut mendakwa enam kemahiran dengan kejayaan 80 hingga 90 peratus, antaranya membuka cawan perasa lutsinar dan memasukkan bateri, daripada 10 minit demonstrasi.

Bahagian utama lebih berguna apabila merancang sesi rakaman: 50 demonstrasi setiap tugas, kecuali Thread Velcro pada 100, iaitu 10 hingga 20 minit data dan 30 hingga 60 minit masa jam dinding setelah penetapan semula dikira. Kejayaan juga tidak seragam: Thread Velcro berakhir pada 20 peratus, Put On Shoe pada 92, Cup Open 84, Prep Tape 64.

HiperparameterKertas kerja ALOHA, Jadual IIIlerobot pada main
kadar pembelajaran1e-5optimizer_lr = 1e-5
saiz kelompok8batch_size = 8, in TrainPipelineConfig not ACTConfig
lapisan pengekod / penyahkod4 / 7n_encoder_layers = 4 / n_decoder_layers = 1
saiz ketulan k100chunk_size = 100
dimensi laten ztiada; Rajah 11 menunjukkan unjuran 32 hingga 512latent_dim = 32
penyusunan temporaltiada; --temporal_agg dalam kod rujukantemporal_ensemble_coeff = None
Baris lapisan penyahkod bukan kesilapan menaip

Kertas kerja menyenaraikan 7 lapisan penyahkod, lerobot menghantar 1, secara sengaja. Komen dalam configuration_act.py menyatakan bahawa pelaksanaan asal mempunyai pepijat yang bermaksud hanya lapisan pertama digunakan, memetik isu 25 dalam tonyzhaozh/act: kepala tindakan membaca hs[0], jadi ketujuh-tujuh lapisan berjalan tetapi hanya output pertama mencapai ramalan. Isu itu terbuka dan tidak dijawab sejak 23 April 2024. lerobot memadankan tingkah laku yang menghasilkan keputusan yang diterbitkan, bukan nombor yang dicetak. Tingkatkan --policy.n_decoder_layers dan anda melatih model yang tidak pernah dinilai oleh kertas kerja itu.

Pencungkilan tindakan adalah keseluruhan idea

Pengklonan tingkah laku biasa memetakan satu pemerhatian kepada satu tindakan, dan ralat terkumpul: sisihan meletakkan lengan di luar taburan, menghasilkan tindakan yang lebih buruk, dan tiga puluh langkah kemudian pengepit tidak berada berhampiran objek. Pencungkilan tindakan meramalkan k tindakan sekaligus dan melaksanakannya, mengurangkan ufuk berkesan dengan faktor k. Ia juga mengendalikan gangguan khusus kepada data manusia: pengendali jauh berhenti seketika, dan Markovian satu langkah dasar tidak dapat memodelkan jeda yang bergantung pada apa yang berlaku sebelumnya.

Kertas kerja itu mengablat k dan bukannya menegaskannya. Dengan ensembel temporal dimatikan, purata empat tetapan, kejayaan meningkat daripada 1 peratus pada k = 1 kepada 44 peratus pada k = 100, kemudian berkurangan pada 200 dan 400 apabila dasar menghampiri kawalan gelung terbuka. Lengkung itulah sebabnya nilai lalai ialah 100.

  • chunk_size: berapa banyak tindakan masa depan yang diramalkan oleh penyahkod bagi setiap laluan ke hadapan. Lalai 100.
  • n_action_steps: berapa banyak daripadanya yang anda laksanakan sebelum membuat pertanyaan semula. Lalai 100, jadi lerobot menjalankan keseluruhan cebisan dalam gelung terbuka.
  • lerobot mengesahkan n_action_steps <= chunk_size dan akan menimbulkan ValueError jika anda menetapkannya secara terbalik.

Apa yang penting dari segi operasi ialah chunk_size dibahagikan dengan kadar bingkai. Pada 30 fps yang digunakan oleh contoh SO-100 lerobot, satu cebisan 100 melakukan kira-kira 3.3 saat dari satu pemerhatian. Jika tugas memerlukan pembetulan dalam tetingkap itu, kurangkan n_action_steps, bukan chunk_size: anda mengekalkan ramalan panjang dan memerhati semula dengan lebih kerap.

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
Memendekkan bahagian cebisan yang dilaksanakan tanpa memendekkan ramalan.
Perangkap ensembling temporal

Tetapkan --policy.temporal_ensemble_coeff dan lerobot memerlukan n_action_steps = 1, menimbulkan NotImplementedError jika tidak. Ensembling menanyakan polisi pada setiap langkah masa dan menggabungkan ramalan bertindih untuk langkah masa itu dengan pemberat w_i = exp(-m * i), yang paling lama mendapat w_0. Kertas kerja meletakkannya pada 3.3 peratus untuk ACT: nyata tetapi sederhana, dan ia mendarabkan kiraan inferens dengan panjang cebisan. Mampu milik pada 20 ms setiap langkah, bukan pada 485 ms. Lihat kependaman inferens.

Apabila ACT mengatasi model asas

Lima polisi boleh latih sebelah menyebelah, dengan nombor yang diukur dan digunakan oleh AY-Robots untuk menentukan saiz GPU yang disewanya.

PolisiKeluargaParameterSetiap langkahTahap GPUEpisod minimumSet data
ACTTransformer pencincangan, dari awal~80 M20 msRTX 4090 / 24 GB50LeRobot v3.0
SmolVLAVLA Padat~450 M245 msRTX 4090 / 24 GB30LeRobot v3.0
GR00T N1.7Asas VLA, kepala resapan~3 B (~40 Juta dilatih)152 msA100 / H100 80 GB50LeRobot v2.0 atau v2.1
GR00T N1.5Asas VLA, pendahulu~3 B165 msA100 / H100 80 GB50LeRobot v2.0 atau v2.1
Pi0.5VLA padanan aliran, lihat padanan aliran~3 B, tulang belakang PaliGemma485 msA100 / H100 80 GB50LeRobot v3.0
Halaman polisi AY-Robots menunjukkan jadual perbandingan ACT, SmolVLA, GR00T N1.5, GR00T N1.7 dan Pi0.5 dengan kiraan parameter, keperluan GPU, kependaman inferens dan kiraan episod minimum
Jadual /policies: ACT mempunyai kiraan parameter terkecil dan masa langkah terpendek.
Melatih ACT dari awal
Kelebihan
  • 20 ms setiap langkah tindakan, yang terpantas antara lima, pada kad 24 GB bukan A100.
  • 1 hingga 3 USD setiap larian berbanding 4 hingga 12 untuk kelas 3 B.
  • Tepat pada kerja yang kaya sentuhan yang pernah dilihatnya: 88 dan 96 peratus pada Slide Ziploc dan Slot Battery, di mana kaedah sebelumnya tidak pernah melepasi peringkat pertama.
Pertukaran
  • Tiada pengkondisian bahasa: rentetan tugas diabaikan, jadi satu titik semak adalah satu tugas.
  • Tiada prior semantik: semua yang diketahuinya datang dari 50 episod anda.
  • Generalisasi sempit: gerakkan kamera dan anda perlu melatih semula.
  • Ia gagal secara senyap: kerugian menurun, lengan tidak melakukan apa-apa, log tidak menyatakan apa-apa.
  • Kelebihan kelajuan hanya membantu jika inferens berada di sebelah servo.

Pilih ACT apabila tugas dan pemandangan adalah tetap dan pergerakan mestilah pantas dan tepat. Pilih apabila satu titik semak mesti meliputi beberapa arahan. Dua halaman membincangkan keputusan secara langsung: dan . Untuk penanda aras yang diterbitkan, memautkan setiap nombor kepada sumbernya.

Apa yang anda perlukan sebelum bermula

Satu lengan pengikut, satu lengan pemimpin untuk , sekurang-kurangnya satu kamera, GPU 24 GB. ACT hanya membaca imej dan kedudukan sendi. Dua kamera adalah pilihan terbaik: pandangan hadapan tetap untuk lokasi objek, kamera pergelangan tangan untuk apa yang akan sentuh, seperti pada ALOHA.

LenganServoVoltanKos bahagianStatus
SO-100Feetech STS32157.4 V~110 hingga 150 EURSokongan penuh, lengan rujukan
SO-101Feetech STS32157.4 V~130 hingga 170 EURSokongan penuh
Koch v1.1Dynamixel XL330 / XL430Rel 5 V dan 12 V~250 hingga 350 EURSerasi
LeKiwiFeetech STS3215 (lengan)Lengan 7.4 V, tapak 12 V~400 hingga 500 EURSerasi
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 merosakkannya, cukup senyap sehingga orang menyalahkan perisian terlebih dahulu, dan bekalan Koch 12 V secara fizikal sesuai dengan papan SO-100. Periksa label. Simptom: servo tidak bertindak balas, lengan berkedut kemudian kendur. Juga SO-100 lwn SO-101.

Dari lengan kosong ke set data yang direkodkan

Aliran di bawah adalah lerobot 0.6.x. Langkau jika anda mempunyai lengan yang ditentukur dan set data. Jika tidak, panduan permulaan SO-100, meliputi pemasangan, panduan rakaman meliputi penangkapan dan dokumen set data formatnya.

  1. 1
    Pasang lerobot dengan tambahan yang betul

    Perekaman memerlukan core_scripts, latihan 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
    Cari port USB setiap lengan

    Jalankan dengan kedua-dua lengan dipasang, cabut satu apabila diminta. Pada Linux, anda mungkin perlu membuka kebenaran nod.

    bash
    lerobot-find-port
    # on Linux, if the port exists but is unreadable:
    sudo chmod 666 /dev/ttyACM0
  3. 3
    Tetapkan id motor dan kadar baud

    Pada SO-100 ini berlaku sebelum pemasangan: tidak seperti SO-101, penyambung tidak dapat dicapai setelah dibina. Skrip ini melintasi bas satu motor pada satu masa dari pengepit, 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
    Tentukur kedua-dua lengan

    Tetapkan setiap sendi ke tengah julatnya, tekan Enter, kemudian sapu setiap satu melalui julat penuhnya. Penentukuran membolehkan polisi yang dilatih pada satu lengan berjalan pada lengan yang lain. Gunakan semula 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
    Teleoperasi sekali dengan kamera dihidupkan

    Peraturan umum lerobot: anda sepatutnya dapat melakukan tugas hanya dengan melihat imej kamera. Jika anda tidak dapat, ACT juga tidak dapat. Ini menangkap lebih banyak set data yang buruk daripada penyahpepijatan kemudian.

    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
    Rakam 50 episod

    50 adalah minimum AY-Robots dan apa yang ALOHA gunakan setiap tugas. lerobot menasihatkan 10 setiap lokasi objek, kamera tetap, genggaman konsisten. n menamatkan episod, r merakam semula, q berhenti dan mengekod.

    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 menerangkan cara menangkap set data format LeRobot dari sesi teleoperasi
Tutorial perekaman. Klien desktop menulis susun atur yang sama seperti lerobot-record.
Perangkap yang memakan masa sehari: set data yang tidak konsisten

ACT tidak mempunyai prior untuk bergantung, jadi setiap ketidakselarasan menjadi kekal. Tiga yang paling mahal: kamera teranjak antara episod 20 dan 21, cahaya yang berubah kerana anda merakam separuh set pada waktu petang, genggaman dilakukan dengan dua cara. Setiap satu memberikan lengkung kerugian yang kelihatan sempurna dan lengan yang pergi ke tempat yang salah. Lihat kerugian jatuh, polisi tidak melakukan apa-apa, polisi hanya berfungsi dalam satu persediaan dan mengumpul data latihan berkualiti tinggi.

Sebelum latihan, mainkan semula sekurang-kurangnya lima episod. menyimpan aliran kamera, keadaan sendi dan tindakan setiap , dan main semula menolak tindakan tersebut kembali ke lengan. Jika main semula tidak melakukan tugas, data tidak mengandungi ia dan latihan tidak akan menciptanya.

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
Memainkan semula episod 0. Jika ini gagal, hentikan dan rakam semula.

Melatih polisi ACT

Ini adalah keseluruhan arahan. Semua yang khusus untuk ACT sudah menjadi lalai, sebab itulah halaman ACT lerobot menyarankan untuk bermula 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
Arahan latihan daripada dokumen lerobot 0.6.x, pada set data SO-100.

--policy.type=act memuatkan ACTConfig, yang menyesuaikan diri dengan berapa banyak motor dan kamera yang direkodkan oleh set data anda, jadi anda tidak perlu mengisytiharkan bentuk pemerhatian. --wandb.enable=true adalah pilihan dan berbaloi: lengkung kerugian adalah satu-satunya isyarat murah dalam larian 100000 langkah. Jadual ini berasal dari konfigurasi latihan lerobot, bukan ACTConfig: 100000 langkah, kelompok 8, seed 1000, satu titik semak setiap 20000 langkah, log setiap 200.

Larian penuh meninggalkan lima direktori titik semak, 020000 hingga 100000, serta symlink last. Simpan semuanya: polisi terbaik selalunya bukan yang terakhir.

Tetapanlalai lerobotborang ACT AY-RobotsKomen
Saiz kelompok88Turunkannya dahulu jika anda mencapai had VRAM.
Kadar pembelajaran1e-51e-5Sama seperti kertas ALOHA.
Langkah maksimum100000100000Kira-kira di mana set 50 episod berhenti bertambah baik.
Pengumpulan gradien11, tidak terpakaiTukar saiz kelompok sebaliknya.
seed1000terdedahTitik masuk tyro GR00T tidak mempunyai seed; larian ACT adalah yang boleh dihasilkan semula.
chunk_size / n_action_steps100 / 100100 / 100, boleh dieditHorizon ramalan dan pelaksanaan. Turunkan yang kedua, bukan yang pertama.
Kekerapan titik semak20000tidak terdedahsaveSteps adalah tombol GR00T di sini.
Kekurangan memori adalah masalah saiz kelompok, bukan masalah kad

ACT pada saiz kelompok 8 dengan dua kamera 640x480 muat dengan selesa pada 24 GB. Ia berhenti muat apabila orang menaikkan saiz kelompok untuk kelajuan, atau memberikannya bingkai 1920x1080 seperti yang ditunjukkan oleh satu contoh rakaman lerobot. Dua tulang belakang ResNet-18 pada 1080p mempunyai profil memori yang sangat berbeza. Turunkan --batch_size kepada 4 sebelum menyewa kad yang lebih besar. Lihat kekurangan memori dalam latihan.

Tempoh: sekitar 5 jam pada RTX 2080 Ti 11 GB dalam kertas kerja, beberapa jam untuk 100k langkah mengikut halaman ACT lerobot, 2 hingga 5 jam pada peringkat 24 GB AY-Robots. Jangan pendekkan. README repo rujukan menyatakan polisi yang tersentak-sentak atau berhenti seketika biasanya hanya memerlukan lebih banyak latihan, kerana kejayaan dan kelancaran terus meningkat selepas kerugian mendatar: untuk data dunia nyata ia memerlukan sekurang-kurangnya 5000 epok, atau 3 hingga 4 kali ganda tempoh lagi selepas mendatar.

bash
lerobot-train \
  --config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
  --resume=true
Menyambung semula larian yang terganggu dari titik semak terakhirnya.

Menjalankan polisi terlatih pada lengan robot

Penerapan menggunakan lerobot-rollout. Kunci kamera mesti sepadan dengan yang direkodkan: polisi yang dilatih pada front dan wrist tidak akan menerima cam0 dan cam1, dan rename_map tidak membantu, kerana ia memerlukan titik semak praterlatih. Rentetan tugas boleh diabaikan; contoh lerobot sendiri menandakannya sebagai boleh dilangkau 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
Pelancaran autonomi tanpa rakaman. Gunakan --strategy.type=sentry untuk merakam episod penilaian.
Arahan ini dinamakan semula baru-baru ini, jadi tutorial lama tidak selaras

Penilaian dahulu dijalankan melalui lerobot-record --policy.path=.... Dalam 0.6.x ia adalah lerobot-rollout dengan pemilih --strategy.type: base, sentry (rakaman dengan muat naik automatik), highlight (penimbal cincin disimpan oleh ketukan kekunci), dagger (manusia dalam gelung) dan episodic. Sehingga 23 Ogos 2026, halaman dokumentasi ACT masih menyatakan "menggunakan arahan lerobot-record" betul-betul di atas blok yang menjalankan lerobot-rollout. Ikut arahan, bukan ayat.

Untuk menetapkan titik semak dan bukannya model akhir, tambah --policy.pretrained_revision. Itu memerlukan larian dimulakan dengan --save_checkpoint_to_hub=true, dimatikan secara lalai: tanpanya lerobot menolak model akhir dan tiada yang lain. Dengannya, setiap titik semak ditandakan dengan langkahnya yang diisi sifar, jadi --policy.pretrained_revision=060000 memulihkan yang langkah 60000. Membandingkannya dengan 100000 pada lengan sebenar adalah eksperimen termurah yang tersedia.

Dua laluan ke titik semak yang sama

Semua di atas adalah laluan manual dan ia berfungsi. Laluan platform menukar kawalan dengan tidak perlu memiliki GPU atau persekitaran Python.

  1. Pasang lerobot 0.6.x dengan core_scripts, training, feetech, ffmpeg.
  2. Cari port, tetapkan ID motor, kalibrasi kedua-dua lengan, rakam 50 episod.
  3. Main semula beberapa episod untuk mengesahkan data mengandungi tugas tersebut.
  4. Sewa atau miliki GPU 24 GB, padankan CUDA dan PyTorch, jalankan lerobot-train --policy.type=act.
  5. Tunggu beberapa jam, kemudian lerobot-rollout pada mesin di 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 laluan ini berikan kepada anda

Kawalan penuh: edit configuration_act.py, tambah kamera, fork pelatih. Untuk penyelidikan dan bukannya menghantar tugas, platform adalah gangguan.

Matriks latihan AY-Robots dengan lima baris polisi dan empat lajur lengan robot, di mana setiap sel pautan ke panduan latihan khusus untuk kombinasi model dan lengan tersebut
Matriks pada /train. Baris ACT berbanding lajur SO-100 adalah panduan artikel ini.

Apa yang sebenarnya berlaku salah

Hampir tiada masalah dalam arahan latihan. Masalahnya terletak pada perkara-perkara di sekelilingnya, disusun mengikut kekerapan ia berlaku pada kali pertama.

SimptomPunca biasaHalaman
lerobot-find-port tidak menunjukkan apa-apaPemandu, kabel atau kebenaran nodlengan tidak dikesan
Kamera tiada semasa rakamanIndeks berubah selepas but semula, atau dua kamera pada satu pengawal USBkamera tidak dikesan
Latihan menolak set dataACT memerlukan v3.0, GR00T memerlukan v2.1set data ditolak sebagai v3
CUDA kehabisan memoriSaiz kelompok ditingkatkan, atau bingkai 1080p dan bukannya 480pkehabisan memori dalam latihan
Loss kelihatan baik, lengan tidak berfungsiData tidak mempunyai tugas, atau kamera bergerakloss menurun, polisi tidak berfungsi
Pergerakan tersentak-sentak atau jeda di tengah episodKurang terlatih, tersekat pada sempadan 'chunk', atau panggilan inferens tamat masapolisi terhenti di tengah pergerakan

Dua baris patut diberi penekanan. ACT melatih pada LeRobot v3.0 manakala pemuat GR00T ranap padanya dan memerlukan v2.1, jadi set data yang melatih ACT boleh menyebabkan kegagalan larian GR00T. Dan baris terakhir mempunyai dua penyelesaian: penulis ACT menjawab pergerakan tersentak-sentak dengan lebih banyak latihan, manakala dengan n_action_steps pada 100, tersekat sebenar berlaku pada sempadan 'chunk', jeda yang kelihatan setiap 3.3 saat pada 30 fps. Dua lagi untuk diketahui: satu sendi mati biasanya adalah id servo yang tidak pernah ditulis, dan pencengkam yang mendekat tetapi tidak pernah menutup bermakna julat pencengkam terlalu kecil dalam demonstrasi. Indeks penuh: halaman mod kegagalan.

Berapa kos satu larian

TahapModelMasa larianHarga sejamKos setiap larian
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 hujah untuk bermula dengan ACT walaupun anda mahukan VLA kemudian. Larian ACT yang gagal menelan belanja seperti harga kopi dan memberitahu anda dalam beberapa jam sama ada set data anda mengandungi tugas tersebut. Larian GR00T yang gagal menelan belanja empat kali ganda untuk pelajaran yang sama. Beralih kepada GR00T N1.7 atau SmolVLA selepas itu adalah perubahan bentuk, bukan pembinaan semula. Latar belakang: model tindakan bahasa-penglihatan, panduan lengkap SO-100, latih polisi pertama anda dan pembelajaran tiruan. Tiada lengan? Halaman langsung menstrim SO-100 sebenar untuk dipandu tanpa perlu mendaftar.

Latih ACT pada SO-100 anda

Panduan untuk kombinasi tepat ini: tetapan lalai, tahap GPU dan kos larian. Pilih set data, bahagian belakang menyewa kad dan menulis titik semak.

Buka panduan latihan
Adakah terdapat model ACT pra-latih yang boleh saya tala halus sebagai ganti?

Tidak. ACT tidak mempunyai model asas; ia hanya wujud selepas anda melatihnya. Itu bukan jurang dalam peralatan, itulah ACT: kertas kerja melatih polisi dari awal untuk setiap tugas. Untuk titik semak vendor, gunakan GR00T N1.7 atau Pi0.5.

Berapa banyak episod yang saya benar-benar perlukan?

50: apa yang ALOHA rekodkan bagi setiap tugas (100 untuk Thread Velcro, yang paling sukar) dan minimum AY-Robots. lerobot menasihatkan kira-kira 10 bagi setiap lokasi objek, kamera ditetapkan, genggaman konsisten. Lima puluh episod bersih mengalahkan seratus episod di mana kamera bergerak.

Patutkah saya menukar chunk_size daripada 100?

Biasanya tidak. Ablasi meningkat dari 1 peratus pada k = 1 kepada 44 peratus pada k = 100 dan mengecil selepas itu, jadi 100 berada hampir di puncak. Jika lengan melakukan terlalu lama, kurangkan n_action_steps sebaliknya: pada 30 fps, 25 pertanyaan semula setiap 0.8 saat.

Berapa lama masa yang diambil untuk satu larian latihan, dan bolehkah saya menghentikannya lebih awal?

Dua hingga lima jam pada kad 24 GB untuk 100000 langkah. Titik semak mendarat setiap 20000 langkah dan --resume=true menyambung semula larian, jadi berhenti awal adalah selamat. Cuma jangan pada regangan rata pertama: kelancaran bertambah baik selepas kerugian mendatar.

Kerugian menurun tetapi lengan masih gagal. Apa sekarang?

Hampir selalu set data. Main semula episod yang direkodkan pada lengan: jika main semula tidak melakukan tugas, data tidak mengandungi tugas tersebut. Kemudian periksa sama ada ada apa-apa yang bergerak, terutamanya kamera. ACT tidak mempunyai prior, jadi dorongan pada episod 21 adalah kekal.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started