sequence-base 0.4.9__tar.gz → 0.4.11__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.9 → sequence_base-0.4.11}/PKG-INFO +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/pyproject.toml +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/__init__.py +5 -0
- sequence_base-0.4.11/sequence_base/constants/limits.py +16 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/constants/version.py +2 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/contract/benchmarks.py +6 -4
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/contract/deployments.py +8 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/contract/eval.py +70 -17
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/contract/policy.py +2 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ActRequest.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ActResponse.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ActionChunk.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ActionContract.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ActionStep.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/AdapterTransform.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/AddLocal.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/Autoscaler.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/BenchmarkConditionSpec.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/BenchmarkRegisterRequest.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/BenchmarkSpec.json +2 -2
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/BenchmarkStatusResponse.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/BootstrapResponse.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/Camera.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ClampInfo.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/CodeBundle.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/Concurrency.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/Conditions.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ConnectRequest.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ConnectResponse.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/DeploymentAccepted.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/DeploymentPolicy.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/DeploymentRequest.json +3 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/DeploymentStatusResponse.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/Embodiment.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ErrorBody.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ErrorCodes.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/Estimate.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/EvalDryRunResponse.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/EvalReport.json +11 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/EvalRequest.json +138 -33
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/EvalResponse.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ImageFrame.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ImageSpec.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ImageStepAddLocal.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ImageStepApt.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ImageStepEnv.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ImageStepRun.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ImageStepTemplateFiles.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ImageStepUvPip.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/InferParam.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/Lease.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/LossyTransform.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/MetricAgg.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/Observation.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ObservationContract.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/PolicyRegistration.json +2 -2
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/PolicySpec.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/Proprioception.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/RenderSpec.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/ReplaySpec.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/Resources.json +3 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/RolloutResult.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/SecretCreateRequest.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/SecretInfo.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/SecretRef.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/SeqFlags.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/Step.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/SuiteAgg.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/TaskAgg.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/TemplateFiles.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/Timeouts.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/UploadTarget.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/Variant.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/VolumeAttach.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/VolumeFile.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/VolumeInfo.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/VolumeMount.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/VolumeRef.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/VolumeUploadRequest.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/VolumeUploadResponse.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schemas/WarmingError.json +1 -1
- {sequence_base-0.4.9 → sequence_base-0.4.11}/.gitignore +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/README.md +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/auth.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/codec/__init__.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/codec/image.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/constants/__init__.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/constants/headers.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/contract/__init__.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/contract/accounts.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/contract/act.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/contract/connect.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/contract/errors.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/contract/flags.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/contract/io.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/contract/templates.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/contract/volumes.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/contract/wire.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/errors/__init__.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/errors/transport.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/obs/__init__.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/obs/log.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/obs/rid.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/presets/__init__.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/presets/frames.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/presets/robot_arm.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/schema_export.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/sequence_base/telemetry/__init__.py +0 -0
- {sequence_base-0.4.9 → sequence_base-0.4.11}/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.11
|
|
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.11"
|
|
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"]
|
|
@@ -105,6 +105,10 @@ from sequence_base.contract import (
|
|
|
105
105
|
from sequence_base.constants.version import CONTRACT_VERSION
|
|
106
106
|
|
|
107
107
|
|
|
108
|
+
|
|
109
|
+
from sequence_base.constants.limits import MAX_ENVS, MAX_USD, TASK_DESCRIPTION_MAX
|
|
110
|
+
|
|
111
|
+
|
|
108
112
|
from sequence_base.obs.log import Timer, enabled, log
|
|
109
113
|
from sequence_base.obs.rid import HEADER, clean, clean_text, new_rid, unescape_text
|
|
110
114
|
|
|
@@ -152,6 +156,7 @@ __all__ = [
|
|
|
152
156
|
"TEMPLATE_SCHEME", "parse_template",
|
|
153
157
|
|
|
154
158
|
"ErrorCode", "ErrorBody", "WarmingError", "ERRORS", "ErrorSpec", "code_for_status", "CONTRACT_VERSION",
|
|
159
|
+
"MAX_ENVS", "MAX_USD", "TASK_DESCRIPTION_MAX",
|
|
155
160
|
|
|
156
161
|
"HEADER", "new_rid", "clean", "clean_text", "unescape_text", "log", "Timer", "enabled",
|
|
157
162
|
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Numeric limits the contract shares with the gateway, defined once here so one bound is enforced everywhere
|
|
2
|
+
rather than drifting between `EvalRequest`, the benchmark register body and the gateway's own routes.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
MAX_ENVS = 65536
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
MAX_USD = 100_000
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
TASK_DESCRIPTION_MAX = 300
|
|
16
|
+
|
|
@@ -16,6 +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
20
|
from sequence_base.contract.accounts import SecretRef
|
|
20
21
|
from sequence_base.contract.deployments import CodeBundle, DeploymentState, InferParam
|
|
21
22
|
from sequence_base.contract.flags import BENCHMARK_BATCHED, BENCHMARK_BINDABLE, SeqFlags
|
|
@@ -125,7 +126,7 @@ class BenchmarkSpec(BaseModel):
|
|
|
125
126
|
bindings: dict[SeqFlags, str] = Field(..., description="SETUP / RESET / CHECK / SCORE (+ OBSERVE / STEP) → method name")
|
|
126
127
|
gpu: str | list[str] | None = None
|
|
127
128
|
|
|
128
|
-
envs: int | None = Field(default=None, ge=1, le=
|
|
129
|
+
envs: int | None = Field(default=None, ge=1, le=MAX_ENVS)
|
|
129
130
|
assets: list[VolumeRef] = Field(default_factory=list)
|
|
130
131
|
render: RenderSpec | None = None
|
|
131
132
|
|
|
@@ -221,9 +222,10 @@ class BenchmarkRegisterRequest(BaseModel):
|
|
|
221
222
|
default_adapter_ref: str | None = None
|
|
222
223
|
|
|
223
224
|
|
|
225
|
+
|
|
224
226
|
gpu: str | None = Field(default=None, max_length=32)
|
|
225
227
|
|
|
226
|
-
envs: int | None = Field(default=None, ge=1, le=
|
|
228
|
+
envs: int | None = Field(default=None, ge=1, le=MAX_ENVS)
|
|
227
229
|
|
|
228
230
|
|
|
229
231
|
|
|
@@ -253,8 +255,8 @@ class BenchmarkRegisterRequest(BaseModel):
|
|
|
253
255
|
for task, text in self.task_descriptions.items():
|
|
254
256
|
if task not in declared:
|
|
255
257
|
raise ValueError(f"task_descriptions names {task!r}, which is not a declared task")
|
|
256
|
-
if len(text) >
|
|
257
|
-
raise ValueError(f"task_descriptions[{task!r}] is {len(text)} characters: at most
|
|
258
|
+
if len(text) > TASK_DESCRIPTION_MAX:
|
|
259
|
+
raise ValueError(f"task_descriptions[{task!r}] is {len(text)} characters: at most {TASK_DESCRIPTION_MAX}")
|
|
258
260
|
return self
|
|
259
261
|
|
|
260
262
|
|
|
@@ -60,7 +60,12 @@ class Resources(BaseModel):
|
|
|
60
60
|
memory_limit_gb: float | None = Field(default=None, ge=0.125, le=1024)
|
|
61
61
|
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
region: str | None = Field(default=None, max_length=32, json_schema_extra={"deprecated": True},
|
|
67
|
+
description="Not accepted: a deployment's workers run wherever there are cards, so a "
|
|
68
|
+
"region is refused. Omit it (an older SDK still sends it).")
|
|
64
69
|
|
|
65
70
|
@model_validator(mode="after")
|
|
66
71
|
def _limits_cover_requests(self) -> "Resources":
|
|
@@ -185,6 +190,8 @@ class DeploymentPolicy(BaseModel):
|
|
|
185
190
|
handler_ref: str
|
|
186
191
|
action: ActionContract | None = None
|
|
187
192
|
streaming: bool = False
|
|
193
|
+
|
|
194
|
+
|
|
188
195
|
frames_per_chunk: int | None = None
|
|
189
196
|
secrets: list[SecretRef] = Field(default_factory=list)
|
|
190
197
|
|
|
@@ -10,9 +10,11 @@ not a bare dict or free text.
|
|
|
10
10
|
from __future__ import annotations
|
|
11
11
|
|
|
12
12
|
from enum import Enum
|
|
13
|
-
from typing import Literal
|
|
13
|
+
from typing import Annotated, Literal
|
|
14
14
|
|
|
15
|
-
from pydantic import BaseModel, ConfigDict, Field, model_validator
|
|
15
|
+
from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
|
|
16
|
+
|
|
17
|
+
from sequence_base.constants.limits import MAX_ENVS, MAX_USD
|
|
16
18
|
|
|
17
19
|
__all__ = [
|
|
18
20
|
"EvalRequest",
|
|
@@ -39,32 +41,57 @@ __all__ = [
|
|
|
39
41
|
]
|
|
40
42
|
|
|
41
43
|
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
_Trials = Annotated[int, Field(ge=1, le=100000)]
|
|
47
|
+
|
|
48
|
+
|
|
42
49
|
class EvalRequest(BaseModel):
|
|
43
|
-
"""`model`
|
|
44
|
-
response shape below.
|
|
50
|
+
"""`POST /v1/eval`. A real eval names `model` + `benchmark`; a rerun (`rerun_of` / `rerun_unsuccessful_of`) may
|
|
51
|
+
leave them out and take the earlier eval's. `dry_run` selects the estimate-only response shape below.
|
|
52
|
+
|
|
53
|
+
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, `suite`, `region` — each taken and mapped, or refused with the way on,
|
|
55
|
+
never silently dropped. The gateway inherits this model rather than keeping its own."""
|
|
56
|
+
|
|
57
|
+
|
|
45
58
|
|
|
46
59
|
model_config = ConfigDict(extra="forbid")
|
|
47
60
|
|
|
48
|
-
model: str
|
|
49
|
-
benchmark: str
|
|
50
61
|
|
|
62
|
+
model: str | None = Field(default=None, max_length=200)
|
|
63
|
+
benchmark: str | None = Field(default=None, max_length=200)
|
|
64
|
+
|
|
65
|
+
|
|
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).")
|
|
51
69
|
|
|
52
70
|
|
|
53
71
|
|
|
54
72
|
|
|
55
|
-
trials:
|
|
73
|
+
trials: _Trials | dict[str, _Trials] | None = None
|
|
56
74
|
seeds: list[int] | dict[str, list[int]] | None = None
|
|
57
75
|
|
|
58
76
|
|
|
59
77
|
|
|
60
78
|
|
|
61
|
-
policy_instances: int = Field(default=
|
|
79
|
+
policy_instances: int | None = Field(default=None, ge=1, le=64)
|
|
62
80
|
policy_gpu: str | None = Field(default=None, max_length=32)
|
|
63
|
-
benchmark_instances: int = Field(default=
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
81
|
+
benchmark_instances: int | None = Field(default=None, ge=1, le=64)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
benchmark_gpu: str | None = Field(default=None, max_length=32, json_schema_extra={"deprecated": True},
|
|
86
|
+
description="Not accepted: an eval runs on the card its benchmark was registered "
|
|
87
|
+
"on, so a card is refused. Omit it (an older SDK still sends it).")
|
|
88
|
+
envs: int | None = Field(default=None, ge=1)
|
|
89
|
+
|
|
90
|
+
gpus: int = Field(default=1, ge=1, le=64, json_schema_extra={"deprecated": True},
|
|
91
|
+
description="Deprecated name (sequence-ai <= 0.28) for policy_instances; use policy_instances.")
|
|
92
|
+
envs_per_gpu: int | None = Field(default=None, ge=1, le=1024, json_schema_extra={"deprecated": True},
|
|
93
|
+
description="Deprecated name (sequence-ai <= 0.28) for envs; use envs.")
|
|
94
|
+
adapter: str | None = Field(default=None, max_length=200)
|
|
68
95
|
|
|
69
96
|
|
|
70
97
|
compare: str | list[str] | None = Field(default=None, description="Other model ids to compare against")
|
|
@@ -73,9 +100,15 @@ class EvalRequest(BaseModel):
|
|
|
73
100
|
|
|
74
101
|
tasks: list[str] | None = Field(default=None, max_length=1000)
|
|
75
102
|
|
|
76
|
-
max_usd: float | None = Field(default=None, gt=0)
|
|
77
103
|
|
|
78
|
-
|
|
104
|
+
max_usd: float | None = Field(default=None, gt=0, le=MAX_USD)
|
|
105
|
+
|
|
106
|
+
rerun_of: str | None = Field(default=None, max_length=64)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
rerun_unsuccessful_of: str | None = Field(default=None, max_length=64)
|
|
111
|
+
metric: str | None = Field(default=None, max_length=64)
|
|
79
112
|
|
|
80
113
|
|
|
81
114
|
|
|
@@ -89,6 +122,21 @@ class EvalRequest(BaseModel):
|
|
|
89
122
|
|
|
90
123
|
replay: Literal["3d", "none"] | None = None
|
|
91
124
|
|
|
125
|
+
|
|
126
|
+
region: str | None = Field(default=None, max_length=32, json_schema_extra={"deprecated": True},
|
|
127
|
+
description="Not accepted: an eval's machines run wherever there are cards, so a region "
|
|
128
|
+
"is refused. Omit it (an older SDK still sends it).")
|
|
129
|
+
|
|
130
|
+
@field_validator("envs")
|
|
131
|
+
@classmethod
|
|
132
|
+
def _envs_cap(cls, v: int | None) -> int | None:
|
|
133
|
+
"""One benchmark instance runs at most MAX_ENVS environments; keep the author-facing hint (run more by adding
|
|
134
|
+
instances) rather than a bare bound, and name the same shared constant as the gateway."""
|
|
135
|
+
if v is not None and v > MAX_ENVS:
|
|
136
|
+
raise ValueError(f"a benchmark instance runs at most {MAX_ENVS} environments at once; add more "
|
|
137
|
+
"benchmark_instances to run more")
|
|
138
|
+
return v
|
|
139
|
+
|
|
92
140
|
@model_validator(mode="after")
|
|
93
141
|
def _selection(self) -> "EvalRequest":
|
|
94
142
|
"""The selection's own bounds, as the platform holds them: a count 1-100000, at most 5000 seeds in a list and
|
|
@@ -382,11 +430,16 @@ class EvalReport(BaseModel):
|
|
|
382
430
|
default_factory=list, description="Why episodes or the run failed, so an incomplete report says why"
|
|
383
431
|
)
|
|
384
432
|
|
|
385
|
-
|
|
386
433
|
arms: list[ArmReport] | None = None
|
|
387
434
|
paired: list[PairedDiff] | None = None
|
|
388
435
|
timing: EvalTiming | None = None
|
|
389
|
-
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
stop_reason: Literal["canceled", "budget", "balance", "deadline", "mismatch", "refused", "queue_timeout",
|
|
442
|
+
"no_gpu_render"] | None = None
|
|
390
443
|
|
|
391
444
|
|
|
392
445
|
arm_params: list[ArmParams] | None = None
|
|
@@ -261,6 +261,8 @@ class PolicySpec(BaseModel):
|
|
|
261
261
|
queue_timeout_s: int = Field(default=120, ge=5, le=3600)
|
|
262
262
|
concurrency: Concurrency | None = None
|
|
263
263
|
streaming: bool = False
|
|
264
|
+
|
|
265
|
+
|
|
264
266
|
frames_per_chunk: int | None = None
|
|
265
267
|
|
|
266
268
|
action: ActionContract | None = None
|
|
@@ -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.10",
|
|
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.10"
|
|
629
629
|
}
|
|
@@ -997,6 +997,8 @@
|
|
|
997
997
|
}
|
|
998
998
|
],
|
|
999
999
|
"default": null,
|
|
1000
|
+
"deprecated": true,
|
|
1001
|
+
"description": "Not accepted: a deployment's workers run wherever there are cards, so a region is refused. Omit it (an older SDK still sends it).",
|
|
1000
1002
|
"title": "Region"
|
|
1001
1003
|
}
|
|
1002
1004
|
},
|
|
@@ -1224,5 +1226,5 @@
|
|
|
1224
1226
|
],
|
|
1225
1227
|
"title": "DeploymentRequest",
|
|
1226
1228
|
"type": "object",
|
|
1227
|
-
"x-contract-version": "0.5.
|
|
1229
|
+
"x-contract-version": "0.5.10"
|
|
1228
1230
|
}
|
|
@@ -485,6 +485,16 @@
|
|
|
485
485
|
"stop_reason": {
|
|
486
486
|
"anyOf": [
|
|
487
487
|
{
|
|
488
|
+
"enum": [
|
|
489
|
+
"canceled",
|
|
490
|
+
"budget",
|
|
491
|
+
"balance",
|
|
492
|
+
"deadline",
|
|
493
|
+
"mismatch",
|
|
494
|
+
"refused",
|
|
495
|
+
"queue_timeout",
|
|
496
|
+
"no_gpu_render"
|
|
497
|
+
],
|
|
488
498
|
"type": "string"
|
|
489
499
|
},
|
|
490
500
|
{
|
|
@@ -523,5 +533,5 @@
|
|
|
523
533
|
],
|
|
524
534
|
"title": "EvalReport",
|
|
525
535
|
"type": "object",
|
|
526
|
-
"x-contract-version": "0.5.
|
|
536
|
+
"x-contract-version": "0.5.10"
|
|
527
537
|
}
|