LeRobot documentation
ポリシー
ポリシー
すべてのポリシーはPreTrainedPolicyを継承しており、これはtorch.nn.ModuleとHubのmixinを組み合わせています。そのため、どのポリシーも同じ2つの呼び出しでHugging Face Hubにプッシュし、そこからロードできます。
各ポリシーには、トレーニングレシピと結果を含む独自のガイドがあります。ACT、SmolVLA、π₀、π₀.₅ などは Policies にリストされています。ポリシーを追加するには、Adding a Policy を参照してください。
PreTrainedPolicy
ポリシーモデルの基底クラス。
デフォルトの現在観測チャンクサービングの著者契約を宣言します。
この実装を継承することで、predict_action_chunk が直接の呼び出し元に必要なすべての準備を行い、現在の完全な観測を受け取り、モデル座標系で [B, chunk_size, A] を返すことが宣言されます。その正規のプロセッサペアは、チャンク全体をサポートする必要があります。n_action_steps は通常の再生スライスであり、RTC は予測ホライズン全体を保持します。
select_action 専用の準備、その他のアクションレイアウト、または時間的サンプリングを必要とするポリシーは、このメソッドをオーバーライドし、サポートされていない設定を拒否するか、カスタムランナーを提供する必要があります。メソッドの存在やウォームアップの成功は、この契約の証拠にはなりません。ポリシー/プロセッサの状態は、排他的なセッション内でのみ許可され、reset() は新しい実行のためにそれをクリアする必要があります。
すでに計算が完了し、提供を待っているアクションの数。
アクションキューを保持しない(チャンク化しない)ポリシー、または現在キューが空(新しいチャンクを計算しようとしている)ポリシーに対して 0 を返します。drop_queued_actions がクリアするのと同じキューを読み取り、_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に渡されるため、計画や番号付きリストではなく、正確に1つのサブタスクである必要があります。生成されたテキストを返し、アクション生成状態(キュー、観測履歴など)を変更してはいけません。
オプティマイザーに渡すポリシー固有のパラメータ(parameters または param groups)を返します。
…
アクションチャンクを使用するサブクラスは、選択用にキャッシュされるアクションチャンクを形成するために、select_action内でこのメソッドを使用する必要があります。
noise キーワードをサポートするポリシーは、そのテンソルからサンプリングを開始します。このテンソルは、ポリシーが通常抽出する形状になっています。noise が None の場合、ポリシーは通常どおり抽出します。
select_actionと同様に、チャンクとその予測を保持するPolicyOutputを返す場合があります。
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()を使用してください。
環境で実行する1つのアクションを返します(バッチモードの場合もあります)。
モデルが観測の履歴を使用する場合、またはアクションのシーケンスを出力する場合、このメソッドはキャッシュ処理を担当します。
生のアクションテンソル、またはPolicyOutputを返します。これは、入力バッチと同様のキー構造を持つバッチで、"action"にアクション、"prediction"にポリシーが期待または推定するその他の情報(PolicyPrediction)を保持します。予測はアクションと同様にバッチ化され、環境ごとに1つの値を持ち、各エントリは参照対象をキーとして保持します。予測されるフレームは予測対象の観測キーを、言語はアノテーションスタイル(“subtask”、“plan”、“memory”)を、ボックス(アノテーションVQAスキーマ)は描画されたカメラをキーとします。呼び出し側はlerobot.processor.policy_output_to_transitionでこれら2つの戻り値の型を正規化します。—display_dataは、最初の環境の予測を表示します。
予測は、このステップの値を保持します。チャンク(例えば想像されたクリップ)にまたがるものは、各ピースが属するアクションとともに、ピースごとに返されます。各エントリは、再度返されるまで表示され続けます。予測は、ポリシーが選択する設定フィールドを通じてオプトイン方式で有効化され、アクションを変更してはなりません。ポリシーを誘導すべきテキストは、generate_textを通じて渡されます。
このポリシーがリアルタイムチャンク推論セマンティクスを実装しているかどうか。
このポリシーがgenerate_textを実装しているかどうか(両方を一緒にオーバーライドします)。
サービング前に正規化された入力を検証し、デフォルトでは正確な形状を指定します。
明示的に欠損入力をリサイズまたはマスクするポリシーは、この契約を上書きする場合があります。そのような例外はポリシー側に属し、トランスポート側に属することはありません。交渉されたワイヤースキーマは、提供されたすべての機能の形状を依然として固定します。
wrap_with_peft
< source >( peft_config = Nonepeft_cli_overrides: dict | None = None )
PEFT アダプターでこのポリシーをラップし、パラメータ効率の良いファインチューニングを実行します。
このメソッドはPEFT統合の単一のエントリポイントです。サブクラスは、デフォルトのターゲットモジュールを提供するために_get_default_peft_targets()を、ポリシー固有の検証を行うために_validate_peft_config()をオーバーライドする必要があります。
PreTrainedConfig
class 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 を定義する辞書です。キーは入力データの名称を表し、値は FeatureType と shape 属性で構成される PolicyFeature です。
- output_features — ポリシーの出力データの PolicyFeature を定義する辞書です。キーは出力データの名称を表し、値は FeatureType と shape 属性で構成される PolicyFeature です。
- normalization_mapping — FeatureType の str 値(例: “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) — ポリシーが構築された時点で、ポリシーがファインチューニングされたモデルの名前を保持している
cfg.pretrained_pathの代わりに、ここから重み(またはPEFTアダプター)を読み込みます。チェックポイントからの再開時に使用されます。
戻り値
PreTrainedPolicy
インスタンス化され、デバイスに配置されたポリシーモデル。
例外
ValueError または NotImplementedError
ValueError—ds_metaとenv_cfgの両方が指定されている場合、またはどちらも指定されていない場合。NotImplementedError— 未サポートのポリシーとバックエンドの組み合わせを使用しようとした場合(例: VQBeTと‘mps’)。
ポリシーモデルをインスタンス化します。
このファクトリ関数は、ポリシーの作成ロジックを処理します。これには、入力および出力の特徴量形状を決定する必要があります。これらの形状は、LeRobotDatasetMetadataオブジェクトまたはEnvConfigオブジェクトから導出できます。この関数は、ゼロから新しいポリシーを初期化することも、事前学習済みのものをロードすることもできます。