wandb 0.13.11__py3-none-any.whl → 0.14.0__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/apis/importers/__init__.py +4 -0
- wandb/apis/importers/base.py +312 -0
- wandb/apis/importers/mlflow.py +113 -0
- wandb/apis/internal.py +9 -0
- wandb/apis/public.py +0 -2
- wandb/cli/cli.py +100 -72
- wandb/docker/__init__.py +33 -5
- wandb/proto/v3/wandb_telemetry_pb2.py +10 -10
- wandb/proto/v4/wandb_telemetry_pb2.py +10 -10
- wandb/sdk/internal/internal_api.py +85 -9
- wandb/sdk/launch/_project_spec.py +45 -55
- wandb/sdk/launch/agent/agent.py +80 -18
- wandb/sdk/launch/builder/build.py +16 -74
- wandb/sdk/launch/builder/docker_builder.py +36 -8
- wandb/sdk/launch/builder/kaniko_builder.py +78 -37
- wandb/sdk/launch/builder/templates/_wandb_bootstrap.py +68 -18
- wandb/sdk/launch/environment/aws_environment.py +4 -0
- wandb/sdk/launch/launch.py +1 -6
- wandb/sdk/launch/launch_add.py +0 -5
- wandb/sdk/launch/registry/abstract.py +12 -0
- wandb/sdk/launch/registry/elastic_container_registry.py +31 -1
- wandb/sdk/launch/registry/google_artifact_registry.py +32 -0
- wandb/sdk/launch/registry/local_registry.py +15 -1
- wandb/sdk/launch/runner/abstract.py +0 -14
- wandb/sdk/launch/runner/kubernetes_runner.py +25 -19
- wandb/sdk/launch/runner/local_container.py +7 -8
- wandb/sdk/launch/runner/local_process.py +0 -3
- wandb/sdk/launch/runner/sagemaker_runner.py +0 -3
- wandb/sdk/launch/runner/vertex_runner.py +0 -2
- wandb/sdk/launch/sweeps/scheduler.py +39 -10
- wandb/sdk/launch/utils.py +52 -4
- wandb/sdk/wandb_run.py +3 -10
- wandb/sync/sync.py +1 -0
- wandb/util.py +1 -0
- {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/METADATA +1 -1
- {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/RECORD +41 -38
- {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/WHEEL +1 -1
- {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/LICENSE +0 -0
- {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/entry_points.txt +0 -0
- {wandb-0.13.11.dist-info → wandb-0.14.0.dist-info}/top_level.txt +0 -0
wandb/cli/cli.py
CHANGED
@@ -897,8 +897,12 @@ def sweep(
|
|
897
897
|
launch_config = {}
|
898
898
|
wandb.termlog(f"Using launch 🚀 with config: {launch_config}")
|
899
899
|
|
900
|
-
if entity is None
|
901
|
-
_msg = "Must specify --entity
|
900
|
+
if entity is None:
|
901
|
+
_msg = "Must specify --entity flag when using launch."
|
902
|
+
wandb.termerror(_msg)
|
903
|
+
raise LaunchError(_msg)
|
904
|
+
elif project is None:
|
905
|
+
_msg = "A project must be configured when using launch."
|
902
906
|
wandb.termerror(_msg)
|
903
907
|
raise LaunchError(_msg)
|
904
908
|
|
@@ -936,6 +940,10 @@ def sweep(
|
|
936
940
|
]
|
937
941
|
|
938
942
|
if _job:
|
943
|
+
if ":" not in _job:
|
944
|
+
wandb.termwarn("No alias specified for job, defaulting to 'latest'")
|
945
|
+
_job += ":latest"
|
946
|
+
|
939
947
|
scheduler_entrypoint += [
|
940
948
|
"--job",
|
941
949
|
_job,
|
@@ -950,24 +958,21 @@ def sweep(
|
|
950
958
|
"run_queue_project": project_queue,
|
951
959
|
"run_spec": json.dumps(
|
952
960
|
construct_launch_spec(
|
953
|
-
SCHEDULER_URI,
|
954
|
-
None,
|
955
|
-
api,
|
956
|
-
"Scheduler.WANDB_SWEEP_ID",
|
957
|
-
project,
|
958
|
-
entity,
|
959
|
-
scheduler_config.get("docker_image"),
|
960
|
-
scheduler_config.get("resource", "local-process"),
|
961
|
-
scheduler_entrypoint,
|
962
|
-
None,
|
963
|
-
None,
|
964
|
-
scheduler_config.get("resource_args"
|
965
|
-
None,
|
966
|
-
None,
|
967
|
-
|
968
|
-
launch_config.get("registry", {}).get(
|
969
|
-
"url", None
|
970
|
-
), # repository
|
961
|
+
uri=SCHEDULER_URI,
|
962
|
+
job=None,
|
963
|
+
api=api,
|
964
|
+
name="Scheduler.WANDB_SWEEP_ID",
|
965
|
+
project=project,
|
966
|
+
entity=entity,
|
967
|
+
docker_image=scheduler_config.get("docker_image"),
|
968
|
+
resource=scheduler_config.get("resource", "local-process"),
|
969
|
+
entry_point=scheduler_entrypoint,
|
970
|
+
version=None,
|
971
|
+
parameters=None,
|
972
|
+
resource_args=scheduler_config.get("resource_args", {}),
|
973
|
+
launch_config=None,
|
974
|
+
run_id=None,
|
975
|
+
repository=launch_config.get("registry", {}).get("url", None),
|
971
976
|
)
|
972
977
|
),
|
973
978
|
}
|
@@ -1031,7 +1036,7 @@ def sweep(
|
|
1031
1036
|
"uri of the form https://wandb.ai/entity/project/runs/run_id, "
|
1032
1037
|
"or a git uri pointing to a remote repository, or path to a local directory.",
|
1033
1038
|
)
|
1034
|
-
@click.
|
1039
|
+
@click.option("--uri", "-u", metavar="(str)", default=None, hidden=True)
|
1035
1040
|
@click.option(
|
1036
1041
|
"--job",
|
1037
1042
|
"-j",
|
@@ -1053,6 +1058,7 @@ def sweep(
|
|
1053
1058
|
"--git-version",
|
1054
1059
|
"-g",
|
1055
1060
|
metavar="GIT-VERSION",
|
1061
|
+
hidden=True,
|
1056
1062
|
help="Version of the project to run, as a Git commit reference for Git projects.",
|
1057
1063
|
)
|
1058
1064
|
@click.option(
|
@@ -1136,18 +1142,11 @@ def sweep(
|
|
1136
1142
|
"as resource args to the compute resource. The exact content which should be "
|
1137
1143
|
"provided is different for each execution backend. See documentation for layout of this file.",
|
1138
1144
|
)
|
1139
|
-
@click.option(
|
1140
|
-
"--cuda",
|
1141
|
-
is_flag=False,
|
1142
|
-
flag_value=True,
|
1143
|
-
default=None,
|
1144
|
-
help="Flag to build an image with CUDA enabled. If reproducing a previous wandb run that ran on GPU, a CUDA-enabled image will be "
|
1145
|
-
"built by default and you must set --cuda=False to build a CPU-only image.",
|
1146
|
-
)
|
1147
1145
|
@click.option(
|
1148
1146
|
"--build",
|
1149
1147
|
"-b",
|
1150
1148
|
is_flag=True,
|
1149
|
+
hidden=True,
|
1151
1150
|
help="Flag to build an associated job and push to queue as an image job.",
|
1152
1151
|
)
|
1153
1152
|
@click.option(
|
@@ -1155,6 +1154,7 @@ def sweep(
|
|
1155
1154
|
"-rg",
|
1156
1155
|
is_flag=False,
|
1157
1156
|
default=None,
|
1157
|
+
hidden=True,
|
1158
1158
|
help="Name of a remote repository. Will be used to push a built image to.",
|
1159
1159
|
)
|
1160
1160
|
# TODO: this is only included for back compat. But we should remove this in the future
|
@@ -1180,7 +1180,6 @@ def launch(
|
|
1180
1180
|
queue,
|
1181
1181
|
run_async,
|
1182
1182
|
resource_args,
|
1183
|
-
cuda,
|
1184
1183
|
build,
|
1185
1184
|
repository,
|
1186
1185
|
project_queue,
|
@@ -1198,6 +1197,7 @@ def launch(
|
|
1198
1197
|
logger.info(
|
1199
1198
|
f"=== Launch called with kwargs {locals()} CLI Version: {wandb.__version__}==="
|
1200
1199
|
)
|
1200
|
+
util.sentry_set_scope(process_context="launch_cli")
|
1201
1201
|
from wandb.sdk.launch import launch as wandb_launch
|
1202
1202
|
|
1203
1203
|
wandb.termlog(
|
@@ -1210,18 +1210,6 @@ def launch(
|
|
1210
1210
|
"Cannot use both --async and --queue with wandb launch, see help for details."
|
1211
1211
|
)
|
1212
1212
|
|
1213
|
-
# we take a string for the `cuda` arg in order to accept None values, then convert it to a bool
|
1214
|
-
if cuda is not None:
|
1215
|
-
# preserve cuda=None as unspecified, otherwise convert to bool
|
1216
|
-
if cuda == "True":
|
1217
|
-
cuda = True
|
1218
|
-
elif cuda == "False":
|
1219
|
-
cuda = False
|
1220
|
-
else:
|
1221
|
-
raise LaunchError(
|
1222
|
-
f"Invalid value for --cuda: {cuda!r} is not a valid boolean."
|
1223
|
-
)
|
1224
|
-
|
1225
1213
|
args_dict = util._user_args_to_dict(args_list)
|
1226
1214
|
|
1227
1215
|
if resource_args is not None:
|
@@ -1271,38 +1259,42 @@ def launch(
|
|
1271
1259
|
resource_args=resource_args,
|
1272
1260
|
config=config,
|
1273
1261
|
synchronous=(not run_async),
|
1274
|
-
cuda=cuda,
|
1275
1262
|
run_id=run_id,
|
1276
1263
|
repository=repository,
|
1277
1264
|
)
|
1278
1265
|
except LaunchError as e:
|
1279
1266
|
logger.error("=== %s ===", e)
|
1267
|
+
util.sentry_exc(e)
|
1280
1268
|
sys.exit(e)
|
1281
1269
|
except ExecutionError as e:
|
1282
1270
|
logger.error("=== %s ===", e)
|
1271
|
+
util.sentry_exc(e)
|
1283
1272
|
sys.exit(e)
|
1284
1273
|
else:
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1301
|
-
|
1302
|
-
|
1303
|
-
|
1304
|
-
|
1305
|
-
|
1274
|
+
try:
|
1275
|
+
_launch_add(
|
1276
|
+
api,
|
1277
|
+
uri,
|
1278
|
+
job,
|
1279
|
+
config,
|
1280
|
+
project,
|
1281
|
+
entity,
|
1282
|
+
queue,
|
1283
|
+
resource,
|
1284
|
+
entry_point,
|
1285
|
+
name,
|
1286
|
+
git_version,
|
1287
|
+
docker_image,
|
1288
|
+
args_dict,
|
1289
|
+
project_queue,
|
1290
|
+
resource_args,
|
1291
|
+
build=build,
|
1292
|
+
run_id=run_id,
|
1293
|
+
repository=repository,
|
1294
|
+
)
|
1295
|
+
except Exception as e:
|
1296
|
+
util.sentry_exc(e)
|
1297
|
+
raise e
|
1306
1298
|
|
1307
1299
|
|
1308
1300
|
@cli.command(
|
@@ -1361,6 +1353,7 @@ def launch_agent(
|
|
1361
1353
|
logger.info(
|
1362
1354
|
f"=== Launch-agent called with kwargs {locals()} CLI Version: {wandb.__version__} ==="
|
1363
1355
|
)
|
1356
|
+
util.sentry_set_scope(process_context="launch_agent")
|
1364
1357
|
if url is not None:
|
1365
1358
|
raise LaunchError(
|
1366
1359
|
"--url is not supported in this version, upgrade with: pip install -u wandb"
|
@@ -1388,7 +1381,11 @@ def launch_agent(
|
|
1388
1381
|
check_logged_in(api)
|
1389
1382
|
|
1390
1383
|
wandb.termlog("Starting launch agent ✨")
|
1391
|
-
|
1384
|
+
try:
|
1385
|
+
wandb_launch.create_and_run_agent(api, agent_config)
|
1386
|
+
except Exception as e:
|
1387
|
+
util.sentry_exc(e)
|
1388
|
+
raise e
|
1392
1389
|
|
1393
1390
|
|
1394
1391
|
@cli.command(context_settings=CONTEXT, help="Run the W&B agent")
|
@@ -1431,6 +1428,7 @@ def scheduler(
|
|
1431
1428
|
ctx.invoke(login, no_offline=True)
|
1432
1429
|
api = _get_cling_api(reset=True)
|
1433
1430
|
|
1431
|
+
util.sentry_set_scope(process_context="sweep_scheduler")
|
1434
1432
|
wandb.termlog("Starting a Launch Scheduler 🚀")
|
1435
1433
|
from wandb.sdk.launch.sweeps import load_scheduler
|
1436
1434
|
|
@@ -1445,13 +1443,16 @@ def scheduler(
|
|
1445
1443
|
if str.isdigit(_args):
|
1446
1444
|
_args = int(_args)
|
1447
1445
|
kwargs[_key] = _args
|
1448
|
-
|
1449
|
-
|
1450
|
-
|
1451
|
-
|
1452
|
-
|
1453
|
-
|
1454
|
-
|
1446
|
+
try:
|
1447
|
+
_scheduler = load_scheduler("sweep")(
|
1448
|
+
api,
|
1449
|
+
sweep_id=sweep_id,
|
1450
|
+
**kwargs,
|
1451
|
+
)
|
1452
|
+
_scheduler.start()
|
1453
|
+
except Exception as e:
|
1454
|
+
util.sentry_exc(e)
|
1455
|
+
raise e
|
1455
1456
|
|
1456
1457
|
|
1457
1458
|
@cli.command(context_settings=CONTEXT, help="Run the W&B local sweep controller")
|
@@ -2343,3 +2344,30 @@ def verify(host):
|
|
2343
2344
|
and url_success
|
2344
2345
|
):
|
2345
2346
|
sys.exit(1)
|
2347
|
+
|
2348
|
+
|
2349
|
+
@cli.group("import", help="Commands for importing data from other systems")
|
2350
|
+
def importer():
|
2351
|
+
pass
|
2352
|
+
|
2353
|
+
|
2354
|
+
@importer.command("mlflow", help="Import from MLFlow")
|
2355
|
+
@click.option("--mlflow-tracking-uri", help="MLFlow Tracking URI")
|
2356
|
+
@click.option(
|
2357
|
+
"--target-entity", required=True, help="Override default entity to import data into"
|
2358
|
+
)
|
2359
|
+
@click.option(
|
2360
|
+
"--target-project",
|
2361
|
+
required=True,
|
2362
|
+
help="Override default project to import data into",
|
2363
|
+
)
|
2364
|
+
def mlflow(mlflow_tracking_uri, target_entity, target_project):
|
2365
|
+
from wandb.apis.importers import MlflowImporter
|
2366
|
+
|
2367
|
+
importer = MlflowImporter(mlflow_tracking_uri=mlflow_tracking_uri)
|
2368
|
+
overrides = {
|
2369
|
+
"entity": target_entity,
|
2370
|
+
"project": target_project,
|
2371
|
+
}
|
2372
|
+
|
2373
|
+
importer.import_all_parallel(overrides=overrides)
|
wandb/docker/__init__.py
CHANGED
@@ -87,12 +87,40 @@ def build(tags: List[str], file: str, context_path: str) -> str:
|
|
87
87
|
build_tags = []
|
88
88
|
for tag in tags:
|
89
89
|
build_tags += ["-t", tag]
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
capture_stdout=False,
|
90
|
+
args = ["docker"] + command + build_tags + ["-f", file, context_path]
|
91
|
+
stdout = run_command_live_output(
|
92
|
+
args,
|
94
93
|
)
|
95
|
-
return
|
94
|
+
return stdout
|
95
|
+
|
96
|
+
|
97
|
+
def run_command_live_output(args: List[Any]) -> str:
|
98
|
+
with subprocess.Popen(
|
99
|
+
args,
|
100
|
+
stdout=subprocess.PIPE,
|
101
|
+
stderr=subprocess.STDOUT,
|
102
|
+
universal_newlines=True,
|
103
|
+
bufsize=1,
|
104
|
+
) as process:
|
105
|
+
stdout = ""
|
106
|
+
while True:
|
107
|
+
chunk = os.read(process.stdout.fileno(), 4096) # type: ignore
|
108
|
+
if not chunk:
|
109
|
+
break
|
110
|
+
index = chunk.find(b"\r")
|
111
|
+
if index != -1:
|
112
|
+
print(chunk.decode(), end="")
|
113
|
+
else:
|
114
|
+
stdout += chunk.decode()
|
115
|
+
print(chunk.decode(), end="\r")
|
116
|
+
|
117
|
+
print(stdout)
|
118
|
+
|
119
|
+
return_code = process.wait()
|
120
|
+
if return_code != 0:
|
121
|
+
raise DockerError(args, return_code, stdout.encode())
|
122
|
+
|
123
|
+
return stdout
|
96
124
|
|
97
125
|
|
98
126
|
def run(
|
@@ -15,7 +15,7 @@ _sym_db = _symbol_database.Default()
|
|
15
15
|
from wandb.proto import wandb_base_pb2 as wandb_dot_proto_dot_wandb__base__pb2
|
16
16
|
|
17
17
|
|
18
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!wandb/proto/wandb_telemetry.proto\x12\x0ewandb_internal\x1a\x1cwandb/proto/wandb_base.proto\"\xb3\x03\n\x0fTelemetryRecord\x12-\n\x0cimports_init\x18\x01 \x01(\x0b\x32\x17.wandb_internal.Imports\x12/\n\x0eimports_finish\x18\x02 \x01(\x0b\x32\x17.wandb_internal.Imports\x12(\n\x07\x66\x65\x61ture\x18\x03 \x01(\x0b\x32\x17.wandb_internal.Feature\x12\x16\n\x0epython_version\x18\x04 \x01(\t\x12\x13\n\x0b\x63li_version\x18\x05 \x01(\t\x12\x1b\n\x13huggingface_version\x18\x06 \x01(\t\x12 \n\x03\x65nv\x18\x08 \x01(\x0b\x32\x13.wandb_internal.Env\x12%\n\x05label\x18\t \x01(\x0b\x32\x16.wandb_internal.Labels\x12.\n\ndeprecated\x18\n \x01(\x0b\x32\x1a.wandb_internal.Deprecated\x12&\n\x06issues\x18\x0b \x01(\x0b\x32\x16.wandb_internal.Issues\x12+\n\x05_info\x18\xc8\x01 \x01(\x0b\x32\x1b.wandb_internal._RecordInfo\"\x11\n\x0fTelemetryResult\"\xb2\n\n\x07Imports\x12\r\n\x05torch\x18\x01 \x01(\x08\x12\r\n\x05keras\x18\x02 \x01(\x08\x12\x12\n\ntensorflow\x18\x03 \x01(\x08\x12\x0e\n\x06\x66\x61stai\x18\x04 \x01(\x08\x12\x0f\n\x07sklearn\x18\x05 \x01(\x08\x12\x0f\n\x07xgboost\x18\x06 \x01(\x08\x12\x10\n\x08\x63\x61tboost\x18\x07 \x01(\x08\x12\x10\n\x08lightgbm\x18\x08 \x01(\x08\x12\x19\n\x11pytorch_lightning\x18\t \x01(\x08\x12\x0e\n\x06ignite\x18\n \x01(\x08\x12\x14\n\x0ctransformers\x18\x0b \x01(\x08\x12\x0b\n\x03jax\x18\x0c \x01(\x08\x12\x10\n\x08metaflow\x18\r \x01(\x08\x12\x10\n\x08\x61llennlp\x18\x0e \x01(\x08\x12\x11\n\tautogluon\x18\x0f \x01(\x08\x12\x11\n\tautokeras\x18\x10 \x01(\x08\x12\x10\n\x08\x63\x61talyst\x18\x12 \x01(\x08\x12\x10\n\x08\x64\x65\x65pchem\x18\x15 \x01(\x08\x12\x0f\n\x07\x64\x65\x65pctr\x18\x16 \x01(\x08\x12\x0f\n\x07pycaret\x18\x1c \x01(\x08\x12\x14\n\x0cpytorchvideo\x18\x1d \x01(\x08\x12\x0b\n\x03ray\x18\x1e \x01(\x08\x12\x1a\n\x12simpletransformers\x18\x1f \x01(\x08\x12\x0e\n\x06skorch\x18 \x01(\x08\x12\r\n\x05spacy\x18! \x01(\x08\x12\r\n\x05\x66lash\x18\" \x01(\x08\x12\x0e\n\x06optuna\x18# \x01(\x08\x12\x0f\n\x07recbole\x18$ \x01(\x08\x12\x0c\n\x04mmcv\x18% \x01(\x08\x12\r\n\x05mmdet\x18& \x01(\x08\x12\x11\n\ttorchdrug\x18\' \x01(\x08\x12\x11\n\ttorchtext\x18( \x01(\x08\x12\x13\n\x0btorchvision\x18) \x01(\x08\x12\r\n\x05\x65legy\x18* \x01(\x08\x12\x12\n\ndetectron2\x18+ \x01(\x08\x12\r\n\x05\x66lair\x18, \x01(\x08\x12\x0c\n\x04\x66lax\x18- \x01(\x08\x12\x0c\n\x04syft\x18. \x01(\x08\x12\x0b\n\x03TTS\x18/ \x01(\x08\x12\r\n\x05monai\x18\x30 \x01(\x08\x12\x17\n\x0fhuggingface_hub\x18\x31 \x01(\x08\x12\r\n\x05hydra\x18\x32 \x01(\x08\x12\x10\n\x08\x64\x61tasets\x18\x33 \x01(\x08\x12\x0e\n\x06sacred\x18\x34 \x01(\x08\x12\x0e\n\x06joblib\x18\x35 \x01(\x08\x12\x0c\n\x04\x64\x61sk\x18\x36 \x01(\x08\x12\x0f\n\x07\x61syncio\x18\x37 \x01(\x08\x12\x11\n\tpaddleocr\x18\x38 \x01(\x08\x12\r\n\x05ppdet\x18\x39 \x01(\x08\x12\x11\n\tpaddleseg\x18: \x01(\x08\x12\x11\n\tpaddlenlp\x18; \x01(\x08\x12\r\n\x05mmseg\x18< \x01(\x08\x12\r\n\x05mmocr\x18= \x01(\x08\x12\r\n\x05mmcls\x18> \x01(\x08\x12\x0c\n\x04timm\x18? \x01(\x08\x12\x0f\n\x07\x66\x61irseq\x18@ \x01(\x08\x12\x12\n\ndeepchecks\x18\x41 \x01(\x08\x12\x10\n\x08\x63omposer\x18\x42 \x01(\x08\x12\x10\n\x08sparseml\x18\x43 \x01(\x08\x12\x10\n\x08\x61nomalib\x18\x44 \x01(\x08\x12\r\n\x05zenml\x18\x45 \x01(\x08\x12\x12\n\ncolossalai\x18\x46 \x01(\x08\x12\x12\n\naccelerate\x18G \x01(\x08\x12\x0e\n\x06merlin\x18H \x01(\x08\x12\x0f\n\x07nanodet\x18I \x01(\x08\x12#\n\x1bsegmentation_models_pytorch\x18J \x01(\x08\x12\x1d\n\x15sentence_transformers\x18K \x01(\x08\x12\x0b\n\x03\x64gl\x18L \x01(\x08\x12\x17\n\x0ftorch_geometric\x18M \x01(\x08\x12\x0c\n\x04jina\x18N \x01(\x08\x12\x0e\n\x06kornia\x18O \x01(\x08\x12\x16\n\x0e\x61lbumentations\x18P \x01(\x08\x12\x10\n\x08keras_cv\x18Q \x01(\x08\x12\x10\n\x08mmengine\x18R \x01(\x08\"\
|
18
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!wandb/proto/wandb_telemetry.proto\x12\x0ewandb_internal\x1a\x1cwandb/proto/wandb_base.proto\"\xb3\x03\n\x0fTelemetryRecord\x12-\n\x0cimports_init\x18\x01 \x01(\x0b\x32\x17.wandb_internal.Imports\x12/\n\x0eimports_finish\x18\x02 \x01(\x0b\x32\x17.wandb_internal.Imports\x12(\n\x07\x66\x65\x61ture\x18\x03 \x01(\x0b\x32\x17.wandb_internal.Feature\x12\x16\n\x0epython_version\x18\x04 \x01(\t\x12\x13\n\x0b\x63li_version\x18\x05 \x01(\t\x12\x1b\n\x13huggingface_version\x18\x06 \x01(\t\x12 \n\x03\x65nv\x18\x08 \x01(\x0b\x32\x13.wandb_internal.Env\x12%\n\x05label\x18\t \x01(\x0b\x32\x16.wandb_internal.Labels\x12.\n\ndeprecated\x18\n \x01(\x0b\x32\x1a.wandb_internal.Deprecated\x12&\n\x06issues\x18\x0b \x01(\x0b\x32\x16.wandb_internal.Issues\x12+\n\x05_info\x18\xc8\x01 \x01(\x0b\x32\x1b.wandb_internal._RecordInfo\"\x11\n\x0fTelemetryResult\"\xb2\n\n\x07Imports\x12\r\n\x05torch\x18\x01 \x01(\x08\x12\r\n\x05keras\x18\x02 \x01(\x08\x12\x12\n\ntensorflow\x18\x03 \x01(\x08\x12\x0e\n\x06\x66\x61stai\x18\x04 \x01(\x08\x12\x0f\n\x07sklearn\x18\x05 \x01(\x08\x12\x0f\n\x07xgboost\x18\x06 \x01(\x08\x12\x10\n\x08\x63\x61tboost\x18\x07 \x01(\x08\x12\x10\n\x08lightgbm\x18\x08 \x01(\x08\x12\x19\n\x11pytorch_lightning\x18\t \x01(\x08\x12\x0e\n\x06ignite\x18\n \x01(\x08\x12\x14\n\x0ctransformers\x18\x0b \x01(\x08\x12\x0b\n\x03jax\x18\x0c \x01(\x08\x12\x10\n\x08metaflow\x18\r \x01(\x08\x12\x10\n\x08\x61llennlp\x18\x0e \x01(\x08\x12\x11\n\tautogluon\x18\x0f \x01(\x08\x12\x11\n\tautokeras\x18\x10 \x01(\x08\x12\x10\n\x08\x63\x61talyst\x18\x12 \x01(\x08\x12\x10\n\x08\x64\x65\x65pchem\x18\x15 \x01(\x08\x12\x0f\n\x07\x64\x65\x65pctr\x18\x16 \x01(\x08\x12\x0f\n\x07pycaret\x18\x1c \x01(\x08\x12\x14\n\x0cpytorchvideo\x18\x1d \x01(\x08\x12\x0b\n\x03ray\x18\x1e \x01(\x08\x12\x1a\n\x12simpletransformers\x18\x1f \x01(\x08\x12\x0e\n\x06skorch\x18 \x01(\x08\x12\r\n\x05spacy\x18! \x01(\x08\x12\r\n\x05\x66lash\x18\" \x01(\x08\x12\x0e\n\x06optuna\x18# \x01(\x08\x12\x0f\n\x07recbole\x18$ \x01(\x08\x12\x0c\n\x04mmcv\x18% \x01(\x08\x12\r\n\x05mmdet\x18& \x01(\x08\x12\x11\n\ttorchdrug\x18\' \x01(\x08\x12\x11\n\ttorchtext\x18( \x01(\x08\x12\x13\n\x0btorchvision\x18) \x01(\x08\x12\r\n\x05\x65legy\x18* \x01(\x08\x12\x12\n\ndetectron2\x18+ \x01(\x08\x12\r\n\x05\x66lair\x18, \x01(\x08\x12\x0c\n\x04\x66lax\x18- \x01(\x08\x12\x0c\n\x04syft\x18. \x01(\x08\x12\x0b\n\x03TTS\x18/ \x01(\x08\x12\r\n\x05monai\x18\x30 \x01(\x08\x12\x17\n\x0fhuggingface_hub\x18\x31 \x01(\x08\x12\r\n\x05hydra\x18\x32 \x01(\x08\x12\x10\n\x08\x64\x61tasets\x18\x33 \x01(\x08\x12\x0e\n\x06sacred\x18\x34 \x01(\x08\x12\x0e\n\x06joblib\x18\x35 \x01(\x08\x12\x0c\n\x04\x64\x61sk\x18\x36 \x01(\x08\x12\x0f\n\x07\x61syncio\x18\x37 \x01(\x08\x12\x11\n\tpaddleocr\x18\x38 \x01(\x08\x12\r\n\x05ppdet\x18\x39 \x01(\x08\x12\x11\n\tpaddleseg\x18: \x01(\x08\x12\x11\n\tpaddlenlp\x18; \x01(\x08\x12\r\n\x05mmseg\x18< \x01(\x08\x12\r\n\x05mmocr\x18= \x01(\x08\x12\r\n\x05mmcls\x18> \x01(\x08\x12\x0c\n\x04timm\x18? \x01(\x08\x12\x0f\n\x07\x66\x61irseq\x18@ \x01(\x08\x12\x12\n\ndeepchecks\x18\x41 \x01(\x08\x12\x10\n\x08\x63omposer\x18\x42 \x01(\x08\x12\x10\n\x08sparseml\x18\x43 \x01(\x08\x12\x10\n\x08\x61nomalib\x18\x44 \x01(\x08\x12\r\n\x05zenml\x18\x45 \x01(\x08\x12\x12\n\ncolossalai\x18\x46 \x01(\x08\x12\x12\n\naccelerate\x18G \x01(\x08\x12\x0e\n\x06merlin\x18H \x01(\x08\x12\x0f\n\x07nanodet\x18I \x01(\x08\x12#\n\x1bsegmentation_models_pytorch\x18J \x01(\x08\x12\x1d\n\x15sentence_transformers\x18K \x01(\x08\x12\x0b\n\x03\x64gl\x18L \x01(\x08\x12\x17\n\x0ftorch_geometric\x18M \x01(\x08\x12\x0c\n\x04jina\x18N \x01(\x08\x12\x0e\n\x06kornia\x18O \x01(\x08\x12\x16\n\x0e\x61lbumentations\x18P \x01(\x08\x12\x10\n\x08keras_cv\x18Q \x01(\x08\x12\x10\n\x08mmengine\x18R \x01(\x08\"\x91\t\n\x07\x46\x65\x61ture\x12\r\n\x05watch\x18\x01 \x01(\x08\x12\x0e\n\x06\x66inish\x18\x02 \x01(\x08\x12\x0c\n\x04save\x18\x03 \x01(\x08\x12\x0f\n\x07offline\x18\x04 \x01(\x08\x12\x0f\n\x07resumed\x18\x05 \x01(\x08\x12\x0c\n\x04grpc\x18\x06 \x01(\x08\x12\x0e\n\x06metric\x18\x07 \x01(\x08\x12\r\n\x05keras\x18\x08 \x01(\x08\x12\x11\n\tsagemaker\x18\t \x01(\x08\x12\x1c\n\x14\x61rtifact_incremental\x18\n \x01(\x08\x12\x10\n\x08metaflow\x18\x0b \x01(\x08\x12\x0f\n\x07prodigy\x18\x0c \x01(\x08\x12\x15\n\rset_init_name\x18\r \x01(\x08\x12\x13\n\x0bset_init_id\x18\x0e \x01(\x08\x12\x15\n\rset_init_tags\x18\x0f \x01(\x08\x12\x17\n\x0fset_init_config\x18\x10 \x01(\x08\x12\x14\n\x0cset_run_name\x18\x11 \x01(\x08\x12\x14\n\x0cset_run_tags\x18\x12 \x01(\x08\x12\x17\n\x0fset_config_item\x18\x13 \x01(\x08\x12\x0e\n\x06launch\x18\x14 \x01(\x08\x12\x1c\n\x14torch_profiler_trace\x18\x15 \x01(\x08\x12\x0b\n\x03sb3\x18\x16 \x01(\x08\x12\x0f\n\x07service\x18\x17 \x01(\x08\x12\x17\n\x0finit_return_run\x18\x18 \x01(\x08\x12\x1f\n\x17lightgbm_wandb_callback\x18\x19 \x01(\x08\x12\x1c\n\x14lightgbm_log_summary\x18\x1a \x01(\x08\x12\x1f\n\x17\x63\x61tboost_wandb_callback\x18\x1b \x01(\x08\x12\x1c\n\x14\x63\x61tboost_log_summary\x18\x1c \x01(\x08\x12\x17\n\x0ftensorboard_log\x18\x1d \x01(\x08\x12\x16\n\x0e\x65stimator_hook\x18\x1e \x01(\x08\x12\x1e\n\x16xgboost_wandb_callback\x18\x1f \x01(\x08\x12\"\n\x1axgboost_old_wandb_callback\x18 \x01(\x08\x12\x0e\n\x06\x61ttach\x18! \x01(\x08\x12\x19\n\x11tensorboard_patch\x18\" \x01(\x08\x12\x18\n\x10tensorboard_sync\x18# \x01(\x08\x12\x15\n\rkfp_wandb_log\x18$ \x01(\x08\x12\x1b\n\x13maybe_run_overwrite\x18% \x01(\x08\x12\x1c\n\x14keras_metrics_logger\x18& \x01(\x08\x12\x1e\n\x16keras_model_checkpoint\x18\' \x01(\x08\x12!\n\x19keras_wandb_eval_callback\x18( \x01(\x08\x12\x1d\n\x15\x66low_control_overflow\x18) \x01(\x08\x12\x0c\n\x04sync\x18* \x01(\x08\x12\x1d\n\x15\x66low_control_disabled\x18+ \x01(\x08\x12\x1b\n\x13\x66low_control_custom\x18, \x01(\x08\x12\x18\n\x10service_disabled\x18- \x01(\x08\x12\x14\n\x0copen_metrics\x18. \x01(\x08\x12\x1a\n\x12ultralytics_yolov8\x18/ \x01(\x08\x12\x17\n\x0fimporter_mlflow\x18\x30 \x01(\x08\x12\x15\n\rsync_tfevents\x18\x31 \x01(\x08\"\xd1\x01\n\x03\x45nv\x12\x0f\n\x07jupyter\x18\x01 \x01(\x08\x12\x0e\n\x06kaggle\x18\x02 \x01(\x08\x12\x0f\n\x07windows\x18\x03 \x01(\x08\x12\x0e\n\x06m1_gpu\x18\x04 \x01(\x08\x12\x13\n\x0bstart_spawn\x18\x05 \x01(\x08\x12\x12\n\nstart_fork\x18\x06 \x01(\x08\x12\x18\n\x10start_forkserver\x18\x07 \x01(\x08\x12\x14\n\x0cstart_thread\x18\x08 \x01(\x08\x12\x10\n\x08maybe_mp\x18\t \x01(\x08\x12\x10\n\x08trainium\x18\n \x01(\x08\x12\x0b\n\x03pex\x18\x0b \x01(\x08\"H\n\x06Labels\x12\x13\n\x0b\x63ode_string\x18\x01 \x01(\t\x12\x13\n\x0brepo_string\x18\x02 \x01(\t\x12\x14\n\x0c\x63ode_version\x18\x03 \x01(\t\"\x80\x02\n\nDeprecated\x12!\n\x19keras_callback__data_type\x18\x01 \x01(\x08\x12\x11\n\trun__mode\x18\x02 \x01(\x08\x12\x19\n\x11run__save_no_args\x18\x03 \x01(\x08\x12\x11\n\trun__join\x18\x04 \x01(\x08\x12\r\n\x05plots\x18\x05 \x01(\x08\x12\x15\n\rrun__log_sync\x18\x06 \x01(\x08\x12!\n\x19init__config_include_keys\x18\x07 \x01(\x08\x12!\n\x19init__config_exclude_keys\x18\x08 \x01(\x08\x12\"\n\x1akeras_callback__save_model\x18\t \x01(\x08\"|\n\x06Issues\x12%\n\x1dsettings__validation_warnings\x18\x01 \x01(\x08\x12!\n\x19settings__unexpected_args\x18\x02 \x01(\x08\x12(\n settings__preprocessing_warnings\x18\x03 \x01(\x08\x62\x06proto3')
|
19
19
|
|
20
20
|
|
21
21
|
|
@@ -93,13 +93,13 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
93
93
|
_IMPORTS._serialized_start=541
|
94
94
|
_IMPORTS._serialized_end=1871
|
95
95
|
_FEATURE._serialized_start=1874
|
96
|
-
_FEATURE._serialized_end=
|
97
|
-
_ENV._serialized_start=
|
98
|
-
_ENV._serialized_end=
|
99
|
-
_LABELS._serialized_start=
|
100
|
-
_LABELS._serialized_end=
|
101
|
-
_DEPRECATED._serialized_start=
|
102
|
-
_DEPRECATED._serialized_end=
|
103
|
-
_ISSUES._serialized_start=
|
104
|
-
_ISSUES._serialized_end=
|
96
|
+
_FEATURE._serialized_end=3043
|
97
|
+
_ENV._serialized_start=3046
|
98
|
+
_ENV._serialized_end=3255
|
99
|
+
_LABELS._serialized_start=3257
|
100
|
+
_LABELS._serialized_end=3329
|
101
|
+
_DEPRECATED._serialized_start=3332
|
102
|
+
_DEPRECATED._serialized_end=3588
|
103
|
+
_ISSUES._serialized_start=3590
|
104
|
+
_ISSUES._serialized_end=3714
|
105
105
|
# @@protoc_insertion_point(module_scope)
|
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
|
|
14
14
|
from wandb.proto import wandb_base_pb2 as wandb_dot_proto_dot_wandb__base__pb2
|
15
15
|
|
16
16
|
|
17
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!wandb/proto/wandb_telemetry.proto\x12\x0ewandb_internal\x1a\x1cwandb/proto/wandb_base.proto\"\xb3\x03\n\x0fTelemetryRecord\x12-\n\x0cimports_init\x18\x01 \x01(\x0b\x32\x17.wandb_internal.Imports\x12/\n\x0eimports_finish\x18\x02 \x01(\x0b\x32\x17.wandb_internal.Imports\x12(\n\x07\x66\x65\x61ture\x18\x03 \x01(\x0b\x32\x17.wandb_internal.Feature\x12\x16\n\x0epython_version\x18\x04 \x01(\t\x12\x13\n\x0b\x63li_version\x18\x05 \x01(\t\x12\x1b\n\x13huggingface_version\x18\x06 \x01(\t\x12 \n\x03\x65nv\x18\x08 \x01(\x0b\x32\x13.wandb_internal.Env\x12%\n\x05label\x18\t \x01(\x0b\x32\x16.wandb_internal.Labels\x12.\n\ndeprecated\x18\n \x01(\x0b\x32\x1a.wandb_internal.Deprecated\x12&\n\x06issues\x18\x0b \x01(\x0b\x32\x16.wandb_internal.Issues\x12+\n\x05_info\x18\xc8\x01 \x01(\x0b\x32\x1b.wandb_internal._RecordInfo\"\x11\n\x0fTelemetryResult\"\xb2\n\n\x07Imports\x12\r\n\x05torch\x18\x01 \x01(\x08\x12\r\n\x05keras\x18\x02 \x01(\x08\x12\x12\n\ntensorflow\x18\x03 \x01(\x08\x12\x0e\n\x06\x66\x61stai\x18\x04 \x01(\x08\x12\x0f\n\x07sklearn\x18\x05 \x01(\x08\x12\x0f\n\x07xgboost\x18\x06 \x01(\x08\x12\x10\n\x08\x63\x61tboost\x18\x07 \x01(\x08\x12\x10\n\x08lightgbm\x18\x08 \x01(\x08\x12\x19\n\x11pytorch_lightning\x18\t \x01(\x08\x12\x0e\n\x06ignite\x18\n \x01(\x08\x12\x14\n\x0ctransformers\x18\x0b \x01(\x08\x12\x0b\n\x03jax\x18\x0c \x01(\x08\x12\x10\n\x08metaflow\x18\r \x01(\x08\x12\x10\n\x08\x61llennlp\x18\x0e \x01(\x08\x12\x11\n\tautogluon\x18\x0f \x01(\x08\x12\x11\n\tautokeras\x18\x10 \x01(\x08\x12\x10\n\x08\x63\x61talyst\x18\x12 \x01(\x08\x12\x10\n\x08\x64\x65\x65pchem\x18\x15 \x01(\x08\x12\x0f\n\x07\x64\x65\x65pctr\x18\x16 \x01(\x08\x12\x0f\n\x07pycaret\x18\x1c \x01(\x08\x12\x14\n\x0cpytorchvideo\x18\x1d \x01(\x08\x12\x0b\n\x03ray\x18\x1e \x01(\x08\x12\x1a\n\x12simpletransformers\x18\x1f \x01(\x08\x12\x0e\n\x06skorch\x18 \x01(\x08\x12\r\n\x05spacy\x18! \x01(\x08\x12\r\n\x05\x66lash\x18\" \x01(\x08\x12\x0e\n\x06optuna\x18# \x01(\x08\x12\x0f\n\x07recbole\x18$ \x01(\x08\x12\x0c\n\x04mmcv\x18% \x01(\x08\x12\r\n\x05mmdet\x18& \x01(\x08\x12\x11\n\ttorchdrug\x18\' \x01(\x08\x12\x11\n\ttorchtext\x18( \x01(\x08\x12\x13\n\x0btorchvision\x18) \x01(\x08\x12\r\n\x05\x65legy\x18* \x01(\x08\x12\x12\n\ndetectron2\x18+ \x01(\x08\x12\r\n\x05\x66lair\x18, \x01(\x08\x12\x0c\n\x04\x66lax\x18- \x01(\x08\x12\x0c\n\x04syft\x18. \x01(\x08\x12\x0b\n\x03TTS\x18/ \x01(\x08\x12\r\n\x05monai\x18\x30 \x01(\x08\x12\x17\n\x0fhuggingface_hub\x18\x31 \x01(\x08\x12\r\n\x05hydra\x18\x32 \x01(\x08\x12\x10\n\x08\x64\x61tasets\x18\x33 \x01(\x08\x12\x0e\n\x06sacred\x18\x34 \x01(\x08\x12\x0e\n\x06joblib\x18\x35 \x01(\x08\x12\x0c\n\x04\x64\x61sk\x18\x36 \x01(\x08\x12\x0f\n\x07\x61syncio\x18\x37 \x01(\x08\x12\x11\n\tpaddleocr\x18\x38 \x01(\x08\x12\r\n\x05ppdet\x18\x39 \x01(\x08\x12\x11\n\tpaddleseg\x18: \x01(\x08\x12\x11\n\tpaddlenlp\x18; \x01(\x08\x12\r\n\x05mmseg\x18< \x01(\x08\x12\r\n\x05mmocr\x18= \x01(\x08\x12\r\n\x05mmcls\x18> \x01(\x08\x12\x0c\n\x04timm\x18? \x01(\x08\x12\x0f\n\x07\x66\x61irseq\x18@ \x01(\x08\x12\x12\n\ndeepchecks\x18\x41 \x01(\x08\x12\x10\n\x08\x63omposer\x18\x42 \x01(\x08\x12\x10\n\x08sparseml\x18\x43 \x01(\x08\x12\x10\n\x08\x61nomalib\x18\x44 \x01(\x08\x12\r\n\x05zenml\x18\x45 \x01(\x08\x12\x12\n\ncolossalai\x18\x46 \x01(\x08\x12\x12\n\naccelerate\x18G \x01(\x08\x12\x0e\n\x06merlin\x18H \x01(\x08\x12\x0f\n\x07nanodet\x18I \x01(\x08\x12#\n\x1bsegmentation_models_pytorch\x18J \x01(\x08\x12\x1d\n\x15sentence_transformers\x18K \x01(\x08\x12\x0b\n\x03\x64gl\x18L \x01(\x08\x12\x17\n\x0ftorch_geometric\x18M \x01(\x08\x12\x0c\n\x04jina\x18N \x01(\x08\x12\x0e\n\x06kornia\x18O \x01(\x08\x12\x16\n\x0e\x61lbumentations\x18P \x01(\x08\x12\x10\n\x08keras_cv\x18Q \x01(\x08\x12\x10\n\x08mmengine\x18R \x01(\x08\"\
|
17
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!wandb/proto/wandb_telemetry.proto\x12\x0ewandb_internal\x1a\x1cwandb/proto/wandb_base.proto\"\xb3\x03\n\x0fTelemetryRecord\x12-\n\x0cimports_init\x18\x01 \x01(\x0b\x32\x17.wandb_internal.Imports\x12/\n\x0eimports_finish\x18\x02 \x01(\x0b\x32\x17.wandb_internal.Imports\x12(\n\x07\x66\x65\x61ture\x18\x03 \x01(\x0b\x32\x17.wandb_internal.Feature\x12\x16\n\x0epython_version\x18\x04 \x01(\t\x12\x13\n\x0b\x63li_version\x18\x05 \x01(\t\x12\x1b\n\x13huggingface_version\x18\x06 \x01(\t\x12 \n\x03\x65nv\x18\x08 \x01(\x0b\x32\x13.wandb_internal.Env\x12%\n\x05label\x18\t \x01(\x0b\x32\x16.wandb_internal.Labels\x12.\n\ndeprecated\x18\n \x01(\x0b\x32\x1a.wandb_internal.Deprecated\x12&\n\x06issues\x18\x0b \x01(\x0b\x32\x16.wandb_internal.Issues\x12+\n\x05_info\x18\xc8\x01 \x01(\x0b\x32\x1b.wandb_internal._RecordInfo\"\x11\n\x0fTelemetryResult\"\xb2\n\n\x07Imports\x12\r\n\x05torch\x18\x01 \x01(\x08\x12\r\n\x05keras\x18\x02 \x01(\x08\x12\x12\n\ntensorflow\x18\x03 \x01(\x08\x12\x0e\n\x06\x66\x61stai\x18\x04 \x01(\x08\x12\x0f\n\x07sklearn\x18\x05 \x01(\x08\x12\x0f\n\x07xgboost\x18\x06 \x01(\x08\x12\x10\n\x08\x63\x61tboost\x18\x07 \x01(\x08\x12\x10\n\x08lightgbm\x18\x08 \x01(\x08\x12\x19\n\x11pytorch_lightning\x18\t \x01(\x08\x12\x0e\n\x06ignite\x18\n \x01(\x08\x12\x14\n\x0ctransformers\x18\x0b \x01(\x08\x12\x0b\n\x03jax\x18\x0c \x01(\x08\x12\x10\n\x08metaflow\x18\r \x01(\x08\x12\x10\n\x08\x61llennlp\x18\x0e \x01(\x08\x12\x11\n\tautogluon\x18\x0f \x01(\x08\x12\x11\n\tautokeras\x18\x10 \x01(\x08\x12\x10\n\x08\x63\x61talyst\x18\x12 \x01(\x08\x12\x10\n\x08\x64\x65\x65pchem\x18\x15 \x01(\x08\x12\x0f\n\x07\x64\x65\x65pctr\x18\x16 \x01(\x08\x12\x0f\n\x07pycaret\x18\x1c \x01(\x08\x12\x14\n\x0cpytorchvideo\x18\x1d \x01(\x08\x12\x0b\n\x03ray\x18\x1e \x01(\x08\x12\x1a\n\x12simpletransformers\x18\x1f \x01(\x08\x12\x0e\n\x06skorch\x18 \x01(\x08\x12\r\n\x05spacy\x18! \x01(\x08\x12\r\n\x05\x66lash\x18\" \x01(\x08\x12\x0e\n\x06optuna\x18# \x01(\x08\x12\x0f\n\x07recbole\x18$ \x01(\x08\x12\x0c\n\x04mmcv\x18% \x01(\x08\x12\r\n\x05mmdet\x18& \x01(\x08\x12\x11\n\ttorchdrug\x18\' \x01(\x08\x12\x11\n\ttorchtext\x18( \x01(\x08\x12\x13\n\x0btorchvision\x18) \x01(\x08\x12\r\n\x05\x65legy\x18* \x01(\x08\x12\x12\n\ndetectron2\x18+ \x01(\x08\x12\r\n\x05\x66lair\x18, \x01(\x08\x12\x0c\n\x04\x66lax\x18- \x01(\x08\x12\x0c\n\x04syft\x18. \x01(\x08\x12\x0b\n\x03TTS\x18/ \x01(\x08\x12\r\n\x05monai\x18\x30 \x01(\x08\x12\x17\n\x0fhuggingface_hub\x18\x31 \x01(\x08\x12\r\n\x05hydra\x18\x32 \x01(\x08\x12\x10\n\x08\x64\x61tasets\x18\x33 \x01(\x08\x12\x0e\n\x06sacred\x18\x34 \x01(\x08\x12\x0e\n\x06joblib\x18\x35 \x01(\x08\x12\x0c\n\x04\x64\x61sk\x18\x36 \x01(\x08\x12\x0f\n\x07\x61syncio\x18\x37 \x01(\x08\x12\x11\n\tpaddleocr\x18\x38 \x01(\x08\x12\r\n\x05ppdet\x18\x39 \x01(\x08\x12\x11\n\tpaddleseg\x18: \x01(\x08\x12\x11\n\tpaddlenlp\x18; \x01(\x08\x12\r\n\x05mmseg\x18< \x01(\x08\x12\r\n\x05mmocr\x18= \x01(\x08\x12\r\n\x05mmcls\x18> \x01(\x08\x12\x0c\n\x04timm\x18? \x01(\x08\x12\x0f\n\x07\x66\x61irseq\x18@ \x01(\x08\x12\x12\n\ndeepchecks\x18\x41 \x01(\x08\x12\x10\n\x08\x63omposer\x18\x42 \x01(\x08\x12\x10\n\x08sparseml\x18\x43 \x01(\x08\x12\x10\n\x08\x61nomalib\x18\x44 \x01(\x08\x12\r\n\x05zenml\x18\x45 \x01(\x08\x12\x12\n\ncolossalai\x18\x46 \x01(\x08\x12\x12\n\naccelerate\x18G \x01(\x08\x12\x0e\n\x06merlin\x18H \x01(\x08\x12\x0f\n\x07nanodet\x18I \x01(\x08\x12#\n\x1bsegmentation_models_pytorch\x18J \x01(\x08\x12\x1d\n\x15sentence_transformers\x18K \x01(\x08\x12\x0b\n\x03\x64gl\x18L \x01(\x08\x12\x17\n\x0ftorch_geometric\x18M \x01(\x08\x12\x0c\n\x04jina\x18N \x01(\x08\x12\x0e\n\x06kornia\x18O \x01(\x08\x12\x16\n\x0e\x61lbumentations\x18P \x01(\x08\x12\x10\n\x08keras_cv\x18Q \x01(\x08\x12\x10\n\x08mmengine\x18R \x01(\x08\"\x91\t\n\x07\x46\x65\x61ture\x12\r\n\x05watch\x18\x01 \x01(\x08\x12\x0e\n\x06\x66inish\x18\x02 \x01(\x08\x12\x0c\n\x04save\x18\x03 \x01(\x08\x12\x0f\n\x07offline\x18\x04 \x01(\x08\x12\x0f\n\x07resumed\x18\x05 \x01(\x08\x12\x0c\n\x04grpc\x18\x06 \x01(\x08\x12\x0e\n\x06metric\x18\x07 \x01(\x08\x12\r\n\x05keras\x18\x08 \x01(\x08\x12\x11\n\tsagemaker\x18\t \x01(\x08\x12\x1c\n\x14\x61rtifact_incremental\x18\n \x01(\x08\x12\x10\n\x08metaflow\x18\x0b \x01(\x08\x12\x0f\n\x07prodigy\x18\x0c \x01(\x08\x12\x15\n\rset_init_name\x18\r \x01(\x08\x12\x13\n\x0bset_init_id\x18\x0e \x01(\x08\x12\x15\n\rset_init_tags\x18\x0f \x01(\x08\x12\x17\n\x0fset_init_config\x18\x10 \x01(\x08\x12\x14\n\x0cset_run_name\x18\x11 \x01(\x08\x12\x14\n\x0cset_run_tags\x18\x12 \x01(\x08\x12\x17\n\x0fset_config_item\x18\x13 \x01(\x08\x12\x0e\n\x06launch\x18\x14 \x01(\x08\x12\x1c\n\x14torch_profiler_trace\x18\x15 \x01(\x08\x12\x0b\n\x03sb3\x18\x16 \x01(\x08\x12\x0f\n\x07service\x18\x17 \x01(\x08\x12\x17\n\x0finit_return_run\x18\x18 \x01(\x08\x12\x1f\n\x17lightgbm_wandb_callback\x18\x19 \x01(\x08\x12\x1c\n\x14lightgbm_log_summary\x18\x1a \x01(\x08\x12\x1f\n\x17\x63\x61tboost_wandb_callback\x18\x1b \x01(\x08\x12\x1c\n\x14\x63\x61tboost_log_summary\x18\x1c \x01(\x08\x12\x17\n\x0ftensorboard_log\x18\x1d \x01(\x08\x12\x16\n\x0e\x65stimator_hook\x18\x1e \x01(\x08\x12\x1e\n\x16xgboost_wandb_callback\x18\x1f \x01(\x08\x12\"\n\x1axgboost_old_wandb_callback\x18 \x01(\x08\x12\x0e\n\x06\x61ttach\x18! \x01(\x08\x12\x19\n\x11tensorboard_patch\x18\" \x01(\x08\x12\x18\n\x10tensorboard_sync\x18# \x01(\x08\x12\x15\n\rkfp_wandb_log\x18$ \x01(\x08\x12\x1b\n\x13maybe_run_overwrite\x18% \x01(\x08\x12\x1c\n\x14keras_metrics_logger\x18& \x01(\x08\x12\x1e\n\x16keras_model_checkpoint\x18\' \x01(\x08\x12!\n\x19keras_wandb_eval_callback\x18( \x01(\x08\x12\x1d\n\x15\x66low_control_overflow\x18) \x01(\x08\x12\x0c\n\x04sync\x18* \x01(\x08\x12\x1d\n\x15\x66low_control_disabled\x18+ \x01(\x08\x12\x1b\n\x13\x66low_control_custom\x18, \x01(\x08\x12\x18\n\x10service_disabled\x18- \x01(\x08\x12\x14\n\x0copen_metrics\x18. \x01(\x08\x12\x1a\n\x12ultralytics_yolov8\x18/ \x01(\x08\x12\x17\n\x0fimporter_mlflow\x18\x30 \x01(\x08\x12\x15\n\rsync_tfevents\x18\x31 \x01(\x08\"\xd1\x01\n\x03\x45nv\x12\x0f\n\x07jupyter\x18\x01 \x01(\x08\x12\x0e\n\x06kaggle\x18\x02 \x01(\x08\x12\x0f\n\x07windows\x18\x03 \x01(\x08\x12\x0e\n\x06m1_gpu\x18\x04 \x01(\x08\x12\x13\n\x0bstart_spawn\x18\x05 \x01(\x08\x12\x12\n\nstart_fork\x18\x06 \x01(\x08\x12\x18\n\x10start_forkserver\x18\x07 \x01(\x08\x12\x14\n\x0cstart_thread\x18\x08 \x01(\x08\x12\x10\n\x08maybe_mp\x18\t \x01(\x08\x12\x10\n\x08trainium\x18\n \x01(\x08\x12\x0b\n\x03pex\x18\x0b \x01(\x08\"H\n\x06Labels\x12\x13\n\x0b\x63ode_string\x18\x01 \x01(\t\x12\x13\n\x0brepo_string\x18\x02 \x01(\t\x12\x14\n\x0c\x63ode_version\x18\x03 \x01(\t\"\x80\x02\n\nDeprecated\x12!\n\x19keras_callback__data_type\x18\x01 \x01(\x08\x12\x11\n\trun__mode\x18\x02 \x01(\x08\x12\x19\n\x11run__save_no_args\x18\x03 \x01(\x08\x12\x11\n\trun__join\x18\x04 \x01(\x08\x12\r\n\x05plots\x18\x05 \x01(\x08\x12\x15\n\rrun__log_sync\x18\x06 \x01(\x08\x12!\n\x19init__config_include_keys\x18\x07 \x01(\x08\x12!\n\x19init__config_exclude_keys\x18\x08 \x01(\x08\x12\"\n\x1akeras_callback__save_model\x18\t \x01(\x08\"|\n\x06Issues\x12%\n\x1dsettings__validation_warnings\x18\x01 \x01(\x08\x12!\n\x19settings__unexpected_args\x18\x02 \x01(\x08\x12(\n settings__preprocessing_warnings\x18\x03 \x01(\x08\x62\x06proto3')
|
18
18
|
|
19
19
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
|
20
20
|
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'wandb.proto.wandb_telemetry_pb2', globals())
|
@@ -28,13 +28,13 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
28
28
|
_IMPORTS._serialized_start=541
|
29
29
|
_IMPORTS._serialized_end=1871
|
30
30
|
_FEATURE._serialized_start=1874
|
31
|
-
_FEATURE._serialized_end=
|
32
|
-
_ENV._serialized_start=
|
33
|
-
_ENV._serialized_end=
|
34
|
-
_LABELS._serialized_start=
|
35
|
-
_LABELS._serialized_end=
|
36
|
-
_DEPRECATED._serialized_start=
|
37
|
-
_DEPRECATED._serialized_end=
|
38
|
-
_ISSUES._serialized_start=
|
39
|
-
_ISSUES._serialized_end=
|
31
|
+
_FEATURE._serialized_end=3043
|
32
|
+
_ENV._serialized_start=3046
|
33
|
+
_ENV._serialized_end=3255
|
34
|
+
_LABELS._serialized_start=3257
|
35
|
+
_LABELS._serialized_end=3329
|
36
|
+
_DEPRECATED._serialized_start=3332
|
37
|
+
_DEPRECATED._serialized_end=3588
|
38
|
+
_ISSUES._serialized_start=3590
|
39
|
+
_ISSUES._serialized_end=3714
|
40
40
|
# @@protoc_insertion_point(module_scope)
|
@@ -205,6 +205,7 @@ class Api:
|
|
205
205
|
self._azure_blob_module = util.get_module("azure.storage.blob")
|
206
206
|
|
207
207
|
self.query_types: Optional[List[str]] = None
|
208
|
+
self.mutation_types: Optional[List[str]] = None
|
208
209
|
self.server_info_types: Optional[List[str]] = None
|
209
210
|
self.server_use_artifact_input_info: Optional[List[str]] = None
|
210
211
|
self._max_cli_version: Optional[str] = None
|
@@ -409,12 +410,15 @@ class Api:
|
|
409
410
|
return project, run
|
410
411
|
|
411
412
|
@normalize_exceptions
|
412
|
-
def server_info_introspection(self) -> Tuple[List[str], List[str]]:
|
413
|
+
def server_info_introspection(self) -> Tuple[List[str], List[str], List[str]]:
|
413
414
|
query_string = """
|
414
415
|
query ProbeServerCapabilities {
|
415
416
|
QueryType: __type(name: "Query") {
|
416
417
|
...fieldData
|
417
418
|
}
|
419
|
+
MutationType: __type(name: "Mutation") {
|
420
|
+
...fieldData
|
421
|
+
}
|
418
422
|
ServerInfoType: __type(name: "ServerInfo") {
|
419
423
|
...fieldData
|
420
424
|
}
|
@@ -426,7 +430,11 @@ class Api:
|
|
426
430
|
}
|
427
431
|
}
|
428
432
|
"""
|
429
|
-
if
|
433
|
+
if (
|
434
|
+
self.query_types is None
|
435
|
+
or self.mutation_types is None
|
436
|
+
or self.server_info_types is None
|
437
|
+
):
|
430
438
|
query = gql(query_string)
|
431
439
|
res = self.gql(query)
|
432
440
|
|
@@ -434,11 +442,15 @@ class Api:
|
|
434
442
|
field.get("name", "")
|
435
443
|
for field in res.get("QueryType", {}).get("fields", [{}])
|
436
444
|
]
|
445
|
+
self.mutation_types = [
|
446
|
+
field.get("name", "")
|
447
|
+
for field in res.get("MutationType", {}).get("fields", [{}])
|
448
|
+
]
|
437
449
|
self.server_info_types = [
|
438
450
|
field.get("name", "")
|
439
451
|
for field in res.get("ServerInfoType", {}).get("fields", [{}])
|
440
452
|
]
|
441
|
-
return self.query_types, self.server_info_types
|
453
|
+
return self.query_types, self.server_info_types, self.mutation_types
|
442
454
|
|
443
455
|
@normalize_exceptions
|
444
456
|
def server_settings_introspection(self) -> None:
|
@@ -505,6 +517,35 @@ class Api:
|
|
505
517
|
res = self.gql(query)
|
506
518
|
return res.get("LaunchAgentType") or None
|
507
519
|
|
520
|
+
@normalize_exceptions
|
521
|
+
def fail_run_queue_item_introspection(self) -> bool:
|
522
|
+
_, _, mutations = self.server_info_introspection()
|
523
|
+
return "failRunQueueItem" in mutations
|
524
|
+
|
525
|
+
@normalize_exceptions
|
526
|
+
def fail_run_queue_item(self, run_queue_item_id: str) -> bool:
|
527
|
+
mutation = gql(
|
528
|
+
"""
|
529
|
+
mutation failRunQueueItem($runQueueItemId: ID!) {
|
530
|
+
failRunQueueItem(
|
531
|
+
input: {
|
532
|
+
runQueueItemId: $runQueueItemId
|
533
|
+
}
|
534
|
+
) {
|
535
|
+
success
|
536
|
+
}
|
537
|
+
}
|
538
|
+
"""
|
539
|
+
)
|
540
|
+
response = self.gql(
|
541
|
+
mutation,
|
542
|
+
variable_values={
|
543
|
+
"runQueueItemId": run_queue_item_id,
|
544
|
+
},
|
545
|
+
)
|
546
|
+
result: bool = response["failRunQueueItem"]["success"]
|
547
|
+
return result
|
548
|
+
|
508
549
|
@normalize_exceptions
|
509
550
|
def viewer(self) -> Dict[str, Any]:
|
510
551
|
query = gql(
|
@@ -533,7 +574,7 @@ class Api:
|
|
533
574
|
if self._max_cli_version is not None:
|
534
575
|
return self._max_cli_version
|
535
576
|
|
536
|
-
query_types, server_info_types = self.server_info_introspection()
|
577
|
+
query_types, server_info_types, _ = self.server_info_introspection()
|
537
578
|
cli_version_exists = (
|
538
579
|
"serverInfo" in query_types and "cliVersionInfo" in server_info_types
|
539
580
|
)
|
@@ -579,7 +620,7 @@ class Api:
|
|
579
620
|
_CLI_QUERY_
|
580
621
|
}
|
581
622
|
"""
|
582
|
-
query_types, server_info_types = self.server_info_introspection()
|
623
|
+
query_types, server_info_types, _ = self.server_info_introspection()
|
583
624
|
|
584
625
|
cli_version_exists = (
|
585
626
|
"serverInfo" in query_types and "cliVersionInfo" in server_info_types
|
@@ -1005,6 +1046,32 @@ class Api:
|
|
1005
1046
|
result: Dict[str, Any] = response["upsertModel"]["model"]
|
1006
1047
|
return result
|
1007
1048
|
|
1049
|
+
@normalize_exceptions
|
1050
|
+
def entity_is_team(self, entity: str) -> bool:
|
1051
|
+
query = gql(
|
1052
|
+
"""
|
1053
|
+
query EntityIsTeam($entity: String!) {
|
1054
|
+
entity(name: $entity) {
|
1055
|
+
id
|
1056
|
+
isTeam
|
1057
|
+
}
|
1058
|
+
}
|
1059
|
+
"""
|
1060
|
+
)
|
1061
|
+
variable_values = {
|
1062
|
+
"entity": entity,
|
1063
|
+
}
|
1064
|
+
|
1065
|
+
res = self.gql(query, variable_values)
|
1066
|
+
if res.get("entity") is None:
|
1067
|
+
raise Exception(
|
1068
|
+
f"Error fetching entity {entity} "
|
1069
|
+
"check that you have access to this entity"
|
1070
|
+
)
|
1071
|
+
|
1072
|
+
is_team: bool = res["entity"]["isTeam"]
|
1073
|
+
return is_team
|
1074
|
+
|
1008
1075
|
@normalize_exceptions
|
1009
1076
|
def get_project_run_queues(self, entity: str, project: str) -> List[Dict[str, str]]:
|
1010
1077
|
query = gql(
|
@@ -1028,10 +1095,19 @@ class Api:
|
|
1028
1095
|
|
1029
1096
|
res = self.gql(query, variable_values)
|
1030
1097
|
if res.get("project") is None:
|
1031
|
-
|
1032
|
-
|
1033
|
-
|
1034
|
-
|
1098
|
+
# circular dependency: (LAUNCH_DEFAULT_PROJECT = model-registry)
|
1099
|
+
if project == "model-registry":
|
1100
|
+
msg = (
|
1101
|
+
f"Error fetching run queues for {entity} "
|
1102
|
+
"check that you have access to this entity and project"
|
1103
|
+
)
|
1104
|
+
else:
|
1105
|
+
msg = (
|
1106
|
+
f"Error fetching run queues for {entity}/{project} "
|
1107
|
+
"check that you have access to this entity and project"
|
1108
|
+
)
|
1109
|
+
|
1110
|
+
raise Exception(msg)
|
1035
1111
|
|
1036
1112
|
project_run_queues: List[Dict[str, str]] = res["project"]["runQueues"]
|
1037
1113
|
return project_run_queues
|