File size: 2,258 Bytes
00c55c8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/env bash
set -Eeuo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"

if [ -n "${OPENPI_PYTHON:-}" ]; then
    PY="$OPENPI_PYTHON"
elif [ -x "$ROOT/.venv/bin/python" ]; then
    PY="$ROOT/.venv/bin/python"
else
    PY="$(command -v python3 || true)"
fi

if [ -z "$PY" ] || [ ! -x "$PY" ]; then
    echo "ERROR: no usable Python interpreter found"
    exit 1
fi

export PYTHONDONTWRITEBYTECODE=1
export PYTHONPATH="$ROOT:$ROOT/src:$ROOT/packages/openpi-client/src"
export OPENPI_REAL_PIPER_X_ASSETS="$ROOT/checkpoints/29999/assets"

echo "Repository: $ROOT"
echo "Python: $PY"

"$PY" "$ROOT/deployment/verify_checkpoint.py"

"$PY" - "$ROOT" <<'PY'
from pathlib import Path
import inspect
import json
import sys

root = Path(sys.argv[1])
manifest = json.loads(
    (root / "metadata" / "release_manifest.json").read_text(
        encoding="utf-8"
    )
)

from openpi.training import config as train_config
from deployment import piperx_client
from deployment import serve_piperx

config_name = "pi05_stream3_piper_x_real_6tasks"
config = train_config.get_config(config_name)

assert config.model.hist_horizon == 3
assert config.model.action_horizon == 10
assert config.data.repo_id == "real_piper_x_6tasks"
assert config.data.use_delta_joint_actions is True
assert config.data.base_config.hist_interval == 5

source = inspect.getsource(type(config.data).create)
assert "DeltaActions" in source
assert "AbsoluteActions" in source
assert "make_bool_mask(6, -1, 6, -1)" in source

model = manifest["model"]

assert serve_piperx.CONFIG_NAME == config_name
assert serve_piperx.HISTORY_HORIZON == model["history_horizon"]
assert serve_piperx.ACTION_HORIZON == model["action_horizon"]
assert serve_piperx.EXECUTE_STEPS == model["execute_steps"]
assert serve_piperx.STATE_DIM == model["state_dim"]
assert serve_piperx.ACTION_DIM == model["action_dim"]

assert piperx_client.HISTORY_HORIZON == model["history_horizon"]
assert piperx_client.ACTION_HORIZON == model["action_horizon"]
assert piperx_client.EXECUTE_STEPS == model["execute_steps"]
assert list(piperx_client.CAMERA_NAMES) == model["cameras"]

print("CONFIG_REGISTRATION_OK")
print("DELTA_TO_ABSOLUTE_TRANSFORM_OK")
print("SERVER_CLIENT_PROTOCOL_OK")
print("RELEASE_VERIFY_OK")
PY