LeRobot documentation
Политики
Политики
Каждая политика наследует PreTrainedPolicy, которая объединяет torch.nn.Module с миксином Hub, поэтому любую политику можно отправить в Hugging Face Hub и загрузить из него с помощью тех же двух вызовов.
У каждой политики есть собственное руководство с рецептами обучения и результатами — ACT, SmolVLA, π₀, π₀.₅ и другие перечислены в разделе Policies. Чтобы добавить новую, см. Adding a Policy.
PreTrainedPolicy
Базовый класс для моделей политики.
Объявите контракт по умолчанию для обслуживания чанков текущих наблюдений.
Наследование этой реализации означает, что predict_action_chunk выполняет всю необходимую подготовку для прямых вызователей, принимает полное текущее наблюдение и возвращает [B, chunk_size, A] в координатах модели. Его каноническая пара процессоров должна поддерживать целые чанки. n_action_steps — это обычный срез воспроизведения; RTC сохраняет полный горизонт предсказания.
Политика, требующая подготовки только select_action, другие раскладки действий или временную выборку, должна переопределить этот метод и отклонять неподдерживаемые конфигурации или предоставлять собственный runner. Наличие метода или успешный warmup не являются подтверждением этого контракта. Состояние Policy/processor допускается только в рамках эксклюзивной сессии, а reset() должен очищать его для нового запуска.
Количество уже вычисленных действий, ожидающих обработки.
0 для политики, которая не использует очередь действий (никогда не разбивает на чанки) или чья очередь в данный момент пуста (готовится вычислить новый чанк). Читает те же очереди, которые очищает drop_queued_actions, и которые перечислены в :attr:_action_queue_attrs.
Отбросить действия, предварительно вычисленные предыдущими вызовами select_action.
Принудительно выполняет новый прямой проход при следующем вызове select_action, чтобы изменение условий в середине эпизода (например, новая инструкция) вступило в силу немедленно, а не после опустошения очереди. В отличие от reset, остальное состояние эпизода сохраняется. Вызывайте этот метод из потока, который вызывает select_action. Очищает очереди, перечисленные в :attr:_action_queue_attrs; политика, не использующая очередь действий, наследует операцию без действия (no-op).
forward
< source >( batch: dict[str, Tensor] ) → tuple[Tensor, dict | None]
краткое описание
from_pretrained
< source >( pretrained_name_or_path: str | Pathconfig: PreTrainedConfig | None = Noneforce_download: bool = Falseresume_download: bool | None = Noneproxies: dict | None = Nonetoken: str | bool | None = Nonecache_dir: str | Path | None = Nonelocal_files_only: bool = Falserevision: str | None = Nonestrict: bool = False**kwargs )
По умолчанию политика устанавливается в режим оценки с помощью policy.eval() (модули dropout отключаются). Для обучения её необходимо сначала вернуть в режим обучения с помощью policy.train().
Запустите текстовую головку политики на предварительно обработанной партии наблюдений.
Запрос передаётся в batch как дополнительные данные (:data:~lerobot.utils.constants.QUERY_KIND / QUERY_TEXT); ответ next_subtask передаётся напрямую в set_task, поэтому он должен содержать ровно один подзадачу, а не план или нумерованный список. Возвращает сгенерированный текст и не должен изменять состояние, порождающее действия (очереди, историю наблюдений).
Возвращает параметры, специфичные для политики (параметры или группы параметров), которые передаются в оптимизатор.
Возвращает блок действий (для политик с разбиением действий на блоки) для данного наблюдения, потенциально в режиме батча.
Дочерние классы, использующие чанкинг действий, должны вызывать этот метод внутри select_action, чтобы сформировать чанк действий, кэшируемый для выбора.
Политика, поддерживающая ключевое слово noise, начинает выборку с этого тензора, имеющего форму, которую политика
использует для его генерации. Если noise равно None, политика генерирует его в обычном режиме.
Может возвращать PolicyOutput, содержащий фрагмент и его предсказание, как в случае с select_action.
push_model_to_hub
< source >( cfg: TrainPipelineConfigpeft_model = Nonestate_dict: dict[str, Tensor] | None = Nonedataset_meta: LeRobotDatasetMetadata | None = None )
Параметры
- cfg (TrainPipelineConfig) — конфигурация обучения; сохраняется как train_config.json и используется для формирования карточки модели.
- peft_model — обёртка PEFT при обучении адаптеров, веса которой заменяют полные веса модели в опубликованном репозитории. По умолчанию — None.
- state_dict (dict[str, Tensor] | None) — Игнорируется; веса теперь собираются внутренним образом, когда политика разбита на шарды. По умолчанию None.
- dataset_meta (LeRobotDatasetMetadata | None) — Метаданные набора данных для карточки модели, если доступны. По умолчанию — None.
Опубликуйте эту политику в Hub.
Устарело: вместо этого используйте lerobot.common.train_utils.publish_trained_model(), который также публикует препроцессоры и постпроцессоры вместе с моделью.
Вызывается каждый раз при сбросе среды.
Выполняет такие действия, как очистка кэшей.
Возвращает одно действие для выполнения в среде (возможно, в режиме пакетной обработки).
Когда модель использует историю наблюдений или выводит последовательность действий, этот метод занимается кэшированием.
Возвращает «голый» тензор действия или PolicyOutput: батч, структурированный аналогично входному батчу, содержащий действие под ключом "action" и то, что политика ожидает или считает верным помимо него, под ключом "prediction" (объект PolicyPrediction). Предсказание батчится так же, как и действие, по одному значению на окружение, и каждый элемент ключируется по тому, на что он ссылается: предсказанные кадры — по ключу наблюдения, которое они предсказывают, язык — по стилю аннотации («subtask», «plan», «memory»), рамки (схема аннотации VQA) — по камере, на которой они нарисованы. Вызывающий код нормализует два типа возвращаемых значений с помощью lerobot.processor.policy_output_to_transition; —display_data показывает предсказание для первого окружения.
Предсказание содержит значения для текущего шага: одно значение, охватывающее чанк (например, воображаемый клип), возвращается по частям, вместе с действием, к которому относится каждая часть. Каждая запись остаётся отображённой, пока не будет возвращена снова. Предсказание включается опционально через поле конфигурации, определяемое политикой, и не должно изменять действия; текст, который должен направлять политику, передаётся через generate_text.
Определяет, реализует ли данная политика семантику инференса с Real-Time Chunking.
Реализует ли эта политика generate_text (переопределяйте оба вместе).
Валидуйте канонические входные данные перед обслуживанием, по умолчанию с точными формами.
Политики, которые явно изменяют размер или маскируют отсутствующие входные данные, могут переопределять этот контракт. Подобные исключения относятся к политике, а не к транспорту. Согласованная схема передачи по-прежнему фиксирует форму каждой предоставленной характеристики.
wrap_with_peft
< source >( peft_config = Nonepeft_cli_overrides: dict | None = None )
Параметры
- peft_config — Необязательная конфигурация адаптера PEFT (например, LoraConfig). Если указано, используется напрямую (с применением переопределений из CLI).
- peft_cli_overrides — Необязательный словарь с переопределениями CLI (method_type, target_modules, r и т. д.) Эти значения объединяются с параметрами по умолчанию из политики для формирования итогового конфигурационного файла.
Оберните эту политику адаптерами PEFT для параметрически эффективной дообучения.
Этот метод является единственной точкой входа для интеграции PEFT. Подклассы должны переопределять _get_default_peft_targets(), чтобы указать целевые модули по умолчанию, и _validate_peft_config() для валидации, специфичной для конкретной политики.
PreTrainedConfig
класс lerobot.configs.PreTrainedConfig
< source >( n_obs_steps: int = 1input_features: dict[str, lerobot.configs.types.PolicyFeature] | None = <factory>output_features: dict[str, lerobot.configs.types.PolicyFeature] | None = <factory>device: str | None = Nonedtype: torch.dtype | None = Noneuse_amp: bool = Falseuse_peft: bool = Falsepush_to_hub: bool = Truerepo_id: str | None = Noneprivate: bool | None = Nonetags: list[str] | None = Nonelicense: str | None = Nonepretrained_path: pathlib.Path | None = Nonepretrained_revision: str | None = None )
Параметры
- n_obs_steps — количество шагов среды, наблюдения с которых передаются в политику (текущий шаг и дополнительные шаги, идущие назад).
- input_features — словарь, определяющий PolicyFeature входных данных для политики. Ключ представляет имя входных данных, а значением является PolicyFeature, состоящий из атрибутов FeatureType и shape.
- output_features — словарь, определяющий PolicyFeature выходных данных для политики. Ключ представляет имя выходных данных, а значением является PolicyFeature, состоящий из атрибутов FeatureType и shape.
- normalization_mapping — словарь, сопоставляющий строковое значение FeatureType (например, “STATE”, “VISUAL”) с соответствующим NormalizationMode (например, NormalizationMode.MIN_MAX)
Базовый класс конфигурации для моделей политики.
make_policy
lerobot.policies.make_policy
< source >( cfg: PreTrainedConfigds_meta: LeRobotDatasetMetadata | None = Noneenv_cfg: EnvConfig | None = Nonerename_map: dict[str, str] | None = Nonedefer_weight_load: bool = Falsepretrained_path: str | Path | None = None ) → PreTrainedPolicy
Параметры
- cfg (PreTrainedConfig) — конфигурация создаваемой политики. Если
cfg.pretrained_pathзадан, политика будет загружена с весами из этого пути. - ds_meta (LeRobotDatasetMetadata | None) — Метаданные набора данных, используемые для определения форм и типов признаков. Также предоставляют статистику для слоёв нормализации.
- env_cfg (EnvConfig | None) — Конфигурация окружения, используемая для определения форм и типов признаков. Необходимо указать один из параметров
ds_metaилиenv_cfg. - rename_map (dict[str, str] | None) — Необязательное сопоставление ключей признаков набора данных или среды с ожидаемыми именами признаков политики (например,
"left"→"camera1"). - defer_weight_load (bool) — Построить точную политику, которую построил бы
from_pretrained— с тем же разрешением конфигурации, теми же буферами, производными от статистики, тем же размещением на устройстве и режимом eval, — но пропустить загрузку весов из safetensors. Используется при возобновлении работы из контрольной точки DCP, где разбитые на части веса загружаются потоком послеaccelerator.prepare()(движок распределённых контрольных точек перезаписывает случайную инициализацию). Для политики PEFT пропускается загрузка только весов адаптеров, базовые веса загружаются как обычно. - pretrained_path (str | Path | None) — Загружать веса (или адаптер PEFT) отсюда, а не из
cfg.pretrained_path, который сохраняет имя модели, из которой была дообучена политика, после её построения. Используется при возобновлении обучения из контрольной точки.
Возвращает
PreTrainedPolicy
Модель политики, инициализированная и размещённая на устройстве.
Исключения
ValueError или NotImplementedError
ValueError— если указаны оба параметраds_metaиenv_cfgили ни один из них.NotImplementedError— если попытаться использовать неподдерживаемую комбинацию политики и бэкенда (например, VQBeT с ‘mps’).
Создайте модель политики.
Эта фабричная функция управляет логикой создания политики, для чего необходимо определить формы входных и выходных признаков. Эти формы можно получить либо из объекта LeRobotDatasetMetadata, либо из объекта EnvConfig. Функция может как инициализировать новую политику с нуля, так и загрузить предобученную.