wandb 0.18.4__py3-none-macosx_11_0_arm64.whl → 0.18.6__py3-none-macosx_11_0_arm64.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. wandb/__init__.py +2 -2
  2. wandb/__init__.pyi +21 -19
  3. wandb/agents/pyagent.py +1 -1
  4. wandb/apis/importers/wandb.py +1 -1
  5. wandb/apis/normalize.py +2 -18
  6. wandb/apis/public/api.py +122 -62
  7. wandb/apis/public/artifacts.py +8 -3
  8. wandb/apis/public/files.py +17 -2
  9. wandb/apis/public/jobs.py +2 -2
  10. wandb/apis/public/query_generator.py +1 -1
  11. wandb/apis/public/runs.py +8 -8
  12. wandb/apis/public/teams.py +3 -3
  13. wandb/apis/public/users.py +1 -1
  14. wandb/apis/public/utils.py +68 -0
  15. wandb/bin/gpu_stats +0 -0
  16. wandb/bin/wandb-core +0 -0
  17. wandb/cli/cli.py +12 -3
  18. wandb/data_types.py +1 -1
  19. wandb/docker/__init__.py +2 -1
  20. wandb/docker/auth.py +2 -3
  21. wandb/errors/links.py +73 -0
  22. wandb/errors/term.py +7 -6
  23. wandb/filesync/step_prepare.py +1 -1
  24. wandb/filesync/upload_job.py +1 -1
  25. wandb/integration/catboost/catboost.py +2 -2
  26. wandb/integration/diffusers/pipeline_resolver.py +1 -1
  27. wandb/integration/diffusers/resolvers/multimodal.py +6 -6
  28. wandb/integration/diffusers/resolvers/utils.py +1 -1
  29. wandb/integration/fastai/__init__.py +3 -2
  30. wandb/integration/keras/callbacks/metrics_logger.py +1 -1
  31. wandb/integration/keras/callbacks/model_checkpoint.py +1 -1
  32. wandb/integration/keras/keras.py +1 -1
  33. wandb/integration/kfp/kfp_patch.py +1 -1
  34. wandb/integration/lightgbm/__init__.py +2 -2
  35. wandb/integration/magic.py +2 -2
  36. wandb/integration/metaflow/metaflow.py +1 -1
  37. wandb/integration/sacred/__init__.py +1 -1
  38. wandb/integration/sagemaker/auth.py +1 -1
  39. wandb/integration/sklearn/plot/classifier.py +7 -7
  40. wandb/integration/sklearn/plot/clusterer.py +3 -3
  41. wandb/integration/sklearn/plot/regressor.py +3 -3
  42. wandb/integration/sklearn/plot/shared.py +2 -2
  43. wandb/integration/tensorboard/log.py +2 -2
  44. wandb/integration/ultralytics/callback.py +2 -2
  45. wandb/integration/xgboost/xgboost.py +1 -1
  46. wandb/jupyter.py +0 -1
  47. wandb/plot/__init__.py +17 -8
  48. wandb/plot/bar.py +53 -27
  49. wandb/plot/confusion_matrix.py +151 -70
  50. wandb/plot/custom_chart.py +124 -0
  51. wandb/plot/histogram.py +46 -20
  52. wandb/plot/line.py +57 -26
  53. wandb/plot/line_series.py +148 -60
  54. wandb/plot/pr_curve.py +89 -44
  55. wandb/plot/roc_curve.py +82 -37
  56. wandb/plot/scatter.py +53 -20
  57. wandb/plot/viz.py +20 -102
  58. wandb/sdk/artifacts/artifact.py +280 -328
  59. wandb/sdk/artifacts/artifact_manifest.py +10 -9
  60. wandb/sdk/artifacts/artifact_manifest_entry.py +1 -1
  61. wandb/sdk/artifacts/storage_handlers/azure_handler.py +9 -4
  62. wandb/sdk/artifacts/storage_handlers/gcs_handler.py +1 -3
  63. wandb/sdk/artifacts/storage_handlers/s3_handler.py +1 -1
  64. wandb/sdk/artifacts/storage_handlers/wb_artifact_handler.py +2 -2
  65. wandb/sdk/artifacts/storage_handlers/wb_local_artifact_handler.py +1 -1
  66. wandb/sdk/backend/backend.py +0 -1
  67. wandb/sdk/data_types/audio.py +1 -1
  68. wandb/sdk/data_types/base_types/media.py +66 -5
  69. wandb/sdk/data_types/bokeh.py +1 -1
  70. wandb/sdk/data_types/helper_types/bounding_boxes_2d.py +1 -1
  71. wandb/sdk/data_types/helper_types/image_mask.py +2 -2
  72. wandb/sdk/data_types/histogram.py +1 -1
  73. wandb/sdk/data_types/html.py +1 -1
  74. wandb/sdk/data_types/image.py +1 -1
  75. wandb/sdk/data_types/molecule.py +3 -3
  76. wandb/sdk/data_types/object_3d.py +4 -4
  77. wandb/sdk/data_types/plotly.py +1 -1
  78. wandb/sdk/data_types/saved_model.py +0 -1
  79. wandb/sdk/data_types/table.py +7 -7
  80. wandb/sdk/data_types/trace_tree.py +1 -1
  81. wandb/sdk/data_types/video.py +4 -3
  82. wandb/sdk/interface/router.py +0 -2
  83. wandb/sdk/internal/datastore.py +1 -1
  84. wandb/sdk/internal/file_pusher.py +1 -1
  85. wandb/sdk/internal/file_stream.py +4 -4
  86. wandb/sdk/internal/handler.py +3 -2
  87. wandb/sdk/internal/internal.py +1 -1
  88. wandb/sdk/internal/internal_api.py +183 -64
  89. wandb/sdk/internal/job_builder.py +4 -3
  90. wandb/sdk/internal/system/assets/__init__.py +0 -2
  91. wandb/sdk/internal/tb_watcher.py +11 -10
  92. wandb/sdk/launch/_launch.py +4 -3
  93. wandb/sdk/launch/_launch_add.py +2 -2
  94. wandb/sdk/launch/builder/kaniko_builder.py +0 -1
  95. wandb/sdk/launch/create_job.py +1 -0
  96. wandb/sdk/launch/environment/local_environment.py +0 -1
  97. wandb/sdk/launch/errors.py +0 -6
  98. wandb/sdk/launch/registry/local_registry.py +0 -2
  99. wandb/sdk/launch/runner/abstract.py +0 -5
  100. wandb/sdk/launch/sweeps/__init__.py +0 -2
  101. wandb/sdk/launch/sweeps/scheduler.py +0 -2
  102. wandb/sdk/launch/sweeps/scheduler_sweep.py +0 -1
  103. wandb/sdk/lib/apikey.py +3 -3
  104. wandb/sdk/lib/file_stream_utils.py +1 -1
  105. wandb/sdk/lib/filesystem.py +1 -1
  106. wandb/sdk/lib/ipython.py +16 -9
  107. wandb/sdk/lib/mailbox.py +0 -4
  108. wandb/sdk/lib/printer.py +44 -8
  109. wandb/sdk/lib/retry.py +1 -1
  110. wandb/sdk/service/service.py +3 -3
  111. wandb/sdk/service/streams.py +2 -4
  112. wandb/sdk/wandb_init.py +20 -20
  113. wandb/sdk/wandb_login.py +1 -1
  114. wandb/sdk/wandb_require.py +1 -4
  115. wandb/sdk/wandb_run.py +57 -69
  116. wandb/sdk/wandb_settings.py +3 -4
  117. wandb/sdk/wandb_sync.py +2 -1
  118. wandb/util.py +46 -18
  119. wandb/wandb_agent.py +3 -3
  120. wandb/wandb_controller.py +2 -2
  121. {wandb-0.18.4.dist-info → wandb-0.18.6.dist-info}/METADATA +1 -1
  122. {wandb-0.18.4.dist-info → wandb-0.18.6.dist-info}/RECORD +125 -126
  123. wandb/sdk/internal/system/assets/gpu_apple.py +0 -177
  124. wandb/sdk/lib/_wburls_generate.py +0 -25
  125. wandb/sdk/lib/_wburls_generated.py +0 -22
  126. wandb/sdk/lib/wburls.py +0 -46
  127. {wandb-0.18.4.dist-info → wandb-0.18.6.dist-info}/WHEEL +0 -0
  128. {wandb-0.18.4.dist-info → wandb-0.18.6.dist-info}/entry_points.txt +0 -0
  129. {wandb-0.18.4.dist-info → wandb-0.18.6.dist-info}/licenses/LICENSE +0 -0
@@ -1,177 +0,0 @@
1
- import json
2
- import logging
3
- import pathlib
4
- import platform
5
- import subprocess
6
- import sys
7
- import threading
8
- from collections import deque
9
- from typing import TYPE_CHECKING, List
10
-
11
- if sys.version_info >= (3, 8):
12
- from typing import TypedDict
13
- else:
14
- from typing_extensions import TypedDict
15
-
16
- from wandb.sdk.lib import telemetry
17
-
18
- from .aggregators import aggregate_mean
19
- from .asset_registry import asset_registry
20
- from .interfaces import Interface, Metric, MetricsMonitor
21
-
22
- if TYPE_CHECKING:
23
- from typing import Deque
24
-
25
- from wandb.sdk.internal.settings_static import SettingsStatic
26
-
27
-
28
- logger = logging.getLogger(__name__)
29
-
30
-
31
- class _Stats(TypedDict):
32
- gpu: float
33
- memoryAllocated: float # noqa: N815
34
- temp: float
35
- powerWatts: float # noqa: N815
36
- powerPercent: float # noqa: N815
37
- # cpuWaitMs: float
38
-
39
-
40
- def get_apple_gpu_path() -> pathlib.Path:
41
- return (
42
- pathlib.Path(sys.modules["wandb"].__path__[0]) / "bin" / "apple_gpu_stats"
43
- ).resolve()
44
-
45
-
46
- class GPUAppleStats:
47
- """Apple GPU stats available on Arm Macs."""
48
-
49
- name = "gpu.0.{}"
50
- samples: "Deque[_Stats]"
51
-
52
- # TODO: hard coded max watts as 16.5, found this number in the SMC list.
53
- # Eventually we can have the apple_gpu_stats binary query for this.
54
- MAX_POWER_WATTS = 16.5
55
-
56
- def __init__(self) -> None:
57
- self.samples = deque()
58
- self.binary_path = get_apple_gpu_path()
59
-
60
- def sample(self) -> None:
61
- try:
62
- command = [str(self.binary_path), "--json"]
63
- output = (
64
- subprocess.check_output(command, universal_newlines=True)
65
- .strip()
66
- .split("\n")
67
- )[0]
68
- raw_stats = json.loads(output)
69
-
70
- temp_keys = [
71
- "m1Gpu1",
72
- "m1Gpu2",
73
- "m1Gpu3",
74
- "m1Gpu4",
75
- "m2Gpu1",
76
- "m2Gpu2",
77
- "m3Gpu1",
78
- "m3Gpu2",
79
- "m3Gpu3",
80
- "m3Gpu4",
81
- "m3Gpu5",
82
- "m3Gpu6",
83
- "m3Gpu7",
84
- "m3Gpu8",
85
- ]
86
- temp, count = 0, 0
87
- for k in temp_keys:
88
- if raw_stats.get(k, 0) > 0:
89
- temp += raw_stats[k]
90
- count += 1
91
-
92
- stats: _Stats = {
93
- "gpu": raw_stats["utilization"],
94
- "memoryAllocated": (
95
- raw_stats["inUseSystemMemory"]
96
- / raw_stats["allocatedSystemMemory"]
97
- * 100
98
- ),
99
- "powerWatts": raw_stats["systemPower"],
100
- "powerPercent": (raw_stats["systemPower"] / self.MAX_POWER_WATTS) * 100,
101
- "temp": temp / count if count > 0 else 0,
102
- # TODO: this stat could be useful eventually, it was consistently
103
- # 0 in my experimentation and requires a frontend change
104
- # so leaving it out for now.
105
- # "cpuWaitMs": raw_stats["cpu_wait_ms"],
106
- }
107
- self.samples.append(stats)
108
-
109
- except (OSError, ValueError, TypeError, subprocess.CalledProcessError) as e:
110
- logger.exception("GPU stats error: %s", e)
111
-
112
- def clear(self) -> None:
113
- self.samples.clear()
114
-
115
- def aggregate(self) -> dict:
116
- if not self.samples:
117
- return {}
118
- stats = {}
119
- for key in self.samples[0].keys():
120
- samples = [s[key] for s in self.samples] # type: ignore
121
- aggregate = aggregate_mean(samples)
122
- stats[self.name.format(key)] = aggregate
123
- return stats
124
-
125
-
126
- @asset_registry.register
127
- class GPUApple:
128
- def __init__(
129
- self,
130
- interface: "Interface",
131
- settings: "SettingsStatic",
132
- shutdown_event: threading.Event,
133
- ) -> None:
134
- self.name = self.__class__.__name__.lower()
135
- self.metrics: List[Metric] = [
136
- GPUAppleStats(),
137
- ]
138
- self.metrics_monitor = MetricsMonitor(
139
- self.name,
140
- self.metrics,
141
- interface,
142
- settings,
143
- shutdown_event,
144
- )
145
- telemetry_record = telemetry.TelemetryRecord()
146
- telemetry_record.env.m1_gpu = True
147
- interface._publish_telemetry(telemetry_record)
148
- self.binary_path = get_apple_gpu_path()
149
-
150
- @classmethod
151
- def is_available(cls) -> bool:
152
- return platform.system() == "Darwin" and platform.processor() == "arm"
153
-
154
- def start(self) -> None:
155
- self.metrics_monitor.start()
156
-
157
- def finish(self) -> None:
158
- self.metrics_monitor.finish()
159
-
160
- def probe(self) -> dict:
161
- try:
162
- command = [str(self.binary_path), "--json"]
163
- output = (
164
- subprocess.check_output(command, universal_newlines=True)
165
- .strip()
166
- .split("\n")
167
- )[0]
168
- raw_stats = json.loads(output)
169
- return {
170
- self.name: {
171
- "type": raw_stats["name"],
172
- "vendor": raw_stats["vendor"],
173
- }
174
- }
175
- except (OSError, ValueError, TypeError, subprocess.CalledProcessError) as e:
176
- logger.exception("GPU stats error: %s", e)
177
- return {self.name: {"type": "arm", "vendor": "Apple"}}
@@ -1,25 +0,0 @@
1
- from wburls import wburls # type: ignore
2
-
3
- template = """
4
- import sys
5
-
6
- if sys.version_info >= (3, 8):
7
- from typing import Literal
8
- else:
9
- from typing_extensions import Literal
10
-
11
-
12
- URLS = Literal[
13
- $literal_list
14
- ]
15
- """
16
-
17
-
18
- def generate() -> None:
19
- urls = wburls._get_urls()
20
- literal_list = ", ".join([f"{key!r}" for key in urls])
21
- print(template.replace("$literal_list", literal_list))
22
-
23
-
24
- if __name__ == "__main__":
25
- generate()
@@ -1,22 +0,0 @@
1
- # DO NOT EDIT -- GENERATED BY: `generate-tool.py --generate`
2
- import sys
3
-
4
- if sys.version_info >= (3, 8):
5
- from typing import Literal
6
- else:
7
- from typing_extensions import Literal
8
-
9
-
10
- URLS = Literal[
11
- "cli_launch",
12
- "doc_run",
13
- "doc_require",
14
- "doc_start_err",
15
- "doc_artifacts_guide",
16
- "upgrade_server",
17
- "multiprocess",
18
- "wandb_init",
19
- "wandb_server",
20
- "wandb_define_metric",
21
- "wandb_core",
22
- ]
wandb/sdk/lib/wburls.py DELETED
@@ -1,46 +0,0 @@
1
- """Container for urls used in the wandb package.
2
-
3
- Use this anytime a URL is displayed to the user.
4
-
5
- Usage:
6
- ```python
7
- from wandb.sdk.lib.wburls import wburls
8
-
9
- print(f"This is a url {wburls.get('cli_launch')}")
10
- ```
11
- """
12
-
13
- from typing import TYPE_CHECKING, Dict, Optional
14
-
15
- if TYPE_CHECKING:
16
- from ._wburls_generated import URLS
17
-
18
-
19
- class WBURLs:
20
- _urls_dict: Optional[Dict["URLS", str]]
21
-
22
- def __init__(self) -> None:
23
- self._urls_dict = None
24
-
25
- def _get_urls(self) -> Dict["URLS", str]:
26
- return dict(
27
- cli_launch="https://wandb.me/launch",
28
- doc_run="https://wandb.me/run",
29
- doc_require="https://wandb.me/library-require",
30
- doc_start_err="https://docs.wandb.ai/guides/track/tracking-faq#initstarterror-error-communicating-with-wandb-process-",
31
- doc_artifacts_guide="https://docs.wandb.ai/guides/artifacts",
32
- upgrade_server="https://wandb.me/server-upgrade",
33
- multiprocess="http://wandb.me/init-multiprocess",
34
- wandb_init="https://wandb.me/wandb-init",
35
- wandb_server="https://wandb.me/wandb-server",
36
- wandb_define_metric="https://wandb.me/define-metric",
37
- wandb_core="https://wandb.me/wandb-core",
38
- )
39
-
40
- def get(self, s: "URLS") -> str:
41
- if self._urls_dict is None:
42
- self._urls_dict = self._get_urls()
43
- return self._urls_dict[s]
44
-
45
-
46
- wburls = WBURLs()
File without changes