Учебник по зеркалу соревнования LeHome Challenge: обучение и оценка
Этот документ предназначен тем, кто уже получил официальное зеркало (образ) LeHome Challenge и хочет как можно быстрее начать обучение и оценку.
Здесь даются ответы на пять вопросов:
- Можно ли сразу пользоваться текущим образом окружения.
- Какие данные скачивать для обучения:
mergedили неmerged. - Как минимальными средствами запустить обучение, оценку и воспроизведение эксперимента.
- Как записать конфигурацию обучения и куда сохранять выходные данные.
- Какие большие файлы не нужно коммитить в репозиторий учебника.
Видеоурок: видеоурок по соревнованию LeHome по складыванию мягкой одежды ICRA2026 http://xhslink.com/o/2oxCz0RTXcA
1. Можно ли пользоваться текущим образом
Вывод: можно.
На текущем образе проверено следующее:
- путь к репозиторию LeHome:
/path/to/lehome-challenge; isaacsimдоступен:5.1.0.0;lerobotдоступен:0.4.3;- GPU:
NVIDIA L40; - локальный HEAD:
2953e2f9c1376a1e49ac10b3ad690efb886f4c6c; - текущий
origin/mainна удалённом сервере:32b53595da504880592a79ed5e362ad0ba0fac6b; - один прогон оценки ACT выполнен успешно;
- один прогон оценки DP выполнен успешно, и параметр
--policy_num_inference_steps 1работает; - старые неудачные видео оценки удалены, дальнейший вывод складывается в
/path/to/outputs/eval/.
Пояснения:
- Окружение запускается, загружает модели, строит сцены и выполняет оценку.
- Локальная копия кода не совпадает с последней версией на удалённом сервере.
- Если хотите точно повторить состояние образа, переключитесь на его commit:
git checkout 2953e2f9c1376a1e49ac10b3ad690efb886f4c6c
- Если хотите выровняться с последней веткой
mainна удалённом сервере, выполните:
git fetch origin
git checkout 32b53595da504880592a79ed5e362ad0ba0fac6b
- Результаты воспроизведения совпадают с описанием в официальном пакете воспроизведения: успешность остаётся низкой. Это скорее проблема самой задачи и физического эффекта, а не ошибка запуска образа.
2. Какие данные для обучения скачивать
2.1 Вывод
Если цель — быстро начать базовое обучение, скачивайте:
hf download lehome/dataset_challenge_merged --repo-type dataset --local-dir Datasets/example
То есть используйте версию merged.
2.2 Почему
Официальная конфигурация обучения по умолчанию использует данные merged:
configs/train_act.yamlиспользуетDatasets/example/top_long_merged;configs/train_dp.yamlиспользуетDatasets/example/top_long_merged;configs/train_smolvla.yamlиспользуетDatasets/example/top_long_merged.
Это значит, что ожидаемая официальная точка входа для обучения — объединённый набор данных.
2.3 Чем отличаются merged и не merged
Можно понимать так:
dataset_challenge- более сырая и разрозненная организация данных;
- подходит, если вы сами занимаетесь обработкой данных: разбиением, аугментацией, добавлением глубины или облака точек;
- если хотите изучить процесс производства данных или перестроить обучающий набор, используйте его.
dataset_challenge_merged- уже подготовленный результат, пригодный для обучения без доработок;
- данные объединены по категориям в каталоги вида
top_long_merged,pant_long_merged; - лучше всего подходит для прямой подачи в
lerobot-train.
2.4 Нужны ли данные глубины
Если цель — только пройти базовый этап:
- сначала используйте
merged; - сначала не используйте глубину;
- сначала возьмите официальный базовый вариант RGB + состояние суставов.
Причины:
- официальная документация явно подтверждает, что комбинация
state + RGBпроверена; - глубина работает, но увеличивает объём хранилища, нагрузку на ввод-вывод и сложность конфигурации;
- в официальной документации по обработке данных есть отдельный процесс «удаление глубины для уменьшения объёма».
2.5 Рекомендуемый выбор
Рекомендуемый порядок:
- Для новичков и базового результата соревнования:
dataset_challenge_merged. - Для экспериментов с глубиной: добавьте
observation.top_depthповерхmerged. - Для собственной перестройки данных: изучите не-
mergedвариантdataset_challenge.
2.6 С какой задачи начать обучение
Если цель — учебный материал, а не сразу полноценное участие в соревновании, рекомендуется начать с:
top_short
Важно сказать прямо: это инженерный выбор для обучения, а не то, что в текущем пакете воспроизведения эта задача уже показывает наибольшую успешность. В текущем пакете все четыре исторических набора статистики имеют успешность 0.0%, поэтому нельзя утверждать, что «самая простая задача» уже доказана существующими результатами.
Почему всё же стоит начинать с top_short:
- по сравнению с
top_longу короткой футболки меньше связи с дальним краем ткани, как у длинного рукава; - по сравнению с брюками визуальная цель футболки нагляднее, и новичку легче понять, что значит «сложено успешно»;
- среди задач на верх одежды
top_shortобычно удобнееtop_longдля первого занятия.
Поэтому в учебнике принят двухуровневый маршрут:
- Учебный маршрут: сначала
top_short. - Маршрут соревнования: затем прогнать все четыре категории.
3. Минимальный порядок запуска
3.1 Клонирование официального репозитория
git clone https://github.com/lehome-official/lehome-challenge.git
cd lehome-challenge
Если образ уже содержит установленный репозиторий, просто перейдите в готовый каталог:
cd /path/to/lehome-challenge
3.2 Загрузка ассетов
hf download lehome/asset_challenge --repo-type dataset --local-dir Assets
3.3 Загрузка примера обучающих данных
hf download lehome/dataset_challenge_merged --repo-type dataset --local-dir Datasets/example
Если нужна только одна категория для быстрой проверки, можно скачать только её подкаталог:
hf download lehome/dataset_challenge_merged \
--repo-type dataset \
--local-dir Datasets/example \
--include 'top_long_merged/**'
Если вы будете проходить учебник полностью, убедитесь, что на месте все четыре каталога:
Datasets/example/top_short_mergedDatasets/example/top_long_mergedDatasets/example/pant_short_mergedDatasets/example/pant_long_merged
Важно различать:
- учебный старт: сначала
top_short_merged; - полное участие в соревновании: нужны все четыре категории.
3.3.1 Чем учебный поток отличается от соревновательного
Учебный поток нужен не для того, чтобы в первый день прогнать все задачи соревнования, а чтобы сначала освоить:
- как выбрать каталог данных;
- как запустить обучение;
- как читать журналы;
- где сохраняются модели;
- где лежат видео оценки.
Поэтому учебный поток сначала берёт одну категорию, рекомендуем top_short.
Соревновательный поток другой: нужно охватить все четыре категории:
top_shorttop_longpant_shortpant_long
3.4 Учебный урок 1: обучение ACT на top_short
Рекомендуется использовать учебный конфигурационный файл и сохранять выходные данные на диск с данными:
- файл конфигурации:
15-challenges/LeHome/resources/configs/train_act_every_embodied.yaml
mkdir -p /path/to/outputs/train/act_top_short
lerobot-train \
--config_path 15-challenges/LeHome/resources/configs/train_act_every_embodied.yaml \
2>&1 | tee /path/to/outputs/train/act_top_short/train.log
Эта команда делает два действия:
- запускает обучение с учебным YAML;
- через
teeсохраняет вывод терминала вtrain.log, чтобы потом анализировать loss и строить графики.
Новичкам при первом запуске лучше не менять строку команды, а сначала разобраться, что делает каждое поле YAML, и потом изменить один-два параметра.
Этот YAML уже представляет собой учебный вариант для top_short и не требует ручной правки.
3.5 Учебный урок 2: обучение DP на той же задаче top_short
Снова используйте учебный конфигурационный файл:
- файл конфигурации:
15-challenges/LeHome/resources/configs/train_dp_every_embodied.yaml
mkdir -p /path/to/outputs/train/dp_top_short
lerobot-train \
--config_path 15-challenges/LeHome/resources/configs/train_dp_every_embodied.yaml \
2>&1 | tee /path/to/outputs/train/dp_top_short/train.log
DP обычно медленнее и требует больше ресурсов, чем ACT, поэтому в учебной конфигурации:
batch_sizeменьше, чем у ACT;stepsувеличено до90000;log_freqуменьшено до100.
Так обучение лучше соответствует привычному для Diffusion Policy режиму, и за сходимостью проще наблюдать.
Этот YAML также уже представляет учебный вариант для top_short и не требует ручной правки.
3.6 Учебная оценка: ACT на top_short
python -m scripts.eval \
--policy_type lerobot \
--policy_path /path/to/outputs/train/act_top_short/checkpoints/last/pretrained_model \
--dataset_root Datasets/example/top_short_merged \
--garment_type top_short \
--num_episodes 2 \
--enable_cameras \
--save_video \
--video_dir /path/to/outputs/eval/act_top_short \
--device cpu
3.7 Учебная оценка: DP на top_short
При оценке на CPU явно ограничьте число шагов инференса диффузии:
python -m scripts.eval \
--policy_type lerobot \
--policy_path /path/to/outputs/train/dp_top_short/checkpoints/last/pretrained_model \
--dataset_root Datasets/example/top_short_merged \
--garment_type top_short \
--num_episodes 2 \
--enable_cameras \
--save_video \
--video_dir /path/to/outputs/eval/dp_top_short \
--device cpu \
--policy_device cpu \
--policy_num_inference_steps 1
3.7.1 Почему учебный курс не начинается сразу с четырёх категорий
Если сразу брать четыре категории, новичок одновременно столкнётся с:
- четырьмя наборами данных;
- четырьмя каталогами выходных моделей;
- четырьмя командами оценки;
- более длительным обучением;
- более сложным поиском неисправностей.
Главная задача учебника — сначала показать полный замкнутый цикл, поэтому первый урок идёт на top_short.
3.7.2 Как проходить полный соревновательный маршрут
Полное участие в соревновании не сводится к top_short. Рекомендуется делать по категориям:
top_shorttop_longpant_shortpant_long
То есть весь цикл «обучение + оценка + сводка результатов» нужно повторить для всех четырёх категорий.
3.7.3 Организация обучения по четырём категориям
Самый надёжный и удобный для обучения вариант:
- обучать каждую категорию отдельно;
- оценивать каждую категорию отдельно;
- в конце собрать результаты вместе.
Рекомендуемая структура каталогов:
/path/to/outputs/
├── train/
│ ├── act_top_short/
│ ├── act_top_long/
│ ├── act_pant_short/
│ ├── act_pant_long/
│ ├── dp_top_short/
│ ├── dp_top_long/
│ ├── dp_pant_short/
│ └── dp_pant_long/
├── eval/
└── plots/
3.7.4 Как последовательно запускать четыре категории
Схему top_short можно использовать как шаблон: заменить три значения:
dataset.rootoutput_dirgarment_type
Например:
top_shortdataset.root: Datasets/example/top_short_mergedgarment_type: top_short
top_longdataset.root: Datasets/example/top_long_mergedgarment_type: top_long
pant_shortdataset.root: Datasets/example/pant_short_mergedgarment_type: pant_short
pant_longdataset.root: Datasets/example/pant_long_mergedgarment_type: pant_long
Поэтому главное в учебнике — не запомнить одну команду, а понять: три места, которые меняются при переходе к другой задаче.
3.7.5 Что подготовить перед отправкой на соревнование
В текущем README официального репозитория нет фиксированной команды отправки; там сказано только, что инструкции по отправке будут опубликованы на сайте.
Поэтому здесь нельзя придумать «официальный скрипт отправки». Но заранее подготовить материалы можно.
Рекомендуется подготовить как минимум:
- итоговые модели для всех четырёх категорий;
- журналы оценки для всех четырёх категорий;
- показатель успешности (success rate) для всех четырёх категорий;
- типичные видео для всех четырёх категорий;
- конфигурационные YAML обучения;
- соответствующий commit кода.
С точки зрения учебника этот шаг можно понимать так:
- сначала собрать свой «пакет экспериментов» соревнования полностью;
- и только когда станет известен официальный формат отправки, загрузить его.
3.8 Конфигурация обучения подробно
В учебной конфигурации стоит объяснить такие поля:
dataset.root- каталог обучающих данных;
- в первом учебном уроке по умолчанию
Datasets/example/top_short_merged; - такой выбор сделан потому, что базовая официальная конфигурация сама ссылается на
*_merged, и новичку не нужно сначала разбираться в объединении наборов, чтобы начать обучение.
policy.typeactилиdiffusion;- ACT — рекомендуемая первая точка, потому что логика обучения более наглядна и обычно быстрее;
- Diffusion Policy стоит сравнивать с ACT только после того, как базовый вариант ACT уже работает.
policy.device- при обучении рекомендуется
cuda; - на CPU обучение почти не эффективно, потому что и энкодер изображений, и сеть политики достаточно тяжёлые.
- при обучении рекомендуется
input_features- для базового варианта рекомендуется
observation.state + top/left/right RGB; - это инженерно надёжная отправная точка;
stateдаёт информацию о суставах руки, RGB — о форме ткани и её положении;- для учащегося эта комбинация также самая понятная: одна часть — собственная поза робота, другая — то, что видит камера.
- для базового варианта рекомендуется
output_features- для базового варианта рекомендуется
action; - то есть модель напрямую предсказывает действия в суставном пространстве;
- такое управление в пространстве суставов (joint-space control) удобнее как учебный базовый вариант, чем
ee_pose, поскольку в нём нет дополнительного слоя ошибки обратной кинематики.
- для базового варианта рекомендуется
output_dir- уже указывает на диск с данными, например
/path/to/outputs/train/act_top_short; - это нужно, чтобы не заполнить системный диск.
- уже указывает на диск с данными, например
batch_size- напрямую связан с объёмом видеопамяти;
- в учебной версии ACT по умолчанию
64, для DP —48; - новичку можно представлять так: сколько обучающих примеров подаётся в модель за один шаг;
- чем больше, тем обычно быстрее обучение, но выше расход видеопамяти.
steps- общее число шагов обучения;
- для ACT можно начинать с
30000, для DP разумнее дольше — в учебной конфигурации90000; - больше шагов не всегда лучше: важно, чтобы хватило для наблюдения тенденции сходимости;
- для учебных целей сначала полезнее выбрать число шагов, которое можно выполнить и за которым удобно наблюдать.
save_freq- частота сохранения контрольных точек;
- в учебной конфигурации она повышена, чтобы можно было смотреть промежуточные результаты;
- это особенно важно для обучения: можно сравнить контрольные точки на разных этапах, а не смотреть только последнюю модель.
log_freq- частота записи журнала;
- в учебной конфигурации выставлена чаще, чтобы удобнее строить графики и искать неисправности;
- для учащегося журнал обучения — самое наглядное «окно» в процесс обучения.
eval_freq- интервал промежуточной оценки во время обучения;
- позволяет видеть, что меняется не только loss;
- если loss падает, а success rate при оценке не растёт, это обычно означает: модель выучила подгонку под обучающее распределение, но не обязательно саму задачу.
3.8.1 Почему параметры ACT и DP различаются
Этот вопрос часто возникает у новичков.
ACT
ACT можно понимать как трансформерную политику, которая предсказывает последовательность действий на основе зрения и состояния.
В учебнике для ACT задан такой набор параметров, близкий к верхнему пределу использования L40:
batch_size: 64steps: 30000save_freq: 5000log_freq: 200eval_freq: 5000
Цели такого выбора:
- обучение относительно легко запускается на одной карте;
- журнал достаточно подробный для учебного наблюдения;
- каждые
5000шагов получается контрольная точка; 30000шагов достаточно, чтобы увидеть общую тенденцию сходимости базового варианта.
Diffusion Policy
Diffusion Policy и тяжелее в обучении, и в выводе, особенно при нескольких камерах.
В учебной конфигурации заданы:
batch_size: 48steps: 90000save_freq: 10000log_freq: 100eval_freq: 10000
Цели:
- снизить нагрузку на видеопамять;
- дать модели диффузии достаточно шагов для сходимости;
- смотреть loss и норму градиента с более частым журналированием.
Поэтому не нужно механически считать, что у ACT и DP параметры должны совпадать. У разных структур политики и ритм обучения разный.
3.8.2 Сколько длится обучение и сколько нужно памяти
Ниже оценки по опыту, а не точные значения.
При конфигурации top_short_merged + state + 3 RGB можно ориентироваться так.
ACT
- рекомендуемая видеопамять: не меньше
16 ГБ, надёжнее24 ГБ+; - на карте класса L40 обычно обучается на одной карте;
30000шагов — это задача «на часы», а не «на минуты»;- если в журнале
data_sиupdt_sневелики, полный базовый результат обычно получается за несколько часов.
DP
- рекомендуемая видеопамять:
24 ГБ+надёжнее; 90000шагов обычно заметно дольше, чем ACT;- лучше подходит как задача «на ночь».
Что учащемуся важнее всего:
- не возникает ли ошибка нехватки памяти (OOM);
- сколько времени занимает один шаг;
- стабильно ли падает loss;
- действительно ли становятся лучше оценки промежуточных контрольных точек.
Не стоит сразу гадать, будет ли обучение 3 или 5 часов. Сначала посмотрите в журнале своей машины:
updt_sdata_sstep_per_sec
Именно эти значения определяют реальное время обучения.
3.8.3 Как лучше провести первое обучение
Рекомендуемый порядок:
- Сначала ACT, а не DP.
- Сначала без глубины.
- Сначала не переходить на
ee_pose. - Сначала пройти одну категорию, например
top_short_merged. - Сначала наблюдать за loss, нормой градиента, learning rate и промежуточной оценкой.
- Когда конвейер стабильно работает, расширяться на другие категории.
3.9 Какие промежуточные результаты стоит сохранять
Рекомендуется сохранять как минимум:
train.log- все контрольные точки
config.yamlили копию конфигурации обучения- график кривых обучения
- сводку метрик обучения в CSV или JSON
- если есть промежуточные оценки, то и их журналы и видео
В учебных целях полезно добавить:
- скриншот кривой обучения;
- сравнение «лучшей» и «последней» контрольной точки с выводом;
- запись времени обучения;
- запись занятой видеопамяти.
Удобно хранить всё здесь:
/path/to/outputs/
├── train/
├── eval/
└── plots/
3.10 Разбор журнала обучения и построение графиков
В учебнике есть скрипт:
15-challenges/LeHome/resources/scripts/plot_train_metrics.py
Он разбирает train.log и создаёт:
train_metrics.csvtrain_metrics_summary.jsontrain_metrics.png
Пример:
python 15-challenges/LeHome/resources/scripts/plot_train_metrics.py \
--log_file /path/to/outputs/train/act_top_short/train.log \
--out_dir /path/to/outputs/plots/act_top_short \
--title "ACT Top-Short Training Metrics"
По умолчанию скрипт записывает такие метрики:
lossgrdn— норма градиентаlr— скорость обученияupdt_s— время обновления параметров на шагdata_s— время загрузки данных на шагstep_per_sec— пропускная способность обучения
Учебный смысл каждой метрики:
loss- основная цель оптимизации; сначала смотрим, падает ли она в целом.
grdn- показывает, не взрывается ли градиент и не нестабилен ли он.
lr- показывает, работает ли расписание скорости обучения.
updt_s- время одного шага обновления параметров.
data_s- время загрузки данных на один шаг.
step_per_sec- наглядный показатель пропускной способности обучения.
3.11 Что смотреть кроме loss
Если смотреть на обучение с позиции воспроизведения статей ACT и Diffusion Policy и инженерного обучения, кроме loss рекомендуется фиксировать:
- loss обучения;
- loss валидации;
- норму градиента;
- learning rate;
- время загрузки данных;
- время обновления;
- steps/sec или samples/sec;
- успешность оценки для каждой контрольной точки;
- средний возврат (
return); - длину эпизода;
- успешность по каждой категории одежды (garment/category).
Для результата соревнования важнее всего не loss сам по себе, а:
- стабильно ли падает
loss; - не взрывается ли
gradient norm; - правильно ли работает расписание
lr; - синхронно ли растёт
eval success rateпромежуточных контрольных точек.
3.12 Что сохраняется после окончания обучения
После обучения чаще всего важны:
train.log- исходный журнал обучения;
checkpoints/- модели, сохранённые на разных этапах;
last/- последнее состояние обучения;
pretrained_model/- каталог модели для оценки и развёртывания;
- созданные вами:
train_metrics.csvtrain_metrics_summary.jsontrain_metrics.png
С учебной точки зрения эти файлы делятся на два типа.
Первый тип: продукты обучения
- контрольные точки (checkpoint);
last;pretrained_model.
Это сама «модель».
Второй тип: доказательства обучения
train.log;- CSV/JSON с метриками;
- графики;
- результаты промежуточных оценок.
Это то, на основании чего мы считаем, что модель обучилась нормально.
В учебном процессе нужно сохранять оба типа, нельзя оставлять только файлы модели.
Если захотите развивать учебник дальше, рекомендую в первую очередь добавить:
- автоматическую оценку каждой контрольной точки;
- кривые успешности по каждой категории;
- автоматический выбор лучшей контрольной точки.
3.13 Реально проведённые пробные запуски
Чтобы учебник не ограничивался утверждением «команды должны работать», здесь сохранены реально выполненные на локальной машине минимальные запуски обучения.
3.13.1 Пробный запуск учебной версии ACT
- журнал обучения:
/path/to/outputs/train/act_top_short_probe64.log
- вывод контрольной точки:
/path/to/outputs/train/act_top_short_probe64/checkpoints/000008/pretrained_model
- график кривых:
/path/to/outputs/plots/act_top_short_probe64/train_metrics.png
- сводка метрик:
/path/to/outputs/plots/act_top_short_probe64/train_metrics_summary.json
Ключевые данные пробного запуска:
- данные:
top_short_merged - эффективный размер батча:
64 - число параметров: около
52M - выполнено до шага
8 - loss снизился с
57.147до22.134 - средний
updt_sоколо1.77 с - средний
data_sоколо0.60 с
Это означает, что учебная конфигурация ACT по умолчанию как минимум стабильно запускается на локальной L40 и не требует от пользователя ручной правки YAML.
3.13.2 Пробный запуск учебной версии DP
- журнал обучения:
/path/to/outputs/train/dp_top_short_probe48.log
- вывод контрольной точки:
/path/to/outputs/train/dp_top_short_probe48/checkpoints/000008/pretrained_model
- график кривых:
/path/to/outputs/plots/dp_top_short_probe48/train_metrics.png
- сводка метрик:
/path/to/outputs/plots/dp_top_short_probe48/train_metrics_summary.json
Ключевые данные:
- данные:
top_short_merged - эффективный размер батча:
48 - число параметров: около
271M - выполнено до шага
8 - loss снизился с
1.119до1.097 - средний
updt_sоколо0.94 с - средний
data_sоколо0.79 с
Это показывает, что учебная конфигурация DP также проверена локально: стабильно запускается и записывает контрольные точки и графики обучения.
3.13.3 Как понимать эти пробные запуски
Эти результаты не являются официальным результатом соревнования и не означают полной сходимости. Их назначение:
- показать, что команды, конфигурация и пути вывода работают;
- показать, что учебная конфигурация
top_shortв этом образе запускается без доработок; - показать, что вспомогательный скрипт построения графиков обрабатывает реальные журналы.
Для настоящего соревновательного обучения всё равно стоит идти полным числом шагов:
- ACT:
30000шагов; - DP:
90000шагов.
Если хотите полнее использовать 40 ГБ видеопамяти L40, лучше не просто увеличивать число шагов, а сначала пробовать:
- увеличить
batch_sizeдля ACT; - увеличить
batch_sizeдля DP; - или включить больше периодических промежуточных оценок.
Однако учебная версия по умолчанию сохраняет уже проверенную безопасную отправную точку, чтобы при первом запуске читателю было надёжнее.
3.13.4 Экспортированные видео пробной оценки
Кроме пробного обучения, на локальной машине экспортированы видео первого эпизода пробной оценки top_short:
- ACT:
/path/to/outputs/eval/act_top_short_smoke/failure/episode0_observation_images_top_rgb.mp4/path/to/outputs/eval/act_top_short_smoke/failure/episode0_observation_images_left_rgb.mp4/path/to/outputs/eval/act_top_short_smoke/failure/episode0_observation_images_right_rgb.mp4
- DP:
/path/to/outputs/eval/dp_top_short_smoke/failure/episode0_observation_images_top_rgb.mp4/path/to/outputs/eval/dp_top_short_smoke/failure/episode0_observation_images_left_rgb.mp4/path/to/outputs/eval/dp_top_short_smoke/failure/episode0_observation_images_right_rgb.mp4
В пробной оценке DP подтверждено, что первый эпизод выполнен и записан журнал:
Return=102.25Length=600Success=False
Это учебный пример вывода, а не полная статистика соревнования. Официальная category eval обходит все варианты одежды в категории, поэтому в учебнике обычно достаточно сохранить реальный пример первого эпизода.
3.14 Усиленная версия для соревнования: долгое обучение на одной L40
Если цель — перейти от «научиться запускать» к базовому решению, похожему на соревновательную заявку, не стоит оставаться только на top_short. Разумнее переключиться на:
- данные:
four_types_merged - модель: ACT
- оборудование: одна карта
L40
Сразу оговорим границы: это не гарантия «попасть в первую тройку». Итоговое место определяется данными, структурой политики, деталями оценки и временем обучения, и обещать его в учебнике нельзя. Но этот вариант действительно ближе к стартовой точке для дальнейшей работы над результатом, чем учебный пробный запуск.
3.14.1 Почему здесь сначала ACT, а не DP
Причины практические:
- ACT на этом наборе данных проще довести до стабильного долгого обучения;
- на одной L40 ACT легче подобрать размер батча и ритм обучения;
- чтобы за час стабильно загрузить карту и запустить долгий эксперимент, у ACT ниже инженерный риск.
Поэтому «первый выстрел» усиленной версии учебника:
four_types_merged + ACT + batch_size 64 + 50000 steps
Файл конфигурации:
15-challenges/LeHome/resources/configs/train_act_competition_l40.yaml
3.14.2 Почему не нужно просто наращивать batch size
Мы на локальной машине для совместного обучения четырёх категорий проверили три варианта:
batch_size=96: OOMbatch_size=88: OOMbatch_size=80: OOM
В итоге остановились на batch_size=64, что обеспечивает:
- стабильный запуск долгого обучения;
- отсутствие падения в первые же шаги;
- сохранение высокой загрузки GPU.
Иначе говоря, цель здесь — максимально полезная конфигурация, которая стабильно доходит до конца долгого обучения, а не максимальное заполнение памяти на первом шаге.
3.14.3 Длительное обучение, которое сейчас выполняется
На локальной машине запущено:
- журнал обучения:
/path/to/outputs/train/act_four_types_l40.log
- выборка GPU:
/path/to/outputs/monitor/act_four_types_l40_gpu.csv
Эквивалентная команда обучения:
cd /path/to/lehome-challenge
source .venv/bin/activate
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
lerobot-train \
--config_path 15-challenges/LeHome/resources/configs/train_act_competition_l40.yaml \
2>&1 | tee /path/to/outputs/train/act_four_types_l40.log
3.14.4 Наблюдаемые сигналы обучения
В начале долгого обучения на локальной машине наблюдалось:
- шаг
50: loss12.334 - шаг
100: loss3.554 - шаг
150: loss2.940
Это означает, что по крайней мере на раннем этапе loss явно падает: нет ни зависания, ни чистой шумной осцилляции.
Выборка GPU также показывает, что долгое обучение действительно загружает L40 почти полностью:
- занятая видеопамять: около
45.1 ГиБ / 46.1 ГиБ - загрузка GPU (GPU Utilization): долгое время около
100% - мощность: примерно
280–300 Вт
С инженерной точки зрения это значит, что текущая конфигурация достигла цели «стабильно и близко к полной загрузке одной карты».
3.14.5 Почему долгое обучение рассчитано на 50000 шагов
Специально не делали бесконечно долгое обучение. Причины:
- для соревновательного обучения «чем дольше, тем лучше» не всегда верно;
- для многих визуальных политик наибольшее снижение происходит в начале и в середине, а в конце наступает область убывающей отдачи;
- для учебника и серверных ресурсов
50000— уже «достаточно долго, чтобы увидеть явную тенденцию, но и не слишком расточительно».
Поэтому эта конфигурация подходит как:
- первый полноценный базовый эксперимент;
- основной эксперимент перед первой попыткой участия;
- отправная точка для решения, продолжать ли обучение до
70000или90000шагов.
Если на средних и поздних шагах:
- loss явно вышел на плато;
- success rate промежуточных контрольных точек перестал расти;
то нет смысла бесконечно тратить ресурсы карты.
3.15 Публичные решения-ориентиры и разбор
В этом разделе собраны решения LeHome Challenge, которые были публично доступны на 13.05.2026. Сразу скажем главное: полных открытых решений первой тройки официального рейтинга не найдено. Из уже опубликованного самые полезные материалы — разборы команд, близких к верхней части таблицы, репозиторий улучшения VLA и несколько репозиториев участников для сравнения.
Эти материалы не следует использовать как «рецепт, который гарантированно даст первые три места». Разумнее сначала выполнить базовый вариант ACT/DP + state + RGB из предыдущих разделов, а затем постепенно улучшать его по методам этого раздела.
3.15.1 Текущее положение в официальном рейтинге
Страница официальной таблицы лидеров подгружает данные через API:
https://lightwheel.ai/lwapi/open/lehome/ranking- метод:
POST - тело запроса:
{}
По состоянию на 13.05.2026 этот API возвращал следующие первые 8 мест в симуляционном этапе:
| Место | Registration ID | Команда | Длинный верх | Короткий верх | Длинные брюки | Короткие брюки | Среднее |
|---|---|---|---|---|---|---|---|
| 1 | r84 | ilya | 74.5% | 70.0% | 80.5% | 93.5% | 79.63% |
| 2 | r196 | Shubham @ Vorwerk | 73.0% | 62.5% | 71.5% | 87.0% | 73.50% |
| 3 | r55 | Dum-E | 76.5% | 62.0% | 75.5% | 79.5% | 73.38% |
| 4 | r161 | SCUT-Unlimited | 65.5% | 66.0% | 70.0% | 91.0% | 73.13% |
| 5 | r201 | GraspYesAI | 73.5% | 61.0% | 69.0% | 79.0% | 70.63% |
| 6 | r162 | sZs | 70.5% | 64.0% | 68.5% | 75.5% | 69.63% |
| 7 | r218 | ClothFolder50k | 77.0% | 56.0% | 58.5% | 82.5% | 68.50% |
| 8 | r13 | sisigakgak | 68.0% | 52.5% | 64.0% | 77.5% | 65.50% |
Два замечания:
- Первые 8 мест не означают, что все решения открыты. В таблице есть только название команды и успешность, без методов, кода или контрольных точек.
- Публичные репозитории и названия команд в таблице не всегда соответствуют друг другу. Если в README репозитория или описании команды прямо не указано соответствие, мы рассматриваем репозиторий лишь как публичный ориентир.
3.15.2 Решение 1: разбор UCAS, классификатор + экспертный ACT + PI0.5
Ссылки:
- репозиторий участника: wangerforcs/lehome-challenge-ucas
- разбор на китайском языке: wangerforcs/EILearn/competition/lehome.md
Этот разбор — один из самых полезных открытых материалов. Это не README только с командами, а достаточно полное описание пути от базового варианта до поздних этапов соревнования.
Первый этап — классификатор + ACT. Основная идея: во время оценки организаторы не сообщают, к какой категории относится текущая одежда, поэтому чтобы обучать экспертов для четырёх категорий, сначала нужно определить категорию. Общая схема:
- Классифицировать текущую одежду визуальным классификатором, например на основе ResNet.
- Для
top_long,top_short,pant_long,pant_shortобучить отдельные ACT. - При выводе сначала классифицировать, затем направить изображение в нужную экспертную модель ACT.
Достоинство такого подхода — простота и понятность, его легко реализовать в официальной платформе LeRobot. Недостатки очевидны: ошибка классификации сразу отправляет пример к неверному эксперту; если данные одной категории плохого качества, отдельный эксперт тоже будет ошибаться. По описанию в разборе, этот этап дал примерно 42% при общей отправке, то есть решение работало, но до 60% оставалось далеко.
Второй этап в основном перешёл на PI0.5. Сохранили вход и выход, похожие на ACT:
- вход:
observation.state - вход:
observation.images.top_rgb - вход:
observation.images.left_rgb - вход:
observation.images.right_rgb - выход: 12-мерное
action
Глубину здесь не ставили первым приоритетом — по той же причине, что и в предыдущих рекомендациях учебника: если предобученная модель не рассчитана на глубину, её добавление усложняет инженерию, но не обязательно даёт стабильный прирост.
Третий этап — более тонкая обработка данных и категорий. В разборе особо отмечено, что top_short и pant_short — главные узкие места: некоторые данные при воспроизведении (replay) дают нестабильные действия, а логика сохранения успешных и неуспешных образцов иногда добавляет «грязные» данные. Этот опыт очень важен: LeHome нельзя решить одной сменой модели, качество данных часто важнее названия модели.
Выводы для повторения:
- если нужно быстро обойти обычный базовый вариант, можно сначала сделать «четыре экспертные модели + классификатор категории»;
- если какая-то категория явно тянет результат вниз, не смотрите только на общий балл, оценивайте успешность по каждой из четырёх категорий отдельно;
- для трудных
top_shortиpant_shortсначала проверяйте replay данных и неудачные образцы, а не увеличивайте модель вслепую; - если вычислительных ресурсов мало, сначала доведите одну категорию до воспроизводимой успешности, и только потом расширяйтесь на четыре.
3.15.3 Решение 2: SPGVLA, добавление ведения по прогрессу и надзора от модели мира в VLA
Ссылки:
- репозиторий кода: blackcat0615/spgvla
- модель 1: spgvla
- модель 2: spgvla0.7
SPGVLA расшифровывается как Simple Progress Guidance For Vision Language Action Model. Идея такая: складывание одежды — длинная задача, и модели легко потерять ориентацию в том, на каком она этапе — «захват, расправление, складывание, завершение», что приводит к смешению состояний.
Репозиторий добавляет два улучшения:
SPG: Simple Progress Guidance. Дополнительная информация о прогрессе задачи, которая помогает VLA понимать текущий этап.WM: world model module. Модель мира даёт более плотный сигнал надзора, снижая проблему VLA, когда при обучении есть только редкий сигнал клонирования поведения.
В README репозитория приведены такие открытые результаты:
| Конфигурация | top long | top short | pants long | pants short | средний SR |
|---|---|---|---|---|---|
| базовый SmolVLA | 61.67% | 10.00% | 31.67% | 76.67% | 45.00% |
| базовый + SPG | 55.00% | 21.67% | 45.00% | 80.00% | 50.40% |
| базовый + SPG + bs64 | 63.33% | 25.00% | 33.33% | 88.33% | 52.50% |
| базовый + SPG + bs64 + WM | 70.00% | 25.00% | 45.00% | 86.67% | 56.67% |
| базовый + SPG + bs96 + WM + переобучение с аугментацией данных | 73.30% | 45.00% | 58.33% | 85.00% | 65.40% |
Для нас ценнее не название модулей, а заметная тенденция: одной замены базового VLA может быть мало. Только совместное использование сигнала прогресса, вспомогательного надзора от модели мира, размера батча и аугментации данных подняло результат с 45% до 65.4%.
Как это можно повторить:
SPGпомогает с путаницей на длинных задачах, например когда начинают складывать, не расправив рукав;WMдобавляет надзор за промежуточными состояниями, так что модель учится не только конечной метке действия;data_aug_retrainочень важен для LeHome: данных на каждую категорию немного, и даже небольшое изменение визуального распределения сильно влияет на успешность;top_shortостаётся явным слабым местом: даже после улучшений всего 45%, то есть эта задача в публичных решениях по-прежнему трудна.
Если вы уже запустили four_types_merged + ACT из этого учебника, можно взять идеи SPGVLA, но не обязательно сразу переходить на полный VLA. Сначала проведите два лёгких эксперимента:
- Добавить в ACT/SmolVLA условие по категории или этапу, например
garment_type,stage_id, долю прогресса. - Для каждой категории данных применить консервативную аугментацию изображений и проверить, улучшится ли
top_short.
3.15.4 Решение 3: LaundryNauts, репозиторий участника с дообучением VLA
Ссылка:
Репозиторий описан как fine-tuned VLA for bimanual garment folding (дообученная VLA для двуручного складывания одежды). Структура каталогов в основном расширяет официальный репозиторий LeHome: есть configs, docker_policy, scripts, source/lehome и другие. Название соответствует команде LaundryNauts из таблицы лидеров, но её средний балл — 40.00%, поэтому это скорее пример организации VLA-проекта, чем образец высокого результата.
Что стоит изучить:
- как организовать собственную политику в структуре официального репозитория;
- как подготовить файлы для Docker и отправки;
- как связать обучение VLA с официальными скриптами оценки.
Такие репозитории полезны как инженерный ориентир: когда ваш метод выходит за рамки lerobot-train и переходит к собственной модели, Docker-отправке и удалённой оценке, можно сверить по нему структуру каталогов и скриптов.
3.15.5 Решение 4: S.N.N Neural Lab, открытый, но не лидирующий репозиторий для сравнения
Ссылка:
Репозиторий соответствует команде S.N.N Neural Lab из таблицы лидеров, средний балл — 40.38%. Это не решение с высоким результатом, но полезно как контрольный пример: работа на официальном окружении может завершиться примерно на уровне 40%.
Для учебника такие репозитории показывают: основная трудность LeHome — не в том, чтобы запустить обучение. Основные трудности:
- достаточно ли чистые данные;
- оптимизируются ли четыре категории одежды отдельно;
- умеет ли инференс обрабатывать случайную категорию одежды;
- понимает ли модель прогресс на длинной задаче;
- строго ли совпадают скрипт оценки, пути контрольных точек и отправка в Docker.
3.15.6 Практический маршрут, выведенный из публичных решений
Если вы уже прошли тесты дымового запуска из предыдущих разделов, учебник рекомендует продолжать так:
-
Сначала стабильный базовый вариант. Используйте
dataset_challenge_merged; вход —state + top/left/right RGB; выход — 12-мерное суставное действие. Сначала запуститеACT, затем рассмотритеDPилиSmolVLA. -
Смотрите результат по четырём категориям, а не только средний балл. В таблице лидеров многие команды хорошо справляются с
short pant, но слабо сtop_short. Среднее скрывает узкие места, поэтому записывайте успешность по каждой категории. -
Пробуйте экспертные модели и классификатор категорий. Если различия между категориями заметны, можно обучить отдельные экспертные политики и маршрутизировать их классификатором. Метод прост в реализации, но нужно защищаться от ошибок классификации.
-
Чистите и усиливайте данные трудных категорий. В публичных разборах проблемы с данными повторяются. Перед обучением стоит проиграть часть данных (replay), особенно
top_shortиpant_short, и отметить явно неудачные эпизоды или эпизоды со сдвигом действий. -
Затем переходите к VLA или усилению прогресса. Когда базовый вариант стабилен, можно посмотреть на SPGVLA: ведение по прогрессу, надзор от модели мира, аугментацию данных. Не стоит усложнять модель, пока окружение ещё не работает.
-
Перед отправкой зафиксируйте оценку и цепочку отправки. Даже высокие решения должны работать в официальной оценке. Пользовательские политики, Docker, пути контрольных точек и версии зависимостей нужно проверять отдельно, а не только по loss обучения на локальной машине.
3.15.7 Сводка ссылок
- Сайт LeHome: https://lehome-challenge.com/
- Официальный репозиторий: lehome-official/lehome-challenge
- Официальные ассеты: lehome/asset_challenge
- Официальные объединённые обучающие данные: lehome/dataset_challenge_merged
- Репозиторий UCAS: wangerforcs/lehome-challenge-ucas
- Разбор UCAS на китайском: wangerforcs/EILearn/competition/lehome.md
- Репозиторий SPGVLA: blackcat0615/spgvla
- Модель SPGVLA: blackcat0615/spgvla
- Модель SPGVLA 0.7: blackcat0615/spgvla0.7
- Репозиторий LaundryNauts: cwoodhayes/lehome-laundrynauts
- Репозиторий S.N.N Neural Lab: alifestone/lehome-challenge_S.N.N
4. Рекомендуемая стратегия обучения
4.1 Базовая конфигурация
Рекомендуется начать с такого набора:
- policy:
ACT - вход:
observation.state + top/left/right RGB - выход:
action - device: при обучении
cuda - при оценке среда
cpu
4.2 Почему не стоит сразу добавлять глубину
- глубина увеличивает объём данных и сложность обучения;
- важнее сначала запустить базовый вариант;
- официальная документация прямо указывает, что
state + RGBпроверены; - если всё же нужна глубина, добавляйте её после того, как базовый вариант сойдётся, и сравнивайте в эксперименте.
4.3 Стоит ли использовать EE pose
Не рекомендуется в качестве первого выбора.
Официальная документация также предупреждает:
observation.ee_poseaction.ee_pose
Из-за обратной кинематики (IK) и ограничений оборудования они менее стабильны, чем управление в суставном пространстве. Для базового варианта соревнования лучше использовать:
observation.stateaction
5. Очистка и контроль репозитория
Если вы будете включать этот учебник в свой большой репозиторий, оставляйте только лёгкие материалы:
- текст учебника;
- примеры конфигураций обучения;
- команды оценки;
- небольшие фрагменты журналов;
- несколько скриншотов или ссылок на короткие видео;
- необходимые пояснения по патчам и наложениям.
Не стоит коммитить тяжёлые ресурсы:
Assets/Datasets/outputs/logs/models/videos/plots/.cache/- любые веса и материалы больше нескольких десятков МБ
Причина простая: всё это должно загружаться командами скачивания и не должно попадать в подрепозиторий учебника.
5.1 Прежние неудачные результаты оценки
Если речь только о чистке учебника, видео прежних неудачных прогонов с успешностью 0% можно удалить.
Сейчас нужно удалить каталог:
/path/to/lehome-eval-outputs/
Дальше все результаты пишутся в:
/path/to/outputs/eval/
6. Рекомендуемая организация репозитория
В every-embodied рекомендуется добавить такую структуру:
15-challenges/
└── LeHome/
├── README.md
├── .gitignore
└── resources/
├── commands.md
├── configs/
└── scripts/
Если позже вы будете добавлять другие соревнования, можно использовать ту же структуру.
7. Проверочные команды для повторного использования
7.1 Проверка GPU
nvidia-smi
7.2 Проверка основных пакетов
python - <<'PY'
import isaacsim, lerobot
print("isaacsim ok")
print("lerobot", getattr(lerobot, "__version__", "unknown"))
PY
7.3 Проверка, что официальные ассеты загружены
ls Assets
ls Datasets/example
7.4 Проверка списка оценочных одежд
cat Assets/objects/Challenge_Garment/Release/Release_test_list.txt
8. Рекомендации по публикации образа
Если вы будете рекламировать этот образ, в описании стоит подчеркнуть:
- официальное окружение LeHome уже установлено;
- обучение и оценка проверены и работают;
- при первом использовании рекомендуется скачать
asset_challengeиdataset_challenge_merged; - адаптировано для
L40и серверных сценариев; - предоставлены команды запуска базовых ACT/DP;
- большие соревновательные ресурсы по умолчанию не входят в репозиторий учебника.
Можно описать так:
Готовый к использованию образ для LeHome Challenge: предустановлены окружение Isaac Sim / LeRobot / LeHome, предоставлен минимальный замкнутый цикл обучения, оценки, загрузки данных и воспроизведения проблем.
9. Результаты локальной проверки
Локально проверено:
- оценка ACT для одной одежды работает, результат
Success Rate = 0.00%; - оценка DP для одной одежды работает, и
policy_num_inference_steps=1действует; - видео оценки успешно экспортируются.
Это означает:
- образ пригоден для работы;
- конвейер обучения и оценки работает;
- учебник можно писать и публиковать непосредственно на основе этого образа.
Примечание
Установка программ для просмотра изображений и видео:
sudo apt install celluloid
sudo apt install viewnior
# Назначить Viewnior программой по умолчанию для распространённых форматов изображений
xdg-mime default viewnior.desktop image/jpeg image/png image/gif image/bmp image/webp