sequence-base 0.4.11__tar.gz → 0.4.13__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sequence_base-0.4.11 → sequence_base-0.4.13}/PKG-INFO +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/pyproject.toml +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/__init__.py +1 -6
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/constants/limits.py +5 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/constants/version.py +3 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/contract/__init__.py +1 -6
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/contract/benchmarks.py +18 -8
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/contract/eval.py +6 -69
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/presets/robot_arm.py +8 -17
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schema_export.py +0 -6
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ActRequest.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ActResponse.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ActionChunk.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ActionContract.json +1 -33
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ActionStep.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/AddLocal.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/Autoscaler.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/BenchmarkConditionSpec.json +1 -13
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/BenchmarkRegisterRequest.json +22 -51
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/BenchmarkSpec.json +2 -2
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/BenchmarkStatusResponse.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/BootstrapResponse.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/Camera.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ClampInfo.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/CodeBundle.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/Concurrency.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/Conditions.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ConnectRequest.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ConnectResponse.json +1 -33
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/DeploymentAccepted.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/DeploymentPolicy.json +1 -33
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/DeploymentRequest.json +1 -33
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/DeploymentStatusResponse.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/Embodiment.json +1 -33
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ErrorBody.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ErrorCodes.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/Estimate.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/EvalDryRunResponse.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/EvalReport.json +30 -131
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/EvalRequest.json +2 -30
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/EvalResponse.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ImageFrame.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ImageSpec.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ImageStepAddLocal.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ImageStepApt.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ImageStepEnv.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ImageStepRun.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ImageStepTemplateFiles.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ImageStepUvPip.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/InferParam.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/Lease.json +1 -1
- sequence_base-0.4.13/sequence_base/schemas/MetricAgg.json +55 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/Observation.json +15 -10
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ObservationContract.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/PolicyRegistration.json +2 -34
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/PolicySpec.json +1 -33
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/Proprioception.json +15 -10
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/RenderSpec.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/ReplaySpec.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/Resources.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/RolloutResult.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/SecretCreateRequest.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/SecretInfo.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/SecretRef.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/SeqFlags.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/Step.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/TaskAgg.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/TemplateFiles.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/Timeouts.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/UploadTarget.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/Variant.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/VolumeAttach.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/VolumeFile.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/VolumeInfo.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/VolumeMount.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/VolumeRef.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/VolumeUploadRequest.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/VolumeUploadResponse.json +1 -1
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/WarmingError.json +1 -1
- sequence_base-0.4.11/sequence_base/schemas/AdapterTransform.json +0 -42
- sequence_base-0.4.11/sequence_base/schemas/LossyTransform.json +0 -21
- sequence_base-0.4.11/sequence_base/schemas/MetricAgg.json +0 -87
- sequence_base-0.4.11/sequence_base/schemas/SuiteAgg.json +0 -26
- {sequence_base-0.4.11 → sequence_base-0.4.13}/.gitignore +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/README.md +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/auth.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/codec/__init__.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/codec/image.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/constants/__init__.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/constants/headers.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/contract/accounts.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/contract/act.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/contract/connect.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/contract/deployments.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/contract/errors.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/contract/flags.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/contract/io.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/contract/policy.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/contract/templates.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/contract/volumes.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/contract/wire.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/errors/__init__.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/errors/transport.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/obs/__init__.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/obs/log.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/obs/rid.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/presets/__init__.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/presets/frames.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/telemetry/__init__.py +0 -0
- {sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/telemetry/events.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sequence-base
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.13
|
|
4
4
|
Summary: Shared foundation for the Sequences platform — wire contract, correlation, error taxonomy, constants. Used by the robot SDK, gateway, and container harness.
|
|
5
5
|
Project-URL: Changelog, https://generalsequences.com/docs/changelog/
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sequence-base"
|
|
3
|
-
version = "0.4.
|
|
3
|
+
version = "0.4.13"
|
|
4
4
|
description = "Shared foundation for the Sequences platform — wire contract, correlation, error taxonomy, constants. Used by the robot SDK, gateway, and container harness."
|
|
5
5
|
requires-python = ">=3.10"
|
|
6
6
|
dependencies = ["pydantic>=2.0"]
|
|
@@ -37,8 +37,6 @@ from sequence_base.contract import (
|
|
|
37
37
|
ActionContract,
|
|
38
38
|
ActionSpace,
|
|
39
39
|
ActionStep,
|
|
40
|
-
AdapterKind,
|
|
41
|
-
AdapterTransform,
|
|
42
40
|
Autoscaler,
|
|
43
41
|
BenchmarkConditionSpec,
|
|
44
42
|
BenchmarkRegisterRequest,
|
|
@@ -75,7 +73,6 @@ from sequence_base.contract import (
|
|
|
75
73
|
ImageStepRun,
|
|
76
74
|
ImageStepUvPip,
|
|
77
75
|
Lease,
|
|
78
|
-
LossyTransform,
|
|
79
76
|
MetricAgg,
|
|
80
77
|
Observation,
|
|
81
78
|
PolicyRegistration,
|
|
@@ -90,7 +87,6 @@ from sequence_base.contract import (
|
|
|
90
87
|
SecretRef,
|
|
91
88
|
SeqFlags,
|
|
92
89
|
Step,
|
|
93
|
-
SuiteAgg,
|
|
94
90
|
TaskAgg,
|
|
95
91
|
Timeouts,
|
|
96
92
|
Variant,
|
|
@@ -146,8 +142,7 @@ __all__ = [
|
|
|
146
142
|
|
|
147
143
|
"Variant", "Conditions", "RenderSpec", "ReplaySpec", "Step", "BenchmarkSpec", "BenchmarkConditionSpec", "BenchmarkRegisterRequest", "BenchmarkStatusResponse",
|
|
148
144
|
"EvalRequest", "ClampInfo", "Estimate", "EvalResponse", "EvalDryRunResponse", "RolloutResult",
|
|
149
|
-
"EvalStatus", "
|
|
150
|
-
"AdapterKind", "AdapterTransform",
|
|
145
|
+
"EvalStatus", "TaskAgg", "MetricAgg", "EvalReport",
|
|
151
146
|
|
|
152
147
|
"SecretRef", "SecretCreateRequest", "SecretInfo", "BootstrapResponse",
|
|
153
148
|
|
|
@@ -72,8 +72,6 @@ from sequence_base.contract.benchmarks import (
|
|
|
72
72
|
Variant,
|
|
73
73
|
)
|
|
74
74
|
from sequence_base.contract.eval import (
|
|
75
|
-
AdapterKind,
|
|
76
|
-
AdapterTransform,
|
|
77
75
|
ClampInfo,
|
|
78
76
|
Estimate,
|
|
79
77
|
EvalDryRunResponse,
|
|
@@ -81,10 +79,8 @@ from sequence_base.contract.eval import (
|
|
|
81
79
|
EvalRequest,
|
|
82
80
|
EvalResponse,
|
|
83
81
|
EvalStatus,
|
|
84
|
-
LossyTransform,
|
|
85
82
|
MetricAgg,
|
|
86
83
|
RolloutResult,
|
|
87
|
-
SuiteAgg,
|
|
88
84
|
TaskAgg,
|
|
89
85
|
)
|
|
90
86
|
|
|
@@ -134,8 +130,7 @@ __all__ = [
|
|
|
134
130
|
|
|
135
131
|
"Variant", "Conditions", "RenderSpec", "ReplaySpec", "Step", "BenchmarkSpec", "BenchmarkConditionSpec", "BenchmarkRegisterRequest", "BenchmarkStatusResponse",
|
|
136
132
|
"EvalRequest", "ClampInfo", "Estimate", "EvalResponse", "EvalDryRunResponse", "RolloutResult",
|
|
137
|
-
"EvalStatus", "
|
|
138
|
-
"AdapterKind", "AdapterTransform",
|
|
133
|
+
"EvalStatus", "TaskAgg", "MetricAgg", "EvalReport",
|
|
139
134
|
|
|
140
135
|
"SecretRef", "SecretCreateRequest", "SecretInfo", "BootstrapResponse",
|
|
141
136
|
|
|
@@ -16,7 +16,7 @@ from typing import Literal
|
|
|
16
16
|
|
|
17
17
|
from pydantic import BaseModel, ConfigDict, Field, model_validator
|
|
18
18
|
|
|
19
|
-
from sequence_base.constants.limits import MAX_ENVS, TASK_DESCRIPTION_MAX
|
|
19
|
+
from sequence_base.constants.limits import MAX_ENVS, METRIC_UNIT_MAX, METRIC_UNITS_MAX, TASK_DESCRIPTION_MAX
|
|
20
20
|
from sequence_base.contract.accounts import SecretRef
|
|
21
21
|
from sequence_base.contract.deployments import CodeBundle, DeploymentState, InferParam
|
|
22
22
|
from sequence_base.contract.flags import BENCHMARK_BATCHED, BENCHMARK_BINDABLE, SeqFlags
|
|
@@ -167,10 +167,6 @@ class BenchmarkConditionSpec(BaseModel):
|
|
|
167
167
|
timeout_s: float | None = Field(default=None, gt=0)
|
|
168
168
|
|
|
169
169
|
|
|
170
|
-
|
|
171
|
-
suite: str | None = None
|
|
172
|
-
|
|
173
|
-
|
|
174
170
|
class BenchmarkRegisterRequest(BaseModel):
|
|
175
171
|
"""POST /v1/benchmarks — register body, same types as the spec (ImageSpec / Conditions / VolumeRef /
|
|
176
172
|
RenderSpec). Carries assets / render / cpu / memory_gb / max_steps so the gateway can build the image,
|
|
@@ -194,9 +190,6 @@ class BenchmarkRegisterRequest(BaseModel):
|
|
|
194
190
|
code: CodeBundle | None = None
|
|
195
191
|
|
|
196
192
|
|
|
197
|
-
suite_of: dict[str, str] = Field(default_factory=dict)
|
|
198
|
-
|
|
199
|
-
|
|
200
193
|
|
|
201
194
|
task_descriptions: dict[str, str] = Field(default_factory=dict)
|
|
202
195
|
|
|
@@ -206,6 +199,14 @@ class BenchmarkRegisterRequest(BaseModel):
|
|
|
206
199
|
seeds_repeat: bool | None = None
|
|
207
200
|
|
|
208
201
|
|
|
202
|
+
|
|
203
|
+
success_metric: str | None = Field(default=None, min_length=1, max_length=200)
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
metric_units: dict[str, str] = Field(default_factory=dict, max_length=METRIC_UNITS_MAX)
|
|
208
|
+
|
|
209
|
+
|
|
209
210
|
action_contract: ActionContract | None = None
|
|
210
211
|
|
|
211
212
|
|
|
@@ -245,6 +246,15 @@ class BenchmarkRegisterRequest(BaseModel):
|
|
|
245
246
|
raise ValueError(f"setup parameter {name!r} is not a public Python identifier")
|
|
246
247
|
return self
|
|
247
248
|
|
|
249
|
+
@model_validator(mode="after")
|
|
250
|
+
def _metric_units(self) -> "BenchmarkRegisterRequest":
|
|
251
|
+
for metric, unit in self.metric_units.items():
|
|
252
|
+
if not metric or len(metric) > 200:
|
|
253
|
+
raise ValueError("metric_units names a metric of 1 to 200 characters")
|
|
254
|
+
if not unit.strip() or len(unit) > METRIC_UNIT_MAX:
|
|
255
|
+
raise ValueError(f"metric_units[{metric!r}] is a unit of 1 to {METRIC_UNIT_MAX} characters")
|
|
256
|
+
return self
|
|
257
|
+
|
|
248
258
|
@model_validator(mode="after")
|
|
249
259
|
def _task_descriptions(self) -> "BenchmarkRegisterRequest":
|
|
250
260
|
"""Each description names a task the benchmark declares - in `conditions` or `condition_list` - and is at most
|
|
@@ -20,7 +20,6 @@ __all__ = [
|
|
|
20
20
|
"EvalRequest",
|
|
21
21
|
"ClampInfo",
|
|
22
22
|
"ArmReport",
|
|
23
|
-
"PairedDiff",
|
|
24
23
|
"EvalTiming",
|
|
25
24
|
"Estimate",
|
|
26
25
|
"EvalResponse",
|
|
@@ -31,13 +30,9 @@ __all__ = [
|
|
|
31
30
|
"EvalQueue",
|
|
32
31
|
"RolloutResult",
|
|
33
32
|
"EvalStatus",
|
|
34
|
-
"SuiteAgg",
|
|
35
33
|
"TaskAgg",
|
|
36
34
|
"MetricAgg",
|
|
37
|
-
"LossyTransform",
|
|
38
35
|
"EvalReport",
|
|
39
|
-
"AdapterKind",
|
|
40
|
-
"AdapterTransform",
|
|
41
36
|
]
|
|
42
37
|
|
|
43
38
|
|
|
@@ -51,7 +46,7 @@ class EvalRequest(BaseModel):
|
|
|
51
46
|
leave them out and take the earlier eval's. `dry_run` selects the estimate-only response shape below.
|
|
52
47
|
|
|
53
48
|
The one body the platform accepts: the current knobs plus the legacy names an older SDK still sends — `gpus` /
|
|
54
|
-
`envs_per_gpu` for the instance counts, `
|
|
49
|
+
`envs_per_gpu` for the instance counts, `region` — each taken and mapped, or refused with the way on,
|
|
55
50
|
never silently dropped. The gateway inherits this model rather than keeping its own."""
|
|
56
51
|
|
|
57
52
|
|
|
@@ -63,11 +58,6 @@ class EvalRequest(BaseModel):
|
|
|
63
58
|
benchmark: str | None = Field(default=None, max_length=200)
|
|
64
59
|
|
|
65
60
|
|
|
66
|
-
suite: str | None = Field(default=None, max_length=200, json_schema_extra={"deprecated": True},
|
|
67
|
-
description="Gone: a benchmark is one set of tasks, so there is no suite; a non-null "
|
|
68
|
-
"value is refused. Omit it (an older SDK still sends it).")
|
|
69
|
-
|
|
70
|
-
|
|
71
61
|
|
|
72
62
|
|
|
73
63
|
trials: _Trials | dict[str, _Trials] | None = None
|
|
@@ -108,7 +98,6 @@ class EvalRequest(BaseModel):
|
|
|
108
98
|
|
|
109
99
|
|
|
110
100
|
rerun_unsuccessful_of: str | None = Field(default=None, max_length=64)
|
|
111
|
-
metric: str | None = Field(default=None, max_length=64)
|
|
112
101
|
|
|
113
102
|
|
|
114
103
|
|
|
@@ -289,18 +278,6 @@ class EvalStatus(str, Enum):
|
|
|
289
278
|
CANCELED = "canceled"
|
|
290
279
|
|
|
291
280
|
|
|
292
|
-
class SuiteAgg(BaseModel):
|
|
293
|
-
"""Per-suite aggregate of ONE user-named metric, as an eval from before contract 0.5.8 reported it: kept so those
|
|
294
|
-
reports stay readable. A benchmark is one set of tasks now, and no eval since reports one.
|
|
295
|
-
"""
|
|
296
|
-
|
|
297
|
-
model_config = ConfigDict(extra="forbid")
|
|
298
|
-
|
|
299
|
-
suite: str
|
|
300
|
-
value: float
|
|
301
|
-
n: int
|
|
302
|
-
|
|
303
|
-
|
|
304
281
|
class TaskAgg(BaseModel):
|
|
305
282
|
"""Per-task aggregate of ONE user-named metric — structured detail, not a bare dict."""
|
|
306
283
|
|
|
@@ -312,28 +289,17 @@ class TaskAgg(BaseModel):
|
|
|
312
289
|
|
|
313
290
|
|
|
314
291
|
class MetricAgg(BaseModel):
|
|
315
|
-
"""The aggregate of one user-named metric key across the eval — overall plus per-task breakdowns
|
|
316
|
-
|
|
292
|
+
"""The aggregate of one user-named metric key across the eval — overall plus per-task breakdowns and the sample
|
|
293
|
+
count. The platform aggregates whatever the user returned in `Step.metrics`;
|
|
317
294
|
it neither defines nor injects `success_rate` (success is just one key the user may or may not name)."""
|
|
318
295
|
|
|
319
296
|
model_config = ConfigDict(extra="forbid")
|
|
320
297
|
|
|
321
298
|
overall: float
|
|
322
|
-
per_suite: list[SuiteAgg] = Field(default_factory=list)
|
|
323
299
|
per_task: list[TaskAgg] = Field(default_factory=list)
|
|
324
300
|
n: int
|
|
325
301
|
|
|
326
302
|
|
|
327
|
-
class LossyTransform(BaseModel):
|
|
328
|
-
"""A lossy adapter transform recorded in the report. Shape aligns with the lossy element of
|
|
329
|
-
AdapterTransform (both {transform, reason})."""
|
|
330
|
-
|
|
331
|
-
model_config = ConfigDict(extra="forbid")
|
|
332
|
-
|
|
333
|
-
transform: str
|
|
334
|
-
reason: str
|
|
335
|
-
|
|
336
|
-
|
|
337
303
|
class ArmReport(BaseModel):
|
|
338
304
|
"""One arm of an eval (a model x one combination of swept inference parameters): its own metrics and episode
|
|
339
305
|
counts, so arms are compared side by side and never pooled."""
|
|
@@ -346,8 +312,6 @@ class ArmReport(BaseModel):
|
|
|
346
312
|
|
|
347
313
|
params: dict[str, int | float | bool | str] = Field(default_factory=dict)
|
|
348
314
|
metrics: dict[str, MetricAgg] = Field(default_factory=dict)
|
|
349
|
-
|
|
350
|
-
intervals: dict[str, list[float]] = Field(default_factory=dict)
|
|
351
315
|
episodes: int = 0
|
|
352
316
|
failed: int = 0
|
|
353
317
|
not_run: int = 0
|
|
@@ -383,19 +347,6 @@ class ArmParams(BaseModel):
|
|
|
383
347
|
steps: int | None = None
|
|
384
348
|
|
|
385
349
|
|
|
386
|
-
class PairedDiff(BaseModel):
|
|
387
|
-
"""`compare`: one metric's difference between two arms over the seeds both ran (b - a), with its interval."""
|
|
388
|
-
|
|
389
|
-
model_config = ConfigDict(extra="forbid")
|
|
390
|
-
|
|
391
|
-
metric: str
|
|
392
|
-
arm_a: int
|
|
393
|
-
arm_b: int
|
|
394
|
-
n: int
|
|
395
|
-
mean_diff: float
|
|
396
|
-
interval: list[float]
|
|
397
|
-
|
|
398
|
-
|
|
399
350
|
class EvalTiming(BaseModel):
|
|
400
351
|
"""Where an eval's time went: cold starts, and per step the simulation, rendering, the policy's batched forward and
|
|
401
352
|
the network around it, plus the forward's average batch size."""
|
|
@@ -423,15 +374,14 @@ class EvalReport(BaseModel):
|
|
|
423
374
|
)
|
|
424
375
|
cost_usd: float
|
|
425
376
|
dashboard_url: str
|
|
426
|
-
adapter_lossy: list[LossyTransform]
|
|
427
377
|
videos: list[str] = Field(default_factory=list, description="mp4 pointers from the platform tool")
|
|
428
378
|
incomplete: bool | None = None
|
|
429
379
|
errors: list[str] = Field(
|
|
430
380
|
default_factory=list, description="Why episodes or the run failed, so an incomplete report says why"
|
|
431
381
|
)
|
|
432
382
|
|
|
383
|
+
|
|
433
384
|
arms: list[ArmReport] | None = None
|
|
434
|
-
paired: list[PairedDiff] | None = None
|
|
435
385
|
timing: EvalTiming | None = None
|
|
436
386
|
|
|
437
387
|
|
|
@@ -445,22 +395,9 @@ class EvalReport(BaseModel):
|
|
|
445
395
|
arm_params: list[ArmParams] | None = None
|
|
446
396
|
|
|
447
397
|
|
|
448
|
-
class AdapterKind(str, Enum):
|
|
449
|
-
LOSSLESS = "lossless"
|
|
450
|
-
LOSSY = "lossy"
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
398
|
|
|
399
|
+
units: dict[str, str] | None = None
|
|
455
400
|
|
|
456
401
|
|
|
457
402
|
|
|
458
|
-
|
|
459
|
-
"""One adapter transform: its kind (lossless / lossy), the transform's name, and an optional reason. A registered
|
|
460
|
-
adapter and an older eval report carry these fields; they are kept for compatibility and are no longer acted on."""
|
|
461
|
-
|
|
462
|
-
model_config = ConfigDict(extra="forbid")
|
|
463
|
-
|
|
464
|
-
kind: AdapterKind
|
|
465
|
-
transform: str
|
|
466
|
-
reason: str | None = None
|
|
403
|
+
success_metric: str | None = None
|
|
@@ -12,7 +12,6 @@ resolving to these same classes.
|
|
|
12
12
|
"""
|
|
13
13
|
from __future__ import annotations
|
|
14
14
|
|
|
15
|
-
import math
|
|
16
15
|
from enum import Enum
|
|
17
16
|
from typing import Any, Literal
|
|
18
17
|
|
|
@@ -38,12 +37,18 @@ class ImageFrame(BaseModel):
|
|
|
38
37
|
default=None, description="rgb (the default) or depth: a 16-bit PNG of millimetres, 0 where there is no reading")
|
|
39
38
|
|
|
40
39
|
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
41
45
|
class Proprioception(BaseModel):
|
|
42
|
-
"""Proprioceptive state.
|
|
46
|
+
"""Proprioceptive state. Every field is optional: a policy's observation contract (proprio) says which it reads,
|
|
47
|
+
and its worker requires those, each at its length."""
|
|
43
48
|
|
|
44
49
|
model_config = ConfigDict(extra="forbid")
|
|
45
50
|
|
|
46
|
-
joint_positions: list[float] = Field(
|
|
51
|
+
joint_positions: list[float] | None = Field(default=None, description="Joint angles, in radians")
|
|
47
52
|
joint_velocities: list[float] | None = None
|
|
48
53
|
|
|
49
54
|
end_effector_pose: list[float] | None = Field(default=None, min_length=7, max_length=7)
|
|
@@ -124,22 +129,8 @@ class ActionContract(BaseModel):
|
|
|
124
129
|
bounds: list[tuple[float, float]] | None = Field(default=None, max_length=256)
|
|
125
130
|
max_delta: float | list[float] | None = None
|
|
126
131
|
|
|
127
|
-
|
|
128
|
-
on_violation: Literal["clip", "refuse"] | None = None
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
binarize: dict[int, float] | None = Field(
|
|
134
|
-
default=None, description="dimension -> threshold: the client gives the robot 1.0 above it, 0.0 otherwise")
|
|
135
|
-
|
|
136
132
|
@model_validator(mode="after")
|
|
137
133
|
def _limits_fit(self) -> "ActionContract":
|
|
138
|
-
for d, threshold in (self.binarize or {}).items():
|
|
139
|
-
if not 0 <= d < self.action_dim:
|
|
140
|
-
raise ValueError(f"binarize names dimension {d}; action_dim is {self.action_dim}")
|
|
141
|
-
if not math.isfinite(threshold):
|
|
142
|
-
raise ValueError(f"binarize[{d}] is {threshold}, not a finite threshold")
|
|
143
134
|
if self.bounds is not None:
|
|
144
135
|
if len(self.bounds) != self.action_dim:
|
|
145
136
|
raise ValueError(f"bounds has {len(self.bounds)} [low, high] pairs; action_dim is {self.action_dim}")
|
|
@@ -67,17 +67,14 @@ from sequence_base.contract.volumes import (
|
|
|
67
67
|
VolumeUploadResponse,
|
|
68
68
|
)
|
|
69
69
|
from sequence_base.contract.eval import (
|
|
70
|
-
AdapterTransform,
|
|
71
70
|
ClampInfo,
|
|
72
71
|
Estimate,
|
|
73
72
|
EvalDryRunResponse,
|
|
74
73
|
EvalReport,
|
|
75
74
|
EvalRequest,
|
|
76
75
|
EvalResponse,
|
|
77
|
-
LossyTransform,
|
|
78
76
|
MetricAgg,
|
|
79
77
|
RolloutResult,
|
|
80
|
-
SuiteAgg,
|
|
81
78
|
TaskAgg,
|
|
82
79
|
)
|
|
83
80
|
from sequence_base.contract.flags import seqflags_json_schema
|
|
@@ -167,12 +164,9 @@ WIRE_MODELS: dict[str, type[BaseModel]] = {
|
|
|
167
164
|
"EvalResponse": EvalResponse,
|
|
168
165
|
"EvalDryRunResponse": EvalDryRunResponse,
|
|
169
166
|
"RolloutResult": RolloutResult,
|
|
170
|
-
"SuiteAgg": SuiteAgg,
|
|
171
167
|
"TaskAgg": TaskAgg,
|
|
172
168
|
"MetricAgg": MetricAgg,
|
|
173
|
-
"LossyTransform": LossyTransform,
|
|
174
169
|
"EvalReport": EvalReport,
|
|
175
|
-
"AdapterTransform": AdapterTransform,
|
|
176
170
|
|
|
177
171
|
"SecretRef": SecretRef,
|
|
178
172
|
"SecretCreateRequest": SecretCreateRequest,
|
|
@@ -23,22 +23,6 @@
|
|
|
23
23
|
"action_space": {
|
|
24
24
|
"$ref": "#/$defs/ActionSpace"
|
|
25
25
|
},
|
|
26
|
-
"binarize": {
|
|
27
|
-
"anyOf": [
|
|
28
|
-
{
|
|
29
|
-
"additionalProperties": {
|
|
30
|
-
"type": "number"
|
|
31
|
-
},
|
|
32
|
-
"type": "object"
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"type": "null"
|
|
36
|
-
}
|
|
37
|
-
],
|
|
38
|
-
"default": null,
|
|
39
|
-
"description": "dimension -> threshold: the client gives the robot 1.0 above it, 0.0 otherwise",
|
|
40
|
-
"title": "Binarize"
|
|
41
|
-
},
|
|
42
26
|
"bounds": {
|
|
43
27
|
"anyOf": [
|
|
44
28
|
{
|
|
@@ -87,22 +71,6 @@
|
|
|
87
71
|
"default": null,
|
|
88
72
|
"title": "Max Delta"
|
|
89
73
|
},
|
|
90
|
-
"on_violation": {
|
|
91
|
-
"anyOf": [
|
|
92
|
-
{
|
|
93
|
-
"enum": [
|
|
94
|
-
"clip",
|
|
95
|
-
"refuse"
|
|
96
|
-
],
|
|
97
|
-
"type": "string"
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
"type": "null"
|
|
101
|
-
}
|
|
102
|
-
],
|
|
103
|
-
"default": null,
|
|
104
|
-
"title": "On Violation"
|
|
105
|
-
},
|
|
106
74
|
"robot": {
|
|
107
75
|
"title": "Robot",
|
|
108
76
|
"type": "string"
|
|
@@ -116,5 +84,5 @@
|
|
|
116
84
|
],
|
|
117
85
|
"title": "ActionContract",
|
|
118
86
|
"type": "object",
|
|
119
|
-
"x-contract-version": "0.5.
|
|
87
|
+
"x-contract-version": "0.5.12"
|
|
120
88
|
}
|
{sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/BenchmarkConditionSpec.json
RENAMED
|
@@ -19,18 +19,6 @@
|
|
|
19
19
|
"title": "Seed",
|
|
20
20
|
"type": "integer"
|
|
21
21
|
},
|
|
22
|
-
"suite": {
|
|
23
|
-
"anyOf": [
|
|
24
|
-
{
|
|
25
|
-
"type": "string"
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
"type": "null"
|
|
29
|
-
}
|
|
30
|
-
],
|
|
31
|
-
"default": null,
|
|
32
|
-
"title": "Suite"
|
|
33
|
-
},
|
|
34
22
|
"task": {
|
|
35
23
|
"title": "Task",
|
|
36
24
|
"type": "string"
|
|
@@ -62,5 +50,5 @@
|
|
|
62
50
|
],
|
|
63
51
|
"title": "BenchmarkConditionSpec",
|
|
64
52
|
"type": "object",
|
|
65
|
-
"x-contract-version": "0.5.
|
|
53
|
+
"x-contract-version": "0.5.12"
|
|
66
54
|
}
|
{sequence_base-0.4.11 → sequence_base-0.4.13}/sequence_base/schemas/BenchmarkRegisterRequest.json
RENAMED
|
@@ -11,22 +11,6 @@
|
|
|
11
11
|
"action_space": {
|
|
12
12
|
"$ref": "#/$defs/ActionSpace"
|
|
13
13
|
},
|
|
14
|
-
"binarize": {
|
|
15
|
-
"anyOf": [
|
|
16
|
-
{
|
|
17
|
-
"additionalProperties": {
|
|
18
|
-
"type": "number"
|
|
19
|
-
},
|
|
20
|
-
"type": "object"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"type": "null"
|
|
24
|
-
}
|
|
25
|
-
],
|
|
26
|
-
"default": null,
|
|
27
|
-
"description": "dimension -> threshold: the client gives the robot 1.0 above it, 0.0 otherwise",
|
|
28
|
-
"title": "Binarize"
|
|
29
|
-
},
|
|
30
14
|
"bounds": {
|
|
31
15
|
"anyOf": [
|
|
32
16
|
{
|
|
@@ -75,22 +59,6 @@
|
|
|
75
59
|
"default": null,
|
|
76
60
|
"title": "Max Delta"
|
|
77
61
|
},
|
|
78
|
-
"on_violation": {
|
|
79
|
-
"anyOf": [
|
|
80
|
-
{
|
|
81
|
-
"enum": [
|
|
82
|
-
"clip",
|
|
83
|
-
"refuse"
|
|
84
|
-
],
|
|
85
|
-
"type": "string"
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
"type": "null"
|
|
89
|
-
}
|
|
90
|
-
],
|
|
91
|
-
"default": null,
|
|
92
|
-
"title": "On Violation"
|
|
93
|
-
},
|
|
94
62
|
"robot": {
|
|
95
63
|
"title": "Robot",
|
|
96
64
|
"type": "string"
|
|
@@ -164,18 +132,6 @@
|
|
|
164
132
|
"title": "Seed",
|
|
165
133
|
"type": "integer"
|
|
166
134
|
},
|
|
167
|
-
"suite": {
|
|
168
|
-
"anyOf": [
|
|
169
|
-
{
|
|
170
|
-
"type": "string"
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
"type": "null"
|
|
174
|
-
}
|
|
175
|
-
],
|
|
176
|
-
"default": null,
|
|
177
|
-
"title": "Suite"
|
|
178
|
-
},
|
|
179
135
|
"task": {
|
|
180
136
|
"title": "Task",
|
|
181
137
|
"type": "string"
|
|
@@ -888,6 +844,14 @@
|
|
|
888
844
|
"default": null,
|
|
889
845
|
"title": "Memory Gb"
|
|
890
846
|
},
|
|
847
|
+
"metric_units": {
|
|
848
|
+
"additionalProperties": {
|
|
849
|
+
"type": "string"
|
|
850
|
+
},
|
|
851
|
+
"maxProperties": 64,
|
|
852
|
+
"title": "Metric Units",
|
|
853
|
+
"type": "object"
|
|
854
|
+
},
|
|
891
855
|
"name": {
|
|
892
856
|
"title": "Name",
|
|
893
857
|
"type": "string"
|
|
@@ -954,12 +918,19 @@
|
|
|
954
918
|
"default": null,
|
|
955
919
|
"title": "Seeds Repeat"
|
|
956
920
|
},
|
|
957
|
-
"
|
|
958
|
-
"
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
921
|
+
"success_metric": {
|
|
922
|
+
"anyOf": [
|
|
923
|
+
{
|
|
924
|
+
"maxLength": 200,
|
|
925
|
+
"minLength": 1,
|
|
926
|
+
"type": "string"
|
|
927
|
+
},
|
|
928
|
+
{
|
|
929
|
+
"type": "null"
|
|
930
|
+
}
|
|
931
|
+
],
|
|
932
|
+
"default": null,
|
|
933
|
+
"title": "Success Metric"
|
|
963
934
|
},
|
|
964
935
|
"task_descriptions": {
|
|
965
936
|
"additionalProperties": {
|
|
@@ -991,5 +962,5 @@
|
|
|
991
962
|
],
|
|
992
963
|
"title": "BenchmarkRegisterRequest",
|
|
993
964
|
"type": "object",
|
|
994
|
-
"x-contract-version": "0.5.
|
|
965
|
+
"x-contract-version": "0.5.12"
|
|
995
966
|
}
|
|
@@ -368,7 +368,7 @@
|
|
|
368
368
|
],
|
|
369
369
|
"title": "SeqFlags",
|
|
370
370
|
"type": "integer",
|
|
371
|
-
"x-contract-version": "0.5.
|
|
371
|
+
"x-contract-version": "0.5.12",
|
|
372
372
|
"x-flag-names": {
|
|
373
373
|
"CHECK": 65536,
|
|
374
374
|
"INFER": 16,
|
|
@@ -625,5 +625,5 @@
|
|
|
625
625
|
],
|
|
626
626
|
"title": "BenchmarkSpec",
|
|
627
627
|
"type": "object",
|
|
628
|
-
"x-contract-version": "0.5.
|
|
628
|
+
"x-contract-version": "0.5.12"
|
|
629
629
|
}
|