S1 stack cups, random498, best, global step30000

EMA weights for native S1 dual-arm cup stacking. The model descends from official Pi0.5, via the9023 run's10k EMA; this9033 branch resets AdamW at10k and continues the global training clock to50k. See training_metadata.json and configuration.json. 498 admitted episodes,261450 frames; full-frame uniform sampling, batch128, FSDP8, EMA0.99. No optimizer/train_state or dataset is included.

Original JAX EMA: 5/15 on the fixed training-case reproduction panel. This is not a held-out or498-case success rate.

Best-selection receipt: selected global step30000, highest strict success count on the complete common fixed15 panel across this training lineage; earlier step wins ties. See best_selection.json. Other panels are reported separately.

The task score requires native task success, native hard checks, and >=20mm cross-arm/gripper clearance at all35001 recorded native states. Episode17.5s, 525 absolute actions,30Hz,H50,K50,10 denoising steps,seed0. Sampled-state clearance does not establish clearance between sampled states. Original JAX evaluation results do not establish equivalent PyTorch closed-loop performance.

Exact input and action contract

  • Camera order: head,left_wrist,right_wrist, uint8 RGB, each224x224, full frame.
  • Model keys: base_0_rgb,left_wrist_0_rgb,right_wrist_0_rgb.
  • Prompt: Stack_the_cups_together. Exact200-token padded encoding is bundled.
  • pi05=True, discrete_state_input=False, state_in_prompt=False. The API accepts state32, but this trained architecture does not consume the joint-state values; it uses images and task text. Do not enable state prompting on this checkpoint as an inference-only change.
  • Output:50x22 absolute desired native joint targets in radians, including the two native gripperL1 targets. It is neither EEF/delta control nor the older30-joint-plus2-aperture action mapping. See pipeline_contract.json for exact joint order. Normalize22 channels before zero-padding to32; decode the first22 using the original q01/q99 stats and epsilon1e-6, without clipping.

Files and use

model.safetensors contains converted BF16 weights. jax/params/ preserves the original EMA bytes. assets/ contains the exact normalization. The pinned upstream source is included in openpi_source/ and native training/adapter source in training_source/. OpenPI revision: 215abfb217dbac7d5f1273282331b9b1866c0479.

Install that OpenPI revision's dependencies and its documented Transformers replacement (transformers4.53.2). The bundled source includes those replacements. Then add the two source directories to PYTHONPATH:

export PYTHONPATH="$PWD/openpi_source/src:$PWD/openpi_source/packages/openpi-client/src:$PYTHONPATH"
from native_policy import NativePolicy
import numpy as np
p = NativePolicy('.', backend='pytorch', device='cuda')
with np.load('example_observation.npz') as z:
    prediction = p.infer(z['state'], z['images_uint8'], seed=0)
targets = prediction['actions']  # (50,22), absolute radians, contract order

Use backend='jax' for original EMA inference. Equal seed numbers across JAX and PyTorch do not imply equal noise. The CPU validation reloads actual SafeTensors strictly and runs10 denoising steps; it is not a closed-loop or backend-parity test. No grasp assistance, IK correction, servo, robot SDK or action publisher is bundled in NativePolicy. It produces model targets only. Hardware execution requires the calibrated native controller and robot-specific configuration.

Upstream license and Gemma notices are retained in LICENSE and LICENSE_GEMMA.txt. Source model/research: https://github.com/Physical-Intelligence/openpi Checkpoint identity: 07b18bcedd6291cde8e4f1b3be28f9fc73fc7097851532761de3cb90be79d8d2.

Downloads last month
25
Safetensors
Model size
4B params
Tensor type
BF16
ยท
Video Preview
loading