sequence-base 0.4.8__tar.gz → 0.4.10__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.8 → sequence_base-0.4.10}/PKG-INFO +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/pyproject.toml +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/__init__.py +5 -0
- sequence_base-0.4.10/sequence_base/constants/limits.py +16 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/constants/version.py +2 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/contract/benchmarks.py +6 -4
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/contract/deployments.py +2 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/contract/eval.py +71 -24
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/contract/policy.py +2 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ActRequest.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ActResponse.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ActionChunk.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ActionContract.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ActionStep.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/AdapterTransform.json +2 -2
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/AddLocal.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/Autoscaler.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/BenchmarkConditionSpec.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/BenchmarkRegisterRequest.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/BenchmarkSpec.json +2 -2
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/BenchmarkStatusResponse.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/BootstrapResponse.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/Camera.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ClampInfo.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/CodeBundle.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/Concurrency.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/Conditions.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ConnectRequest.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ConnectResponse.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/DeploymentAccepted.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/DeploymentPolicy.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/DeploymentRequest.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/DeploymentStatusResponse.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/Embodiment.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ErrorBody.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ErrorCodes.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/Estimate.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/EvalDryRunResponse.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/EvalReport.json +11 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/EvalRequest.json +136 -33
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/EvalResponse.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ImageFrame.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ImageSpec.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ImageStepAddLocal.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ImageStepApt.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ImageStepEnv.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ImageStepRun.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ImageStepTemplateFiles.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ImageStepUvPip.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/InferParam.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/Lease.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/LossyTransform.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/MetricAgg.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/Observation.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ObservationContract.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/PolicyRegistration.json +2 -2
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/PolicySpec.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/Proprioception.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/RenderSpec.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/ReplaySpec.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/Resources.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/RolloutResult.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/SecretCreateRequest.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/SecretInfo.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/SecretRef.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/SeqFlags.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/Step.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/SuiteAgg.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/TaskAgg.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/TemplateFiles.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/Timeouts.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/UploadTarget.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/Variant.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/VolumeAttach.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/VolumeFile.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/VolumeInfo.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/VolumeMount.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/VolumeRef.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/VolumeUploadRequest.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/VolumeUploadResponse.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schemas/WarmingError.json +1 -1
- {sequence_base-0.4.8 → sequence_base-0.4.10}/.gitignore +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/README.md +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/auth.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/codec/__init__.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/codec/image.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/constants/__init__.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/constants/headers.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/contract/__init__.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/contract/accounts.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/contract/act.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/contract/connect.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/contract/errors.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/contract/flags.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/contract/io.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/contract/templates.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/contract/volumes.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/contract/wire.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/errors/__init__.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/errors/transport.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/obs/__init__.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/obs/log.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/obs/rid.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/presets/__init__.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/presets/frames.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/presets/robot_arm.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/schema_export.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/sequence_base/telemetry/__init__.py +0 -0
- {sequence_base-0.4.8 → sequence_base-0.4.10}/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.10
|
|
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.10"
|
|
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
|
|
|
@@ -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,52 @@ __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)
|
|
51
64
|
|
|
52
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).")
|
|
53
69
|
|
|
54
70
|
|
|
55
|
-
|
|
71
|
+
|
|
72
|
+
|
|
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=
|
|
81
|
+
benchmark_instances: int | None = Field(default=None, ge=1, le=64)
|
|
64
82
|
benchmark_gpu: str | None = Field(default=None, max_length=32)
|
|
65
|
-
envs: int | None = Field(default=None, ge=1
|
|
66
|
-
|
|
67
|
-
|
|
83
|
+
envs: int | None = Field(default=None, ge=1)
|
|
84
|
+
|
|
85
|
+
gpus: int = Field(default=1, ge=1, le=64, json_schema_extra={"deprecated": True},
|
|
86
|
+
description="Deprecated name (sequence-ai <= 0.28) for policy_instances; use policy_instances.")
|
|
87
|
+
envs_per_gpu: int | None = Field(default=None, ge=1, le=1024, json_schema_extra={"deprecated": True},
|
|
88
|
+
description="Deprecated name (sequence-ai <= 0.28) for envs; use envs.")
|
|
89
|
+
adapter: str | None = Field(default=None, max_length=200)
|
|
68
90
|
|
|
69
91
|
|
|
70
92
|
compare: str | list[str] | None = Field(default=None, description="Other model ids to compare against")
|
|
@@ -73,9 +95,15 @@ class EvalRequest(BaseModel):
|
|
|
73
95
|
|
|
74
96
|
tasks: list[str] | None = Field(default=None, max_length=1000)
|
|
75
97
|
|
|
76
|
-
max_usd: float | None = Field(default=None, gt=0)
|
|
77
98
|
|
|
78
|
-
|
|
99
|
+
max_usd: float | None = Field(default=None, gt=0, le=MAX_USD)
|
|
100
|
+
|
|
101
|
+
rerun_of: str | None = Field(default=None, max_length=64)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
rerun_unsuccessful_of: str | None = Field(default=None, max_length=64)
|
|
106
|
+
metric: str | None = Field(default=None, max_length=64)
|
|
79
107
|
|
|
80
108
|
|
|
81
109
|
|
|
@@ -89,6 +117,21 @@ class EvalRequest(BaseModel):
|
|
|
89
117
|
|
|
90
118
|
replay: Literal["3d", "none"] | None = None
|
|
91
119
|
|
|
120
|
+
|
|
121
|
+
region: str | None = Field(default=None, max_length=32, json_schema_extra={"deprecated": True},
|
|
122
|
+
description="Not accepted: an eval's machines run wherever there are cards, so a region "
|
|
123
|
+
"is refused. Omit it (an older SDK still sends it).")
|
|
124
|
+
|
|
125
|
+
@field_validator("envs")
|
|
126
|
+
@classmethod
|
|
127
|
+
def _envs_cap(cls, v: int | None) -> int | None:
|
|
128
|
+
"""One benchmark instance runs at most MAX_ENVS environments; keep the author-facing hint (run more by adding
|
|
129
|
+
instances) rather than a bare bound, and name the same shared constant as the gateway."""
|
|
130
|
+
if v is not None and v > MAX_ENVS:
|
|
131
|
+
raise ValueError(f"a benchmark instance runs at most {MAX_ENVS} environments at once; add more "
|
|
132
|
+
"benchmark_instances to run more")
|
|
133
|
+
return v
|
|
134
|
+
|
|
92
135
|
@model_validator(mode="after")
|
|
93
136
|
def _selection(self) -> "EvalRequest":
|
|
94
137
|
"""The selection's own bounds, as the platform holds them: a count 1-100000, at most 5000 seeds in a list and
|
|
@@ -382,11 +425,16 @@ class EvalReport(BaseModel):
|
|
|
382
425
|
default_factory=list, description="Why episodes or the run failed, so an incomplete report says why"
|
|
383
426
|
)
|
|
384
427
|
|
|
385
|
-
|
|
386
428
|
arms: list[ArmReport] | None = None
|
|
387
429
|
paired: list[PairedDiff] | None = None
|
|
388
430
|
timing: EvalTiming | None = None
|
|
389
|
-
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
stop_reason: Literal["canceled", "budget", "balance", "deadline", "mismatch", "refused", "queue_timeout",
|
|
437
|
+
"no_gpu_render"] | None = None
|
|
390
438
|
|
|
391
439
|
|
|
392
440
|
arm_params: list[ArmParams] | None = None
|
|
@@ -397,18 +445,17 @@ class AdapterKind(str, Enum):
|
|
|
397
445
|
LOSSY = "lossy"
|
|
398
446
|
|
|
399
447
|
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
|
|
400
453
|
class AdapterTransform(BaseModel):
|
|
401
|
-
"""One adapter transform
|
|
402
|
-
|
|
454
|
+
"""One adapter transform: its kind (lossless / lossy), the transform's name, and an optional reason. A registered
|
|
455
|
+
adapter and an older eval report carry these fields; they are kept for compatibility and are no longer acted on."""
|
|
403
456
|
|
|
404
457
|
model_config = ConfigDict(extra="forbid")
|
|
405
458
|
|
|
406
459
|
kind: AdapterKind
|
|
407
460
|
transform: str
|
|
408
461
|
reason: str | None = None
|
|
409
|
-
|
|
410
|
-
@model_validator(mode="after")
|
|
411
|
-
def _lossy_needs_reason(self) -> "AdapterTransform":
|
|
412
|
-
if self.kind is AdapterKind.LOSSY and not (self.reason and self.reason.strip()):
|
|
413
|
-
raise ValueError("a lossy transform must carry a non-empty reason")
|
|
414
|
-
return self
|
|
@@ -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
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
}
|
|
11
11
|
},
|
|
12
12
|
"additionalProperties": false,
|
|
13
|
-
"description": "One adapter transform
|
|
13
|
+
"description": "One adapter transform: its kind (lossless / lossy), the transform's name, and an optional reason. A registered\nadapter and an older eval report carry these fields; they are kept for compatibility and are no longer acted on.",
|
|
14
14
|
"properties": {
|
|
15
15
|
"kind": {
|
|
16
16
|
"$ref": "#/$defs/AdapterKind"
|
|
@@ -38,5 +38,5 @@
|
|
|
38
38
|
],
|
|
39
39
|
"title": "AdapterTransform",
|
|
40
40
|
"type": "object",
|
|
41
|
-
"x-contract-version": "0.5.
|
|
41
|
+
"x-contract-version": "0.5.9"
|
|
42
42
|
}
|
|
@@ -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.9",
|
|
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.9"
|
|
629
629
|
}
|
|
@@ -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.9"
|
|
527
537
|
}
|