pi0.5 clean50 β€” inference model

A custom pi0.5 robot policy fine-tuned for 30,000 steps with four action experts and top-1 routing. The package is intended for inference and evaluation, not exact resumption of the original training run.

Model overview

Item Value
Parameter set EMA, decay 0.99
Backbone PaliGemma / Gemma 2B
Action expert Gemma 300M variant, four experts, top-1 routing
Checkpoint format OpenPI JAX / Orbax / Zarr
Input cameras Main view, left wrist, right wrist
Robot state 14 values: two sets of six joints and one gripper
Language input An explicit task instruction
Output 50 actions, each with 14 values
Internal action dimension 32
Maximum token length 200

This is not a Transformers AutoModel or safetensors package. Use the matching runtime implementation included here.

Package contents

  • params/: EMA parameters and their required metadata.
  • assets/robotwin_clean50_lerobot_v30/norm_stats.json: normalization statistics.
  • code/: selected model, preprocessing and client modules.
  • load_policy.py and inference_config.json: inference entry point and portable configuration.
  • Pinned dependencies, checksums, training summary and third-party notices.

Optimizer state, training examples, training videos and raw experiment logs are not included.

Tokenizer

The compatible tokenizer is included at cache/openpi/big_vision/paligemma_tokenizer.model. The inference entry point uses this local asset. No separate tokenizer download or vocabulary modification is required.

Only the nonfunctional trainer_spec.model_prefix provenance field has been cleared from the release copy to remove a machine-specific path. All 257,152 vocabulary entries, their token IDs and scores, normalization settings, and all other protobuf fields are unchanged. A total of 524 encode/decode comparisons matched the original. Ordinary words and named entities in the inherited vocabulary are preserved.

Environment

Use a separate Python 3.12 environment. Install CPU-only PyTorch and torchvision first, followed by the pinned inference dependencies and matching CUDA user-space libraries. Select one visible GPU before importing JAX. Installation into a fresh inference-only Python 3.12 environment and pip dependency checks passed. The exact installed versions are recorded in requirements-runtime-lock.txt.

Create the isolated environment from the downloaded repository directory:

python3.12 -m venv .venv
.venv/bin/python -m pip install "torch==2.8.0+cpu" "torchvision==0.23.0+cpu" --index-url https://download.pytorch.org/whl/cpu
.venv/bin/python -m pip install -r requirements-inference.txt -r requirements-cuda.txt -c requirements-runtime-lock.txt
.venv/bin/python -m pip check

A compatible NVIDIA driver is required separately. Runtime libraries are installed into the virtual environment; these commands do not install or replace a system driver.

Python usage

After downloading the complete repository and installing its dependencies, the following synthetic example demonstrates the interface:

import os
import numpy as np

os.environ.setdefault("CUDA_VISIBLE_DEVICES", "0")
from load_policy import load_policy

policy = load_policy()
observation = {
    "images": {
        "cam_high": np.zeros((3, 240, 320), dtype=np.uint8),
        "cam_left_wrist": np.zeros((3, 240, 320), dtype=np.uint8),
        "cam_right_wrist": np.zeros((3, 240, 320), dtype=np.uint8),
    },
    "state": np.zeros(14, dtype=np.float32),
    "prompt": "Place the object on the table.",
}
result = policy.infer(observation)
assert result["actions"].shape == (50, 14)

These synthetic observations illustrate the interface; they are not valid commands for a physical robot. The preprocessing uses quantile normalization, joint-relative actions, absolute gripper values and adapt_to_pi=False. Output postprocessing reconstructs absolute joint targets.

Validation and limitations

  • The training run completed 30,000 steps. The source final checkpoint passed full-array readability and finite-value checks.
  • Selected runtime imports and synthetic preprocessing/postprocessing are checked against the original pipeline on CPU.
  • The bundled tokenizer uses the original runtime implementation. Its metadata-only redaction does not alter tokenization rules.
  • The full model was restored in a fresh inference-only environment and two synthetic single-GPU inference calls passed. Both outputs had shape (50, 14), float64 dtype after postprocessing, and finite values. See inference_validation.json. This is a functional smoke test, not a performance benchmark.
  • No RoboTwin simulation success rate or physical-robot evaluation is reported. Training losses and router-label accuracy are not task success rates.
  • Preserve all required array metadata, including hidden .zarray files. Logical sharding dimensions are technical model metadata, not a guarantee of an inference hardware requirement.
  • Validate in simulation and apply independent safety limits before any physical actuation.

Training metrics

The last regular logging window, at zero-based step 29,900, recorded total loss 0.0015 and action loss 0.0003. These are training-window metrics, not an independent evaluation. Additional method details are in training_summary.json.

Sources and third-party notices

Source bundle: yz221840196/kinrt_clean50, revision 2c735959517b7e8cfd7f1f648f93a35db3c0b745.

Base checkpoint: gs://openpi-assets/checkpoints/pi05_base/params.

Original code notices are retained in source headers and LICENSES/. Code licenses do not by themselves establish the terms for all model weights or the tokenizer. Review the applicable upstream terms before redistribution; no blanket model license is assigned here.

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading