Pi0.5 LoRA โ€” Task 002: Pick and Place Objects to X Mark

Fine-tuned Pi0.5 checkpoint using LoRA adapters for multi-object pick-and-place from a square box to an X mark.

Model Details

Parameter Value
Base model Pi0.5 (pi05_base)
Tuning method LoRA (low-rank adaptation)
Framework OpenPI + JAX
Action dim 18 (joint-space)
Action horizon 10 steps
State dim 18 (qpos)
Image inputs head_camera (224x224) + wrist_left (224x224)

Training Configuration

Parameter Value
GPU NVIDIA H100 80GB HBM3
Batch size 4
Training steps 30,000
Optimizer AdamW (grad clip norm=1.0)
LR schedule Cosine decay, peak=5e-5, warmup=10k steps
Final loss 0.0506
Final grad norm ~0.49

Dataset

Task T-002: "Pick and Place different objects from a square box to the X Mark"

  • Source: s3://unix-ai-data/teleop_data/task_002/
  • Total episodes: 1,553
  • Total frames: 913,774
  • FPS: 40 Hz
  • Format: Converted from Unix-AI HDF5 to LeRobot

Objects (10 unique)

Object Episodes
Blue box 149
Foam brick 150
C clamp 150
T clamp 150
USB cable 149
Plastic clamp 150
Wooden block 150
Screwdriver 151
Timer clock 206
Rubiks cube 148

Language Commands

Each episode is conditioned on a natural language prompt:

Pick and place blue box to the X mark
Pick and place foam brick to the X mark
Pick and place C clamp to the X mark
Pick and place T clamp to the X mark
Pick and place USB cable to the X mark
Pick and place plastic clamp to the X mark
Pick and place wooden block to the X mark
Pick and place screwdriver to the X mark
Pick and place timer clock to the X mark
Pick and place Rubiks cube to the X mark

Checkpoint Structure

29999/
  params/          # 6.0 GB โ€” model parameters (base + LoRA adapters)
  train_state/     # 3.0 GB โ€” optimizer state (for resuming training)
  assets/          # normalization statistics

Usage with OpenPI

# Serve the model
python scripts/serve.py --config pi05_unix_ai_lora --checkpoint checkpoints/pi05_unix_ai_lora/pi05_task_002_lora/29999/params

# Inference
from openpi_client import Client
client = Client("http://localhost:8000")
action = client.infer(
    observations={"image": img, "wrist_image": wrist_img, "state": qpos},
    prompt="Pick and place blue box to the X mark"
)

Training Reproduction

# 1. Download data
python scripts/download_s3_bulk.py \
  --source s3://unix-ai-data/teleop_data/task_002/ \
  --output-dir data/unix_ai/task_002_raw --workers 16

# 2. Convert to LeRobot
python scripts/convert_unix_ai_hdf5_to_lerobot.py \
  --data_dir data/unix_ai/task_002_raw \
  --repo_id unix-ai/task_002 \
  --task-map configs/task_002_subtask_map.json --force

# 3. Compute normalization stats
python scripts/compute_norm_stats_unix_ai.py --repo-id unix-ai/task_002

# 4. Train
python scripts/train_unix_ai.py \
  --repo-id unix-ai/task_002 \
  --exp-name pi05_task_002_lora \
  --batch-size 4 --num-train-steps 30000 --num-workers 0
Downloads last month

-

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