Полный разбор проекта: от 550 траекторий до онлайн-результата T4
1. Что нужно понять из этого разбора
В этом участии легче всего ошибиться в трёх местах:
- Нормальный loss обучения не означает, что манипуляция в замкнутом цикле способна сложить три уровня.
- Один успешный прогон на fresh3 локально не означает прохождения приватных seed онлайн.
- «Загрузка прошла» и «попали в очередь» — не одно и то же, а уж тем более не «официальная оценка пройдена».
Поэтому разбор ведётся по цепочке доказательств: идентичность данных → происхождение обучения → локальная официальная оценка → пакет отправки → онлайн-результат. Каждый уровень оценивается отдельно, и результат нижнего уровня не используется для вывода о верхнем.
2. Идентичность набора данных
Основной набор T4 зафиксирован как канонический официальный набор с разметкой layout:
| Параметр | Значение |
|---|---|
| Число траекторий | 550 |
| Распределение по шардам | C2=186, C3=182, C4=182 |
| Общий размер исходных данных | 67 546 203 544 байт |
| Источники | stock=290, повтор выравнивания=3, rescue=257 |
| SHA256 канонического manifest | eeca954a7e64dda818a0cca86534e34f6ffa1a8055bd37810f9781a264199901 |
| Размерность обработанных данных | 16-D |
| Камеры | cam_high, cam_left_wrist, cam_right_wrist |
| Проверка next-state | max_error=0 |
Это не «чистый stock из 550». Доля rescue высока: цель работы с данными — закрыть пробелы в покрытии официальных layout, а не оставить только самые удачные траектории. Такой набор помогает замкнуть цикл данных, но несёт риск смещения распределения, смешения паттернов действий и профилей экспертов. Мы рассматриваем это как гипотезу, которую нужно проверить, а не объявляем высокую долю rescue единственной причиной низкого онлайн-результата.
Кроме того, готовился диагностический набор clean50:
- SHA256 исходного manifest:
7918bc860c595add91c37db8b01a27ea08849b5426955e2c1ba5cd3f7ada051f; - SHA256 аудита обработанных данных:
3f5fef447a4dfc47cd6209867560d94091238ec3770fedf4bcbee82caafa7b60; - 50 траекторий, 16-D, три камеры, максимальная ошибка next-state равна 0.
clean50 нужен, чтобы понять, может ли самое чистое подмножество быстрее замкнуть цикл. Использовать его как доказательство для exact550 или для онлайн-таблицы нельзя.
3. Основная конфигурация ACT
Основная линия — официально совместимый ACT, обученный с нуля, около 83,9 млн параметров:
backbone ResNet18
encoder layers 4
decoder layers 7
hidden dim 512
feed-forward dim 3200
attention heads 8
chunk size 50
KL weight 10
batch size 8
learning rate 1e-5
backbone learning rate 1e-5
state/action dim 16
seed 120
action shift 0
gripper loss weight 1
augmentation off
save frequency every 250 epochs
target horizon 6000 epochs
Для ускорения в совместимом окружении использовались больший batch, TF32 и несколько рабочих процессов загрузки. Эти оптимизации обучения не должны менять архитектуру модели, семантику данных или обёртку оценки. Каждое изменение скорости нужно записывать отдельно и не путать «быстрее» с «лучше».
4. Хронология обучения и оценки
4.1 Первый этап: exact550 до глобальной эпохи e1250
Первый участок обучения продолжался от глобальной эпохи e250 до e1250 и нормально завершил 1000 новых эпох. Журнал показывает, что остановка была задана вручную как предел этапа, а не из-за нехватки памяти, падения или повреждения checkpoint. Затем из-за ограничений аппаратуры и дедлайна основная линия не дошла до официальных 6000 эпох.
Здесь проявилась ошибка планирования: если целью были официальные 6000 эпох, нужно было заранее зарезервировать полное окно вычислений и автоматизировать проверку подписи, оценку и откат каждые 250 эпох. Резкое продолжение с e1250 до e2000 у самого дедлайна не может заменить полную зрелость обучения.
4.2 Официальный fresh3 для глобальной e1250
В официальном runner с фиксированными публичными seed и чистой конфигурацией:
sr=0/3;- средний graded =
1/9; - по уровням: 0 уровней = 2, 1 уровень = 1, 2 уровня = 0, 3 уровня = 0;
- все три rollout дошли до 1200/1200 шагов, полного успеха из трёх чаш не было.
Результат показывает, что модель загружается, среда работает и траектории завершаются, но цель задачи не выполнена. Отсутствие ошибок ещё не делает checkpoint пригодным для отправки.
4.3 Официальный fresh3 для глобальной e1500
После продолжения обучения от лучшей e1250 до глобальной e1500:
sr=0/3;- средний graded =
2/9; - по сравнению с e1250 накопился прирост на один уровень, но полный успех из трёх чаш всё ещё
0/3; - агрегированный вывод обычного runner не позволяет однозначно восстановить число уровней для каждого seed, поэтому распределение по seed мы не подделывали.
Затем тот же вес был запущен в версии с трассировкой, чтобы дополнить данные о стадии сбоя. Трассировка — диагностический инструмент и не заменяет официальный результат обычного runner. Она показала уровни 0, 1, 1 для трёх seed; трёх уровней не достигнуто.
4.4 Официальный fresh3 для глобальной e1750
Официальный результат для глобальной e1750 остался таким:
sr=0/3;- средний graded =
2/9; - все три прогона завершились rollout, но полного успеха из трёх чаш не было.
Значит, переход от e1500 к e1750 не дал заметного улучшения на небольшой официальной выборке. В такой ситуации нужно проверять диагностику данных, выравнивание и топологию процессов, а не просто добавлять эпохи.
4.5 Контрольная серия clean50 до e6500
Ветка clean50 обучалась до e6500 и дала два разных результата:
- обычный официальный runner: fresh3 —
0/3, graded =1/3; - диагностический runner с трассировкой: fresh3 —
1/3, graded =5/9, распределение по уровням: 0 уровней = 1, 1 уровень = 0, 2 уровня = 1, 3 уровня = 1.
Оба запуска использовали один и тот же вес и одни и те же публичные seed, но топология runner была разной, а версия с трассировкой содержала диагностическую обёртку вокруг официальной функции оценки. Поэтому их можно записать только как «различие между запусками и доказательство достижимости», но нельзя выбрать высокий результат для отправки, нельзя выдать 5/9 за официальный балл.
4.6 Отправка и онлайн-результат
Перед дедлайном мы отправили кандидата, у которого было самое сильное доказательство среди исторических обычных официальных runner, а не clean50 с трассировкой и не основную линию exact550 e1750/e2000:
- локальный fresh3:
sr=1/3; - локальный graded:
2/3; - аккаунт проверен по отправке;
- официальная квитанция:
#719 T4; submit_exit=0.
Вторая версия exact550 e2000 стартовала до дедлайна, но после него сервер вернул 403, сообщив, что приём закрыт; второй идентификатор очереди не появился.
Итоговая онлайн-таблица:
T1: 0.60 (порог пройден)
T2: 0.67 (порог пройден)
T3: 0.54 (порог пройден)
T4: 0.2533333333333333 = 25.3/100
Онлайн-результат заметно ниже локального 2/3 у контрольного кандидата. Это значит, что успешность на трёх публичных seed не равна стабильности на сотне приватных seed, а границы отправки, окружение и покрытие приватных сцен нужно считать ключевыми рисками с самого начала.
5. Перенос оборудования и ресурсов
Мы использовали одну карту 4090, локальные ресурсы RTX PRO 6000 и облачные ресурсы PRO 6000. Главная проблема была не в том, какая карта быстрее, а в том, что вычислительное окно, диск, окружение, принадлежность GPU и канал синхронизации были ограничены одновременно:
- удалённый экземпляр 4090 отключился из-за недостатка средств, и обучение оборвалось;
- пока искали возможность пополнения, ждали запуска и синхронизировали окружение, был потерян ценный отрезок до дедлайна;
- в облачной PRO 6000 были задачи других пользователей и ограничение корневого диска, поэтому нельзя было безусловно поднять ещё одно большое окружение;
- перенос рантайма Python 3.10 / PyTorch / SAPIEN / MPlib / cuRobo из C3 оказался надёжнее переустановки по requirements, но синхронизация образа занимала много времени и требовала докачки и проверки SHA;
- на этапе оценки нужно держать один процесс и монопольный доступ к GPU; нельзя запускать второй процесс SAPIEN только потому, что на карте ещё есть свободная память.
Итоговый урок: план обучения должен включать аренду вычислений и риски отключения или отсутствия средств в версионированном runbook. Большие окружения, исходные данные и checkpoint следует заранее переносить на постоянный диск или в восстанавливаемое объектное хранилище, а не откладывать на последнюю ночь.
6. Доказательства и границы публикации
Во внутреннем рабочем пространстве хранятся такие доказательства: manifest обучения и аудит обработанных данных, SHA checkpoint и статистик, JSON fresh3/fresh10/fresh20, квитанции CLI отправки, снимки таблицы лидеров и очереди, а также происхождение checkpoint.
При публикации в открытом репозитории журналы сначала нужно очистить от личных путей, IP, PID/PGID, полных токенов, приватных ключей SSH, внутренних URL и ассетов без разрешения на распространение. Нельзя копировать весь приватный каталог logs/ в Git.