sequence-base 0.4.14__tar.gz → 0.4.16__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.14 → sequence_base-0.4.16}/PKG-INFO +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/pyproject.toml +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/__init__.py +2 -4
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/constants/version.py +3 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/contract/__init__.py +2 -4
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/contract/benchmarks.py +3 -4
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/contract/deployments.py +2 -26
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/contract/eval.py +5 -33
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/contract/flags.py +3 -6
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/contract/policy.py +4 -9
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schema_export.py +0 -4
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ActRequest.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ActResponse.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ActionChunk.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ActionContract.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ActionStep.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/AddLocal.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/Autoscaler.json +1 -13
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/BenchmarkConditionSpec.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/BenchmarkRegisterRequest.json +2 -2
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/BenchmarkSpec.json +4 -13
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/BenchmarkStatusResponse.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/BootstrapResponse.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/Camera.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/CodeBundle.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/Concurrency.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/Conditions.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ConnectRequest.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ConnectResponse.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/DeploymentAccepted.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/DeploymentPolicy.json +1 -13
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/DeploymentRequest.json +2 -58
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/DeploymentStatusResponse.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/Embodiment.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ErrorBody.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ErrorCodes.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/Estimate.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/EvalDryRunResponse.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/EvalReport.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/EvalRequest.json +2 -76
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/EvalResponse.json +1 -38
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ImageFrame.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ImageSpec.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ImageStepAddLocal.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ImageStepApt.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ImageStepEnv.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ImageStepRun.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ImageStepTemplateFiles.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ImageStepUvPip.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/InferParam.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/Lease.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/MetricAgg.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/Observation.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ObservationContract.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/PolicyRegistration.json +5 -76
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/PolicySpec.json +4 -72
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/Proprioception.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/RenderSpec.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/ReplaySpec.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/Resources.json +2 -2
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/RolloutResult.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/SecretCreateRequest.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/SecretInfo.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/SecretRef.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/SeqFlags.json +1 -3
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/Step.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/TaskAgg.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/TemplateFiles.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/Timeouts.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/UploadTarget.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/Variant.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/VolumeFile.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/VolumeInfo.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/VolumeMount.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/VolumeRef.json +2 -2
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/VolumeUploadRequest.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/VolumeUploadResponse.json +1 -1
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/WarmingError.json +1 -1
- sequence_base-0.4.14/sequence_base/schemas/ClampInfo.json +0 -27
- sequence_base-0.4.14/sequence_base/schemas/VolumeAttach.json +0 -26
- {sequence_base-0.4.14 → sequence_base-0.4.16}/.gitignore +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/README.md +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/auth.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/codec/__init__.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/codec/image.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/constants/__init__.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/constants/headers.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/constants/limits.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/contract/accounts.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/contract/act.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/contract/connect.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/contract/errors.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/contract/io.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/contract/templates.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/contract/volumes.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/contract/wire.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/errors/__init__.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/errors/transport.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/obs/__init__.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/obs/log.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/obs/rid.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/presets/__init__.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/presets/frames.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/presets/robot_arm.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/telemetry/__init__.py +0 -0
- {sequence_base-0.4.14 → sequence_base-0.4.16}/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.16
|
|
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.16"
|
|
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"]
|
|
@@ -43,7 +43,6 @@ from sequence_base.contract import (
|
|
|
43
43
|
BenchmarkStatusResponse,
|
|
44
44
|
BenchmarkSpec,
|
|
45
45
|
BootstrapResponse,
|
|
46
|
-
ClampInfo,
|
|
47
46
|
CodeBundle,
|
|
48
47
|
Concurrency,
|
|
49
48
|
Conditions,
|
|
@@ -90,7 +89,6 @@ from sequence_base.contract import (
|
|
|
90
89
|
TaskAgg,
|
|
91
90
|
Timeouts,
|
|
92
91
|
Variant,
|
|
93
|
-
VolumeAttach,
|
|
94
92
|
VolumeMount,
|
|
95
93
|
VolumeRef,
|
|
96
94
|
WarmingError,
|
|
@@ -135,13 +133,13 @@ __all__ = [
|
|
|
135
133
|
"PolicySpec", "PolicyRegistration",
|
|
136
134
|
|
|
137
135
|
"MAX_CODE_BUNDLE_BYTES", "CodeBundle",
|
|
138
|
-
"Resources", "Autoscaler", "Timeouts", "
|
|
136
|
+
"Resources", "Autoscaler", "Timeouts", "DeploymentPolicy", "InferParam", "DeploymentRequest",
|
|
139
137
|
"DeploymentAccepted", "DeploymentState", "DeploymentStatusResponse",
|
|
140
138
|
|
|
141
139
|
"Lease", "ConnectRequest", "ConnectResponse",
|
|
142
140
|
|
|
143
141
|
"Variant", "Conditions", "RenderSpec", "ReplaySpec", "Step", "BenchmarkSpec", "BenchmarkConditionSpec", "BenchmarkRegisterRequest", "BenchmarkStatusResponse",
|
|
144
|
-
"EvalRequest", "
|
|
142
|
+
"EvalRequest", "Estimate", "EvalResponse", "EvalDryRunResponse", "RolloutResult",
|
|
145
143
|
"EvalStatus", "TaskAgg", "MetricAgg", "EvalReport",
|
|
146
144
|
|
|
147
145
|
"SecretRef", "SecretCreateRequest", "SecretInfo", "BootstrapResponse",
|
|
@@ -53,7 +53,6 @@ from sequence_base.contract.deployments import (
|
|
|
53
53
|
DeploymentStatusResponse,
|
|
54
54
|
Resources,
|
|
55
55
|
Timeouts,
|
|
56
|
-
VolumeAttach,
|
|
57
56
|
)
|
|
58
57
|
|
|
59
58
|
|
|
@@ -72,7 +71,6 @@ from sequence_base.contract.benchmarks import (
|
|
|
72
71
|
Variant,
|
|
73
72
|
)
|
|
74
73
|
from sequence_base.contract.eval import (
|
|
75
|
-
ClampInfo,
|
|
76
74
|
Estimate,
|
|
77
75
|
EvalDryRunResponse,
|
|
78
76
|
EvalReport,
|
|
@@ -123,13 +121,13 @@ __all__ = [
|
|
|
123
121
|
"PolicySpec", "PolicyRegistration",
|
|
124
122
|
|
|
125
123
|
"MAX_CODE_BUNDLE_BYTES", "CodeBundle",
|
|
126
|
-
"Resources", "Autoscaler", "Timeouts", "
|
|
124
|
+
"Resources", "Autoscaler", "Timeouts", "DeploymentPolicy", "InferParam", "DeploymentRequest",
|
|
127
125
|
"DeploymentAccepted", "DeploymentState", "DeploymentStatusResponse",
|
|
128
126
|
|
|
129
127
|
"Lease", "ConnectRequest", "ConnectResponse",
|
|
130
128
|
|
|
131
129
|
"Variant", "Conditions", "RenderSpec", "ReplaySpec", "Step", "BenchmarkSpec", "BenchmarkConditionSpec", "BenchmarkRegisterRequest", "BenchmarkStatusResponse",
|
|
132
|
-
"EvalRequest", "
|
|
130
|
+
"EvalRequest", "Estimate", "EvalResponse", "EvalDryRunResponse", "RolloutResult",
|
|
133
131
|
"EvalStatus", "TaskAgg", "MetricAgg", "EvalReport",
|
|
134
132
|
|
|
135
133
|
"SecretRef", "SecretCreateRequest", "SecretInfo", "BootstrapResponse",
|
|
@@ -113,8 +113,7 @@ class BenchmarkSpec(BaseModel):
|
|
|
113
113
|
⑦: a benchmark also references secrets by name). `assets` are versioned scene/mesh/URDF/MJCF/USD volumes
|
|
114
114
|
the worker mounts at /assets (reusing S2's Volume mechanism). `render` optionally declares the mp4.
|
|
115
115
|
`max_steps` is the platform SAFETY cap (cost backstop, records `truncated` — NOT semantic termination;
|
|
116
|
-
`done` is decided by @seq.check). `bindings` covers SETUP / RESET / CHECK / SCORE (
|
|
117
|
-
and must not appear)."""
|
|
116
|
+
`done` is decided by @seq.check). `bindings` covers SETUP / RESET / CHECK / SCORE (+ OBSERVE / STEP)."""
|
|
118
117
|
|
|
119
118
|
model_config = ConfigDict(extra="forbid")
|
|
120
119
|
|
|
@@ -124,7 +123,8 @@ class BenchmarkSpec(BaseModel):
|
|
|
124
123
|
max_steps: int = Field(..., description="Platform safety cap; truncates and records truncated")
|
|
125
124
|
handler_ref: str
|
|
126
125
|
bindings: dict[SeqFlags, str] = Field(..., description="SETUP / RESET / CHECK / SCORE (+ OBSERVE / STEP) → method name")
|
|
127
|
-
|
|
126
|
+
|
|
127
|
+
gpu: str | None = None
|
|
128
128
|
|
|
129
129
|
envs: int | None = Field(default=None, ge=1, le=MAX_ENVS)
|
|
130
130
|
assets: list[VolumeRef] = Field(default_factory=list)
|
|
@@ -146,7 +146,6 @@ class BenchmarkSpec(BaseModel):
|
|
|
146
146
|
names = ", ".join(sorted(f.name or str(f.value) for f in bad))
|
|
147
147
|
raise ValueError(
|
|
148
148
|
f"benchmark bindings may only cover SETUP / RESET / CHECK / SCORE / OBSERVE / STEP; got disallowed {names}"
|
|
149
|
-
" (ROLLOUT is deprecated and must not be bound)"
|
|
150
149
|
)
|
|
151
150
|
batched = set(self.bindings) & set(BENCHMARK_BATCHED)
|
|
152
151
|
if batched and batched != set(BENCHMARK_BATCHED):
|
|
@@ -36,7 +36,6 @@ __all__ = [
|
|
|
36
36
|
"Resources",
|
|
37
37
|
"Autoscaler",
|
|
38
38
|
"Timeouts",
|
|
39
|
-
"VolumeAttach",
|
|
40
39
|
"DeploymentPolicy",
|
|
41
40
|
"DeploymentRequest",
|
|
42
41
|
"DeploymentAccepted",
|
|
@@ -46,7 +45,8 @@ __all__ = [
|
|
|
46
45
|
|
|
47
46
|
|
|
48
47
|
class Resources(BaseModel):
|
|
49
|
-
"""The hardware a worker runs on. `gpu` is list[str]
|
|
48
|
+
"""The hardware a worker runs on. `gpu` is list[str], the PolicySpec's one card as a list of one - the shape a
|
|
49
|
+
deployment's spec is kept in, so one stored from before a list was refused (0.4.15) still reads."""
|
|
50
50
|
|
|
51
51
|
model_config = ConfigDict(extra="forbid")
|
|
52
52
|
|
|
@@ -83,9 +83,6 @@ class Autoscaler(BaseModel):
|
|
|
83
83
|
min_containers: int = 0
|
|
84
84
|
|
|
85
85
|
|
|
86
|
-
max_containers: int | None = None
|
|
87
|
-
|
|
88
|
-
|
|
89
86
|
max_gpus: int | None = Field(default=None, ge=1, le=256)
|
|
90
87
|
buffer_containers: int | None = None
|
|
91
88
|
scaledown_window: int = 600
|
|
@@ -108,21 +105,6 @@ class Timeouts(BaseModel):
|
|
|
108
105
|
startup: int = Field(..., ge=60, le=18000)
|
|
109
106
|
|
|
110
107
|
|
|
111
|
-
class VolumeAttach(BaseModel):
|
|
112
|
-
"""A non-weights volume mount in the deploy body (goal 7). Distinct from `weights` (a `VolumeMount`,
|
|
113
|
-
a provisioned pull at the reserved `/data`): an explicit `volumes=` attachment names a persistent
|
|
114
|
-
volume by `vol://<name>` ref, pins its container `mount`, and carries the `create_if_missing`
|
|
115
|
-
provisioning intent so the gateway either binds an existing volume or creates it — the semantic the
|
|
116
|
-
wire `VolumeMount` deliberately does not carry. Not reused/extended from `VolumeMount` because
|
|
117
|
-
`create_if_missing` is meaningless for the weights pull."""
|
|
118
|
-
|
|
119
|
-
model_config = ConfigDict(extra="forbid")
|
|
120
|
-
|
|
121
|
-
uri: str
|
|
122
|
-
mount: str
|
|
123
|
-
create_if_missing: bool
|
|
124
|
-
|
|
125
|
-
|
|
126
108
|
class InferParam(BaseModel):
|
|
127
109
|
"""One inference parameter the policy's `@seq.infer` declares — `def infer(self, obs, *, num_steps: int = 10)`
|
|
128
110
|
— with its type and default. An /act or an eval may set it; the worker passes only declared names, cast to
|
|
@@ -190,9 +172,6 @@ class DeploymentPolicy(BaseModel):
|
|
|
190
172
|
handler_ref: str
|
|
191
173
|
action: ActionContract | None = None
|
|
192
174
|
streaming: bool = False
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
frames_per_chunk: int | None = None
|
|
196
175
|
secrets: list[SecretRef] = Field(default_factory=list)
|
|
197
176
|
|
|
198
177
|
|
|
@@ -289,9 +268,6 @@ class DeploymentRequest(BaseModel):
|
|
|
289
268
|
|
|
290
269
|
|
|
291
270
|
image_context: CodeBundle | None = None
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
volumes: list[VolumeAttach] = Field(default_factory=list)
|
|
295
271
|
autoscaler: Autoscaler = Field(default_factory=Autoscaler)
|
|
296
272
|
|
|
297
273
|
concurrency: Concurrency = Field(default_factory=Concurrency)
|
|
@@ -18,7 +18,6 @@ from sequence_base.constants.limits import MAX_ENVS, MAX_USD
|
|
|
18
18
|
|
|
19
19
|
__all__ = [
|
|
20
20
|
"EvalRequest",
|
|
21
|
-
"ClampInfo",
|
|
22
21
|
"ArmReport",
|
|
23
22
|
"EvalTiming",
|
|
24
23
|
"Estimate",
|
|
@@ -45,9 +44,11 @@ class EvalRequest(BaseModel):
|
|
|
45
44
|
"""`POST /v1/eval`. A real eval names `model` + `benchmark`; a rerun (`rerun_of` / `rerun_unsuccessful_of`) may
|
|
46
45
|
leave them out and take the earlier eval's. `dry_run` selects the estimate-only response shape below.
|
|
47
46
|
|
|
48
|
-
The one body the platform accepts
|
|
49
|
-
`
|
|
50
|
-
|
|
47
|
+
The one body the platform accepts, the newest SDK's: the names an older SDK sent (`gpus`, `envs_per_gpu`,
|
|
48
|
+
`benchmark_gpu`, `region`) are gone, refused as any field this body does not define, since every client the
|
|
49
|
+
platform serves is the newest (the user 10-19: "This is the latest version that we want everything to be based on,
|
|
50
|
+
so delete all the old stuff"). The gateway inherits this model rather than keeping its own.
|
|
51
|
+
"""
|
|
51
52
|
|
|
52
53
|
|
|
53
54
|
|
|
@@ -69,22 +70,10 @@ class EvalRequest(BaseModel):
|
|
|
69
70
|
policy_machines: int | None = Field(default=None, ge=1, le=64)
|
|
70
71
|
policy_gpu: str | None = Field(default=None, max_length=32)
|
|
71
72
|
benchmark_machines: int | None = Field(default=None, ge=1, le=64)
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
benchmark_gpu: str | None = Field(default=None, max_length=32, json_schema_extra={"deprecated": True},
|
|
76
|
-
description="Not accepted: an eval runs on the card its benchmark was registered "
|
|
77
|
-
"on, so a card is refused. Omit it (an older SDK still sends it).")
|
|
78
73
|
envs: int | None = Field(default=None, ge=1)
|
|
79
|
-
|
|
80
|
-
gpus: int = Field(default=1, ge=1, le=64, json_schema_extra={"deprecated": True},
|
|
81
|
-
description="Deprecated name (sequence-ai <= 0.28) for policy_machines; use policy_machines.")
|
|
82
|
-
envs_per_gpu: int | None = Field(default=None, ge=1, le=1024, json_schema_extra={"deprecated": True},
|
|
83
|
-
description="Deprecated name (sequence-ai <= 0.28) for envs; use envs.")
|
|
84
74
|
adapter: str | None = Field(default=None, max_length=200)
|
|
85
75
|
|
|
86
76
|
|
|
87
|
-
compare: str | list[str] | None = Field(default=None, description="Other model ids to compare against")
|
|
88
77
|
sweep: dict[str, list[int | float | bool | str]] | None = Field(default=None, max_length=8)
|
|
89
78
|
dry_run: bool = False
|
|
90
79
|
|
|
@@ -112,11 +101,6 @@ class EvalRequest(BaseModel):
|
|
|
112
101
|
|
|
113
102
|
replay: Literal["3d", "none"] | None = None
|
|
114
103
|
|
|
115
|
-
|
|
116
|
-
region: str | None = Field(default=None, max_length=32, json_schema_extra={"deprecated": True},
|
|
117
|
-
description="Not accepted: an eval's machines run wherever there are cards, so a region "
|
|
118
|
-
"is refused. Omit it (an older SDK still sends it).")
|
|
119
|
-
|
|
120
104
|
@field_validator("envs")
|
|
121
105
|
@classmethod
|
|
122
106
|
def _envs_cap(cls, v: int | None) -> int | None:
|
|
@@ -146,16 +130,6 @@ class EvalRequest(BaseModel):
|
|
|
146
130
|
return self
|
|
147
131
|
|
|
148
132
|
|
|
149
|
-
class ClampInfo(BaseModel):
|
|
150
|
-
"""Why the granted GPU count was clamped below the request — structured, not a bare value."""
|
|
151
|
-
|
|
152
|
-
model_config = ConfigDict(extra="forbid")
|
|
153
|
-
|
|
154
|
-
limit: str = Field(..., description="Which limit bound it, e.g. 'account_quota'")
|
|
155
|
-
requested: int
|
|
156
|
-
granted: int
|
|
157
|
-
|
|
158
|
-
|
|
159
133
|
class Estimate(BaseModel):
|
|
160
134
|
model_config = ConfigDict(extra="forbid")
|
|
161
135
|
|
|
@@ -180,7 +154,6 @@ class EvalResponse(BaseModel):
|
|
|
180
154
|
eval_id: str
|
|
181
155
|
gpus_granted: int
|
|
182
156
|
estimate: Estimate
|
|
183
|
-
clamped_by: ClampInfo | None = None
|
|
184
157
|
|
|
185
158
|
queue: EvalQueue | None = None
|
|
186
159
|
|
|
@@ -381,7 +354,6 @@ class EvalReport(BaseModel):
|
|
|
381
354
|
default_factory=list, description="Why episodes or the run failed, so an incomplete report says why"
|
|
382
355
|
)
|
|
383
356
|
|
|
384
|
-
|
|
385
357
|
arms: list[ArmReport] | None = None
|
|
386
358
|
timing: EvalTiming | None = None
|
|
387
359
|
|
|
@@ -9,12 +9,12 @@ plan step; and the benchmark SETUP / RESET / CHECK / SCORE quartet.
|
|
|
9
9
|
eval-raw revision: the platform provides the reset→step→check loop as a tool; the user defines the goal
|
|
10
10
|
through four hooks — SETUP (load sim + assets), RESET (build one episode's env), CHECK (per-step: read raw
|
|
11
11
|
env state → done + user-named metrics), SCORE (cross-episode aggregate). RESET=32768 and CHECK=65536 are
|
|
12
|
-
the new hook bits.
|
|
13
|
-
another member
|
|
12
|
+
the new hook bits. Bit 8192 was the old single-hook ROLLOUT, gone with every SDK that knew it (sequence-base 0.4.15):
|
|
13
|
+
it stays unused, never given to another member, so nothing serialized before reads as a hook it never was.
|
|
14
14
|
|
|
15
15
|
The exact bit values are the contract: a registration serialized by one version must decode the same in
|
|
16
16
|
another. A member taking the wrong value, WARMUP collapsing back into LOAD, RESET/CHECK overlapping an
|
|
17
|
-
existing bit, or
|
|
17
|
+
existing bit, or bit 8192 being given out again is caught bit-by-bit (see tests), not waved away with "an IntFlag
|
|
18
18
|
is naturally bit-composable".
|
|
19
19
|
"""
|
|
20
20
|
from __future__ import annotations
|
|
@@ -48,9 +48,6 @@ class SeqFlags(IntFlag):
|
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
|
|
51
|
-
ROLLOUT = 8192
|
|
52
|
-
|
|
53
|
-
|
|
54
51
|
|
|
55
52
|
|
|
56
53
|
BENCHMARK_BINDABLE: frozenset[SeqFlags] = frozenset(
|
|
@@ -172,7 +172,7 @@ class VolumeMount(BaseModel):
|
|
|
172
172
|
|
|
173
173
|
|
|
174
174
|
class VolumeRef(BaseModel):
|
|
175
|
-
"""
|
|
175
|
+
"""A volume a benchmark mounts (BenchmarkSpec.assets): at least a `uri`; a `mount` may pin the container path."""
|
|
176
176
|
|
|
177
177
|
model_config = ConfigDict(extra="forbid")
|
|
178
178
|
|
|
@@ -243,17 +243,15 @@ class PolicySpec(BaseModel):
|
|
|
243
243
|
model_config = ConfigDict(extra="forbid")
|
|
244
244
|
|
|
245
245
|
name: str
|
|
246
|
-
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
gpu: str = Field(..., description='The one card a worker runs on: "L4", "H100:2" for two of one type, or "cpu"')
|
|
247
249
|
image: ImageSpec
|
|
248
250
|
|
|
249
251
|
weights: str | None = Field(None, description="Weights URI: template:// (an official template), hf:// or vol:// "
|
|
250
252
|
"(an uploaded volume); none for a policy without a checkpoint")
|
|
251
|
-
volumes: dict[str, VolumeRef] = Field(default_factory=dict)
|
|
252
253
|
secrets: list[SecretRef] = Field(default_factory=list)
|
|
253
254
|
min_containers: int = 0
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
max_containers: int | None = None
|
|
257
255
|
max_gpus: int | None = Field(default=None, ge=1, le=256)
|
|
258
256
|
buffer_containers: int | None = None
|
|
259
257
|
scaledown_window: int = 600
|
|
@@ -262,9 +260,6 @@ class PolicySpec(BaseModel):
|
|
|
262
260
|
concurrency: Concurrency | None = None
|
|
263
261
|
streaming: bool = False
|
|
264
262
|
|
|
265
|
-
|
|
266
|
-
frames_per_chunk: int | None = None
|
|
267
|
-
|
|
268
263
|
action: ActionContract | None = None
|
|
269
264
|
|
|
270
265
|
observation: ObservationContract | None = None
|
|
@@ -56,7 +56,6 @@ from sequence_base.contract.deployments import (
|
|
|
56
56
|
DeploymentStatusResponse,
|
|
57
57
|
Resources,
|
|
58
58
|
Timeouts,
|
|
59
|
-
VolumeAttach,
|
|
60
59
|
)
|
|
61
60
|
from sequence_base.contract.errors import ErrorBody, WarmingError, error_codes_json_schema
|
|
62
61
|
from sequence_base.contract.volumes import (
|
|
@@ -67,7 +66,6 @@ from sequence_base.contract.volumes import (
|
|
|
67
66
|
VolumeUploadResponse,
|
|
68
67
|
)
|
|
69
68
|
from sequence_base.contract.eval import (
|
|
70
|
-
ClampInfo,
|
|
71
69
|
Estimate,
|
|
72
70
|
EvalDryRunResponse,
|
|
73
71
|
EvalReport,
|
|
@@ -136,7 +134,6 @@ WIRE_MODELS: dict[str, type[BaseModel]] = {
|
|
|
136
134
|
"Resources": Resources,
|
|
137
135
|
"Autoscaler": Autoscaler,
|
|
138
136
|
"Timeouts": Timeouts,
|
|
139
|
-
"VolumeAttach": VolumeAttach,
|
|
140
137
|
"CodeBundle": CodeBundle,
|
|
141
138
|
"DeploymentPolicy": DeploymentPolicy,
|
|
142
139
|
"InferParam": InferParam,
|
|
@@ -159,7 +156,6 @@ WIRE_MODELS: dict[str, type[BaseModel]] = {
|
|
|
159
156
|
"BenchmarkStatusResponse": BenchmarkStatusResponse,
|
|
160
157
|
|
|
161
158
|
"EvalRequest": EvalRequest,
|
|
162
|
-
"ClampInfo": ClampInfo,
|
|
163
159
|
"Estimate": Estimate,
|
|
164
160
|
"EvalResponse": EvalResponse,
|
|
165
161
|
"EvalDryRunResponse": EvalDryRunResponse,
|
|
@@ -14,18 +14,6 @@
|
|
|
14
14
|
"default": null,
|
|
15
15
|
"title": "Buffer Containers"
|
|
16
16
|
},
|
|
17
|
-
"max_containers": {
|
|
18
|
-
"anyOf": [
|
|
19
|
-
{
|
|
20
|
-
"type": "integer"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"type": "null"
|
|
24
|
-
}
|
|
25
|
-
],
|
|
26
|
-
"default": null,
|
|
27
|
-
"title": "Max Containers"
|
|
28
|
-
},
|
|
29
17
|
"max_gpus": {
|
|
30
18
|
"anyOf": [
|
|
31
19
|
{
|
|
@@ -69,5 +57,5 @@
|
|
|
69
57
|
},
|
|
70
58
|
"title": "Autoscaler",
|
|
71
59
|
"type": "object",
|
|
72
|
-
"x-contract-version": "0.5.
|
|
60
|
+
"x-contract-version": "0.5.15"
|
|
73
61
|
}
|
{sequence_base-0.4.14 → sequence_base-0.4.16}/sequence_base/schemas/BenchmarkRegisterRequest.json
RENAMED
|
@@ -664,7 +664,7 @@
|
|
|
664
664
|
},
|
|
665
665
|
"VolumeRef": {
|
|
666
666
|
"additionalProperties": false,
|
|
667
|
-
"description": "
|
|
667
|
+
"description": "A volume a benchmark mounts (BenchmarkSpec.assets): at least a `uri`; a `mount` may pin the container path.",
|
|
668
668
|
"properties": {
|
|
669
669
|
"mount": {
|
|
670
670
|
"anyOf": [
|
|
@@ -962,5 +962,5 @@
|
|
|
962
962
|
],
|
|
963
963
|
"title": "BenchmarkRegisterRequest",
|
|
964
964
|
"type": "object",
|
|
965
|
-
"x-contract-version": "0.5.
|
|
965
|
+
"x-contract-version": "0.5.15"
|
|
966
966
|
}
|
|
@@ -359,7 +359,6 @@
|
|
|
359
359
|
16,
|
|
360
360
|
1024,
|
|
361
361
|
4096,
|
|
362
|
-
8192,
|
|
363
362
|
16384,
|
|
364
363
|
32768,
|
|
365
364
|
65536,
|
|
@@ -368,7 +367,7 @@
|
|
|
368
367
|
],
|
|
369
368
|
"title": "SeqFlags",
|
|
370
369
|
"type": "integer",
|
|
371
|
-
"x-contract-version": "0.5.
|
|
370
|
+
"x-contract-version": "0.5.15",
|
|
372
371
|
"x-flag-names": {
|
|
373
372
|
"CHECK": 65536,
|
|
374
373
|
"INFER": 16,
|
|
@@ -377,7 +376,6 @@
|
|
|
377
376
|
"ON_EPISODE": 1024,
|
|
378
377
|
"PLAN": 4,
|
|
379
378
|
"RESET": 32768,
|
|
380
|
-
"ROLLOUT": 8192,
|
|
381
379
|
"SCORE": 16384,
|
|
382
380
|
"SETUP": 4096,
|
|
383
381
|
"SHUTDOWN": 8,
|
|
@@ -435,7 +433,7 @@
|
|
|
435
433
|
},
|
|
436
434
|
"VolumeRef": {
|
|
437
435
|
"additionalProperties": false,
|
|
438
|
-
"description": "
|
|
436
|
+
"description": "A volume a benchmark mounts (BenchmarkSpec.assets): at least a `uri`; a `mount` may pin the container path.",
|
|
439
437
|
"properties": {
|
|
440
438
|
"mount": {
|
|
441
439
|
"anyOf": [
|
|
@@ -462,7 +460,7 @@
|
|
|
462
460
|
}
|
|
463
461
|
},
|
|
464
462
|
"additionalProperties": false,
|
|
465
|
-
"description": "What `@seq.benchmark(...)` accrues — symmetric to PolicySpec. `secrets` are by-name only (accounts\n⑦: a benchmark also references secrets by name). `assets` are versioned scene/mesh/URDF/MJCF/USD volumes\nthe worker mounts at /assets (reusing S2's Volume mechanism). `render` optionally declares the mp4.\n`max_steps` is the platform SAFETY cap (cost backstop, records `truncated` — NOT semantic termination;\n`done` is decided by @seq.check). `bindings` covers SETUP / RESET / CHECK / SCORE (
|
|
463
|
+
"description": "What `@seq.benchmark(...)` accrues — symmetric to PolicySpec. `secrets` are by-name only (accounts\n⑦: a benchmark also references secrets by name). `assets` are versioned scene/mesh/URDF/MJCF/USD volumes\nthe worker mounts at /assets (reusing S2's Volume mechanism). `render` optionally declares the mp4.\n`max_steps` is the platform SAFETY cap (cost backstop, records `truncated` — NOT semantic termination;\n`done` is decided by @seq.check). `bindings` covers SETUP / RESET / CHECK / SCORE (+ OBSERVE / STEP).",
|
|
466
464
|
"properties": {
|
|
467
465
|
"assets": {
|
|
468
466
|
"items": {
|
|
@@ -485,7 +483,6 @@
|
|
|
485
483
|
"16",
|
|
486
484
|
"1024",
|
|
487
485
|
"4096",
|
|
488
|
-
"8192",
|
|
489
486
|
"16384",
|
|
490
487
|
"32768",
|
|
491
488
|
"65536",
|
|
@@ -544,12 +541,6 @@
|
|
|
544
541
|
{
|
|
545
542
|
"type": "string"
|
|
546
543
|
},
|
|
547
|
-
{
|
|
548
|
-
"items": {
|
|
549
|
-
"type": "string"
|
|
550
|
-
},
|
|
551
|
-
"type": "array"
|
|
552
|
-
},
|
|
553
544
|
{
|
|
554
545
|
"type": "null"
|
|
555
546
|
}
|
|
@@ -625,5 +616,5 @@
|
|
|
625
616
|
],
|
|
626
617
|
"title": "BenchmarkSpec",
|
|
627
618
|
"type": "object",
|
|
628
|
-
"x-contract-version": "0.5.
|
|
619
|
+
"x-contract-version": "0.5.15"
|
|
629
620
|
}
|
|
@@ -408,18 +408,6 @@
|
|
|
408
408
|
"default": null,
|
|
409
409
|
"title": "Family"
|
|
410
410
|
},
|
|
411
|
-
"frames_per_chunk": {
|
|
412
|
-
"anyOf": [
|
|
413
|
-
{
|
|
414
|
-
"type": "integer"
|
|
415
|
-
},
|
|
416
|
-
{
|
|
417
|
-
"type": "null"
|
|
418
|
-
}
|
|
419
|
-
],
|
|
420
|
-
"default": null,
|
|
421
|
-
"title": "Frames Per Chunk"
|
|
422
|
-
},
|
|
423
411
|
"handler_ref": {
|
|
424
412
|
"title": "Handler Ref",
|
|
425
413
|
"type": "string"
|
|
@@ -498,5 +486,5 @@
|
|
|
498
486
|
],
|
|
499
487
|
"title": "DeploymentPolicy",
|
|
500
488
|
"type": "object",
|
|
501
|
-
"x-contract-version": "0.5.
|
|
489
|
+
"x-contract-version": "0.5.15"
|
|
502
490
|
}
|