LeRobot documentation
Процессоры
Процессоры
Процессоры представляют собой слой преобразования данных между роботом, набором данных и политикой. Конвейер — это цепочка шагов ProcessorStep; каждый шаг описывает, как он преобразует как данные, так и контракт признаков.
См. Введение в процессоры роботов для знакомства с концепциями, Реализация собственного процессора для написания шага и Отладка конвейера процессора, если конвейер работает некорректно.
ProcessorStep
Абстрактный базовый класс для одного шага в конвейере обработки данных.
Каждый шаг должен реализовывать метод __call__ для выполнения преобразования при переходе данных и метод transform_features для описания того, как он изменяет форму или тип признаков данных.
Подклассы могут быть с состоянием, если они реализуют state_dict и load_state_dict.
Возвращает конфигурацию шага для сериализации.
load_state_dict
< source >( state: dict[str, torch.Tensor] )
Загружает состояние шага из словаря состояний.
Сбрасывает внутреннее состояние шага процессора, если оно есть.
Сохраняйте нетензорные активы и отображайте аргументы конструктора на относительные пути.
Возвращает состояние шага (например, обученные параметры, скользящие средние).
transform_features
< source >( features: dict[PipelineFeatureType, dict[str, PolicyFeature]] )
Определяет, как этот шаг изменяет описание функций конвейера.
Этот метод используется для отслеживания изменений форм данных, dtypes или модальностей по мере прохождения данных через конвейер, без необходимости обработки фактических данных.
DataProcessorPipeline
класс lerobot.processor.DataProcessorPipeline
< source >( steps: Sequence[ProcessorStep] = <factory>name: str = 'DataProcessorPipeline'to_transition: Callable[[TInput], EnvTransition] = <factory>to_output: Callable[[EnvTransition], TOutput] = <factory>before_step_hooks: list[Callable[[int, EnvTransition], None]] = <factory>after_step_hooks: list[Callable[[int, EnvTransition], None]] = <factory> )
Параметры
- steps — последовательность объектов
ProcessorStep, из которых состоит конвейер. - name — Описательное имя для конвейера.
- to_transition — функция для преобразования исходных входных данных в стандартизированный формат
EnvTransition. - to_output — функция для преобразования итогового
EnvTransitionв требуемый формат вывода. - before_step_hooks — список функций, вызываемых перед выполнением каждого шага.
- after_step_hooks — список функций, вызываемых после выполнения каждого шага.
Последовательный конвейер для обработки данных, интегрированный с Hugging Face Hub.
Этот класс объединяет несколько экземпляров ProcessorStep в единый
процесс обработки данных. Он является универсальным и поддерживает настраиваемые типы входных и выходных данных,
которые обрабатываются конвертерами to_transition и to_output.
from_config
< source >( config: dict[str, Any]state_dict: dict[str, dict[str, torch.Tensor]] | None = Noneoverrides: dict[str, Any] | None = Noneto_transition: Callable[[TInput], EnvTransition] | None = Noneto_output: Callable[[EnvTransition], TOutput] | None = None )
Параметры
- config — словарь конфигурации с той же структурой, что и у сохранённого JSON-файла процессора.
- state_dict — Необязательное состояние конвейера в памяти, сгруппированное по ключу состояния без суффикса.
- overrides — Необязательные переопределения конструктора, ключи которых — имя в реестре или имя класса.
- to_transition — Необязательный конвертер входных данных в
EnvTransition. - to_output — Необязательный конвертер из
EnvTransitionв выходные данные.
Создайте конвейер из конфигурации в памяти и необязательных тензоров состояния.
from_pretrained
< source >( pretrained_model_name_or_path: str | Pathconfig_filename: strforce_download: bool = Falseresume_download: bool | None = Noneproxies: dict[str, str] | None = Nonetoken: str | bool | None = Nonecache_dir: str | Path | None = Nonelocal_files_only: bool = Falserevision: str | None = Noneoverrides: dict[str, Any] | None = Noneto_transition: Callable[[TInput], EnvTransition] | None = Noneto_output: Callable[[EnvTransition], TOutput] | None = None**kwargs )
Параметры
- pretrained_model_name_or_path — идентификатор репозитория на Hugging Face Hub, путь к локальному каталогу или путь к одному файлу конфигурации.
- config_filename — имя файла JSON-конфигурации пайплайна. Всегда требуется, чтобы избежать неоднозначности при наличии нескольких конфигураций (например, preprocessor и postprocessor).
- force_download — Принудительно (пере)скачивать файлы.
- resume_download — оставлено для обратной совместимости и игнорируется. Загрузка возобновляется автоматически.
- proxies — Оставлено для обратной совместимости и игнорируется. Вместо этого используйте HTTP_PROXY и HTTPS_PROXY.
- token — токен, используемый в качестве HTTP bearer-авторизации для частных репозиториев Hub.
- cache_dir — Путь к конкретной папке кэша для хранения загруженных файлов.
- local_files_only — Если True, не загружать файлы с Hub.
- revision — конкретная версия модели, которую нужно использовать (например, имя ветки, имя тега или идентификатор коммита).
- overrides — словарь для переопределения конфигурации конкретных шагов. Ключи должны совпадать с именем класса или именем в реестре шага.
- to_transition — пользовательская функция для преобразования входных данных в
EnvTransition. - to_output — пользовательская функция для преобразования итогового
EnvTransitionв формат вывода. - **kwargs — Дополнительные аргументы (не используются).
Исключения
FileNotFoundError или ValueError или ImportError или KeyError или ProcessorMigrationError
FileNotFoundError— если файл конфигурации не найден.ValueError— если конфигурация неоднозначна или инициализация не удалась.ImportError— если класс шага не может быть импортирован.KeyError— если ключ переопределения не соответствует ни одному шагу конвейера.ProcessorMigrationError— если для модели требуется миграция в формат процессора.
Загружает конвейер из локального каталога, отдельного файла или репозитория Hugging Face Hub.
Этот метод реализует упрощённый конвейер загрузки с интеллектуальным определением миграции:
Упрощённая стратегия загрузки:
Загрузка конфигурации (_load_config):
- Каталог: загрузить указанный config_filename из каталога
- Один файл: загрузить файл напрямую (config_filename игнорируется)
- Репозиторий Hub: загрузить указанный config_filename из Hub
Проверка конфигурации (_validate_loaded_config):
- Проверка формата: убедитесь, что config имеет корректный формат процессора
- Обнаружение миграции: руководство по миграции старых моделей LeRobot
- Устранение ошибок: предоставление полезных сообщений об ошибках
Построение шагов (_build_steps_with_overrides):
- Разрешение классов: поиск в реестре или динамический импорт
- Переопределение слияния: параметры пользователя переопределяют сохранённую конфигурацию
- Загрузка состояния: загрузка файлов .safetensors для шагов с состоянием
Переопределение проверки (_validate_overrides_used):
- Убедитесь, что все переопределения пользователя были применены (обнаружение опечаток)
- Предоставляйте полезные сообщения об ошибках с доступными ключами
Обнаружение миграции:
- Умное обнаружение: анализирует файлы JSON, чтобы обнаружить устаревшие модели LeRobot
- Точное нацеливание: Избегает ложных срабатываний на других моделях HuggingFace
- Чёткие инструкции: предоставляет точную команду миграции для выполнения
- Режим ошибки: всегда вызывает ProcessorMigrationError для ясного указания действий пользователю
Загрузка примеров:
# Directory loading
pipeline = DataProcessorPipeline.from_pretrained("/models/my_model", config_filename="processor.json")
# Single file loading
pipeline = DataProcessorPipeline.from_pretrained(
"/models/my_model/processor.json", config_filename="processor.json"
)
# Hub loading
pipeline = DataProcessorPipeline.from_pretrained("user/repo", config_filename="processor.json")
# Multiple configs (preprocessor/postprocessor)
preprocessor = DataProcessorPipeline.from_pretrained(
"model", config_filename="policy_preprocessor.json"
)
postprocessor = DataProcessorPipeline.from_pretrained(
"model", config_filename="policy_postprocessor.json"
)Система переопределения:
- Сопоставление ключей: используйте имена реестра или имена классов в качестве ключей переопределения
- Слияние конфигураций: пользовательские переопределения имеют приоритет над сохранённой конфигурацией
- Валидация: убедитесь, что все ключи переопределения соответствуют фактическим шагам (обнаружение опечаток)
- Пример: overrides={“NormalizeStep”: {“device”: “cuda”}}
Возвращает конфигурацию конвейера, сериализуемую в JSON.
load_state_dict
< source >( state_dict: dict[str, dict[str, torch.Tensor]] )
Загрузите тензоры состояния конвейера в существующие шаги.
process_action
< source >( action: PolicyAction | RobotAction | EnvAction )
Обрабатывает только часть действия в переходе через конвейер.
process_complementary_data
< source >( complementary_data: dict[str, Any] )
Обрабатывает только дополнительную часть данных перехода через конвейер.
Обрабатывает только флаг done перехода через конвейер.
Обрабатывает только словарь info перехода через конвейер.
process_observation
< source >( observation: RobotObservation )
Обрабатывает только наблюдательную часть перехода через конвейер.
Обрабатывает только часть вознаграждения перехода через конвейер.
process_truncated
< source >( truncated: bool | torch.Tensor )
Обрабатывает только усечённый флаг перехода через конвейер.
register_after_step_hook
< source >( fn: Callable[[int, EnvTransition], None] )
Регистрирует функцию, которая будет вызываться после каждого шага.
register_before_step_hook
< source >( fn: Callable[[int, EnvTransition], None] )
Регистрирует функцию, которая будет вызываться перед каждым шагом.
Сбрасывает состояние всех шагов конвейера, имеющих состояние.
save_pretrained
< source >( save_directory: str | Path | None = Nonerepo_id: str | None = Nonepush_to_hub: bool = Falsecard_kwargs: dict[str, Any] | None = Noneconfig_filename: str | None = None**push_to_hub_kwargs )
Параметры
- save_directory — каталог, в котором будет сохранён конвейер. Если значение равно None, сохранение выполняется в HF_LEROBOT_HOME/processors/{sanitized_pipeline_name}.
- repo_id — идентификатор вашего репозитория на Hub. Используется только при
push_to_hub=true. - push_to_hub — Нужно ли отправлять объект на Hugging Face Hub после сохранения.
- card_kwargs — Дополнительные аргументы, передаваемые в шаблон карточки для её настройки.
- config_filename — имя файла конфигурации JSON. Если значение равно None, имя генерируется на основе атрибута
nameконвейера. - **push_to_hub_kwargs — Additional key word arguments passed along to the push_to_hub method.
Сохраняет конфигурацию и состояние конвейера в каталог.
Этот метод создаёт файл конфигурации JSON, определяющий структуру конвейера (имя и шаги). Для каждого шага с состоянием он также сохраняет файл .safetensors, содержащий словарь его состояния.
Возвращает тензоры состояния конвейера, сгруппированные по ключу состояния.
Обрабатывает данные пошагово, возвращая переход на каждом этапе.
Это метод-генератор, полезный для отладки и проверки промежуточного состояния данных по мере их прохождения через конвейер.
transform_features
< source >( initial_features: dict[PipelineFeatureType, dict[str, PolicyFeature]] )
Последовательно применяет преобразования признаков со всех шагов.
Этот метод передаёт словарь описания признаков через метод transform_features каждого шага, позволяя конвейеру статически определять спецификацию выходных признаков без обработки реальных данных.
unregister_after_step_hook
< source >( fn: Callable[[int, EnvTransition], None] )
Отменяет регистрацию хука ‘after_step’.
unregister_before_step_hook
< source >( fn: Callable[[int, EnvTransition], None] )
Отменяет регистрацию хука ‘before_step’.