Замкнутый цикл без переключения контекста
Традиционный пайплайн робототехнического проекта разбит на изолированные этапы: сначала собирают демонстрации на реальном или симулированном железе, затем переносят данные в отдельную систему для обучения, а после этого обученную модель нужно снова развернуть на роботе. Каждый переход требует конвертации форматов, ручной синхронизации и настройки окружения. В результате от записи первого эпизода до запуска политики проходит много времени, а любые изменения в данных превращаются в отдельную операцию.
Новый подход, представленный командой AWS в августе 2026 года, замыкает этот контур в одном месте. Вместо нескольких несвязанных инструментов предлагается единый агент, который умеет записывать демонстрации, отправлять их в облачное хранилище, обучать на них модель и возвращать обновлённый чекпоинт на робота. Ключевая идея — не переносить данные между системами, а работать с ними потоково, прямо из хранилища.

Инструменты агента и SDK
Основой решения стал Strands Robots — открытый SDK от AWS, распространяемый под лицензией Apache 2.0. Он предоставляет робототехнические абстракции, симуляцию и стек LeRobot в виде набора AgentTools. Эти инструменты компонуются в единого Strands-агента: робот, симулятор и обработка данных становятся взаимозаменяемыми модулями.
Центральная фабрика Robot() резолвит имя по реестру поддерживаемых устройств. В реестре есть манипуляторы, человекоподобные роботы, мобильные базы и отдельные руки. Одна из доступных конфигураций — SO-100, лёгкий манипулятор, который часто используют для экспериментов. Благодаря такому реестру один и тот же код работает и с симуляцией, и с реальным устройством: достаточно изменить параметр режима.
Агент получает команду на естественном языке, например «запиши демонстрацию и синхронизируй её в bucket», и сам вызывает нужный инструмент. Это позволяет строить сложные сценарии без жёстко прописанной последовательности шагов — логика управления перекладывается на языковую модель, а SDK отвечает за низкоуровневые операции с роботом и данными.
Единый формат данных
Важная деталь — формат датасетов LeRobot. На момент публикации в Hugging Face Hub уже более 90 000 датасетов и моделей используют этот формат, их опубликовали более 8 000 различных авторов. Благодаря такому распространению LeRobot стал де-факто стандартом для хранения робототехнических демонстраций.
Запись, сделанная через Strands Robots, сохраняется сразу в формате LeRobotDataset. Это значит, что любой инструмент, который умеет читать LeRobot, может работать с этими данными без какой-либо конвертации. Не нужно писать отдельные конвертеры для каждого бэкенда: данные одинаково читаются и в скриптах обучения, и в средствах визуализации, и в других робототехнических фреймворках.
Потоковое хранилище
Для хранения больших объёмов демонстраций используется Hugging Face Storage Buckets — новый тип объектного хранилища, представленный в марте 2026 года. В отличие от обычных датасет-репозиториев, bucket является изменяемым и неверсионируемым хранилищем, построенным на базе технологии Xet. Это даёт два важных преимущества: запись и обновление данных без создания новых версий и эффективная передача только изменённых байтов при синхронизации.
Bucket располагается в том же пространстве имён hf://, что и обычные датасеты, поэтому для работы с ним используется уже знакомый hf CLI. При этом данные можно стримить прямо из хранилища, не скачивая датасет целиком. Для больших видео с демонстрациями это критично: нет необходимости ждать полную загрузку, чтобы начать обучение.

Цикл данных на практике
Чтобы понять, как всё это работает вместе, рассмотрим пример из официального блога AWS, где связку Strands Robots, LeRobot и Hugging Face Storage Buckets]] используют для полного цикла. Создаётся агент с инструментом-роботом, причём по умолчанию активен режим симуляции:
python from strands import Agent from strands_robots import Robot
sim = Robot("so100") agent = Agent(tools=[sim])
Агенту можно дать команду на естественном языке: «запиши демонстрацию поднятия кубика и синхронизируй её в репозиторий my-org/robot-fave». Команда при этом не парсится заранее заданным шаблоном — модель рассуждений агента сама определяет последовательность действий: запустить запись, сформировать датасет и отправить его в bucket.
python agent("Record a pick-the-cube demo and sync it to my-org/robot-fave.")
Синхронизация устроена так, что при повторных запусках загружаются только изменившиеся байты — не нужно перезаписывать весь датасет. После того как демонстрация сохранена, тот же самый объект Robot() может стримить датасет обратно. Внутри метода stream_dataset() данные читаются покадрово, видео декодируется на лету, и из-за этого не требуется локальная копия датасета.
python for batch in sim.stream_dataset( "my-org/robot-fave/cube_pick", repo_type="bucket", ).dataloader(batch_size=64): ...
Этот код можно использовать прямо в процессе обучения: батчи приходят из хранилища, модель обучается, а затем подготовленный чекпоинт разворачивается на том же Robot() — для этого нужно поменять один keyword argument. Демонстрации, записанные на реальном железе, точно так же возвращаются в тот же bucket и становятся доступны для следующей итерации обучения. Получается непрерывный цикл: данные собираются, модель обучается на потоковых данных, обновлённая политика выкатывается на робота, и процесс повторяется.
Требования к запуску
Для повторения эксперимента потребуется Python 3.12 или новее и Linux либо macOS. На Apple Silicon поддерживается бэкенд MuJoCo для симуляции. Установка пакета выполняется командой:
pip install "strands-robots[sim-mujoco,lerobot]>=0.5.1"
Дополнительно входит набор lerobot, включающий LeRobot (не ниже версии 0.6.1), библиотеки datasets, av и torchcodec. Для работы агента требуется один из поддерживаемых model provider: Amazon Bedrock с настроенными AWS credentials, Anthropic API, OpenAI или локальный Ollama. Наличие такого выбора позволяет экспериментировать как в облаке, так и полностью локально.
Вместе со статьёй доступен runnable-компаньон — ноутбук examples/notebooks/05_streaming_data_loop.ipynb, который воспроизводит весь описанный цикл. Это удобная отправная точка, чтобы увидеть связку Strands Robots, Hugging Face Storage Buckets и LeRobot вживую.
Выводы
Главный результат — возможность упаковать весь цикл разработки робототехнических политик в один контур. Запись, хранение, обучение и деплой используют одни и те же абстракции и форматы. Это радикально снижает количество «склеек» между этапами и упрощает эксперименты: чтобы изменить данные, достаточно обновить демонстрации в bucket, а чтобы обновить политику — просто переобучить модель на потоковых данных и поменять один аргумент при создании робота.




