wandb 0.17.5__py3-none-win_amd64.whl → 0.17.7__py3-none-win_amd64.whl
Sign up to get free protection for your applications and to get access to all the features.
- wandb/__init__.py +5 -16
- wandb/agents/pyagent.py +1 -2
- wandb/apis/public/api.py +1 -1
- wandb/apis/public/jobs.py +5 -0
- wandb/bin/wandb-core +0 -0
- wandb/cli/cli.py +21 -0
- wandb/data_types.py +5 -4
- wandb/env.py +6 -0
- wandb/integration/kfp/wandb_logging.py +1 -1
- wandb/integration/lightning/fabric/logger.py +5 -5
- wandb/integration/openai/fine_tuning.py +13 -5
- wandb/integration/ultralytics/pose_utils.py +0 -1
- wandb/proto/v3/wandb_internal_pb2.py +226 -226
- wandb/proto/v3/wandb_settings_pb2.py +1 -1
- wandb/proto/v3/wandb_telemetry_pb2.py +10 -10
- wandb/proto/v4/wandb_internal_pb2.py +226 -226
- wandb/proto/v4/wandb_settings_pb2.py +1 -1
- wandb/proto/v4/wandb_telemetry_pb2.py +10 -10
- wandb/proto/v5/wandb_internal_pb2.py +226 -226
- wandb/proto/v5/wandb_settings_pb2.py +1 -1
- wandb/proto/v5/wandb_telemetry_pb2.py +10 -10
- wandb/proto/wandb_deprecated.py +4 -0
- wandb/proto/wandb_internal_pb2.py +6 -0
- wandb/sdk/artifacts/artifact.py +6 -1
- wandb/sdk/artifacts/artifact_manifest_entry.py +31 -0
- wandb/sdk/artifacts/storage_handlers/azure_handler.py +35 -23
- wandb/sdk/data_types/_dtypes.py +5 -5
- wandb/sdk/data_types/base_types/media.py +3 -1
- wandb/sdk/data_types/helper_types/bounding_boxes_2d.py +3 -1
- wandb/sdk/data_types/helper_types/image_mask.py +3 -1
- wandb/sdk/data_types/image.py +3 -1
- wandb/sdk/data_types/object_3d.py +113 -2
- wandb/sdk/data_types/saved_model.py +3 -1
- wandb/sdk/interface/interface.py +40 -16
- wandb/sdk/interface/interface_shared.py +6 -9
- wandb/sdk/internal/datastore.py +1 -1
- wandb/sdk/internal/handler.py +0 -2
- wandb/sdk/internal/internal.py +1 -1
- wandb/sdk/internal/job_builder.py +5 -2
- wandb/sdk/internal/sender.py +31 -15
- wandb/sdk/internal/tb_watcher.py +2 -2
- wandb/sdk/internal/update.py +2 -2
- wandb/sdk/launch/_launch.py +4 -2
- wandb/sdk/launch/_project_spec.py +34 -8
- wandb/sdk/launch/agent/agent.py +6 -2
- wandb/sdk/launch/agent/run_queue_item_file_saver.py +2 -4
- wandb/sdk/launch/builder/build.py +4 -2
- wandb/sdk/launch/builder/kaniko_builder.py +13 -5
- wandb/sdk/launch/builder/templates/_wandb_bootstrap.py +2 -1
- wandb/sdk/launch/create_job.py +2 -0
- wandb/sdk/launch/inputs/internal.py +42 -28
- wandb/sdk/launch/inputs/schema.py +39 -0
- wandb/sdk/launch/runner/kubernetes_runner.py +72 -0
- wandb/sdk/launch/runner/local_container.py +13 -10
- wandb/sdk/launch/runner/sagemaker_runner.py +3 -5
- wandb/sdk/launch/utils.py +2 -0
- wandb/sdk/lib/apikey.py +1 -1
- wandb/sdk/lib/disabled.py +13 -174
- wandb/sdk/service/streams.py +2 -4
- wandb/sdk/wandb_config.py +1 -1
- wandb/sdk/wandb_init.py +77 -33
- wandb/sdk/wandb_login.py +6 -6
- wandb/sdk/wandb_run.py +150 -90
- wandb/sdk/wandb_settings.py +4 -3
- wandb/sdk/wandb_setup.py +66 -3
- wandb/sdk/wandb_sweep.py +5 -2
- wandb/wandb_agent.py +2 -0
- {wandb-0.17.5.dist-info → wandb-0.17.7.dist-info}/METADATA +3 -2
- {wandb-0.17.5.dist-info → wandb-0.17.7.dist-info}/RECORD +72 -71
- {wandb-0.17.5.dist-info → wandb-0.17.7.dist-info}/WHEEL +0 -0
- {wandb-0.17.5.dist-info → wandb-0.17.7.dist-info}/entry_points.txt +0 -0
- {wandb-0.17.5.dist-info → wandb-0.17.7.dist-info}/licenses/LICENSE +0 -0
wandb/sdk/wandb_init.py
CHANGED
@@ -15,6 +15,7 @@ import os
|
|
15
15
|
import platform
|
16
16
|
import sys
|
17
17
|
import tempfile
|
18
|
+
import time
|
18
19
|
from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence, Union
|
19
20
|
|
20
21
|
import wandb
|
@@ -30,15 +31,7 @@ from wandb.util import _is_artifact_representation
|
|
30
31
|
|
31
32
|
from . import wandb_login, wandb_setup
|
32
33
|
from .backend.backend import Backend
|
33
|
-
from .lib import
|
34
|
-
RunDisabled,
|
35
|
-
SummaryDisabled,
|
36
|
-
filesystem,
|
37
|
-
ipython,
|
38
|
-
module,
|
39
|
-
reporting,
|
40
|
-
telemetry,
|
41
|
-
)
|
34
|
+
from .lib import SummaryDisabled, filesystem, ipython, module, reporting, telemetry
|
42
35
|
from .lib.deprecate import Deprecated, deprecate
|
43
36
|
from .lib.mailbox import Mailbox, MailboxProgress
|
44
37
|
from .lib.printer import Printer, get_printer
|
@@ -182,7 +175,9 @@ class _WandbInit:
|
|
182
175
|
# we add this logic to be backward compatible with the old behavior of disable
|
183
176
|
# where it would disable the service if the mode was set to disabled
|
184
177
|
mode = kwargs.get("mode")
|
185
|
-
settings_mode = (kwargs.get("settings") or {}).get("mode")
|
178
|
+
settings_mode = (kwargs.get("settings") or {}).get("mode") or os.environ.get(
|
179
|
+
"WANDB_MODE"
|
180
|
+
)
|
186
181
|
_disable_service = mode == "disabled" or settings_mode == "disabled"
|
187
182
|
setup_settings = {"_disable_service": _disable_service}
|
188
183
|
|
@@ -270,7 +265,7 @@ class _WandbInit:
|
|
270
265
|
|
271
266
|
monitor_gym = kwargs.pop("monitor_gym", None)
|
272
267
|
if monitor_gym and len(wandb.patched["gym"]) == 0:
|
273
|
-
wandb.gym.monitor()
|
268
|
+
wandb.gym.monitor() # type: ignore
|
274
269
|
|
275
270
|
if wandb.patched["tensorboard"]:
|
276
271
|
with telemetry.context(obj=self._init_telemetry_obj) as tel:
|
@@ -279,7 +274,7 @@ class _WandbInit:
|
|
279
274
|
tensorboard = kwargs.pop("tensorboard", None)
|
280
275
|
sync_tensorboard = kwargs.pop("sync_tensorboard", None)
|
281
276
|
if tensorboard or sync_tensorboard and len(wandb.patched["tensorboard"]) == 0:
|
282
|
-
wandb.tensorboard.patch()
|
277
|
+
wandb.tensorboard.patch() # type: ignore
|
283
278
|
with telemetry.context(obj=self._init_telemetry_obj) as tel:
|
284
279
|
tel.feature.tensorboard_sync = True
|
285
280
|
|
@@ -467,7 +462,7 @@ class _WandbInit:
|
|
467
462
|
|
468
463
|
def _jupyter_setup(self, settings: Settings) -> None:
|
469
464
|
"""Add hooks, and session history saving."""
|
470
|
-
self.notebook = wandb.jupyter.Notebook(settings)
|
465
|
+
self.notebook = wandb.jupyter.Notebook(settings) # type: ignore
|
471
466
|
ipython = self.notebook.shell
|
472
467
|
|
473
468
|
# Monkey patch ipython publish to capture displayed outputs
|
@@ -529,20 +524,63 @@ class _WandbInit:
|
|
529
524
|
logger.info(f"Logging user logs to {settings.log_user}")
|
530
525
|
logger.info(f"Logging internal logs to {settings.log_internal}")
|
531
526
|
|
532
|
-
def _make_run_disabled(self) ->
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
drun
|
543
|
-
|
544
|
-
drun.
|
545
|
-
drun.
|
527
|
+
def _make_run_disabled(self) -> Run:
|
528
|
+
"""Returns a Run-like object where all methods are no-ops.
|
529
|
+
|
530
|
+
This method is used when wandb.init(mode="disabled") is called or WANDB_MODE=disabled
|
531
|
+
is set. It creates a Run object that mimics the behavior of a normal Run but doesn't
|
532
|
+
communicate with the W&B servers.
|
533
|
+
|
534
|
+
The returned Run object has all expected attributes and methods, but they are
|
535
|
+
no-op versions that don't perform any actual logging or communication.
|
536
|
+
"""
|
537
|
+
drun = Run(settings=Settings(mode="disabled", files_dir=tempfile.gettempdir()))
|
538
|
+
# config and summary objects
|
539
|
+
drun._config = wandb.sdk.wandb_config.Config()
|
540
|
+
drun._config.update(self.sweep_config)
|
541
|
+
drun._config.update(self.config)
|
542
|
+
drun.summary = SummaryDisabled() # type: ignore
|
543
|
+
# methods
|
544
|
+
drun.log = lambda data, *_, **__: drun.summary.update(data) # type: ignore
|
545
|
+
drun.finish = lambda *_, **__: module.unset_globals() # type: ignore
|
546
|
+
drun.join = drun.finish # type: ignore
|
547
|
+
drun.define_metric = lambda *_, **__: wandb.sdk.wandb_metric.Metric("dummy") # type: ignore
|
548
|
+
drun.save = lambda *_, **__: False # type: ignore
|
549
|
+
for symbol in (
|
550
|
+
"alert",
|
551
|
+
"finish_artifact",
|
552
|
+
"get_project_url",
|
553
|
+
"get_sweep_url",
|
554
|
+
"get_url",
|
555
|
+
"link_artifact",
|
556
|
+
"link_model",
|
557
|
+
"use_artifact",
|
558
|
+
"log_artifact",
|
559
|
+
"log_code",
|
560
|
+
"log_model",
|
561
|
+
"use_model",
|
562
|
+
"mark_preempting",
|
563
|
+
"plot_table",
|
564
|
+
"restore",
|
565
|
+
"status",
|
566
|
+
"watch",
|
567
|
+
"unwatch",
|
568
|
+
"upsert_artifact",
|
569
|
+
):
|
570
|
+
setattr(drun, symbol, lambda *_, **__: None) # type: ignore
|
571
|
+
# attributes
|
572
|
+
drun._step = 0
|
573
|
+
drun._attach_id = None
|
574
|
+
drun._run_obj = None
|
575
|
+
drun._run_id = runid.generate_id()
|
576
|
+
drun._name = "dummy-" + drun.id
|
577
|
+
drun._project = "dummy"
|
578
|
+
drun._entity = "dummy"
|
579
|
+
drun._tags = tuple()
|
580
|
+
drun._notes = None
|
581
|
+
drun._group = None
|
582
|
+
drun._start_time = time.time()
|
583
|
+
drun._starting_step = 0
|
546
584
|
module.set_global(
|
547
585
|
run=drun,
|
548
586
|
config=drun.config,
|
@@ -563,7 +601,7 @@ class _WandbInit:
|
|
563
601
|
percent_done = handle.percent_done
|
564
602
|
self.printer.progress_update(line, percent_done=percent_done)
|
565
603
|
|
566
|
-
def init(self) ->
|
604
|
+
def init(self) -> Run: # noqa: C901
|
567
605
|
if logger is None:
|
568
606
|
raise RuntimeError("Logger not initialized")
|
569
607
|
logger.info("calling init triggers")
|
@@ -700,6 +738,12 @@ class _WandbInit:
|
|
700
738
|
tel.feature.flow_control_custom = True
|
701
739
|
if self.settings._require_core:
|
702
740
|
tel.feature.core = True
|
741
|
+
if self.settings._shared:
|
742
|
+
wandb.termwarn(
|
743
|
+
"The `_shared` feature is experimental and may change. "
|
744
|
+
"Please contact support@wandb.com for guidance and to report any issues."
|
745
|
+
)
|
746
|
+
tel.feature.shared_mode = True
|
703
747
|
|
704
748
|
tel.env.maybe_mp = _maybe_mp_process(backend)
|
705
749
|
|
@@ -853,7 +897,7 @@ def _attach(
|
|
853
897
|
run_id: Optional[str] = None,
|
854
898
|
*,
|
855
899
|
run: Optional["Run"] = None,
|
856
|
-
) ->
|
900
|
+
) -> Optional[Run]:
|
857
901
|
"""Attach to a run currently executing in another process/thread.
|
858
902
|
|
859
903
|
Arguments:
|
@@ -872,7 +916,7 @@ def _attach(
|
|
872
916
|
raise UsageError(
|
873
917
|
"Either `attach_id` or `run_id` must be specified or `run` must have `_attach_id`"
|
874
918
|
)
|
875
|
-
wandb._assert_is_user_process()
|
919
|
+
wandb._assert_is_user_process() # type: ignore
|
876
920
|
|
877
921
|
_wl = wandb_setup._setup()
|
878
922
|
assert _wl
|
@@ -907,7 +951,7 @@ def _attach(
|
|
907
951
|
if run is None:
|
908
952
|
run = Run(settings=settings)
|
909
953
|
else:
|
910
|
-
run._init(
|
954
|
+
run._init()
|
911
955
|
run._set_library(_wl)
|
912
956
|
run._set_backend(backend)
|
913
957
|
backend._hack_set_run(run)
|
@@ -957,7 +1001,7 @@ def init(
|
|
957
1001
|
fork_from: Optional[str] = None,
|
958
1002
|
resume_from: Optional[str] = None,
|
959
1003
|
settings: Union[Settings, Dict[str, Any], None] = None,
|
960
|
-
) ->
|
1004
|
+
) -> Run:
|
961
1005
|
r"""Start a new run to track and log to W&B.
|
962
1006
|
|
963
1007
|
In an ML training pipeline, you could add `wandb.init()`
|
@@ -1161,7 +1205,7 @@ def init(
|
|
1161
1205
|
Returns:
|
1162
1206
|
A `Run` object.
|
1163
1207
|
"""
|
1164
|
-
wandb._assert_is_user_process()
|
1208
|
+
wandb._assert_is_user_process() # type: ignore
|
1165
1209
|
|
1166
1210
|
kwargs = dict(locals())
|
1167
1211
|
|
wandb/sdk/wandb_login.py
CHANGED
@@ -54,16 +54,16 @@ def login(
|
|
54
54
|
) -> bool:
|
55
55
|
"""Set up W&B login credentials.
|
56
56
|
|
57
|
-
By default, this will only store
|
57
|
+
By default, this will only store credentials locally without
|
58
58
|
verifying them with the W&B server. To verify credentials, pass
|
59
|
-
verify=True
|
59
|
+
`verify=True`.
|
60
60
|
|
61
61
|
Arguments:
|
62
62
|
anonymous: (string, optional) Can be "must", "allow", or "never".
|
63
|
-
If set to "must"
|
64
|
-
"allow"
|
65
|
-
isn't already logged in.
|
66
|
-
|
63
|
+
If set to "must", always log a user in anonymously. If set to
|
64
|
+
"allow", only create an anonymous user if the user
|
65
|
+
isn't already logged in. If set to "never", never log a
|
66
|
+
user anonymously. Default set to "never".
|
67
67
|
relogin: (bool, optional) If true, will re-prompt for API key.
|
68
68
|
host: (string, optional) The host to connect to.
|
69
69
|
force: (bool, optional) If true, will force a relogin.
|