
Тренуйте Action Chunking Transformer з нуля на SO-100 за допомогою lerobot: конфігурація act, chunk_size та n_action_steps, розклад на 100000 кроків, висновок за 20 мс.
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 мс, тоді як VLA з 3 мільярдами параметрів потребує від 152 до 485 мс і коштує від 1 до 3 USD за запуск замість 4 до 12. Цей посібник описує ручний шлях з lerobot на SO-100: запис, конфігурація act, що контролюють chunk_size та n_action_steps, розклад на 100000 кроків, розгортання. Потім те саме завдання на AY-Robots, включаючи випадки, коли платформа не допомагає.
Що потрібно знати
- •ACT тренується з нуля: без базової моделі, без попереднього навчання, без мовного вводу. Одна контрольна точка, одне завдання.
- •Стаття: близько 80 млн параметрів, близько 5 годин на 11 ГБ RTX 2080 Ti, 0.01 с висновку.
- •Налаштування за замовчуванням lerobot: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 steps, seed 1000.
- •На AY-Robots: 20 мс на крок, найшвидший з п'яти. Мінімум 50 епізодів, LeRobot v3.0, карта 24 ГБ, 1 до 3 USD за запуск.
- •Він виграє на завданні, яке бачив, і програє, як тільки ви захочете мовне кондиціонування.
Перевірено 23 серпня 2026 року проти lerobot 0.6.x: pyproject.toml на main читає version = "0.6.2", найновіший тег v0.6.1, 3 серпня 2026 року. Посібник, що починається з python lerobot/scripts/train.py передує точкам входу консолі lerobot-train, lerobot-record та lerobot-rollout.
Що таке ACT насправді
Метод Action Chunking with Transformers походить з роботи ALOHA, Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware, від Zhao, Kumar, Levine та Finn, arXiv, 23 квітня 2023 року. Установка записує дані з частотою 50 Гц за допомогою чотирьох вебкамер, що транслюють відео 480x640 з частотою 30 кадрів на секунду: дві на захватах, одна зверху, одна спереду. Анотація стверджує про шість навичок з успішністю від 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 мс на крок, але не при 485 мс. Дивіться затримка висновку.
Коли ACT перевершує базову модель
П'ять навчаних політик поруч, з показниками, які AY-Robots вимірює та використовує для визначення розміру орендованого GPU.
| Політика | Сімейство | Параметри | За крок | Рівень GPU | Мін. епізодів | Набір даних |
|---|---|---|---|---|---|---|
| Трансформер з розбиттям на фрагменти, з нуля | ~80 M | 20 ms | RTX 4090 / 24 GB | 50 | LeRobot v3.0 | |
| Компактний VLA | ~450 M | 245 ms | RTX 4090 / 24 GB | 30 | LeRobot v3.0 | |
| База VLA, дифузійна голова | ~3 B (~40 M trained) | 152 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 | |
| База VLA, попередник | ~3 B | 165 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 | |
| VLA зі зіставленням потоків, див. | ~3 B, PaliGemma backbone | 485 ms | A100 / H100 80 GB | 50 | LeRobot v3.0 |

- 20 мс на крок дії, найшвидший з п'яти, на карті 24 ГБ, а не A100.
- Від 1 до 3 доларів США за запуск проти 4 до 12 для класу 3 B.
- Точний у роботі з частими контактами, яку він бачив: 88 і 96 відсотків на Slide Ziploc і Slot Battery, де попередні методи ніколи не проходили першу стадію.
- Без мовного кондиціонування: рядок завдання ігнорується, тому одна контрольна точка — це одне завдання.
- Без семантичних апріорі: все, що він знає, походить з ваших 50 епізодів.
- Вузька узагальненість: перемістіть камеру, і вам доведеться перенавчати.
- Він тихо виходить з ладу: втрати падають, рука нічого не робить, журнали нічого не повідомляють.
- Перевага у швидкості допомагає лише тоді, коли висновок знаходиться поруч із сервоприводами.
Вибирайте ACT, коли завдання та сцена фіксовані, а рух має бути швидким і точним. Вибирайте коли одна контрольна точка повинна охоплювати кілька інструкцій. Дві сторінки порівнюють рішення безпосередньо: та . Для опублікованих бенчмарків, посилається на джерело кожного числа.
Що вам потрібно, перш ніж почати
Одна рука-послідовник, одна рука-лідер для , щонайменше одна камера, графічний процесор 24 ГБ. 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 В. Подача на них 12 В знищує їх, досить тихо, щоб люди спочатку звинувачували програмне забезпечення, а блок живлення Koch 12 В фізично підходить до плати SO-100. Перевірте етикетку. Симптоми: сервопривід не відповідає, рука смикається, потім опускається. Також SO-100 проти SO-101.
Від голої руки до записаного набору даних
Описаний нижче процес стосується lerobot 0.6.x. Пропустіть його, якщо у вас є відкалібрована рука та набір даних. В іншому випадку посібник із початку роботи з SO-100 охоплює збірку, покроковий посібник із запису охоплює захоплення, а документація по наборах даних формат.
- 1Встановіть lerobot з потрібними додатками
Для запису потрібні
core_scripts, для навчанняtraining, для сервоприводів 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 - 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, початкове значення 1000, контрольна точка кожні 20000 кроків, логування кожні 200.
Повний запуск залишає п'ять каталогів контрольних точок, від 020000 до 100000, плюс символічне посилання last. Зберігайте їх усі: найкраща політика часто не є останньою.
| Налаштування | Типове значення lerobot | Форма AY-Robots ACT | Коментар |
|---|---|---|---|
| розмір пакета | 8 | 8 | Зменшіть його спочатку, якщо досягнете лімітів VRAM. |
| швидкість навчання | 1e-5 | 1e-5 | Так само, як у статті ALOHA. |
| максимальна кількість кроків | 100000 | 100000 | Приблизно там, де набір з 50 епізодів перестає покращуватися. |
| накопичення градієнта | 1 | 1, does not apply | Натомість змініть розмір пакета. |
| початкове значення | 1000 | exposed | Точка входу tyro GR00T не має початкового значення; запуски ACT є відтворюваними. |
| розмір фрагмента / кількість кроків дії | 100 / 100 | 100 / 100, editable | Горизонт прогнозування та виконання. Зменшуйте другий, а не перший. |
| частота контрольних точок | 20000 | not exposed | saveSteps тут є налаштуванням GR00T. |
ACT при розмірі пакета 8 з двома камерами 640x480 комфортно розміщується на 24 ГБ. Він перестає поміщатися, коли люди збільшують розмір пакета для швидкості або подають йому кадри 1920x1080, як показує один приклад запису lerobot. Два бекбони ResNet-18 при 1080p мають зовсім інший профіль пам'яті. Зменшіть --batch_size до 4, перш ніж орендувати більшу відеокарту. Дивіться нестача пам'яті під час навчання.
Тривалість: близько 5 годин на 11 ГБ RTX 2080 Ti у статті, кілька годин для 100 тис. кроків згідно зі сторінкою ACT lerobot, від 2 до 5 годин на рівні 24 ГБ 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. - Знайдіть порти, встановіть ідентифікатори двигунів, відкалібруйте обидві руки, запишіть 50 епізодів.
- Відтворіть кілька епізодів, щоб переконатися, що дані містять завдання.
- Орендуйте або придбайте GPU на 24 ГБ, узгодьте 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потім надає політику локальному клієнту робота. Бездіяльний сторожовий таймер знищує под, тому нічого не виставляється рахунком безшумно.- Ті ж операції існують у CLI, сервері MCP та документації з навчання.
Це не виправляє ваші дані: набір даних зі зміщеною камерою навчається тут так само погано, і форма не може цього виявити. Також це не усуває проблему затримки. Цикл керування становить від 20 до 485 мс на крок дії, з додатковими круговими поїздками через публічний інтернет, і ACT страждає найбільше, оскільки його крок найкоротший: 60 мс — це 12-відсоткове уповільнення для 485 мс Pi0.5, але в чотири рази більше, ніж крок 20 мс для 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 кадрах в секунду. Ще два моменти, які варто знати: один непрацюючий суглоб зазвичай є ідентифікатором сервоприводу, який ніколи не був записаний, і захватом, який наближається, але ніколи не закривається означає занадто малий діапазон захвату в демонстраціях. Повний індекс: сторінки режимів відмов.
Скільки коштує запуск
| Рівень | Моделі | Час виконання | Ціна за годину | Вартість одного запуску |
|---|---|---|---|---|
| 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 |
Це аргумент на користь початку роботи з 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 кадрах на секунду, 25 повторних запитів кожні 0.8 секунди.
Скільки часу займає навчальний запуск, і чи можу я зупинити його раніше?▾
Від двох до п'яти годин на карті 24 ГБ для 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