openpi icon indicating copy to clipboard operation
openpi copied to clipboard

pi05-libero discrete_state_input = False

Open chenkang455 opened this issue 2 months ago • 9 comments

In the pi05-libero config, discrete_state_input is set to False, why is it designed in this way? In the libero, pi05-libero doesn't take the state as the input?

    TrainConfig(
        name="pi05_libero",
        model=pi0_config.Pi0Config(pi05=True, action_horizon=10, discrete_state_input=False),
        data=LeRobotLiberoDataConfig(
            repo_id="physical-intelligence/libero",
            base_config=DataConfig(prompt_from_task=True),
            extra_delta_transform=False,
        ),
        batch_size=256,
        lr_schedule=_optimizer.CosineDecaySchedule(
            warmup_steps=10_000,
            peak_lr=5e-5,
            decay_steps=1_000_000,
            decay_lr=5e-5,
        ),
        optimizer=_optimizer.AdamW(clip_gradient_norm=1.0),
        ema_decay=0.999,
        weight_loader=weight_loaders.CheckpointWeightLoader("gs://openpi-assets/checkpoints/pi05_base/params"),
        pytorch_weight_path="/path/to/your/pytorch_weight_path",
        num_train_steps=30_000,
    ),

If this is not set, this feature will be enabled by:

  def __post_init__(self):
      if self.max_token_len is None:
          object.__setattr__(self, "max_token_len", 200 if self.pi05 else 48)
      if self.discrete_state_input is None:
          object.__setattr__(self, "discrete_state_input", self.pi05)

In the pi05 model, the state info is encoded in the language encoding process, however, if this is set to false, pi05 will not process the state?

chenkang455 avatar Sep 23 '25 08:09 chenkang455