Downloads · 30 days
0
GeertWang/pi05-pipette-lora-bc-20260909
pi05-pipette-lora-bc-20260909 is a robotics model from GeertWang. Use it for the robotics task on the model card, and read the license before you ship it in a product. It is set up for openpi.
Native JAX π0.5 behavioral-cloning checkpoint for the G1 three-camera pipette task, fine-tuned through VLA-Precision. This is the 1,000-update pilot, checkpoint index 999, used by the local operator GUI's inference pr…
Downloads · 30 days
0
Access
Public
Updated Sep 10, 2026
Repo size
9.5 GB
Likes
0
Public
Click a slice to open those files.
Other9.5 GB · 100%
From the Hugging Face model README
Native JAX π0.5 behavioral-cloning checkpoint for the G1 three-camera pipette task,
fine-tuned through VLA-Precision. This is the 1,000-update pilot, checkpoint
index 999, used by the local operator GUI's inference preview.
原生 JAX / Orbax checkpoint,包含完整模型参数、LoRA 参数和训练状态;不是 PyTorch 权重,也不是仅含 adapter 的文件。
checkpoints/999/params/: complete native inference parameter tree (~6.34 GB),
including frozen backbone parameters, learned LoRA parameters and other trained parameters.checkpoints/999/train_state/: training state (~3.19 GB), retained for resuming
with the matching native training recipe.checkpoints/999/assets/local/g1-pipette-pi05-30hz/norm_stats.json: training-only normalization statistics.training/: original YAML, resolved configuration, provenance and logged loss curve.evaluation/: held-out action prediction metrics.source/pipette-training-overlay.tar.gz: exact training-time modified/new
integration files to overlay on VLA-Precision commit
75eb56a35ca6e8c3ee0a0a3d41b99e88be469b81. This is a source overlay, not a complete repository.source/load_policy.py: portable loader/NPZ inference example using this
snapshot's own normalization assets. Does not need the training dataset paths.model_metadata.json, file_manifest.json, SHA256SUMS: input/output contract and artifact checksums.Preserve the entire params/ tree, including the OCDBT manifests and data blobs.
Downloading only _METADATA or an individual blob is insufficient.
| Property | Value |
|---|---|
| Base weights | Official gs://openpi-assets/checkpoints/pi05_base |
| OpenPI revision | 2d70d966582e711128ad8358d8dbf23d2cc3d658 |
| Model variants | gemma_2b_lora + gemma_300m_lora |
| State | 29 measured joint positions + measured right-hand XYZ, pelvis frame |
| State representation | Native π0.5 discrete state tokens after quantile normalization |
| Images | rgb, wrist_left, wrist_right; uint8 RGB, native resize/pad to 224×224 |
| Output | 10 × 3 Cartesian XYZ increments, metres per 30 Hz step, pelvis frame |
| Internal action dimension | 32, with the first three dimensions exposed as XYZ |
| Token limit | 200 |
| Evaluation flow steps | 10 |
| Dataset revision | e74439f3eb2257661145571571b2dfaa5592f734 |
| Split | 37 training episodes, 9 held-out episodes; whole-episode split |
| Training | 1,000 updates, batch 4, peak LR 5e-5, 100 warmup steps, no EMA |
| Hardware | One NVIDIA RTX PRO 5000 Blackwell, 48 GB class |
The native LoRA freeze filter also leaves the vision encoder and small projections trainable. Loading only adapters into the original base would omit trained weights. The prepared data uses the already-corrected left/right wrist camera names; do not swap them again. This checkpoint does not predict gripper commands or orientation.
The training prompt is:
Attach a pipette tip to the pipette, lift it, then move to the disposal box and eject the tip.
The dataset covers whole recorded episodes, including approach/lift/disposal motion;
it is not an attachment-only crop. Exact state ordering is in model_metadata.json.
Use an authenticated Hugging Face session if this repository is private:
from huggingface_hub import snapshot_download
snapshot = snapshot_download(
repo_id="GeertWang/pi05-pipette-lora-bc-20260909",
local_dir="./pi05-pipette-lora-bc-20260909",
)
# Native checkpoint directory: <snapshot>/checkpoints/999
For inference-only downloads, add:
allow_patterns=[
"checkpoints/999/params/**", "checkpoints/999/assets/**",
"model_metadata.json", "source/**", "README.md",
]
For reproducibility, pin revision to the uploaded commit hash shown on the Hub.
Use the matching VLA-Precision/OpenPI environment. For a fresh source checkout:
git clone https://github.com/scy-v/VLA-Precision.git
cd VLA-Precision
git checkout 75eb56a35ca6e8c3ee0a0a3d41b99e88be469b81
# Replace /path/to/snapshot with the downloaded model repository directory.
tar -xzf /path/to/snapshot/source/pipette-training-overlay.tar.gz -C .
The overlay includes pyproject.toml and uv.lock from the validated Python 3.11
training environment. Key versions: JAX 0.5.3, Flax 0.10.2, NumPy 1.26.4.
The included setup scripts describe the original Linux/CUDA environment; paths to
local compilers, FFmpeg and datasets may need adjustment on another machine.
The original training YAML preserves the experiment's paths for provenance.
The portable loader below avoids those training paths:
import importlib.util
from pathlib import Path
snapshot = Path("/path/to/snapshot")
spec = importlib.util.spec_from_file_location("pipette_hf_loader", snapshot / "source/load_policy.py")
loader = importlib.util.module_from_spec(spec)
spec.loader.exec_module(loader)
policy, metadata = loader.load_policy(snapshot)
# observation must contain:
# observation.state: float32 [32], measured joints + measured hand XYZ
# observation.images.rgb / wrist_left / wrist_right: uint8 HWC RGB
# task: metadata["prompt"]
# result = policy.infer(observation)
# actions = result["actions"] # [10, 3], metres per 30 Hz step
An inputs.npz saved by the pipette GUI preview can also be evaluated directly:
python /path/to/snapshot/source/load_policy.py \
--snapshot /path/to/snapshot \
--inputs /path/to/inputs.npz --output /tmp/pipette-prediction.json --seed 42
144 complete held-out chunks (16 per validation episode), horizon 10. Metrics are errors of predicted action increments, in mm per 30 Hz step, not physical tip alignment error or attachment success.
| Policy | XYZ component RMSE (mm/step) |
|---|---|
| Official base, pipette normalization | 0.325798 |
| This LoRA pilot | 0.201649 |
| Zero-action baseline | 0.161813 |
This checkpoint's X/Y/Z RMSE is approximately 0.233979 / 0.160636 / 0.203560 mm/step. Logged loss decreased from 0.3847 at step 0 to 0.0245 in the final logged interval at step 990. The loss is the native flow-matching velocity MSE, not Cartesian position error; see the Chinese report for its definition and padding dimensions.

This remains a pilot: the zero-action baseline is stronger on this offline metric. Native dataset inference and GUI preview were validated, including agreement at a fixed input/noise seed. Real-robot attachment success has not been evaluated. The current HIL wire uses a 10 Hz action convention; these 30 Hz action chunks require a validated execution adapter. The repository contains no ACoB stage-II checkpoint or robot command service.
Training code originates from VLA-Precision and OpenPI; base-model and upstream usage terms remain applicable. This card does not assign a new license to the underlying base weights.