> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orchestrallabs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# PI0.5 YAM

> Inspect, deploy, and prepare fine-tuned PI0.5 checkpoints.

PI0.5 YAM is the YAM-trained checkpoint used in the quickstart. For another robot, inspect the
checkpoint contract before deployment: camera names, state width, and action width belong to the
checkpoint and are not inferred from the robot name.

## Checkpoint format for fine-tunes

Upload a complete checkpoint to a Hugging Face repository. Servo supports these PI0.5 layouts:

| Format | Upload from | Required checkpoint files |
| - | - | - |
| OpenPI JAX/Orbax | One training-step directory | `params/` (including `_METADATA`), exactly one `assets/<id>/norm_stats.json`, and `openpi_config.json` describing cameras, state key, horizon, and transforms |
| OpenPI PyTorch | OpenPI JAX-to-PyTorch converter output | `config.json`, `model.safetensors` or its shard index and shards, and `assets/<id>/norm_stats.json` |
| LeRobot | `pretrained_model/` output | `config.json`, `model.safetensors` or its shard index and shards, and the matching `policy_*` processor files |

Keep the normalization statistics from the same training run as the weights. The JAX
`openpi_config.json` schema is [available here](/schemas/openpi_config.schema.json). For a PyTorch
checkpoint, select the training configuration explicitly when importing it; supported names are
`pi05_aloha`, `pi05_droid`, `pi05_libero`, `pi05_yam_red_cap_full`, and
`yam_molmoact2_pi05_jax`.

## Inspect the input contract

Inspection reads checkpoint metadata and small config files, not model weights. The public YAM
checkpoint declares image arrays named `middle`, `left`, and `right`, plus the 7-value `state`
array. A fine-tune can use different names or dimensions, so use its inspection result as the
source of truth:

```python inspect_checkpoint.py theme={null}
import servo

sv = servo.Servo()
inspection = sv.models.inspect_checkpoint(
    "hf://npow/pi05-yam-red-cap-full-7500",
    revision="a0a41110b97aa9c1af20bfcdd9299690349e777e",
)
for item in inspection.input_contract.inputs or ():
    print(f"{item.name}: {item.shape} ({item.modality})")
```

## Deploy

Deploy the pinned public checkpoint to a robot registered with your organization:

```bash your computer theme={null}
servo model deploy hf://npow/pi05-yam-red-cap-full-7500 --revision a0a41110b97aa9c1af20bfcdd9299690349e777e --robot robot-1 --wait
```

## Import and deploy a fine-tune

Import a fine-tune at the same pinned revision you inspected, then deploy the returned model ID:

```bash your computer theme={null}
servo model import hf://ORG/REPO --revision COMMIT
servo model deploy mdl_YOUR_MODEL_ID --robot robot-1 --wait
```

For an OpenPI PyTorch repository that contains more than one supported configuration, pass
`--openpi-config-name` to `servo model import` so the importer knows which config describes the
fine-tune. For example, use `--openpi-config-name pi05_yam_red_cap_full` when that is the training
configuration. The checkpoint's `observation.images.*` and `state` keys, array shapes, and dtypes
are the keys to pass in `Session.predict(inputs=...)`; the camera-to-key mapping is specific to how
the robot's cameras were named in training.

## Send observations and receive actions

On the robot computer, use the deployment's policy contract to build `inputs` with the exact keys,
shapes, and dtypes. The [quickstart](/quickstart#choose-a-model) shows the shared
`Session.predict` flow; its sample prints the resolved contract before creating the arrays.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.