
Обучете Action Chunking Transformer от нулата на SO-100 с lerobot: act config, chunk_size и n_action_steps, график за 100000 стъпки, 20 ms инференция.
ACT е изключение сред политиките на SO-100. GR00T N1.7 и N1.5 започват от nvidia/GR00T-N1.7-3B и nvidia/GR00T-N1.5-3B, Pi0.5 от lerobot/pi05_base. ACT започва от нищото: няма базов контролен пункт, защото не е фундаментален модел. Това е трансформатор с приблизително 80 милиона параметъра, който обучавате от нулата за една задача, на вашата ръка, при вашето осветление.
Ето защо изпълнява контролна стъпка за 20 ms, докато VLA с 3 милиарда параметъра се нуждае от 152 до 485 ms и струва 1 до 3 USD на изпълнение вместо 4 до 12. Това ръководство описва ръчния маршрут с lerobot на SO-100: запис, конфигурацията на act, какво контролират chunk_size и n_action_steps, графикът от 100000 стъпки, разгръщането. След това същата задача на AY-Robots, включително къде платформата не помага.
Какво трябва да знаете
- •ACT се обучава от нулата: без базов модел, без предварително обучение, без езиков вход. Един контролен пункт, една задача.
- •Докладът: около 80 M параметъра, около 5 часа на 11 GB RTX 2080 Ti, 0.01 s инференция.
- •Настройки по подразбиране на lerobot: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 стъпки, seed 1000.
- •На AY-Robots: 20 ms на стъпка, най-бързият от петте. Минимум 50 епизода, LeRobot v3.0, 24 GB карта, 1 до 3 USD на изпълнение.
- •Печели при задача, която е виждал, и губи в момента, в който искате езиково обуславяне.
Проверено на 23 август 2026 г. спрямо lerobot 0.6.x: pyproject.toml on main reads version = "0.6.2", newest tag v0.6.1, 3 August 2026. Урок, започващ с python lerobot/scripts/train.py предхожда входните точки на конзолата lerobot-train, lerobot-record and lerobot-rollout.
Какво всъщност е ACT
Action Chunking with Transformers идва от статията ALOHA, Изучаване на фино двуръчно манипулиране с нискобюджетен хардуер, от Zhao, Kumar, Levine и Finn, arXiv, 23 април 2023 г. Установката записва при 50 Hz с четири уеб камери, предаващи 480x640 при 30 fps: две на захватите, една отгоре, една отпред. Резюмето твърди шест умения с 80 до 90 процента успеваемост, сред които отваряне на полупрозрачна чаша за подправки и поставяне на батерия, от 10 минути демонстрации.
Основната част е по-полезна при планиране на сесия за запис: 50 демонстрации на задача, с изключение на Thread Velcro при 100, което е 10 до 20 минути данни и 30 до 60 минути реално време, след като се отчетат нулиранията. Успеваемостта също не е еднаква: Thread Velcro завършва на 20 процента, Put On Shoe на 92, Cup Open 84, Prep Tape 64.
| Хиперпараметър | Статия ALOHA, Таблица III | lerobot в main |
|---|---|---|
| скорост на обучение | 1e-5 | optimizer_lr = 1e-5 |
| размер на пакета | 8 | batch_size = 8, in TrainPipelineConfig not ACTConfig |
| слоеве на енкодер / декодер | 4 / 7 | n_encoder_layers = 4 / n_decoder_layers = 1 |
| размер на парче k | 100 | chunk_size = 100 |
| латентна размерност на z | липсва; Фиг. 11 показва проекция от 32 до 512 | latent_dim = 32 |
| темпорално ансамблиране | липсва; --temporal_agg в референтния код | temporal_ensemble_coeff = None |
Докладът изброява 7 слоя на декодера, lerobot доставя 1, умишлено. Коментарът в configuration_act.py гласи, че оригиналната имплементация има грешка, което означава, че се използва само първият слой, цитирайки проблем 25 в tonyzhaozh/act: главата за действие чете hs[0], така че всичките седем слоя работят, но само първият изход достига до предсказанието. Този проблем е отворен и без отговор от 23 април 2024 г. lerobot съответства на поведението, което е довело до публикуваните резултати, а не на отпечатаното число. Увеличете --policy.n_decoder_layers и ще обучите модел, който докладът никога не е оценявал.
Разделянето на действията е цялата идея
Обикновеното поведенческо клониране картографира едно наблюдение към едно действие и грешките се натрупват: отклонение изважда ръката извън разпределението, произвеждайки по-лошо действие, и тридесет стъпки по-късно захватът е далеч от обекта. Разделяне на действията предсказва k действия наведнъж и ги изпълнява, намалявайки ефективния хоризонт с фактор k. Той също така се справя с неудобство, специфично за човешките данни: телеоператорите правят паузи, а едностъпкова Марковска политика не може да моделира пауза, която зависи от това, което е предшествало.
Докладът изследва k чрез аблация, вместо да го утвърждава. При изключено темпорално ансамблиране, осреднено за четири настройки, успехът нараства от 1 процент при k = 1 до 44 процента при k = 100, след което намалява при 200 и 400, тъй като политиката наближава управление с отворен цикъл. Тази крива е причината по подразбиране да е 100.
- chunk_size: колко бъдещи действия предсказва декодерът за едно преминаване напред. По подразбиране 100.
- n_action_steps: колко от тях изпълнявате, преди да направите ново запитване. По подразбиране 100, така че lerobot изпълнява целия блок в отворен цикъл.
- lerobot валидира
n_action_steps <= chunk_sizeи повдигаValueError, ако ги объркате.
Оперативно значение има chunk_size, разделен на честотата на кадрите. При 30 кадъра в секунда, използвани от примерите SO-100 на lerobot, блок от 100 действия обхваща около 3.3 секунди от едно наблюдение. Ако задачата изисква корекция в този прозорец, намалете n_action_steps, а не chunk_size: така запазвате дългото предсказание и наблюдавате отново по-често.
# 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Задайте --policy.temporal_ensemble_coeff и lerobot изисква n_action_steps = 1, като в противен случай повдига NotImplementedError. Ансамблирането изисква политиката на всяка стъпка и смесва припокриващите се предсказания за тази стъпка с тегла w_i = exp(-m * i), като най-старото получава w_0. Документът го оценява на 3.3 процента за ACT: реално, но скромно, и умножава броя на изводите по дължината на блока. Достъпно при 20 ms на стъпка, но не и при 485 ms. Вижте латентност на извода.
Когато ACT превъзхожда базов модел
Петте обучими политики една до друга, с числата, които AY-Robots измерва и използва за оразмеряване на наетия от нея GPU.
| Политика | Семейство | Параметри | На стъпка | Ниво на GPU | Мин. епизоди | Набор от данни |
|---|---|---|---|---|---|---|
| ACT | Трансформатор за сегментиране, от нулата | ~80 M | 20 ms | RTX 4090 / 24 GB | 50 | LeRobot v3.0 |
| SmolVLA | Компактен VLA | ~450 M | 245 ms | RTX 4090 / 24 GB | 30 | LeRobot v3.0 |
| GR00T N1.7 | VLA основа, дифузионна глава | ~3 B (~40 M trained) | 152 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| GR00T N1.5 | VLA основа, предшественик | ~3 B | 165 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| Pi0.5 | VLA с напасване на потока, виж напасване на потока | ~3 B, PaliGemma backbone | 485 ms | A100 / H100 80 GB | 50 | LeRobot v3.0 |

- 20 ms на стъпка на действие, най-бързият от петте, на 24 GB карта, а не A100.
- 1 до 3 USD на изпълнение срещу 4 до 12 за класа 3 B.
- Прецизен при работа с много контакт, която е виждал: 88 и 96 процента на Slide Ziploc и Slot Battery, където предишни методи никога не са преминавали първи етап.
- Без езиково обуславяне: низът на задачата се игнорира, така че една контролна точка е една задача.
- Без семантични априорни знания: всичко, което знае, идва от вашите 50 епизода.
- Тясна генерализация: преместете камера и трябва да преобучавате.
- Проваля се тихо: загубата намалява, ръката не прави нищо, логовете не казват нищо.
- Предимството в скоростта помага само ако изводът е до сервомоторите.
Изберете ACT, когато задачата и сцената са фиксирани и движението трябва да е бързо и прецизно. Изберете , когато една контролна точка трябва да покрива няколко инструкции. Две страници разглеждат решението директно: и . За публикувани бенчмаркове, свързва всяко число с неговия източник.
Какво ви е необходимо, преди да започнете
Една следваща ръка, една водеща ръка за , поне една камера, 24 GB GPU. ACT чете само изображения и позиции на ставите. Две камери са оптималният вариант: фиксиран преден изглед за това къде са нещата, камера на китката за това какво предстои да докосне, както при ALOHA.
| Ръка | Сервота | Напрежение | Цена на части | Статус |
|---|---|---|---|---|
| SO-100 | Feetech STS3215 | 7.4 V | ~110 to 150 EUR | Пълна поддръжка, референтна ръка |
| SO-101 | Feetech STS3215 | 7.4 V | ~130 to 170 EUR | Пълна поддръжка |
| Koch v1.1 | Dynamixel XL330 / XL430 | 5 V and 12 V rails | ~250 to 350 EUR | Съвместим |
| LeKiwi | Feetech STS3215 (arm) | 7.4 V arm, 12 V base | ~400 to 500 EUR | Съвместим |
SO-100 и SO-101 използват сервота Feetech STS3215 на 7.4 V шина. Подаването на 12 V ги унищожава, достатъчно тихо, че хората първо обвиняват софтуера, а 12 V захранване на Koch физически пасва на платка SO-100. Проверете етикета. Симптоми: сервото не реагира, ръката потрепва, след което увисва. Също така SO-100 срещу SO-101.
От гола ръка до записан набор от данни
Потокът по-долу е lerobot 0.6.x. Пропуснете го, ако имате калибрирана ръка и набор от данни. В противен случай ръководството за започване със SO-100 обхваща сглобяването, ръководството за запис обхваща заснемането, а документацията за набори от данни формата.
- 1Инсталирайте lerobot с правилните допълнения
За запис са нужни
core_scripts, за обучениеtraining, за Feetech сервомоториfeetech. 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 - 2Намерете USB порта на всяка ръка
Стартирайте го с включени и двете ръце, като изключите едната, когато бъдете подканени. На Linux може да се наложи да отворите разрешенията на възела.
bashlerobot-find-port # on Linux, if the port exists but is unreadable: sudo chmod 666 /dev/ttyACM0 - 3Задайте идентификаторите на моторите и скоростта на предаване
При SO-100 това се случва преди сглобяването: за разлика от SO-101, конекторите са недостъпни, след като е сглобен. Скриптът обхожда шината мотор по мотор, започвайки от грипера, записвайки идентификатори в EEPROM.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 4Калибрирайте двете ръце
Настройте всяка става в средата на нейния обхват, натиснете Enter, след което прекарайте всяка през пълния ѝ обхват. Калибрирането позволява политика, обучена на една ръка, да работи на друга. Използвайте повторно същия
id.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 - 5Телеоперирайте веднъж с включени камери
Основното правило на lerobot: трябва да можете да изпълнявате задачата, гледайки само изображенията от камерата. Ако не можете, ACT също не може. Това улавя повече лоши набори от данни, отколкото по-късното отстраняване на грешки.
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 - 6Запишете 50 епизода
50 е минимумът за AY-Robots и това, което ALOHA използваше за задача. lerobot съветва 10 на местоположение на обект, фиксирани камери, последователен захват.
nзавършва епизод,rпрезаписва,qспира и кодира.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 няма предварителни знания, на които да разчита, така че всяка непоследователност става постоянна. Трите най-скъпи: камера, преместена между епизод 20 и 21, светлина, която се е променила, защото сте записали половината от набора следобед, захват, направен по два начина. Всеки от тях дава перфектно изглеждаща крива на загуба и ръка, която отива на грешното място. Вижте загубата пада, политиката не прави нищо, политиката работи само в една настройка и събиране на висококачествени данни за обучение.
Преди обучение, възпроизведете поне пет епизода. съхранява потоци от камери, състояния на ставите и действия за всеки , а възпроизвеждането връща тези действия към ръката. Ако възпроизвеждането не изпълнява задачата, данните не я съдържат и обучението няма да я измисли.
lerobot-replay \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--dataset.repo_id=${HF_USER}/so100_cube \
--dataset.episode=0Обучение на ACT политиката
Това е цялата команда. Всичко специфично за ACT вече е по подразбиране, ето защо страницата на lerobot ACT препоръчва да започнете с тях.
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 зарежда ACTConfig, който се адаптира към броя на моторите и камерите, записани от вашия набор от данни, така че никога не декларирате формата на наблюдение. --wandb.enable=true е по избор и си струва: кривата на загубите е единственият евтин сигнал в изпълнение от 100000 стъпки. Графикът идва от конфигурацията за обучение на lerobot, а не от ACTConfig: 100000 стъпки, пакет 8, seed 1000, контролна точка на всеки 20000 стъпки, регистриране на всеки 200.
Пълното изпълнение оставя пет директории с контролни точки, от 020000 до 100000, плюс last символна връзка. Запазете ги всички: най-добрата политика често не е последната.
| Настройка | lerobot по подразбиране | AY-Robots ACT форма | Коментар |
|---|---|---|---|
| размер на пакета | 8 | 8 | Намалете го първо, ако достигнете лимити на VRAM. |
| скорост на обучение | 1e-5 | 1e-5 | Същото като в статията ALOHA. |
| максимални стъпки | 100000 | 100000 | Приблизително където набор от 50 епизода спира да се подобрява. |
| акумулация на градиент | 1 | 1, не се прилага | Променете размера на пакета вместо това. |
| seed | 1000 | изложено | Входната точка на tyro на GR00T няма seed; ACT изпълненията са възпроизводими. |
| chunk_size / n_action_steps | 100 / 100 | 100 / 100, редактируемо | Хоризонт на предвиждане и изпълнение. Намалете второто, не първото. |
| честота на контролните точки | 20000 | не е изложено | saveSteps е настройка на GR00T тук. |
ACT при размер на пакета 8 с две 640x480 камери се побира удобно на 24 GB. Спира да се побира, когато хората увеличат размера на пакета за скорост, или му подадат 1920x1080 кадъра, както показва един пример за запис на lerobot. Два ResNet-18 бекбона при 1080p имат много различен профил на паметта. Намалете --batch_size до 4, преди да наемете по-голяма карта. Вижте недостиг на памет при обучение.
Продължителност: около 5 часа на 11 GB RTX 2080 Ti в статията, няколко часа за 100k стъпки според ACT страницата на lerobot, 2 до 5 часа на 24 GB ниво на AY-Robots. Не го съкращавайте. README файлът на референтното хранилище казва, че една накъсана или спираща политика обикновено просто се нуждае от повече обучение, защото успехът и плавността продължават да се подобряват след платото на загубата: за данни от реалния свят са необходими поне 5000 епохи, или 3 до 4 пъти по-дълго отново след платото.
lerobot-train \
--config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
--resume=trueИзпълнение на обучената политика върху ръката
Разгръщането използва lerobot-rollout. Ключовете на камерата трябва да съответстват на записаните: политика, обучена на front и wrist няма да приеме cam0 и cam1, а rename_map не помага, тъй като е необходима предварително обучена контролна точка. Низът на задачата може да бъде пропуснат; собственият пример на lerobot го отбелязва като пропускаем за 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=60Оценката преди се изпълняваше чрез lerobot-record --policy.path=.... Във версия 0.6.x това е lerobot-rollout със селектор --strategy.type: base, sentry (запис с автоматично качване), highlight (кръгов буфер, запазен с натискане на клавиш), dagger (човек в цикъла) и episodic. Към 23 август 2026 г. страницата с документация на ACT все още гласи „използвайки командата lerobot-record“ непосредствено над блок, който изпълнява lerobot-rollout. Следвайте командата, а не изречението.
За да закачите контролна точка, а не финалния модел, добавете --policy.pretrained_revision. Това изисква изпълнението да е започнало с --save_checkpoint_to_hub=true, изключено по подразбиране: без него lerobot качва само финалния модел и нищо друго. С него всяка контролна точка е маркирана с нейната стъпка с водещи нули, така че --policy.pretrained_revision=060000 възстановява тази от стъпка 60000. Сравняването ѝ с 100000 на реалната ръка е най-евтиният наличен експеримент.
Два пътя до една и съща контролна точка
Всичко по-горе е ръчният маршрут и работи. Маршрутът през платформата разменя контрола за това да не притежавате GPU или Python среда.
- Инсталирайте lerobot 0.6.x с
core_scripts,training,feetech, ffmpeg. - Намерете портове, задайте ID на моторите, калибрирайте двете рамена, запишете 50 епизода.
- Пуснете няколко епизода, за да потвърдите, че данните съдържат задачата.
- Наемете или притежавайте 24 GB GPU, съпоставете CUDA и PyTorch, стартирайте
lerobot-train --policy.type=act. - Изчакайте няколко часа, след което стартирайте
lerobot-rolloutна машината до рамото.
# 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Пълен контрол: редактирайте configuration_act.py, добавете камера, форкнете обучителя. За изследвания, а не за изпълнение на задача, платформата е разсейваща.
- Записвайте с настолния клиент или донесете Hugging Face repo id или локален набор от данни.
- Отворете ръководството за ACT на SO-100 и изберете модел и набор от данни. По подразбиране са тези на lerobot; chunkSize, nActionSteps, seed и logFreq са редактируеми.
- Бекендът наема GPU, оразмерен според VRAM, и записва контролни точки в обектно хранилище.
/api/inference/podслед това обслужва политиката на локалния клиент на робота. Неактивен watchdog унищожава пода, така че нищо не се таксува безшумно.- Същите операции съществуват в CLI, MCP сървъра и документацията за обучение.
Тя не коригира вашите данни: набор от данни с преместена камера се обучава точно толкова зле тук и формата не може да го открие. Нито пък премахва проблема с латентността. Контролният цикъл е от 20 до 485 ms на стъпка на действие, с допълнителни пътувания през публичния интернет, а ACT е най-засегнат, защото неговата стъпка е най-кратка: 60 ms е 12 процента забавяне при 485 ms на Pi0.5, но четири пъти стъпката при 20 ms на ACT. Дистанционният извод е подходящ за бавно взимане и поставяне, а не за бързо реактивно движение.

Какво всъщност се обърква
Почти никаква трудност не е в командата за обучение. Тя е в нещата около нея, подредени по това колко често създават проблеми от първия път.
| Симптом | Обичайна причина | Страница |
|---|---|---|
| lerobot-find-port не показва нищо | Драйвер, кабел или разрешения на възел | ръка не е открита |
| Камера липсва по време на запис | Индексът е променен при рестарт, или две камери на един USB контролер | камера не е открита |
| Обучението отхвърля набора от данни | ACT изисква v3.0, GR00T се нуждае от v2.1 | набор от данни отхвърлен като v3 |
| CUDA извън памет | Размерът на пакета е увеличен, или 1080p кадри вместо 480p | извън памет по време на обучение |
| Загубата изглежда добре, ръката не прави нищо | Данните нямат задачата, или камерата е преместена | загубата пада, политиката не прави нищо |
| Накъсано движение или пауза по средата на епизода | Недостатъчно обучено, забавяне на границата на парчето, или извикване на извод с изтекло време | политиката замръзва по средата на движението |
Два реда заслужават акцент. ACT се обучава на LeRobot v3.0, докато зареждачът на GR00T се срива с него и се нуждае от v2.1, така че набор от данни, който обучава ACT, може да провали изпълнение на GR00T. И последният ред има две поправки: авторите на ACT отговарят на накъсаното движение с повече обучение, докато с n_action_steps при 100 истинско забавяне попада на границата на парчето, видима пауза на всеки 3.3 секунди при 30 кадъра в секунда. Още две неща за знаене: една мъртва става обикновено е ID на серво, което никога не е било записано, и хващач, който се приближава, но никога не се затваря означава твърде малък обхват на хващача в демонстрациите. Пълен индекс: страниците с режими на отказ.
Какво струва едно изпълнение
| Ниво | Модели | Време за изпълнение | Цена на час | Цена на изпълнение |
|---|---|---|---|---|
| RTX 4090 / 24 GB | ACT, SmolVLA | 2 до 5 часа | 0.30 to 0.60 USD | около 1 до 3 USD |
| A100 80 GB / H100 | GR00T N1.7, GR00T N1.5, Pi0.5 | 3 до 6 часа | 1.20 to 2.00 USD | около 4 до 12 USD |
Това е аргументът да започнете с ACT, дори ако по-късно искате VLA. Неуспешно изпълнение на ACT струва колкото кафе и ви казва в рамките на часове дали вашият набор от данни съдържа задачата. Неуспешно изпълнение на GR00T струва четири пъти повече за същия урок. Преминаването към GR00T N1.7 или SmolVLA след това е промяна на формата, а не преизграждане. Предистория: модели за визия-език-действие, пълно ръководство за SO-100, обучете първата си политика и имитационно обучение. Нямате ръка? Страницата на живо предава на живо истински SO-100, който можете да управлявате без регистрация.
Обучете ACT на вашия SO-100
Ръководството за тази точна комбинация: настройки по подразбиране, GPU ниво и колко струва едно изпълнение. Изберете набора от данни, бекендът наема картата и записва контролните точки.
Отворете ръководството за обучениеИма ли предварително обучен ACT модел, който мога да донастроя вместо това?▾
Не. ACT няма базов модел; той съществува само след като го обучите. Това не е пропуск в инструментите, това е същността на ACT: статията обучава политика от нулата за всяка задача. За контролна точка от доставчик използвайте GR00T N1.7 или Pi0.5.
Колко епизода наистина са ми необходими?▾
50: това, което ALOHA записа за всяка задача (100 за Thread Velcro, най-трудната) и минимумът на AY-Robots. lerobot съветва около 10 на местоположение на обект, фиксирани камери, последователен захват. Петдесет чисти епизода са по-добри от сто, при които камерата се е движела.
Трябва ли да променя chunk_size от 100?▾
Обикновено не. Аблацията се покачва от 1 процент при k = 1 до 44 процента при k = 100 и намалява след това, така че 100 е близо до върха. Ако ръката се ангажира твърде дълго, вместо това намалете n_action_steps: при 30 fps, 25 повторни заявки на всеки 0.8 секунди.
Колко време отнема едно обучение и мога ли да го спра по-рано?▾
Два до пет часа на 24 GB карта за 100000 стъпки. Контролните точки се записват на всеки 20000 стъпки и --resume=true възобновява изпълнението, така че ранното спиране е безопасно. Просто не при първия равен участък: гладкостта се подобрява, след като загубата достигне плато.
Загубата намаля, но ръката все още се проваля. Какво сега?▾
Почти винаги наборът от данни. Възпроизведете записани епизоди на ръката: ако възпроизвеждането не изпълнява задачата, данните не я съдържат. След това проверете дали нещо се е преместило, особено камера. ACT няма предварителни знания, така че едно побутване в епизод 21 е постоянно.
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