wandb 0.19.3__py3-none-macosx_11_0_x86_64.whl → 0.19.4rc1__py3-none-macosx_11_0_x86_64.whl
Sign up to get free protection for your applications and to get access to all the features.
- wandb/__init__.py +1 -1
- wandb/__init__.pyi +1 -1
- wandb/bin/wandb-core +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/wandb-core
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.3
|
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,15 +1,15 @@
|
|
1
1
|
package_readme.md,sha256=U9047nyMDICgctm1HLm4HfXwFnFKsEn2m77hsYPUZ1I,4298
|
2
|
-
wandb-0.19.
|
3
|
-
wandb-0.19.
|
4
|
-
wandb-0.19.
|
5
|
-
wandb-0.19.
|
6
|
-
wandb-0.19.
|
2
|
+
wandb-0.19.4rc1.dist-info/RECORD,,
|
3
|
+
wandb-0.19.4rc1.dist-info/WHEEL,sha256=EAvjAzW29_2mcLqDTG7Bv-ecX-7vFr5-gmnUhFLBSwc,102
|
4
|
+
wandb-0.19.4rc1.dist-info/entry_points.txt,sha256=v4FCOZ9gW7Pc6KLsmgQqpCiKTrA1wh2XHmNf-NUP1-I,67
|
5
|
+
wandb-0.19.4rc1.dist-info/METADATA,sha256=65fpP8edcTSem5od14zJT5b6hP6kjhd5gId96p23QXk,10285
|
6
|
+
wandb-0.19.4rc1.dist-info/licenses/LICENSE,sha256=izOKRJpGOx1PrJiGOKR0HsNdlB5JdH2d0Z4P7a7ssTc,1081
|
7
7
|
wandb/env.py,sha256=ImVRezUi1wpXf2ogJ4IY9YNaELqon3k3S6-vCMNNzwQ,13505
|
8
|
-
wandb/__init__.pyi,sha256=
|
8
|
+
wandb/__init__.pyi,sha256=nZ_mrCwelWNIQBbhGrJ1cKX8z_IfihKjoMc3ByY0loM,47027
|
9
9
|
wandb/_globals.py,sha256=CccwOAls5bxJArYHg12b08ZeKR8Qu9u57GtYWjBH0o0,702
|
10
10
|
wandb/util.py,sha256=aYGSh8sOj5P0O6IMmp9lekBuUcwHX6fKdGB85Zt_uW0,62525
|
11
11
|
wandb/wandb_run.py,sha256=CNh9S6uubFk8FphQjzkbvedyyGCN9aBEsRBKjy8tqqs,155
|
12
|
-
wandb/__init__.py,sha256=
|
12
|
+
wandb/__init__.py,sha256=amlCK5n_1hyN1-MkgQ3CWpMhvrRq-X8B9Q4iZemjWzY,6991
|
13
13
|
wandb/data_types.py,sha256=tjxcQ8padGuGxST192PyEDX_nhU__izHcAK-kaSyevI,2276
|
14
14
|
wandb/wandb_controller.py,sha256=SksJdgwn14PpnUoIaBjJ9Ki4Nksl9BpQGGn42hT0xZg,24936
|
15
15
|
wandb/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -92,7 +92,7 @@ wandb/proto/v3/wandb_base_pb2.py,sha256=_nsr_HW4Fdz62-KiXGo6Dw0_9bwdXz07auZkkH2Q
|
|
92
92
|
wandb/proto/v3/wandb_internal_pb2.py,sha256=04llmv8f_dNUGDyDMYSb8nrpWjemYP-WjlWv6j8rg2U,114564
|
93
93
|
wandb/proto/v3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
94
94
|
wandb/proto/v3/wandb_telemetry_pb2.py,sha256=tQQJ7s3fbFYJc60JLnrkdf8yxCqKK0zJMdJaXxA3phM,13805
|
95
|
-
wandb/bin/wandb-core,sha256=
|
95
|
+
wandb/bin/wandb-core,sha256=Ip7f5gD_A52O-Cm7L33S67x3MVRKxdJmCgn_eJjGZeI,47287200
|
96
96
|
wandb/bin/gpu_stats,sha256=tNY1jk810PMgZb0jCvW4THq41AylAf4LwGwKh1H3IP4,9718840
|
97
97
|
wandb/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
98
98
|
wandb/integration/yolov8/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -193,10 +193,10 @@ wandb/mpmain/__main__.py,sha256=bLhspPeHQvNMyRNR7xi9v-02XfW1mhJY2yBWI3bYtbg,57
|
|
193
193
|
wandb/sdk/wandb_metadata.py,sha256=nT6TUF4Yh-ka3VQGyKd3y9MTEHJUgRVT4ICyfJkbHFo,20111
|
194
194
|
wandb/sdk/wandb_config.py,sha256=b7kxQVnIh5HCBZXb2pOGZ4c02xCVlW4IQiAu3N-8Opg,10856
|
195
195
|
wandb/sdk/wandb_alerts.py,sha256=SwBPBiXRxknMTMGbsVoMMWqWK65UWMcKAdTWZtdwAeo,193
|
196
|
-
wandb/sdk/wandb_run.py,sha256=
|
196
|
+
wandb/sdk/wandb_run.py,sha256=Jk-KLMtrjX698iUCT2gjivutfR01ud9DjnuSiuVYop8,155193
|
197
197
|
wandb/sdk/wandb_sync.py,sha256=GmIjtydDNiUT3FHkrFcIZzSlqiRerXA8kY3q72ZbL1k,2275
|
198
198
|
wandb/sdk/__init__.py,sha256=N-GTAC0AzbZF2J8RzB33DTmYk9u-jubllCwvhWrPgsE,813
|
199
|
-
wandb/sdk/wandb_init.py,sha256=
|
199
|
+
wandb/sdk/wandb_init.py,sha256=XqlUH5OpIdyatgTKHMIsDM3xUSwVbgl_zFzezB8xOg8,58443
|
200
200
|
wandb/sdk/wandb_helper.py,sha256=IbJ7opO8UkfwCDekSjRYIrGBblUxnTPBfp1EdesfF4U,1824
|
201
201
|
wandb/sdk/wandb_settings.py,sha256=gXZydMDYH8OLcAoK78mA4naRqBA2aKlsIGKn3i4OC0s,47290
|
202
202
|
wandb/sdk/wandb_summary.py,sha256=yQdOVIPrZaZanhBQ7yuSfPLX0x6dxwkN_KAn4SgjSZU,4536
|
@@ -215,7 +215,7 @@ wandb/sdk/interface/router_queue.py,sha256=4RDXvCcm1OQ7R7eSrZQi7qpaXyd_DzSStYs6C
|
|
215
215
|
wandb/sdk/interface/message_future_poll.py,sha256=drjrcBKswYPYJJQLFlj7UDXq7_zg7KNcObFVetsbvhQ,1410
|
216
216
|
wandb/sdk/interface/summary_record.py,sha256=-wDv_zLYueeUY8IzyF9NPYnYwF3iBpUWbrsGcHAd2YM,1677
|
217
217
|
wandb/sdk/interface/constants.py,sha256=NJNBFr7LkshLI837D3LU3JuEURLzBwza9H-kxcy4ihw,60
|
218
|
-
wandb/sdk/interface/interface.py,sha256
|
218
|
+
wandb/sdk/interface/interface.py,sha256=coqmzkIQr8s_hzryIhID__5JHw-waMkE65ICv1KcFMQ,36439
|
219
219
|
wandb/sdk/interface/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
220
220
|
wandb/sdk/interface/router_sock.py,sha256=7-J3SFhnaqPohYaUyljwpbsvYPBXA-ZTENYnXxzbh9U,1060
|
221
221
|
wandb/sdk/interface/interface_shared.py,sha256=F6kkd8Aaq_nZALIprMgul0xDkSB8uG0HXJ0-94uEZNw,21276
|
@@ -343,7 +343,7 @@ wandb/sdk/internal/thread_local_settings.py,sha256=UqD6kfjsy6mvxIWcjhd-vJWkNRCeU
|
|
343
343
|
wandb/sdk/internal/sender_config.py,sha256=qEuXwOskca3sYyDIRsswlXmj9StCCS0WKQ1qrBXbIjw,6767
|
344
344
|
wandb/sdk/internal/settings_static.py,sha256=1Dc2MoVCIskHo7rKafjtrVxY9sQWZMNeee39LYBe9t0,3668
|
345
345
|
wandb/sdk/internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
346
|
-
wandb/sdk/internal/tb_watcher.py,sha256=
|
346
|
+
wandb/sdk/internal/tb_watcher.py,sha256=3AvQGlZLGkr8POhaSGzbeyIcX0YWkLkblJ0bksAB8U8,18738
|
347
347
|
wandb/sdk/internal/flow_control.py,sha256=3LJ-KatyPPH18G7TfSMLDk-BE5tankB4JRhQqLoUOWM,8585
|
348
348
|
wandb/sdk/internal/context.py,sha256=dnmsKEoQ2xOtmXM5OBVHdyGO3XdTQrqjxfb1lRADSTc,2518
|
349
349
|
wandb/sdk/internal/file_stream.py,sha256=Dnqayrbqa6L2sG03rX2oIFhWT-IME5vl5JTykyLFMNY,25866
|
File without changes
|
File without changes
|
File without changes
|