wandb 0.19.3__py3-none-any.whl → 0.19.4rc1__py3-none-any.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 +1 -1
- wandb/__init__.pyi +1 -1
- wandb/bin/gpu_stats +0 -0
- wandb/sdk/interface/interface.py +2 -8
- wandb/sdk/internal/tb_watcher.py +3 -1
- wandb/sdk/wandb_init.py +169 -91
- wandb/sdk/wandb_run.py +1 -12
- {wandb-0.19.3.dist-info → wandb-0.19.4rc1.dist-info}/METADATA +1 -1
- {wandb-0.19.3.dist-info → wandb-0.19.4rc1.dist-info}/RECORD +12 -12
- {wandb-0.19.3.dist-info → wandb-0.19.4rc1.dist-info}/WHEEL +0 -0
- {wandb-0.19.3.dist-info → wandb-0.19.4rc1.dist-info}/entry_points.txt +0 -0
- {wandb-0.19.3.dist-info → wandb-0.19.4rc1.dist-info}/licenses/LICENSE +0 -0
wandb/__init__.py
CHANGED
wandb/__init__.pyi
CHANGED
wandb/bin/gpu_stats
CHANGED
Binary file
|
wandb/sdk/interface/interface.py
CHANGED
@@ -10,7 +10,6 @@ InterfaceRelay: Responses are routed to a relay queue (not matching uuids)
|
|
10
10
|
|
11
11
|
import gzip
|
12
12
|
import logging
|
13
|
-
import os
|
14
13
|
import time
|
15
14
|
from abc import abstractmethod
|
16
15
|
from pathlib import Path
|
@@ -100,8 +99,6 @@ class InterfaceBase:
|
|
100
99
|
|
101
100
|
def _hack_set_run(self, run: "Run") -> None:
|
102
101
|
self._run = run
|
103
|
-
current_pid = os.getpid()
|
104
|
-
self._run._set_iface_pid(current_pid)
|
105
102
|
|
106
103
|
def publish_header(self) -> None:
|
107
104
|
header = pb.HeaderRecord()
|
@@ -653,15 +650,13 @@ class InterfaceBase:
|
|
653
650
|
|
654
651
|
def publish_partial_history(
|
655
652
|
self,
|
653
|
+
run: "Run",
|
656
654
|
data: dict,
|
657
655
|
user_step: int,
|
658
656
|
step: Optional[int] = None,
|
659
657
|
flush: Optional[bool] = None,
|
660
658
|
publish_step: bool = True,
|
661
|
-
run: Optional["Run"] = None,
|
662
659
|
) -> None:
|
663
|
-
run = run or self._run
|
664
|
-
|
665
660
|
data = history_dict_to_json(run, data, step=user_step, ignore_copy_err=True)
|
666
661
|
data.pop("_step", None)
|
667
662
|
|
@@ -688,12 +683,11 @@ class InterfaceBase:
|
|
688
683
|
|
689
684
|
def publish_history(
|
690
685
|
self,
|
686
|
+
run: "Run",
|
691
687
|
data: dict,
|
692
688
|
step: Optional[int] = None,
|
693
|
-
run: Optional["Run"] = None,
|
694
689
|
publish_step: bool = True,
|
695
690
|
) -> None:
|
696
|
-
run = run or self._run
|
697
691
|
data = history_dict_to_json(run, data, step=step)
|
698
692
|
history = pb.HistoryRecord()
|
699
693
|
if publish_step:
|
wandb/sdk/internal/tb_watcher.py
CHANGED
wandb/sdk/wandb_init.py
CHANGED
@@ -11,6 +11,7 @@ For more on using `wandb.init()`, including code snippets, check out our
|
|
11
11
|
from __future__ import annotations
|
12
12
|
|
13
13
|
import copy
|
14
|
+
import dataclasses
|
14
15
|
import json
|
15
16
|
import logging
|
16
17
|
import os
|
@@ -105,16 +106,40 @@ def _handle_launch_config(settings: Settings) -> dict[str, Any]:
|
|
105
106
|
return launch_run_config
|
106
107
|
|
107
108
|
|
108
|
-
|
109
|
-
|
109
|
+
@dataclasses.dataclass(frozen=True)
|
110
|
+
class _ConfigParts:
|
111
|
+
base_no_artifacts: dict[str, Any]
|
112
|
+
"""The run config passed to `init()` minus any artifact-valued keys."""
|
113
|
+
|
114
|
+
sweep_no_artifacts: dict[str, Any]
|
115
|
+
"""The config loaded as part of a sweep minus any artifact-valued keys."""
|
116
|
+
|
117
|
+
launch_no_artifacts: dict[str, Any]
|
118
|
+
"""The config loaded as part of Launch minus any artifact-valued keys."""
|
119
|
+
|
120
|
+
artifacts: dict[str, Any]
|
121
|
+
"""Artifact keys removed from config dictionaries.
|
122
|
+
|
123
|
+
Due to implementation details of how a Run is constructed,
|
124
|
+
artifacts must be inserted into its config after initialization.
|
125
|
+
"""
|
126
|
+
|
110
127
|
|
111
|
-
|
128
|
+
class _WandbInit:
|
129
|
+
def __init__(
|
130
|
+
self,
|
131
|
+
wl: wandb_setup._WandbSetup,
|
132
|
+
telemetry: telemetry.TelemetryRecord,
|
133
|
+
) -> None:
|
112
134
|
self._wl = wl
|
113
135
|
|
136
|
+
self._telemetry = telemetry
|
137
|
+
"""Telemetry gathered before creating a run.
|
138
|
+
|
139
|
+
After the run is created, `telemetry.context()` is used instead.
|
140
|
+
"""
|
141
|
+
|
114
142
|
self.kwargs = None
|
115
|
-
self.sweep_config: dict[str, Any] = {}
|
116
|
-
self.launch_config: dict[str, Any] = {}
|
117
|
-
self.config: dict[str, Any] = {}
|
118
143
|
self.run: Run | None = None
|
119
144
|
self.backend: Backend | None = None
|
120
145
|
|
@@ -122,8 +147,6 @@ class _WandbInit:
|
|
122
147
|
self.notebook: wandb.jupyter.Notebook | None = None # type: ignore
|
123
148
|
self.printer = printer.new_printer()
|
124
149
|
|
125
|
-
self._init_telemetry_obj = telemetry.TelemetryRecord()
|
126
|
-
|
127
150
|
self.deprecated_features_used: dict[str, str] = dict()
|
128
151
|
|
129
152
|
@property
|
@@ -229,7 +252,7 @@ class _WandbInit:
|
|
229
252
|
warn("run_id", init_settings.run_id)
|
230
253
|
init_settings.run_id = None
|
231
254
|
|
232
|
-
def
|
255
|
+
def make_run_settings(self, init_settings: Settings) -> Settings:
|
233
256
|
"""Returns the run's settings.
|
234
257
|
|
235
258
|
Args:
|
@@ -250,8 +273,7 @@ class _WandbInit:
|
|
250
273
|
if not settings.sagemaker_disable and sagemaker.is_using_sagemaker():
|
251
274
|
if sagemaker.set_run_id(settings):
|
252
275
|
self._logger.info("set run ID and group based on SageMaker")
|
253
|
-
|
254
|
-
tel.feature.sagemaker = True
|
276
|
+
self._telemetry.feature.sagemaker = True
|
255
277
|
|
256
278
|
# get status of code saving before applying user settings
|
257
279
|
save_code_pre_user_settings = settings.save_code
|
@@ -355,25 +377,24 @@ class _WandbInit:
|
|
355
377
|
run_id=settings.run_id,
|
356
378
|
)
|
357
379
|
|
358
|
-
def
|
380
|
+
def make_run_config(
|
359
381
|
self,
|
360
382
|
settings: Settings,
|
361
383
|
config: dict | str | None = None,
|
362
384
|
config_exclude_keys: list[str] | None = None,
|
363
385
|
config_include_keys: list[str] | None = None,
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
if settings.run_id is not None:
|
373
|
-
tel.feature.set_init_id = True
|
374
|
-
if settings.run_tags is not None:
|
375
|
-
tel.feature.set_init_tags = True
|
386
|
+
) -> _ConfigParts:
|
387
|
+
"""Construct the run's config.
|
388
|
+
|
389
|
+
Args:
|
390
|
+
settings: The run's finalized settings.
|
391
|
+
config: The config passed to `init()`.
|
392
|
+
config_exclude_keys: Deprecated. Keys to filter out from `config`.
|
393
|
+
config_include_keys: Deprecated. Keys to include from `config`.
|
376
394
|
|
395
|
+
Returns:
|
396
|
+
Initial values for the run's config.
|
397
|
+
"""
|
377
398
|
# TODO: remove this once officially deprecated
|
378
399
|
if config_exclude_keys:
|
379
400
|
self.deprecated_features_used["config_exclude_keys"] = (
|
@@ -389,49 +410,51 @@ class _WandbInit:
|
|
389
410
|
exclude=config_exclude_keys,
|
390
411
|
)
|
391
412
|
|
392
|
-
|
393
|
-
|
394
|
-
|
413
|
+
result = _ConfigParts(
|
414
|
+
base_no_artifacts=dict(),
|
415
|
+
sweep_no_artifacts=dict(),
|
416
|
+
launch_no_artifacts=dict(),
|
417
|
+
artifacts=dict(),
|
418
|
+
)
|
395
419
|
|
396
420
|
if not settings.sagemaker_disable and sagemaker.is_using_sagemaker():
|
397
421
|
sagemaker_config = sagemaker.parse_sm_config()
|
398
|
-
self._split_artifacts_from_config(
|
399
|
-
|
400
|
-
|
401
|
-
|
422
|
+
self._split_artifacts_from_config(
|
423
|
+
sagemaker_config,
|
424
|
+
config_target=result.base_no_artifacts,
|
425
|
+
artifacts=result.artifacts,
|
426
|
+
)
|
427
|
+
self._telemetry.feature.sagemaker = True
|
402
428
|
|
403
429
|
if self._wl._config:
|
404
|
-
self._split_artifacts_from_config(
|
430
|
+
self._split_artifacts_from_config(
|
431
|
+
self._wl._config,
|
432
|
+
config_target=result.base_no_artifacts,
|
433
|
+
artifacts=result.artifacts,
|
434
|
+
)
|
405
435
|
|
406
436
|
if config and isinstance(config, dict):
|
407
|
-
self._split_artifacts_from_config(
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
self._split_artifacts_from_config(sweep_config, self.sweep_config)
|
413
|
-
|
414
|
-
if monitor_gym and len(wandb.patched["gym"]) == 0:
|
415
|
-
wandb.gym.monitor() # type: ignore
|
416
|
-
|
417
|
-
if wandb.patched["tensorboard"]:
|
418
|
-
with telemetry.context(obj=self._init_telemetry_obj) as tel:
|
419
|
-
tel.feature.tensorboard_patch = True
|
437
|
+
self._split_artifacts_from_config(
|
438
|
+
config,
|
439
|
+
config_target=result.base_no_artifacts,
|
440
|
+
artifacts=result.artifacts,
|
441
|
+
)
|
420
442
|
|
421
|
-
if
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
443
|
+
if self._wl._sweep_config:
|
444
|
+
self._split_artifacts_from_config(
|
445
|
+
self._wl._sweep_config,
|
446
|
+
config_target=result.sweep_no_artifacts,
|
447
|
+
artifacts=result.artifacts,
|
448
|
+
)
|
426
449
|
|
427
|
-
if
|
428
|
-
self.
|
450
|
+
if launch_config := _handle_launch_config(settings):
|
451
|
+
self._split_artifacts_from_config(
|
452
|
+
launch_config,
|
453
|
+
config_target=result.launch_no_artifacts,
|
454
|
+
artifacts=result.artifacts,
|
455
|
+
)
|
429
456
|
|
430
|
-
|
431
|
-
self._jupyter_setup(settings)
|
432
|
-
launch_config = _handle_launch_config(settings)
|
433
|
-
if launch_config:
|
434
|
-
self._split_artifacts_from_config(launch_config, self.launch_config)
|
457
|
+
return result
|
435
458
|
|
436
459
|
def teardown(self) -> None:
|
437
460
|
# TODO: currently this is only called on failed wandb.init attempts
|
@@ -441,11 +464,14 @@ class _WandbInit:
|
|
441
464
|
hook.call()
|
442
465
|
|
443
466
|
def _split_artifacts_from_config(
|
444
|
-
self,
|
467
|
+
self,
|
468
|
+
config_source: dict,
|
469
|
+
config_target: dict,
|
470
|
+
artifacts: dict,
|
445
471
|
) -> None:
|
446
472
|
for k, v in config_source.items():
|
447
473
|
if _is_artifact_representation(v):
|
448
|
-
|
474
|
+
artifacts[k] = v
|
449
475
|
else:
|
450
476
|
config_target.setdefault(k, v)
|
451
477
|
|
@@ -540,7 +566,7 @@ class _WandbInit:
|
|
540
566
|
ipython.display_pub.publish = ipython.display_pub._orig_publish
|
541
567
|
del ipython.display_pub._orig_publish
|
542
568
|
|
543
|
-
def
|
569
|
+
def monkeypatch_ipython(self, settings: Settings) -> None:
|
544
570
|
"""Add hooks, and session history saving."""
|
545
571
|
self.notebook = wandb.jupyter.Notebook(settings) # type: ignore
|
546
572
|
ipython = self.notebook.shell
|
@@ -566,7 +592,7 @@ class _WandbInit:
|
|
566
592
|
|
567
593
|
ipython.display_pub.publish = publish
|
568
594
|
|
569
|
-
def
|
595
|
+
def setup_run_log_directory(self, settings: Settings) -> None:
|
570
596
|
"""Set up logging from settings."""
|
571
597
|
filesystem.mkdir_exists_ok(os.path.dirname(settings.log_user))
|
572
598
|
filesystem.mkdir_exists_ok(os.path.dirname(settings.log_internal))
|
@@ -598,15 +624,18 @@ class _WandbInit:
|
|
598
624
|
self._logger.info(f"Logging user logs to {settings.log_user}")
|
599
625
|
self._logger.info(f"Logging internal logs to {settings.log_internal}")
|
600
626
|
|
601
|
-
def
|
627
|
+
def make_disabled_run(self, config: _ConfigParts) -> Run:
|
602
628
|
"""Returns a Run-like object where all methods are no-ops.
|
603
629
|
|
604
|
-
This method is used when
|
605
|
-
|
630
|
+
This method is used when the `mode` setting is set to "disabled", such as
|
631
|
+
by wandb.init(mode="disabled") or by setting the WANDB_MODE environment
|
632
|
+
variable to "disabled".
|
633
|
+
|
634
|
+
It creates a Run object that mimics the behavior of a normal Run but doesn't
|
606
635
|
communicate with the W&B servers.
|
607
636
|
|
608
|
-
The returned Run object has all expected attributes and methods, but they
|
609
|
-
no-op versions that don't perform any actual logging or communication.
|
637
|
+
The returned Run object has all expected attributes and methods, but they
|
638
|
+
are no-op versions that don't perform any actual logging or communication.
|
610
639
|
"""
|
611
640
|
run_id = runid.generate_id()
|
612
641
|
drun = Run(
|
@@ -624,8 +653,8 @@ class _WandbInit:
|
|
624
653
|
)
|
625
654
|
# config, summary, and metadata objects
|
626
655
|
drun._config = wandb.sdk.wandb_config.Config()
|
627
|
-
drun._config.update(
|
628
|
-
drun._config.update(
|
656
|
+
drun._config.update(config.sweep_no_artifacts)
|
657
|
+
drun._config.update(config.base_no_artifacts)
|
629
658
|
drun.summary = SummaryDisabled() # type: ignore
|
630
659
|
drun._Run__metadata = wandb.sdk.wandb_metadata.Metadata()
|
631
660
|
|
@@ -710,18 +739,17 @@ class _WandbInit:
|
|
710
739
|
percent_done = handle.percent_done
|
711
740
|
self.printer.progress_update(line, percent_done=percent_done)
|
712
741
|
|
713
|
-
def init(self, settings: Settings) -> Run: # noqa: C901
|
742
|
+
def init(self, settings: Settings, config: _ConfigParts) -> Run: # noqa: C901
|
714
743
|
self._logger.info("calling init triggers")
|
715
744
|
trigger.call("on_init")
|
716
745
|
|
717
746
|
assert self._wl is not None
|
718
747
|
|
719
748
|
self._logger.info(
|
720
|
-
f"wandb.init called with sweep_config: {
|
749
|
+
f"wandb.init called with sweep_config: {config.sweep_no_artifacts}"
|
750
|
+
f"\nconfig: {config.base_no_artifacts}"
|
721
751
|
)
|
722
752
|
|
723
|
-
if settings._noop:
|
724
|
-
return self._make_run_disabled()
|
725
753
|
if (
|
726
754
|
settings.reinit or (settings._jupyter and settings.reinit is not False)
|
727
755
|
) and len(self._wl._global_run_stack) > 0:
|
@@ -738,8 +766,11 @@ class _WandbInit:
|
|
738
766
|
latest_run.finish()
|
739
767
|
elif wandb.run is not None and os.getpid() == wandb.run._init_pid:
|
740
768
|
self._logger.info("wandb.init() called when a run is still active")
|
769
|
+
|
770
|
+
# NOTE: Updates telemetry on the pre-existing run.
|
741
771
|
with telemetry.context() as tel:
|
742
772
|
tel.feature.init_return_run = True
|
773
|
+
|
743
774
|
return wandb.run
|
744
775
|
|
745
776
|
self._logger.info("starting backend")
|
@@ -765,14 +796,14 @@ class _WandbInit:
|
|
765
796
|
|
766
797
|
# resuming needs access to the server, check server_status()?
|
767
798
|
run = Run(
|
768
|
-
config=
|
799
|
+
config=config.base_no_artifacts,
|
769
800
|
settings=settings,
|
770
|
-
sweep_config=
|
771
|
-
launch_config=
|
801
|
+
sweep_config=config.sweep_no_artifacts,
|
802
|
+
launch_config=config.launch_no_artifacts,
|
772
803
|
)
|
773
804
|
|
774
805
|
# Populate initial telemetry
|
775
|
-
with telemetry.context(run=run, obj=self.
|
806
|
+
with telemetry.context(run=run, obj=self._telemetry) as tel:
|
776
807
|
tel.cli_version = wandb.__version__
|
777
808
|
tel.python_version = platform.python_version()
|
778
809
|
tel.platform = f"{platform.system()}-{platform.machine()}".lower()
|
@@ -873,15 +904,11 @@ class _WandbInit:
|
|
873
904
|
|
874
905
|
run_result: pb.RunUpdateResult | None = None
|
875
906
|
|
876
|
-
if settings._offline:
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
wandb.termwarn(
|
882
|
-
"`resume` will be ignored since W&B syncing is set to `offline`. "
|
883
|
-
f"Starting a new run with run id {run.id}."
|
884
|
-
)
|
907
|
+
if settings._offline and settings.resume:
|
908
|
+
wandb.termwarn(
|
909
|
+
"`resume` will be ignored since W&B syncing is set to `offline`. "
|
910
|
+
f"Starting a new run with run id {run.id}."
|
911
|
+
)
|
885
912
|
error: wandb.Error | None = None
|
886
913
|
|
887
914
|
timeout = settings.init_timeout
|
@@ -970,7 +997,7 @@ class _WandbInit:
|
|
970
997
|
# put artifacts in run config here
|
971
998
|
# since doing so earlier will cause an error
|
972
999
|
# as the run is not upserted
|
973
|
-
for k, v in
|
1000
|
+
for k, v in config.artifacts.items():
|
974
1001
|
run.config.update({k: v}, allow_val_change=True)
|
975
1002
|
job_artifact = run._launch_artifact_mapping.get(
|
976
1003
|
wandb.util.LAUNCH_JOB_ARTIFACT_SLOT_NAME
|
@@ -1062,6 +1089,26 @@ def _attach(
|
|
1062
1089
|
return run
|
1063
1090
|
|
1064
1091
|
|
1092
|
+
def _monkeypatch_openai_gym() -> None:
|
1093
|
+
"""Patch OpenAI gym to log to the global `wandb.run`."""
|
1094
|
+
if len(wandb.patched["gym"]) > 0:
|
1095
|
+
return
|
1096
|
+
|
1097
|
+
from wandb.integration import gym
|
1098
|
+
|
1099
|
+
gym.monitor()
|
1100
|
+
|
1101
|
+
|
1102
|
+
def _monkeypatch_tensorboard() -> None:
|
1103
|
+
"""Patch TensorBoard to log to the global `wandb.run`."""
|
1104
|
+
if len(wandb.patched["tensorboard"]) > 0:
|
1105
|
+
return
|
1106
|
+
|
1107
|
+
from wandb.integration import tensorboard as tb_module
|
1108
|
+
|
1109
|
+
tb_module.patch()
|
1110
|
+
|
1111
|
+
|
1065
1112
|
def init( # noqa: C901
|
1066
1113
|
entity: str | None = None,
|
1067
1114
|
project: str | None = None,
|
@@ -1299,6 +1346,8 @@ def init( # noqa: C901
|
|
1299
1346
|
"""
|
1300
1347
|
wandb._assert_is_user_process() # type: ignore
|
1301
1348
|
|
1349
|
+
init_telemetry = telemetry.TelemetryRecord()
|
1350
|
+
|
1302
1351
|
init_settings = Settings()
|
1303
1352
|
if isinstance(settings, dict):
|
1304
1353
|
init_settings = Settings(**settings)
|
@@ -1346,26 +1395,55 @@ def init( # noqa: C901
|
|
1346
1395
|
if resume_from is not None:
|
1347
1396
|
init_settings.resume_from = resume_from # type: ignore
|
1348
1397
|
|
1398
|
+
if config is not None:
|
1399
|
+
init_telemetry.feature.set_init_config = True
|
1400
|
+
|
1349
1401
|
wl: wandb_setup._WandbSetup | None = None
|
1350
1402
|
|
1351
1403
|
try:
|
1352
1404
|
wl = wandb.setup()
|
1353
1405
|
|
1354
|
-
wi = _WandbInit(wl)
|
1406
|
+
wi = _WandbInit(wl, init_telemetry)
|
1355
1407
|
|
1356
1408
|
wi.maybe_login(init_settings)
|
1357
|
-
run_settings = wi.
|
1409
|
+
run_settings = wi.make_run_settings(init_settings)
|
1410
|
+
|
1411
|
+
if run_settings.run_id is not None:
|
1412
|
+
init_telemetry.feature.set_init_id = True
|
1413
|
+
if run_settings.run_name is not None:
|
1414
|
+
init_telemetry.feature.set_init_name = True
|
1415
|
+
if run_settings.run_tags is not None:
|
1416
|
+
init_telemetry.feature.set_init_tags = True
|
1417
|
+
if run_settings._offline:
|
1418
|
+
init_telemetry.feature.offline = True
|
1419
|
+
|
1358
1420
|
wi.set_run_id(run_settings)
|
1359
1421
|
|
1360
|
-
wi.
|
1422
|
+
run_config = wi.make_run_config(
|
1361
1423
|
settings=run_settings,
|
1362
1424
|
config=config,
|
1363
1425
|
config_exclude_keys=config_exclude_keys,
|
1364
1426
|
config_include_keys=config_include_keys,
|
1365
|
-
monitor_gym=monitor_gym,
|
1366
1427
|
)
|
1367
1428
|
|
1368
|
-
|
1429
|
+
if run_settings._noop:
|
1430
|
+
return wi.make_disabled_run(run_config)
|
1431
|
+
|
1432
|
+
wi.setup_run_log_directory(run_settings)
|
1433
|
+
if run_settings._jupyter:
|
1434
|
+
wi.monkeypatch_ipython(run_settings)
|
1435
|
+
|
1436
|
+
if monitor_gym:
|
1437
|
+
_monkeypatch_openai_gym()
|
1438
|
+
|
1439
|
+
if wandb.patched["tensorboard"]:
|
1440
|
+
# NOTE: The user may have called the patch function directly.
|
1441
|
+
init_telemetry.feature.tensorboard_patch = True
|
1442
|
+
if run_settings.sync_tensorboard:
|
1443
|
+
_monkeypatch_tensorboard()
|
1444
|
+
init_telemetry.feature.tensorboard_sync = True
|
1445
|
+
|
1446
|
+
return wi.init(run_settings, run_config)
|
1369
1447
|
|
1370
1448
|
except KeyboardInterrupt as e:
|
1371
1449
|
if wl:
|
wandb/sdk/wandb_run.py
CHANGED
@@ -547,8 +547,6 @@ class Run:
|
|
547
547
|
|
548
548
|
_init_pid: int
|
549
549
|
_attach_pid: int
|
550
|
-
_iface_pid: int | None
|
551
|
-
_iface_port: int | None
|
552
550
|
|
553
551
|
_attach_id: str | None
|
554
552
|
_is_attached: bool
|
@@ -707,10 +705,6 @@ class Run:
|
|
707
705
|
if launch_trace_id:
|
708
706
|
self._config[wandb_key]["launch_trace_id"] = launch_trace_id
|
709
707
|
|
710
|
-
# interface pid and port configured when backend is configured (See _hack_set_run)
|
711
|
-
# TODO: using pid isn't the best for windows as pid reuse can happen more often than unix
|
712
|
-
self._iface_pid = None
|
713
|
-
self._iface_port = None
|
714
708
|
self._attach_id = None
|
715
709
|
self._is_attached = False
|
716
710
|
self._is_finished = False
|
@@ -721,12 +715,6 @@ class Run:
|
|
721
715
|
if not self._settings.x_disable_service:
|
722
716
|
self._attach_id = self._settings.run_id
|
723
717
|
|
724
|
-
def _set_iface_pid(self, iface_pid: int) -> None:
|
725
|
-
self._iface_pid = iface_pid
|
726
|
-
|
727
|
-
def _set_iface_port(self, iface_port: int) -> None:
|
728
|
-
self._iface_port = iface_port
|
729
|
-
|
730
718
|
def _handle_launch_artifact_overrides(self) -> None:
|
731
719
|
if self._settings.launch and (os.environ.get("WANDB_ARTIFACTS") is not None):
|
732
720
|
try:
|
@@ -1442,6 +1430,7 @@ class Run:
|
|
1442
1430
|
|
1443
1431
|
not_using_tensorboard = len(wandb.patched["tensorboard"]) == 0
|
1444
1432
|
self._backend.interface.publish_partial_history(
|
1433
|
+
self,
|
1445
1434
|
data,
|
1446
1435
|
user_step=self._step,
|
1447
1436
|
step=step,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: wandb
|
3
|
-
Version: 0.19.
|
3
|
+
Version: 0.19.4rc1
|
4
4
|
Summary: A CLI and library for interacting with the Weights & Biases API.
|
5
5
|
Project-URL: Source, https://github.com/wandb/wandb
|
6
6
|
Project-URL: Bug Reports, https://github.com/wandb/wandb/issues
|
@@ -1,6 +1,6 @@
|
|
1
1
|
package_readme.md,sha256=U9047nyMDICgctm1HLm4HfXwFnFKsEn2m77hsYPUZ1I,4298
|
2
|
-
wandb/__init__.py,sha256=
|
3
|
-
wandb/__init__.pyi,sha256=
|
2
|
+
wandb/__init__.py,sha256=amlCK5n_1hyN1-MkgQ3CWpMhvrRq-X8B9Q4iZemjWzY,6991
|
3
|
+
wandb/__init__.pyi,sha256=nZ_mrCwelWNIQBbhGrJ1cKX8z_IfihKjoMc3ByY0loM,47027
|
4
4
|
wandb/__main__.py,sha256=gripuDgB7J8wMMeJt4CIBRjn1BMSFr5zvsrt585Pnj4,64
|
5
5
|
wandb/_globals.py,sha256=CccwOAls5bxJArYHg12b08ZeKR8Qu9u57GtYWjBH0o0,702
|
6
6
|
wandb/data_types.py,sha256=tjxcQ8padGuGxST192PyEDX_nhU__izHcAK-kaSyevI,2276
|
@@ -49,7 +49,7 @@ wandb/apis/reports/v1/__init__.py,sha256=L5l1BqMaap-w5wXCzn8pC8RXB7_72MsjTx8HeLu
|
|
49
49
|
wandb/apis/reports/v2/__init__.py,sha256=jdLiTqf5QIRxnWH8drWV9Y06bZEhI5N6uGGSKAT7tv0,263
|
50
50
|
wandb/apis/workspaces/__init__.py,sha256=buvqtqELpCFWC7sHzEuslJgx24ZWDj-5lo2mdV6aHdg,265
|
51
51
|
wandb/beta/workflows.py,sha256=bk12HDWnxI4uuP0KyUbfclrTSoRVXrJibAuO_QBB5tI,10239
|
52
|
-
wandb/bin/gpu_stats,sha256=
|
52
|
+
wandb/bin/gpu_stats,sha256=UoDlCDMWg-7wj2egpk1UberOg7-mDcl8CTpERla_hGw,10856328
|
53
53
|
wandb/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
54
54
|
wandb/cli/beta.py,sha256=Um35Q9CeoQPS80g0wryo2WtSaD7VA0XqF_YCQNDNiSY,5438
|
55
55
|
wandb/cli/cli.py,sha256=9UKKfjKwI_oRWK13UqQA3Ep1qH3HDCBXmKlOwcK0k_U,92726
|
@@ -203,13 +203,13 @@ wandb/sdk/__init__.py,sha256=N-GTAC0AzbZF2J8RzB33DTmYk9u-jubllCwvhWrPgsE,813
|
|
203
203
|
wandb/sdk/wandb_alerts.py,sha256=SwBPBiXRxknMTMGbsVoMMWqWK65UWMcKAdTWZtdwAeo,193
|
204
204
|
wandb/sdk/wandb_config.py,sha256=b7kxQVnIh5HCBZXb2pOGZ4c02xCVlW4IQiAu3N-8Opg,10856
|
205
205
|
wandb/sdk/wandb_helper.py,sha256=IbJ7opO8UkfwCDekSjRYIrGBblUxnTPBfp1EdesfF4U,1824
|
206
|
-
wandb/sdk/wandb_init.py,sha256=
|
206
|
+
wandb/sdk/wandb_init.py,sha256=XqlUH5OpIdyatgTKHMIsDM3xUSwVbgl_zFzezB8xOg8,58443
|
207
207
|
wandb/sdk/wandb_login.py,sha256=DP7nDUGx2UmqGRBrvTmcpvzRBVeRD0qEENtmu4sjDAQ,10966
|
208
208
|
wandb/sdk/wandb_metadata.py,sha256=nT6TUF4Yh-ka3VQGyKd3y9MTEHJUgRVT4ICyfJkbHFo,20111
|
209
209
|
wandb/sdk/wandb_metric.py,sha256=a3GiQXr6H18m81uobYjlJaC8CL8iANzI42qxkxfZsDs,3268
|
210
210
|
wandb/sdk/wandb_require.py,sha256=Y0ib8h27__t7hXos1F2srfsQzVfzH4BB6wq8E1aRbRA,2950
|
211
211
|
wandb/sdk/wandb_require_helpers.py,sha256=ZmKv5aXXHDTTU6nYHMLKW4_pt9X-PlaMtbRJl77kHX8,1331
|
212
|
-
wandb/sdk/wandb_run.py,sha256=
|
212
|
+
wandb/sdk/wandb_run.py,sha256=Jk-KLMtrjX698iUCT2gjivutfR01ud9DjnuSiuVYop8,155193
|
213
213
|
wandb/sdk/wandb_settings.py,sha256=gXZydMDYH8OLcAoK78mA4naRqBA2aKlsIGKn3i4OC0s,47290
|
214
214
|
wandb/sdk/wandb_setup.py,sha256=7j3UBiqm8x7f4JsFPX5jR19wNRSRvf77TIyncd0HpJg,13014
|
215
215
|
wandb/sdk/wandb_summary.py,sha256=yQdOVIPrZaZanhBQ7yuSfPLX0x6dxwkN_KAn4SgjSZU,4536
|
@@ -279,7 +279,7 @@ wandb/sdk/integration_utils/auto_logging.py,sha256=sblNn9BIG7memxTj23UfrGXyA06t3
|
|
279
279
|
wandb/sdk/integration_utils/data_logging.py,sha256=DDFtDaUu50aeTTgxCHHYd2f85guqqf2xfEOburRlwwQ,19533
|
280
280
|
wandb/sdk/interface/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
281
281
|
wandb/sdk/interface/constants.py,sha256=NJNBFr7LkshLI837D3LU3JuEURLzBwza9H-kxcy4ihw,60
|
282
|
-
wandb/sdk/interface/interface.py,sha256
|
282
|
+
wandb/sdk/interface/interface.py,sha256=coqmzkIQr8s_hzryIhID__5JHw-waMkE65ICv1KcFMQ,36439
|
283
283
|
wandb/sdk/interface/interface_queue.py,sha256=7lbQz6VYamqYlNpkC-Ckrn5az_Yc9CrbnmwKNFtta44,1700
|
284
284
|
wandb/sdk/interface/interface_relay.py,sha256=vQUrk5KESKInZsXpOxWF4YcWRZFLJjNz1mdNywbWbbE,1514
|
285
285
|
wandb/sdk/interface/interface_shared.py,sha256=F6kkd8Aaq_nZALIprMgul0xDkSB8uG0HXJ0-94uEZNw,21276
|
@@ -309,7 +309,7 @@ wandb/sdk/internal/sample.py,sha256=USAWLhEeP83J13BVOSIy1Rb3kDDKTK9kzR88SlhO7dw,
|
|
309
309
|
wandb/sdk/internal/sender.py,sha256=TPidmgTSE2gYlC4uh-32eNtI-XRgHEoYVVkC5F-saCQ,65328
|
310
310
|
wandb/sdk/internal/sender_config.py,sha256=qEuXwOskca3sYyDIRsswlXmj9StCCS0WKQ1qrBXbIjw,6767
|
311
311
|
wandb/sdk/internal/settings_static.py,sha256=1Dc2MoVCIskHo7rKafjtrVxY9sQWZMNeee39LYBe9t0,3668
|
312
|
-
wandb/sdk/internal/tb_watcher.py,sha256=
|
312
|
+
wandb/sdk/internal/tb_watcher.py,sha256=3AvQGlZLGkr8POhaSGzbeyIcX0YWkLkblJ0bksAB8U8,18738
|
313
313
|
wandb/sdk/internal/thread_local_settings.py,sha256=UqD6kfjsy6mvxIWcjhd-vJWkNRCeU1whuRe_-VGIklQ,527
|
314
314
|
wandb/sdk/internal/writer.py,sha256=jo_Ex7ik-0_rIahYDHIWcQjm_uxsUNVn92__bI8TloE,7267
|
315
315
|
wandb/sdk/internal/system/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -816,8 +816,8 @@ wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/importlib2.py,sha256=cJIaJ2EQso
|
|
816
816
|
wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/platform.py,sha256=UORYTNVcUSE2NpFcq9UVLIS-tsS0TS_Qw8akhKxn2eY,1506
|
817
817
|
wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/unicode_paths.py,sha256=UWX8DB97ygkEeSxWQUYCHR4MahNilux7vl5TCTQtPPk,2190
|
818
818
|
wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/win32stat.py,sha256=ZOevOTbSo8NRiIxkuBVGaG4yigWnPoO0goxAi-jsBkM,3828
|
819
|
-
wandb-0.19.
|
820
|
-
wandb-0.19.
|
821
|
-
wandb-0.19.
|
822
|
-
wandb-0.19.
|
823
|
-
wandb-0.19.
|
819
|
+
wandb-0.19.4rc1.dist-info/METADATA,sha256=uyIurAspZwmJRHUtzVckSZv375aN1Lpvi7IqLuCgMbc,10285
|
820
|
+
wandb-0.19.4rc1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
821
|
+
wandb-0.19.4rc1.dist-info/entry_points.txt,sha256=v4FCOZ9gW7Pc6KLsmgQqpCiKTrA1wh2XHmNf-NUP1-I,67
|
822
|
+
wandb-0.19.4rc1.dist-info/licenses/LICENSE,sha256=izOKRJpGOx1PrJiGOKR0HsNdlB5JdH2d0Z4P7a7ssTc,1081
|
823
|
+
wandb-0.19.4rc1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|