Матриця тренувань AY-Robots з п'ятьма рядками політик та чотирма стовпцями роботизованих рук, кожна клітинка посилається на конкретну модель та посібник з тренування руки
ACTSO-100lerobotімітаційне навчаннятренування політики

Як тренувати ACT на SO-100 з нуля

AY-Robots ResearchAugust 23, 202616 хв читання

Тренуйте 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, Таблиця IIIlerobot на main
швидкість навчання1e-5optimizer_lr = 1e-5
розмір батчу8batch_size = 8, in TrainPipelineConfig not ACTConfig
шари енкодера / декодера4 / 7n_encoder_layers = 4 / n_decoder_layers = 1
розмір чанку k100chunk_size = 100
латентна розмірність zвідсутня; Рис. 11 показує проєкцію від 32 до 512latent_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: ви зберігаєте довге передбачення і частіше робите повторні спостереження.

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
Скорочення виконаної частини фрагмента без скорочення передбачення.
Пастка часового ансамблювання

Встановіть --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 M20 msRTX 4090 / 24 GB50LeRobot v3.0
Компактний VLA~450 M245 msRTX 4090 / 24 GB30LeRobot v3.0
База VLA, дифузійна голова~3 B (~40 M trained)152 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
База VLA, попередник~3 B165 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
VLA зі зіставленням потоків, див. ~3 B, PaliGemma backbone485 msA100 / H100 80 GB50LeRobot v3.0
Сторінка політик AY-Robots, що показує порівняльну таблицю ACT, SmolVLA, GR00T N1.5, GR00T N1.7 та Pi0.5 з кількістю параметрів, вимогами до GPU, затримкою висновку та мінімальною кількістю епізодів
Таблиця /policies: ACT має найменшу кількість параметрів та найкоротший час кроку.
Навчання ACT з нуля
Переваги
  • 20 мс на крок дії, найшвидший з п'яти, на карті 24 ГБ, а не A100.
  • Від 1 до 3 доларів США за запуск проти 4 до 12 для класу 3 B.
  • Точний у роботі з частими контактами, яку він бачив: 88 і 96 відсотків на Slide Ziploc і Slot Battery, де попередні методи ніколи не проходили першу стадію.
Компроміси
  • Без мовного кондиціонування: рядок завдання ігнорується, тому одна контрольна точка — це одне завдання.
  • Без семантичних апріорі: все, що він знає, походить з ваших 50 епізодів.
  • Вузька узагальненість: перемістіть камеру, і вам доведеться перенавчати.
  • Він тихо виходить з ладу: втрати падають, рука нічого не робить, журнали нічого не повідомляють.
  • Перевага у швидкості допомагає лише тоді, коли висновок знаходиться поруч із сервоприводами.

Вибирайте ACT, коли завдання та сцена фіксовані, а рух має бути швидким і точним. Вибирайте коли одна контрольна точка повинна охоплювати кілька інструкцій. Дві сторінки порівнюють рішення безпосередньо: та . Для опублікованих бенчмарків, посилається на джерело кожного числа.

Що вам потрібно, перш ніж почати

Одна рука-послідовник, одна рука-лідер для , щонайменше одна камера, графічний процесор 24 ГБ. ACT зчитує лише зображення та положення суглобів. Дві камери — це оптимальний варіант: фіксований фронтальний вид для визначення розташування об'єктів, камера на зап'ясті для того, до чого збирається торкнутися, як у ALOHA.

РукаСервоприводиНапругаВартість компонентівСтатус
SO-100Feetech STS32157.4 V~110 to 150 EURПовна підтримка, еталонна рука
SO-101Feetech STS32157.4 V~130 to 170 EURПовна підтримка
Koch v1.1Dynamixel XL330 / XL4305 V and 12 V rails~250 to 350 EURСумісний
LeKiwiFeetech STS3215 (arm)7.4 V arm, 12 V base~400 to 500 EURСумісний
7.4 В, не 12 В

SO-100 та SO-101 використовують сервоприводи Feetech STS3215 на шині 7.4 В. Подача на них 12 В знищує їх, досить тихо, щоб люди спочатку звинувачували програмне забезпечення, а блок живлення Koch 12 В фізично підходить до плати SO-100. Перевірте етикетку. Симптоми: сервопривід не відповідає, рука смикається, потім опускається. Також SO-100 проти SO-101.

Від голої руки до записаного набору даних

Описаний нижче процес стосується lerobot 0.6.x. Пропустіть його, якщо у вас є відкалібрована рука та набір даних. В іншому випадку посібник із початку роботи з SO-100 охоплює збірку, покроковий посібник із запису охоплює захоплення, а документація по наборах даних формат.

  1. 1
    Встановіть lerobot з потрібними додатками

    Для запису потрібні core_scripts, для навчання training, для сервоприводів 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
    Знайдіть USB-порт кожної руки

    Запустіть його з підключеними обома руками, відключаючи одну за запитом. У Linux може знадобитися відкрити дозволи вузла.

    bash
    lerobot-find-port
    # on Linux, if the port exists but is unreadable:
    sudo chmod 666 /dev/ttyACM0
  3. 3
    Встановіть ідентифікатори двигунів та швидкість передачі даних

    На SO-100 це відбувається до збирання: на відміну від SO-101, роз'єми недоступні після складання. Скрипт проходить по шині по одному двигуну, починаючи від захвату, записуючи ідентифікатори в 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
    Відкалібруйте обидві руки

    Встановіть кожен суглоб у середину його діапазону, натисніть Enter, потім проведіть кожен через весь його діапазон. Калібрування дозволяє політиці, навченій на одній руці, працювати на іншій. Повторно використовуйте той самий id.

    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
    Телекеруйте один раз з увімкненими камерами

    Емпіричне правило lerobot: ви повинні бути в змозі виконати завдання, дивлячись лише на зображення з камери. Якщо ви не можете, то й ACT не зможе. Це виявляє більше поганих наборів даних, ніж подальше налагодження.

    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
    Запишіть 50 епізодів

    50 — це мінімум для AY-Robots і те, що ALOHA використовувала для кожного завдання. lerobot радить 10 на кожне розташування об'єкта, камери зафіксовані, захоплення послідовне. n завершує епізод, r перезаписує, q зупиняє та кодує.

    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
Сторінка посібника із запису AY-Robots, що пояснює, як захопити набір даних у форматі LeRobot із сеансу телеоперації
Посібник із запису. Десктопний клієнт записує той самий макет, що й lerobot-record.
Пастка, що з'їдає день: непослідовний набір даних

ACT не має попередніх знань, на які можна було б покладатися, тому кожна непослідовність стає постійною. Три найдорожчі: камера, зсунута між епізодами 20 і 21, світло, що змінилося, тому що ви записали половину набору вдень, захоплення, виконане двома способами. Кожен з них дає ідеально виглядаючу криву втрат і руку, яка рухається в неправильне місце. Дивіться втрати падають, політика нічого не робить, політика працює лише в одній конфігурації та збір високоякісних навчальних даних.

Перед навчанням відтворіть щонайменше п'ять епізодів. зберігає потоки з камер, стани суглобів та дії за , а відтворення повертає ці дії руці. Якщо відтворення не виконує завдання, дані не містять його, і навчання не винайде його.

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
Відтворення епізоду 0. Якщо це не вдається, зупиніться та запишіть заново.

Навчання політики ACT

Це повна команда. Усе, що стосується ACT, вже є значенням за замовчуванням, тому сторінка lerobot ACT рекомендує починати саме з них.

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
Команда для навчання з документації lerobot 0.6.x, для набору даних SO-100.

--policy.type=act завантажує ACTConfig, який адаптується до будь-якої кількості двигунів і камер, записаних вашим набором даних, тому вам ніколи не потрібно оголошувати форму спостереження. --wandb.enable=true є необов'язковим і вартим того: крива втрат — це єдиний дешевий сигнал у 100000-кроковому запуску. Розклад походить від конфігурації навчання lerobot, а не ACTConfig: 100000 кроків, пакет 8, початкове значення 1000, контрольна точка кожні 20000 кроків, логування кожні 200.

Повний запуск залишає п'ять каталогів контрольних точок, від 020000 до 100000, плюс символічне посилання last. Зберігайте їх усі: найкраща політика часто не є останньою.

НалаштуванняТипове значення lerobotФорма AY-Robots ACTКоментар
розмір пакета88Зменшіть його спочатку, якщо досягнете лімітів VRAM.
швидкість навчання1e-51e-5Так само, як у статті ALOHA.
максимальна кількість кроків100000100000Приблизно там, де набір з 50 епізодів перестає покращуватися.
накопичення градієнта11, does not applyНатомість змініть розмір пакета.
початкове значення1000exposedТочка входу tyro GR00T не має початкового значення; запуски ACT є відтворюваними.
розмір фрагмента / кількість кроків дії100 / 100100 / 100, editableГоризонт прогнозування та виконання. Зменшуйте другий, а не перший.
частота контрольних точок20000not exposedsaveSteps тут є налаштуванням 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 рази більше після стабілізації.

bash
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.

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
Автономний розгортання без запису. Використовуйте --strategy.type=sentry для запису епізодів оцінки.
Цю команду нещодавно перейменували, тому старі посібники не збігаються

Оцінка раніше виконувалася за допомогою 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.

  1. Встановіть lerobot 0.6.x з core_scripts, training, feetech, ffmpeg.
  2. Знайдіть порти, встановіть ідентифікатори двигунів, відкалібруйте обидві руки, запишіть 50 епізодів.
  3. Відтворіть кілька епізодів, щоб переконатися, що дані містять завдання.
  4. Орендуйте або придбайте GPU на 24 ГБ, узгодьте CUDA та PyTorch, запустіть lerobot-train --policy.type=act.
  5. Зачекайте кілька годин, потім запустіть lerobot-rollout на машині біля маніпулятора.
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
Що дає цей шлях

Повний контроль: редагуйте configuration_act.py, додайте камеру, форкніть тренажер. Для досліджень, а не для виконання завдання, платформа є відволікаючим фактором.

Матриця навчання AY-Robots з п'ятьма рядками політик і чотирма стовпцями роботизованих маніпуляторів, де кожна клітинка посилається на конкретний посібник з навчання для цієї комбінації моделі та маніпулятора
Матриця на /train. Рядок ACT проти стовпця SO-100 — це посібник цієї статті.

Що насправді йде не так

Майже весь біль не в команді навчання. Він у речах навколо неї, упорядкованих за тим, як часто вони виникають вперше.

СимптомЗвичайна причинаСторінка
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 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

Це аргумент на користь початку роботи з 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 є постійним.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started