wandb 0.21.0__py3-none-win32.whl → 0.21.2__py3-none-win32.whl
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.
- wandb/__init__.py +16 -14
- wandb/__init__.pyi +427 -450
- wandb/agents/pyagent.py +41 -12
- wandb/analytics/sentry.py +7 -2
- wandb/apis/importers/mlflow.py +1 -1
- wandb/apis/public/__init__.py +1 -1
- wandb/apis/public/api.py +525 -360
- wandb/apis/public/artifacts.py +207 -13
- wandb/apis/public/automations.py +19 -3
- wandb/apis/public/files.py +172 -33
- wandb/apis/public/history.py +67 -15
- wandb/apis/public/integrations.py +25 -2
- wandb/apis/public/jobs.py +90 -2
- wandb/apis/public/projects.py +130 -79
- wandb/apis/public/query_generator.py +11 -1
- wandb/apis/public/registries/_utils.py +14 -16
- wandb/apis/public/registries/registries_search.py +183 -304
- wandb/apis/public/reports.py +96 -15
- wandb/apis/public/runs.py +299 -105
- wandb/apis/public/sweeps.py +222 -22
- wandb/apis/public/teams.py +41 -4
- wandb/apis/public/users.py +45 -4
- wandb/automations/_generated/delete_automation.py +1 -3
- wandb/automations/_generated/enums.py +13 -11
- wandb/beta/workflows.py +66 -30
- wandb/bin/gpu_stats.exe +0 -0
- wandb/bin/wandb-core +0 -0
- wandb/cli/cli.py +127 -3
- wandb/env.py +8 -0
- wandb/errors/errors.py +4 -1
- wandb/integration/lightning/fabric/logger.py +3 -4
- wandb/integration/metaflow/__init__.py +6 -0
- wandb/integration/metaflow/data_pandas.py +74 -0
- wandb/integration/metaflow/data_pytorch.py +75 -0
- wandb/integration/metaflow/data_sklearn.py +76 -0
- wandb/integration/metaflow/errors.py +13 -0
- wandb/integration/metaflow/metaflow.py +167 -223
- wandb/integration/openai/fine_tuning.py +1 -2
- wandb/integration/weave/__init__.py +6 -0
- wandb/integration/weave/interface.py +49 -0
- wandb/integration/weave/weave.py +63 -0
- wandb/jupyter.py +5 -5
- wandb/plot/custom_chart.py +30 -7
- wandb/proto/v3/wandb_internal_pb2.py +281 -280
- wandb/proto/v3/wandb_telemetry_pb2.py +4 -4
- wandb/proto/v4/wandb_internal_pb2.py +280 -280
- wandb/proto/v4/wandb_telemetry_pb2.py +4 -4
- wandb/proto/v5/wandb_internal_pb2.py +280 -280
- wandb/proto/v5/wandb_telemetry_pb2.py +4 -4
- wandb/proto/v6/wandb_internal_pb2.py +280 -280
- wandb/proto/v6/wandb_telemetry_pb2.py +4 -4
- wandb/proto/wandb_deprecated.py +6 -0
- wandb/sdk/artifacts/_factories.py +17 -0
- wandb/sdk/artifacts/_generated/__init__.py +221 -13
- wandb/sdk/artifacts/_generated/artifact_by_id.py +17 -0
- wandb/sdk/artifacts/_generated/artifact_by_name.py +22 -0
- wandb/sdk/artifacts/_generated/artifact_collection_membership_file_urls.py +43 -0
- wandb/sdk/artifacts/_generated/artifact_created_by.py +47 -0
- wandb/sdk/artifacts/_generated/artifact_file_urls.py +22 -0
- wandb/sdk/artifacts/_generated/artifact_type.py +31 -0
- wandb/sdk/artifacts/_generated/artifact_used_by.py +43 -0
- wandb/sdk/artifacts/_generated/artifact_via_membership_by_name.py +26 -0
- wandb/sdk/artifacts/_generated/delete_artifact.py +28 -0
- wandb/sdk/artifacts/_generated/enums.py +5 -0
- wandb/sdk/artifacts/_generated/fetch_artifact_manifest.py +38 -0
- wandb/sdk/artifacts/_generated/fetch_registries.py +32 -0
- wandb/sdk/artifacts/_generated/fragments.py +279 -41
- wandb/sdk/artifacts/_generated/link_artifact.py +6 -0
- wandb/sdk/artifacts/_generated/operations.py +654 -51
- wandb/sdk/artifacts/_generated/registry_collections.py +34 -0
- wandb/sdk/artifacts/_generated/registry_versions.py +34 -0
- wandb/sdk/artifacts/_generated/unlink_artifact.py +25 -0
- wandb/sdk/artifacts/_graphql_fragments.py +3 -86
- wandb/sdk/artifacts/_internal_artifact.py +19 -8
- wandb/sdk/artifacts/_validators.py +14 -4
- wandb/sdk/artifacts/artifact.py +512 -618
- wandb/sdk/artifacts/artifact_file_cache.py +10 -6
- wandb/sdk/artifacts/artifact_manifest.py +10 -9
- wandb/sdk/artifacts/artifact_manifest_entry.py +9 -10
- wandb/sdk/artifacts/artifact_manifests/artifact_manifest_v1.py +5 -3
- wandb/sdk/artifacts/storage_handlers/http_handler.py +1 -1
- wandb/sdk/artifacts/storage_handlers/s3_handler.py +1 -1
- wandb/sdk/artifacts/storage_policies/wandb_storage_policy.py +1 -1
- wandb/sdk/data_types/audio.py +38 -10
- wandb/sdk/data_types/base_types/media.py +6 -56
- wandb/sdk/data_types/graph.py +48 -14
- wandb/sdk/data_types/helper_types/bounding_boxes_2d.py +1 -3
- wandb/sdk/data_types/helper_types/image_mask.py +1 -3
- wandb/sdk/data_types/histogram.py +34 -21
- wandb/sdk/data_types/html.py +35 -12
- wandb/sdk/data_types/image.py +104 -68
- wandb/sdk/data_types/molecule.py +32 -19
- wandb/sdk/data_types/object_3d.py +36 -17
- wandb/sdk/data_types/plotly.py +18 -5
- wandb/sdk/data_types/saved_model.py +4 -6
- wandb/sdk/data_types/table.py +59 -30
- wandb/sdk/data_types/video.py +53 -26
- wandb/sdk/integration_utils/auto_logging.py +2 -2
- wandb/sdk/interface/interface_queue.py +1 -4
- wandb/sdk/interface/interface_shared.py +26 -37
- wandb/sdk/interface/interface_sock.py +24 -14
- wandb/sdk/internal/internal_api.py +6 -0
- wandb/sdk/internal/job_builder.py +6 -0
- wandb/sdk/internal/settings_static.py +2 -3
- wandb/sdk/launch/agent/agent.py +8 -1
- wandb/sdk/launch/agent/run_queue_item_file_saver.py +2 -2
- wandb/sdk/launch/create_job.py +15 -2
- wandb/sdk/launch/inputs/internal.py +3 -4
- wandb/sdk/launch/inputs/schema.py +1 -0
- wandb/sdk/launch/runner/kubernetes_monitor.py +1 -0
- wandb/sdk/launch/runner/kubernetes_runner.py +323 -1
- wandb/sdk/launch/sweeps/scheduler.py +2 -3
- wandb/sdk/lib/asyncio_compat.py +19 -16
- wandb/sdk/lib/asyncio_manager.py +252 -0
- wandb/sdk/lib/deprecate.py +1 -7
- wandb/sdk/lib/disabled.py +1 -1
- wandb/sdk/lib/hashutil.py +27 -5
- wandb/sdk/lib/module.py +7 -13
- wandb/sdk/lib/printer.py +2 -2
- wandb/sdk/lib/printer_asyncio.py +3 -1
- wandb/sdk/lib/progress.py +0 -19
- wandb/sdk/lib/retry.py +185 -78
- wandb/sdk/lib/service/service_client.py +106 -0
- wandb/sdk/lib/service/service_connection.py +20 -26
- wandb/sdk/lib/service/service_token.py +30 -13
- wandb/sdk/mailbox/mailbox.py +13 -5
- wandb/sdk/mailbox/mailbox_handle.py +22 -13
- wandb/sdk/mailbox/response_handle.py +42 -106
- wandb/sdk/mailbox/wait_with_progress.py +7 -42
- wandb/sdk/wandb_init.py +77 -116
- wandb/sdk/wandb_login.py +19 -15
- wandb/sdk/wandb_metric.py +2 -0
- wandb/sdk/wandb_run.py +497 -469
- wandb/sdk/wandb_settings.py +145 -4
- wandb/sdk/wandb_setup.py +204 -124
- wandb/sdk/wandb_sweep.py +14 -13
- wandb/sdk/wandb_watch.py +4 -6
- wandb/sync/sync.py +10 -0
- wandb/util.py +58 -1
- wandb/wandb_run.py +1 -2
- {wandb-0.21.0.dist-info → wandb-0.21.2.dist-info}/METADATA +1 -1
- {wandb-0.21.0.dist-info → wandb-0.21.2.dist-info}/RECORD +145 -129
- wandb/sdk/interface/interface_relay.py +0 -38
- wandb/sdk/interface/router.py +0 -89
- wandb/sdk/interface/router_queue.py +0 -43
- wandb/sdk/interface/router_relay.py +0 -50
- wandb/sdk/interface/router_sock.py +0 -32
- wandb/sdk/lib/sock_client.py +0 -236
- wandb/vendor/pynvml/__init__.py +0 -0
- wandb/vendor/pynvml/pynvml.py +0 -4779
- {wandb-0.21.0.dist-info → wandb-0.21.2.dist-info}/WHEEL +0 -0
- {wandb-0.21.0.dist-info → wandb-0.21.2.dist-info}/entry_points.txt +0 -0
- {wandb-0.21.0.dist-info → wandb-0.21.2.dist-info}/licenses/LICENSE +0 -0
@@ -1,19 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
See interface.py for how interface classes relate to each other.
|
4
|
-
|
5
|
-
"""
|
1
|
+
from __future__ import annotations
|
6
2
|
|
7
3
|
import logging
|
8
|
-
from typing import TYPE_CHECKING, Any
|
4
|
+
from typing import TYPE_CHECKING, Any
|
5
|
+
|
6
|
+
from typing_extensions import override
|
9
7
|
|
10
|
-
from wandb.
|
8
|
+
from wandb.proto import wandb_server_pb2 as spb
|
11
9
|
|
12
|
-
from ..lib.sock_client import SockClient
|
13
10
|
from .interface_shared import InterfaceShared
|
14
11
|
|
15
12
|
if TYPE_CHECKING:
|
16
13
|
from wandb.proto import wandb_internal_pb2 as pb
|
14
|
+
from wandb.sdk.lib.service.service_client import ServiceClient
|
15
|
+
from wandb.sdk.mailbox import MailboxHandle
|
17
16
|
|
18
17
|
|
19
18
|
logger = logging.getLogger("wandb")
|
@@ -22,18 +21,29 @@ logger = logging.getLogger("wandb")
|
|
22
21
|
class InterfaceSock(InterfaceShared):
|
23
22
|
def __init__(
|
24
23
|
self,
|
25
|
-
|
26
|
-
mailbox: Mailbox,
|
24
|
+
client: ServiceClient,
|
27
25
|
stream_id: str,
|
28
26
|
) -> None:
|
29
|
-
super().__init__(
|
30
|
-
self.
|
27
|
+
super().__init__()
|
28
|
+
self._client = client
|
31
29
|
self._stream_id = stream_id
|
32
30
|
|
33
31
|
def _assign(self, record: Any) -> None:
|
34
32
|
assert self._stream_id
|
35
33
|
record._info.stream_id = self._stream_id
|
36
34
|
|
37
|
-
|
35
|
+
@override
|
36
|
+
def _publish(self, record: pb.Record, local: bool | None = None) -> None:
|
38
37
|
self._assign(record)
|
39
|
-
|
38
|
+
request = spb.ServerRequest()
|
39
|
+
request.record_publish.CopyFrom(record)
|
40
|
+
self._client.publish(request)
|
41
|
+
|
42
|
+
@override
|
43
|
+
def _deliver(self, record: pb.Record) -> MailboxHandle[pb.Result]:
|
44
|
+
self._assign(record)
|
45
|
+
request = spb.ServerRequest()
|
46
|
+
request.record_publish.CopyFrom(record)
|
47
|
+
|
48
|
+
handle = self._client.deliver(request)
|
49
|
+
return handle.map(lambda response: response.result_communicate)
|
@@ -284,6 +284,7 @@ class Api:
|
|
284
284
|
self._extra_http_headers.update(_thread_local_api_settings.headers or {})
|
285
285
|
|
286
286
|
auth = None
|
287
|
+
api_key = api_key or self.default_settings.get("api_key")
|
287
288
|
if api_key:
|
288
289
|
auth = ("api", api_key)
|
289
290
|
elif self.access_token is not None:
|
@@ -3234,6 +3235,7 @@ class Api:
|
|
3234
3235
|
entity: Optional[str] = None,
|
3235
3236
|
state: Optional[str] = None,
|
3236
3237
|
prior_runs: Optional[List[str]] = None,
|
3238
|
+
display_name: Optional[str] = None,
|
3237
3239
|
template_variable_values: Optional[Dict[str, Any]] = None,
|
3238
3240
|
) -> Tuple[str, List[str]]:
|
3239
3241
|
"""Upsert a sweep object.
|
@@ -3248,6 +3250,7 @@ class Api:
|
|
3248
3250
|
entity (str): entity to use
|
3249
3251
|
state (str): state
|
3250
3252
|
prior_runs (list): IDs of existing runs to add to the sweep
|
3253
|
+
display_name (str): display name for the sweep
|
3251
3254
|
template_variable_values (dict): template variable values
|
3252
3255
|
"""
|
3253
3256
|
project_query = """
|
@@ -3271,6 +3274,7 @@ class Api:
|
|
3271
3274
|
$scheduler: JSONString,
|
3272
3275
|
$state: String,
|
3273
3276
|
$priorRunsFilters: JSONString,
|
3277
|
+
$displayName: String,
|
3274
3278
|
) {
|
3275
3279
|
upsertSweep(input: {
|
3276
3280
|
id: $id,
|
@@ -3282,6 +3286,7 @@ class Api:
|
|
3282
3286
|
scheduler: $scheduler,
|
3283
3287
|
state: $state,
|
3284
3288
|
priorRunsFilters: $priorRunsFilters,
|
3289
|
+
displayName: $displayName,
|
3285
3290
|
}) {
|
3286
3291
|
sweep {
|
3287
3292
|
name
|
@@ -3358,6 +3363,7 @@ class Api:
|
|
3358
3363
|
"templateVariableValues": json.dumps(template_variable_values),
|
3359
3364
|
"scheduler": scheduler,
|
3360
3365
|
"priorRunsFilters": filters,
|
3366
|
+
"displayName": display_name,
|
3361
3367
|
}
|
3362
3368
|
if state:
|
3363
3369
|
variables["state"] = state
|
@@ -109,6 +109,7 @@ class JobSourceDict(TypedDict, total=False):
|
|
109
109
|
input_types: Dict[str, Any]
|
110
110
|
output_types: Dict[str, Any]
|
111
111
|
runtime: Optional[str]
|
112
|
+
services: Dict[str, str]
|
112
113
|
|
113
114
|
|
114
115
|
class ArtifactInfoForJob(TypedDict):
|
@@ -143,6 +144,7 @@ class JobBuilder:
|
|
143
144
|
_job_version_alias: Optional[str]
|
144
145
|
_is_notebook_run: bool
|
145
146
|
_verbose: bool
|
147
|
+
_services: Dict[str, str]
|
146
148
|
|
147
149
|
def __init__(self, settings: SettingsStatic, verbose: bool = False):
|
148
150
|
self._settings = settings
|
@@ -162,6 +164,7 @@ class JobBuilder:
|
|
162
164
|
self._is_notebook_run = self._get_is_notebook_run()
|
163
165
|
self._verbose = verbose
|
164
166
|
self._partial = False
|
167
|
+
self._services = {}
|
165
168
|
|
166
169
|
def set_config(self, config: Dict[str, Any]) -> None:
|
167
170
|
self._config = config
|
@@ -544,6 +547,9 @@ class JobBuilder:
|
|
544
547
|
"runtime": runtime,
|
545
548
|
}
|
546
549
|
|
550
|
+
if self._services:
|
551
|
+
source_info["services"] = self._services
|
552
|
+
|
547
553
|
assert source_info is not None
|
548
554
|
assert name is not None
|
549
555
|
|
@@ -4,7 +4,7 @@ from typing import Any, Iterable
|
|
4
4
|
|
5
5
|
from wandb.proto import wandb_settings_pb2
|
6
6
|
from wandb.sdk.lib import RunMoment
|
7
|
-
from wandb.sdk.wandb_settings import Settings
|
7
|
+
from wandb.sdk.wandb_settings import CLIENT_ONLY_SETTINGS, Settings
|
8
8
|
|
9
9
|
|
10
10
|
class SettingsStatic(Settings):
|
@@ -41,8 +41,7 @@ class SettingsStatic(Settings):
|
|
41
41
|
|
42
42
|
forks_specified: list[str] = []
|
43
43
|
for key in fields:
|
44
|
-
|
45
|
-
if key in ("reinit",):
|
44
|
+
if key in CLIENT_ONLY_SETTINGS:
|
46
45
|
continue
|
47
46
|
|
48
47
|
value: Any = None
|
wandb/sdk/launch/agent/agent.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
"""Implementation of launch agent."""
|
2
2
|
|
3
3
|
import asyncio
|
4
|
+
import copy
|
4
5
|
import logging
|
5
6
|
import os
|
6
7
|
import pprint
|
@@ -421,6 +422,7 @@ class LaunchAgent:
|
|
421
422
|
"""Removes the job from our list for now."""
|
422
423
|
with self._jobs_lock:
|
423
424
|
job_and_run_status = self._jobs[thread_id]
|
425
|
+
|
424
426
|
if (
|
425
427
|
job_and_run_status.entity is not None
|
426
428
|
and job_and_run_status.entity != self._entity
|
@@ -516,7 +518,11 @@ class LaunchAgent:
|
|
516
518
|
Arguments:
|
517
519
|
job: Job to run.
|
518
520
|
"""
|
519
|
-
|
521
|
+
job_copy = copy.deepcopy(job)
|
522
|
+
if "runSpec" in job_copy and "_wandb_api_key" in job_copy["runSpec"]:
|
523
|
+
job_copy["runSpec"]["_wandb_api_key"] = "<redacted>"
|
524
|
+
|
525
|
+
_msg = f"{LOG_PREFIX}Launch agent received job:\n{pprint.pformat(job_copy)}\n"
|
520
526
|
wandb.termlog(_msg)
|
521
527
|
_logger.info(_msg)
|
522
528
|
# update agent status
|
@@ -727,6 +733,7 @@ class LaunchAgent:
|
|
727
733
|
backend = loader.runner_from_config(
|
728
734
|
resource, api, backend_config, environment, registry
|
729
735
|
)
|
736
|
+
|
730
737
|
if not (
|
731
738
|
project.docker_image
|
732
739
|
or project.job_base_image
|
@@ -11,7 +11,7 @@ FileSubtypes = Literal["warning", "error"]
|
|
11
11
|
class RunQueueItemFileSaver:
|
12
12
|
def __init__(
|
13
13
|
self,
|
14
|
-
agent_run: Optional["wandb.
|
14
|
+
agent_run: Optional["wandb.Run"],
|
15
15
|
run_queue_item_id: str,
|
16
16
|
):
|
17
17
|
self.run_queue_item_id = run_queue_item_id
|
@@ -20,7 +20,7 @@ class RunQueueItemFileSaver:
|
|
20
20
|
def save_contents(
|
21
21
|
self, contents: str, fname: str, file_sub_type: FileSubtypes
|
22
22
|
) -> Optional[List[str]]:
|
23
|
-
if not isinstance(self.run, wandb.
|
23
|
+
if not isinstance(self.run, wandb.Run):
|
24
24
|
wandb.termwarn("Not saving file contents because agent has no run")
|
25
25
|
return None
|
26
26
|
root_dir = self.run._settings.files_dir
|
wandb/sdk/launch/create_job.py
CHANGED
@@ -11,6 +11,7 @@ from wandb.apis.internal import Api
|
|
11
11
|
from wandb.sdk.artifacts.artifact import Artifact
|
12
12
|
from wandb.sdk.internal.job_builder import JobBuilder
|
13
13
|
from wandb.sdk.launch.git_reference import GitReference
|
14
|
+
from wandb.sdk.launch.inputs.internal import _validate_schema
|
14
15
|
from wandb.sdk.launch.utils import (
|
15
16
|
_is_git_uri,
|
16
17
|
get_current_python_version,
|
@@ -115,6 +116,8 @@ def _create_job(
|
|
115
116
|
build_context: Optional[str] = None,
|
116
117
|
dockerfile: Optional[str] = None,
|
117
118
|
base_image: Optional[str] = None,
|
119
|
+
services: Optional[Dict[str, str]] = None,
|
120
|
+
schema: Optional[Dict[str, Any]] = None,
|
118
121
|
) -> Tuple[Optional[Artifact], str, List[str]]:
|
119
122
|
wandb.termlog(f"Creating launch job of type: {job_type}...")
|
120
123
|
|
@@ -169,6 +172,7 @@ def _create_job(
|
|
169
172
|
|
170
173
|
job_builder = _configure_job_builder_for_partial(tempdir.name, job_source=job_type)
|
171
174
|
job_builder._settings.job_name = name
|
175
|
+
job_builder._services = services or {}
|
172
176
|
if job_type == "code":
|
173
177
|
assert entrypoint is not None
|
174
178
|
job_name = _make_code_artifact(
|
@@ -204,6 +208,15 @@ def _create_job(
|
|
204
208
|
if "latest" not in aliases:
|
205
209
|
aliases += ["latest"]
|
206
210
|
|
211
|
+
metadata = {"_partial": True}
|
212
|
+
if schema:
|
213
|
+
_validate_schema(schema)
|
214
|
+
metadata = {
|
215
|
+
"input_schemas": {
|
216
|
+
"@wandb.config": schema,
|
217
|
+
}
|
218
|
+
}
|
219
|
+
|
207
220
|
res, _ = api.create_artifact(
|
208
221
|
artifact_type_name="job",
|
209
222
|
artifact_collection_name=name,
|
@@ -214,7 +227,7 @@ def _create_job(
|
|
214
227
|
project_name=project,
|
215
228
|
run_name=run.id, # type: ignore # run will be deleted after creation
|
216
229
|
description=description,
|
217
|
-
metadata=
|
230
|
+
metadata=metadata,
|
218
231
|
is_user_created=True,
|
219
232
|
aliases=[{"artifactCollectionName": name, "alias": a} for a in aliases],
|
220
233
|
)
|
@@ -421,7 +434,7 @@ def _configure_job_builder_for_partial(tmpdir: str, job_source: str) -> JobBuild
|
|
421
434
|
def _make_code_artifact(
|
422
435
|
api: Api,
|
423
436
|
job_builder: JobBuilder,
|
424
|
-
run: "wandb.
|
437
|
+
run: "wandb.Run",
|
425
438
|
path: str,
|
426
439
|
entrypoint: str,
|
427
440
|
entity: Optional[str],
|
@@ -17,7 +17,6 @@ import wandb
|
|
17
17
|
import wandb.data_types
|
18
18
|
from wandb.sdk.launch.errors import LaunchError
|
19
19
|
from wandb.sdk.launch.inputs.schema import META_SCHEMA
|
20
|
-
from wandb.sdk.wandb_run import Run
|
21
20
|
from wandb.util import get_module
|
22
21
|
|
23
22
|
from .files import config_path_is_valid, override_file
|
@@ -93,7 +92,7 @@ class StagedLaunchInputs:
|
|
93
92
|
):
|
94
93
|
self._staged_inputs.append(input_arguments)
|
95
94
|
|
96
|
-
def apply(self, run: Run):
|
95
|
+
def apply(self, run: wandb.Run):
|
97
96
|
"""Apply the staged inputs to the given run."""
|
98
97
|
for input in self._staged_inputs:
|
99
98
|
_publish_job_input(input, run)
|
@@ -101,13 +100,13 @@ class StagedLaunchInputs:
|
|
101
100
|
|
102
101
|
def _publish_job_input(
|
103
102
|
input: JobInputArguments,
|
104
|
-
run: Run,
|
103
|
+
run: wandb.Run,
|
105
104
|
) -> None:
|
106
105
|
"""Publish a job input to the backend interface of the given run.
|
107
106
|
|
108
107
|
Arguments:
|
109
108
|
input (JobInputArguments): The arguments for the job input.
|
110
|
-
run (Run): The run to publish the job input to.
|
109
|
+
run (wandb.Run): The run to publish the job input to.
|
111
110
|
"""
|
112
111
|
assert run._backend is not None
|
113
112
|
assert run._backend.interface is not None
|
@@ -7,6 +7,7 @@ META_SCHEMA = {
|
|
7
7
|
},
|
8
8
|
"title": {"type": "string"},
|
9
9
|
"description": {"type": "string"},
|
10
|
+
"format": {"type": "string"},
|
10
11
|
"enum": {"type": "array", "items": {"type": ["integer", "number", "string"]}},
|
11
12
|
"properties": {"type": "object", "patternProperties": {".*": {"$ref": "#"}}},
|
12
13
|
"allOf": {"type": "array", "items": {"$ref": "#"}},
|
@@ -27,6 +27,7 @@ WANDB_K8S_LABEL_NAMESPACE = "wandb.ai"
|
|
27
27
|
WANDB_K8S_RUN_ID = f"{WANDB_K8S_LABEL_NAMESPACE}/run-id"
|
28
28
|
WANDB_K8S_LABEL_AGENT = f"{WANDB_K8S_LABEL_NAMESPACE}/agent"
|
29
29
|
WANDB_K8S_LABEL_MONITOR = f"{WANDB_K8S_LABEL_NAMESPACE}/monitor"
|
30
|
+
WANDB_K8S_LABEL_AUXILIARY_RESOURCE = f"{WANDB_K8S_LABEL_NAMESPACE}/auxiliary-resource"
|
30
31
|
|
31
32
|
|
32
33
|
class Resources:
|