opentau.policies.pi06.configuration_pi06
Configuration module for the PI06 Policy.
This module defines the PI06Config class, which handles the configuration parameters for the PI06 Vision-Language-Action model. π06 inherits the π05 training recipe (FAST discrete action co-training, flow-matching continuous actions, Knowledge Insulation gradient-stop) but upgrades the backbone to Gemma 3 4B with 448×448 vision and a larger action expert.
Classes
|
Configuration class for the PI06 Policy. |
- class opentau.policies.pi06.configuration_pi06.PI06Config(n_obs_steps: int = 1, normalization_mapping: dict[str, ~opentau.configs.types.NormalizationMode] = <factory>, input_features: dict[str, ~opentau.configs.types.PolicyFeature] = <factory>, output_features: dict[str, ~opentau.configs.types.PolicyFeature] = <factory>, device: str | None = None, use_amp: bool = False, use_torch_compile: bool = False, torch_compile_mode: str = 'default', pretrained_path: str | None = None, skip_normalization_weights: bool = False, skip_input_resolution_check: bool = False, save_normalization_stats: bool = True, dataset_names: list[str] | None = None, dataset_to_norm_index: dict[str, int] | None = None, cloud_vlm_latency_mean: float = 0.0, cloud_vlm_latency_std: float = 0.0, cloud_vlm_latency_lower: float = 0.0, cloud_vlm_latency_upper: float = 0.0, action_decoder_latency_mean: float = 0.0, action_decoder_latency_std: float = 0.0, action_decoder_latency_lower: float = 0.0, action_decoder_latency_upper: float = 0.0, chunk_size: int = 50, n_action_steps: int = 50, max_state_dim: int = 32, max_action_dim: int = 32, predict_response: bool = False, resize_imgs_with_padding: tuple[int, int] = (448, 448), empty_cameras: int = 0, prompt_max_length: int = 256, response_max_length: int = 52, discrete_action_max_length: int = 32, discrete_action_tokenizer_path: str = 'physical-intelligence/fast', proj_width: int = 1280, dropout: float = 0.1, num_steps: int = 5, max_delay: int = 0, attention_implementation: str = 'eager', freeze_vision_encoder: bool = True, train_expert_only: bool = False, knowledge_insulation: bool = True, gradient_checkpointing: bool = False, optimizer_lr: float = 2.5e-05, optimizer_betas: tuple[float, float] = (0.9, 0.95), optimizer_eps: float = 1e-08, optimizer_weight_decay: float = 1e-10, scheduler_warmup_steps: int = 1000, scheduler_decay_steps: int = 30000, scheduler_decay_lr: float = 2.5e-06)[source]
Bases:
PreTrainedConfigConfiguration class for the PI06 Policy.
Mirrors PI05Config but flips the defaults to match π0.6’s architecture: Gemma 3 4B backbone, 448×448 image input, ~860M action expert, and 5 flow-matching denoising steps.
- Parameters:
n_obs_steps – Number of observation steps to use. Defaults to 1.
chunk_size – Trained action-chunk length, i.e. the prediction horizon the model always decodes at inference. Upper bound for n_action_steps. Defaults to 50.
n_action_steps – Inference execution horizon – how many actions from each predicted chunk are executed before the policy re-queries with fresh observations. Must be <= chunk_size. Defaults to 50.
normalization_mapping – Mapping of feature names to normalization modes.
max_state_dim – Maximum dimension for state vectors. Defaults to 32.
max_action_dim – Maximum dimension for action vectors. Defaults to 32.
predict_response – Whether to predict the response. Defaults to False. Enabling this is required to reproduce the paper’s hierarchical design (π0.6 model card §1: “preserves the hierarchical design of π0.5, providing high-level subtask prediction and low-level action generation”). When False, π0.6 reduces to a flat low-level-only model. The default is False because most LeRobot-style datasets do not carry subtask annotations. The same field is also used to supervise VQA / grounding-style textual targets during co-training (this is why the field is named “response” rather than “subtask” — it covers both uses, matching the π0.5 pretraining recipe).
resize_imgs_with_padding – Target image size. Defaults to (448, 448).
empty_cameras – Number of empty camera inputs to add. Defaults to 0. π0.6 pre-training uses up to 4 cameras (base + 2 wrist + optional backward for mobile manipulators); set this to match your robot.
prompt_max_length – Maximum tokenizer length. Defaults to 256.
response_max_length – Maximum response length. Defaults to 52.
discrete_action_max_length – Maximum discrete action token length. Defaults to 32.
proj_width – Width of the action projection layer. Defaults to 1280 to match the Gemma-v1 action expert hidden size.
dropout – Dropout rate. Defaults to 0.1.
num_steps – Number of flow matching denoising steps. Defaults to 5 (halved from π0.5’s 10, giving ~63 ms per chunk on an H100).
attention_implementation – “eager”, “sdpa”, or “fa2”. Defaults to “eager”. “sdpa” dispatches to
torch.nn.functional.scaled_dot_product_attention(typically 2-3x faster on A100 + bf16). “fa2” is accepted for backward compatibility but logs a warning and falls back to eager.freeze_vision_encoder – Whether to freeze the vision encoder. Defaults to True.
train_expert_only – Whether to train only the expert module. Defaults to False.
optimizer_lr – AdamW learning rate. Defaults to 2.5e-5.
optimizer_betas – AdamW betas. Defaults to (0.9, 0.95).
optimizer_eps – AdamW epsilon. Defaults to 1e-8.
optimizer_weight_decay – AdamW weight decay. Defaults to 1e-10.
scheduler_warmup_steps – Warmup steps. Defaults to 1_000.
scheduler_decay_steps – Decay steps. Defaults to 30_000.
scheduler_decay_lr – Target decay learning rate. Defaults to 2.5e-6.
- __init__(n_obs_steps: int = 1, normalization_mapping: dict[str, ~opentau.configs.types.NormalizationMode] = <factory>, input_features: dict[str, ~opentau.configs.types.PolicyFeature] = <factory>, output_features: dict[str, ~opentau.configs.types.PolicyFeature] = <factory>, device: str | None = None, use_amp: bool = False, use_torch_compile: bool = False, torch_compile_mode: str = 'default', pretrained_path: str | None = None, skip_normalization_weights: bool = False, skip_input_resolution_check: bool = False, save_normalization_stats: bool = True, dataset_names: list[str] | None = None, dataset_to_norm_index: dict[str, int] | None = None, cloud_vlm_latency_mean: float = 0.0, cloud_vlm_latency_std: float = 0.0, cloud_vlm_latency_lower: float = 0.0, cloud_vlm_latency_upper: float = 0.0, action_decoder_latency_mean: float = 0.0, action_decoder_latency_std: float = 0.0, action_decoder_latency_lower: float = 0.0, action_decoder_latency_upper: float = 0.0, chunk_size: int = 50, n_action_steps: int = 50, max_state_dim: int = 32, max_action_dim: int = 32, predict_response: bool = False, resize_imgs_with_padding: tuple[int, int] = (448, 448), empty_cameras: int = 0, prompt_max_length: int = 256, response_max_length: int = 52, discrete_action_max_length: int = 32, discrete_action_tokenizer_path: str = 'physical-intelligence/fast', proj_width: int = 1280, dropout: float = 0.1, num_steps: int = 5, max_delay: int = 0, attention_implementation: str = 'eager', freeze_vision_encoder: bool = True, train_expert_only: bool = False, knowledge_insulation: bool = True, gradient_checkpointing: bool = False, optimizer_lr: float = 2.5e-05, optimizer_betas: tuple[float, float] = (0.9, 0.95), optimizer_eps: float = 1e-08, optimizer_weight_decay: float = 1e-10, scheduler_warmup_steps: int = 1000, scheduler_decay_steps: int = 30000, scheduler_decay_lr: float = 2.5e-06) None
- property action_delta_indices: list[int]
Get indices for action delta features.
- Returns:
List of indices indicating which action features should be treated as deltas, or None if no delta features are used.
- attention_implementation: str = 'eager'
- chunk_size: int = 50
- discrete_action_max_length: int = 32
- discrete_action_tokenizer_path: str = 'physical-intelligence/fast'
- dropout: float = 0.1
- empty_cameras: int = 0
- freeze_vision_encoder: bool = True
- gradient_checkpointing: bool = False
- knowledge_insulation: bool = True
- max_action_dim: int = 32
- max_delay: int = 0
- max_state_dim: int = 32
- n_action_steps: int = 50
- n_obs_steps: int = 1
- normalization_mapping: dict[str, NormalizationMode]
- num_steps: int = 5
- property observation_delta_indices: None
Get indices for observation delta features.
- Returns:
List of indices indicating which observation features should be treated as deltas, or None if no delta features are used.
- optimizer_betas: tuple[float, float] = (0.9, 0.95)
- optimizer_eps: float = 1e-08
- optimizer_lr: float = 2.5e-05
- optimizer_weight_decay: float = 1e-10
- predict_response: bool = False
- proj_width: int = 1280
- prompt_max_length: int = 256
- resize_imgs_with_padding: tuple[int, int] = (448, 448)
- response_max_length: int = 52
- property reward_delta_indices: None
Get indices for reward delta features.
- Returns:
List of indices indicating which reward features should be treated as deltas, or None if no delta features are used.
- scheduler_decay_lr: float = 2.5e-06
- scheduler_decay_steps: int = 30000
- scheduler_warmup_steps: int = 1000
- train_expert_only: bool = False