wandb 0.22.1__py3-none-win_arm64.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.
- package_readme.md +97 -0
- wandb/__init__.py +248 -0
- wandb/__init__.pyi +1230 -0
- wandb/__main__.py +3 -0
- wandb/_analytics.py +65 -0
- wandb/_iterutils.py +73 -0
- wandb/_pydantic/__init__.py +30 -0
- wandb/_pydantic/base.py +108 -0
- wandb/_pydantic/field_types.py +29 -0
- wandb/_pydantic/utils.py +80 -0
- wandb/_pydantic/v1_compat.py +301 -0
- wandb/_strutils.py +40 -0
- wandb/agents/__init__.py +0 -0
- wandb/agents/pyagent.py +386 -0
- wandb/analytics/__init__.py +3 -0
- wandb/analytics/sentry.py +267 -0
- wandb/apis/__init__.py +50 -0
- wandb/apis/attrs.py +52 -0
- wandb/apis/importers/__init__.py +1 -0
- wandb/apis/importers/internals/internal.py +375 -0
- wandb/apis/importers/internals/protocols.py +103 -0
- wandb/apis/importers/internals/util.py +78 -0
- wandb/apis/importers/mlflow.py +254 -0
- wandb/apis/importers/validation.py +108 -0
- wandb/apis/importers/wandb.py +1608 -0
- wandb/apis/internal.py +241 -0
- wandb/apis/normalize.py +83 -0
- wandb/apis/paginator.py +138 -0
- wandb/apis/public/__init__.py +78 -0
- wandb/apis/public/api.py +2513 -0
- wandb/apis/public/artifacts.py +1050 -0
- wandb/apis/public/automations.py +86 -0
- wandb/apis/public/const.py +6 -0
- wandb/apis/public/files.py +411 -0
- wandb/apis/public/history.py +203 -0
- wandb/apis/public/integrations.py +203 -0
- wandb/apis/public/jobs.py +744 -0
- wandb/apis/public/projects.py +278 -0
- wandb/apis/public/query_generator.py +179 -0
- wandb/apis/public/registries/__init__.py +7 -0
- wandb/apis/public/registries/_freezable_list.py +176 -0
- wandb/apis/public/registries/_utils.py +139 -0
- wandb/apis/public/registries/registries_search.py +353 -0
- wandb/apis/public/registries/registry.py +370 -0
- wandb/apis/public/reports.py +597 -0
- wandb/apis/public/runs.py +1438 -0
- wandb/apis/public/sweeps.py +441 -0
- wandb/apis/public/teams.py +237 -0
- wandb/apis/public/users.py +179 -0
- wandb/apis/public/utils.py +211 -0
- wandb/apis/reports/__init__.py +1 -0
- wandb/apis/reports/v1/__init__.py +8 -0
- wandb/apis/reports/v2/__init__.py +8 -0
- wandb/apis/workspaces/__init__.py +8 -0
- wandb/automations/__init__.py +73 -0
- wandb/automations/_filters/__init__.py +40 -0
- wandb/automations/_filters/expressions.py +182 -0
- wandb/automations/_filters/operators.py +259 -0
- wandb/automations/_filters/run_metrics.py +330 -0
- wandb/automations/_generated/__init__.py +104 -0
- wandb/automations/_generated/create_automation.py +17 -0
- wandb/automations/_generated/create_generic_webhook_integration.py +37 -0
- wandb/automations/_generated/delete_automation.py +15 -0
- wandb/automations/_generated/enums.py +35 -0
- wandb/automations/_generated/fragments.py +293 -0
- wandb/automations/_generated/generic_webhook_integrations_by_entity.py +22 -0
- wandb/automations/_generated/get_automations.py +24 -0
- wandb/automations/_generated/get_automations_by_entity.py +26 -0
- wandb/automations/_generated/input_types.py +104 -0
- wandb/automations/_generated/integrations_by_entity.py +22 -0
- wandb/automations/_generated/operations.py +647 -0
- wandb/automations/_generated/slack_integrations_by_entity.py +22 -0
- wandb/automations/_generated/update_automation.py +17 -0
- wandb/automations/_utils.py +235 -0
- wandb/automations/_validators.py +185 -0
- wandb/automations/actions.py +220 -0
- wandb/automations/automations.py +85 -0
- wandb/automations/events.py +284 -0
- wandb/automations/integrations.py +45 -0
- wandb/automations/scopes.py +78 -0
- wandb/beta/workflows.py +324 -0
- wandb/bin/gpu_stats.exe +0 -0
- wandb/bin/wandb-core +0 -0
- wandb/cli/__init__.py +0 -0
- wandb/cli/beta.py +93 -0
- wandb/cli/beta_sync.py +224 -0
- wandb/cli/cli.py +2883 -0
- wandb/data_types.py +66 -0
- wandb/docker/__init__.py +290 -0
- wandb/docker/names.py +40 -0
- wandb/docker/wandb-entrypoint.sh +33 -0
- wandb/env.py +535 -0
- wandb/errors/__init__.py +17 -0
- wandb/errors/errors.py +40 -0
- wandb/errors/links.py +73 -0
- wandb/errors/term.py +415 -0
- wandb/errors/util.py +57 -0
- wandb/errors/warnings.py +2 -0
- wandb/filesync/__init__.py +0 -0
- wandb/filesync/dir_watcher.py +404 -0
- wandb/filesync/stats.py +100 -0
- wandb/filesync/step_checksum.py +142 -0
- wandb/filesync/step_prepare.py +179 -0
- wandb/filesync/step_upload.py +287 -0
- wandb/filesync/upload_job.py +142 -0
- wandb/integration/__init__.py +0 -0
- wandb/integration/catboost/__init__.py +5 -0
- wandb/integration/catboost/catboost.py +182 -0
- wandb/integration/cohere/__init__.py +3 -0
- wandb/integration/cohere/cohere.py +21 -0
- wandb/integration/cohere/resolver.py +347 -0
- wandb/integration/diffusers/__init__.py +3 -0
- wandb/integration/diffusers/autologger.py +76 -0
- wandb/integration/diffusers/pipeline_resolver.py +50 -0
- wandb/integration/diffusers/resolvers/__init__.py +9 -0
- wandb/integration/diffusers/resolvers/multimodal.py +881 -0
- wandb/integration/diffusers/resolvers/utils.py +102 -0
- wandb/integration/dspy/__init__.py +5 -0
- wandb/integration/dspy/dspy.py +422 -0
- wandb/integration/fastai/__init__.py +243 -0
- wandb/integration/gym/__init__.py +98 -0
- wandb/integration/huggingface/__init__.py +3 -0
- wandb/integration/huggingface/huggingface.py +18 -0
- wandb/integration/huggingface/resolver.py +213 -0
- wandb/integration/keras/__init__.py +11 -0
- wandb/integration/keras/callbacks/__init__.py +5 -0
- wandb/integration/keras/callbacks/metrics_logger.py +129 -0
- wandb/integration/keras/callbacks/model_checkpoint.py +188 -0
- wandb/integration/keras/callbacks/tables_builder.py +228 -0
- wandb/integration/keras/keras.py +1086 -0
- wandb/integration/kfp/__init__.py +6 -0
- wandb/integration/kfp/helpers.py +28 -0
- wandb/integration/kfp/kfp_patch.py +335 -0
- wandb/integration/kfp/wandb_logging.py +182 -0
- wandb/integration/langchain/__init__.py +3 -0
- wandb/integration/langchain/wandb_tracer.py +49 -0
- wandb/integration/lightgbm/__init__.py +239 -0
- wandb/integration/lightning/__init__.py +0 -0
- wandb/integration/lightning/fabric/__init__.py +3 -0
- wandb/integration/lightning/fabric/logger.py +763 -0
- wandb/integration/metaflow/__init__.py +9 -0
- wandb/integration/metaflow/data_pandas.py +74 -0
- wandb/integration/metaflow/data_pytorch.py +75 -0
- wandb/integration/metaflow/data_sklearn.py +76 -0
- wandb/integration/metaflow/errors.py +13 -0
- wandb/integration/metaflow/metaflow.py +327 -0
- wandb/integration/openai/__init__.py +3 -0
- wandb/integration/openai/fine_tuning.py +480 -0
- wandb/integration/openai/openai.py +22 -0
- wandb/integration/openai/resolver.py +240 -0
- wandb/integration/prodigy/__init__.py +3 -0
- wandb/integration/prodigy/prodigy.py +291 -0
- wandb/integration/sacred/__init__.py +117 -0
- wandb/integration/sagemaker/__init__.py +14 -0
- wandb/integration/sagemaker/auth.py +29 -0
- wandb/integration/sagemaker/config.py +58 -0
- wandb/integration/sagemaker/files.py +2 -0
- wandb/integration/sagemaker/resources.py +63 -0
- wandb/integration/sb3/__init__.py +3 -0
- wandb/integration/sb3/sb3.py +147 -0
- wandb/integration/sklearn/__init__.py +37 -0
- wandb/integration/sklearn/calculate/__init__.py +32 -0
- wandb/integration/sklearn/calculate/calibration_curves.py +125 -0
- wandb/integration/sklearn/calculate/class_proportions.py +68 -0
- wandb/integration/sklearn/calculate/confusion_matrix.py +93 -0
- wandb/integration/sklearn/calculate/decision_boundaries.py +40 -0
- wandb/integration/sklearn/calculate/elbow_curve.py +55 -0
- wandb/integration/sklearn/calculate/feature_importances.py +67 -0
- wandb/integration/sklearn/calculate/learning_curve.py +64 -0
- wandb/integration/sklearn/calculate/outlier_candidates.py +69 -0
- wandb/integration/sklearn/calculate/residuals.py +86 -0
- wandb/integration/sklearn/calculate/silhouette.py +118 -0
- wandb/integration/sklearn/calculate/summary_metrics.py +62 -0
- wandb/integration/sklearn/plot/__init__.py +35 -0
- wandb/integration/sklearn/plot/classifier.py +329 -0
- wandb/integration/sklearn/plot/clusterer.py +146 -0
- wandb/integration/sklearn/plot/regressor.py +121 -0
- wandb/integration/sklearn/plot/shared.py +91 -0
- wandb/integration/sklearn/utils.py +184 -0
- wandb/integration/tensorboard/__init__.py +10 -0
- wandb/integration/tensorboard/log.py +351 -0
- wandb/integration/tensorboard/monkeypatch.py +186 -0
- wandb/integration/tensorflow/__init__.py +5 -0
- wandb/integration/tensorflow/estimator_hook.py +54 -0
- wandb/integration/torch/__init__.py +0 -0
- wandb/integration/torch/wandb_torch.py +554 -0
- wandb/integration/ultralytics/__init__.py +11 -0
- wandb/integration/ultralytics/bbox_utils.py +215 -0
- wandb/integration/ultralytics/callback.py +528 -0
- wandb/integration/ultralytics/classification_utils.py +83 -0
- wandb/integration/ultralytics/mask_utils.py +202 -0
- wandb/integration/ultralytics/pose_utils.py +103 -0
- wandb/integration/weave/__init__.py +6 -0
- wandb/integration/weave/interface.py +49 -0
- wandb/integration/weave/weave.py +118 -0
- wandb/integration/xgboost/__init__.py +11 -0
- wandb/integration/xgboost/xgboost.py +189 -0
- wandb/integration/yolov8/__init__.py +0 -0
- wandb/integration/yolov8/yolov8.py +284 -0
- wandb/jupyter.py +538 -0
- wandb/mpmain/__init__.py +0 -0
- wandb/mpmain/__main__.py +1 -0
- wandb/old/__init__.py +0 -0
- wandb/old/core.py +53 -0
- wandb/old/settings.py +176 -0
- wandb/old/summary.py +438 -0
- wandb/plot/__init__.py +30 -0
- wandb/plot/bar.py +71 -0
- wandb/plot/confusion_matrix.py +185 -0
- wandb/plot/custom_chart.py +147 -0
- wandb/plot/histogram.py +66 -0
- wandb/plot/line.py +75 -0
- wandb/plot/line_series.py +173 -0
- wandb/plot/pr_curve.py +186 -0
- wandb/plot/roc_curve.py +163 -0
- wandb/plot/scatter.py +66 -0
- wandb/plot/utils.py +184 -0
- wandb/plot/viz.py +41 -0
- wandb/proto/__init__.py +0 -0
- wandb/proto/v3/__init__.py +0 -0
- wandb/proto/v3/wandb_base_pb2.py +55 -0
- wandb/proto/v3/wandb_internal_pb2.py +1738 -0
- wandb/proto/v3/wandb_server_pb2.py +209 -0
- wandb/proto/v3/wandb_settings_pb2.py +122 -0
- wandb/proto/v3/wandb_sync_pb2.py +100 -0
- wandb/proto/v3/wandb_telemetry_pb2.py +106 -0
- wandb/proto/v4/__init__.py +0 -0
- wandb/proto/v4/wandb_base_pb2.py +30 -0
- wandb/proto/v4/wandb_internal_pb2.py +384 -0
- wandb/proto/v4/wandb_server_pb2.py +64 -0
- wandb/proto/v4/wandb_settings_pb2.py +47 -0
- wandb/proto/v4/wandb_sync_pb2.py +42 -0
- wandb/proto/v4/wandb_telemetry_pb2.py +41 -0
- wandb/proto/v5/wandb_base_pb2.py +31 -0
- wandb/proto/v5/wandb_internal_pb2.py +385 -0
- wandb/proto/v5/wandb_server_pb2.py +65 -0
- wandb/proto/v5/wandb_settings_pb2.py +48 -0
- wandb/proto/v5/wandb_sync_pb2.py +43 -0
- wandb/proto/v5/wandb_telemetry_pb2.py +42 -0
- wandb/proto/v6/wandb_base_pb2.py +41 -0
- wandb/proto/v6/wandb_internal_pb2.py +395 -0
- wandb/proto/v6/wandb_server_pb2.py +75 -0
- wandb/proto/v6/wandb_settings_pb2.py +58 -0
- wandb/proto/v6/wandb_sync_pb2.py +53 -0
- wandb/proto/v6/wandb_telemetry_pb2.py +52 -0
- wandb/proto/wandb_base_pb2.py +12 -0
- wandb/proto/wandb_deprecated.py +59 -0
- wandb/proto/wandb_generate_deprecated.py +30 -0
- wandb/proto/wandb_generate_proto.py +50 -0
- wandb/proto/wandb_internal_pb2.py +18 -0
- wandb/proto/wandb_server_pb2.py +12 -0
- wandb/proto/wandb_settings_pb2.py +12 -0
- wandb/proto/wandb_sync_pb2.py +12 -0
- wandb/proto/wandb_telemetry_pb2.py +12 -0
- wandb/py.typed +0 -0
- wandb/sdk/__init__.py +37 -0
- wandb/sdk/artifacts/__init__.py +0 -0
- wandb/sdk/artifacts/_factories.py +22 -0
- wandb/sdk/artifacts/_generated/__init__.py +208 -0
- wandb/sdk/artifacts/_generated/add_aliases.py +21 -0
- wandb/sdk/artifacts/_generated/artifact_by_id.py +17 -0
- wandb/sdk/artifacts/_generated/artifact_by_name.py +22 -0
- wandb/sdk/artifacts/_generated/artifact_collection_membership_file_urls.py +43 -0
- wandb/sdk/artifacts/_generated/artifact_collection_membership_files.py +43 -0
- wandb/sdk/artifacts/_generated/artifact_created_by.py +47 -0
- wandb/sdk/artifacts/_generated/artifact_file_urls.py +22 -0
- wandb/sdk/artifacts/_generated/artifact_type.py +31 -0
- wandb/sdk/artifacts/_generated/artifact_used_by.py +43 -0
- wandb/sdk/artifacts/_generated/artifact_version_files.py +36 -0
- wandb/sdk/artifacts/_generated/artifact_via_membership_by_name.py +26 -0
- wandb/sdk/artifacts/_generated/create_artifact_collection_tag_assignments.py +36 -0
- wandb/sdk/artifacts/_generated/delete_aliases.py +21 -0
- wandb/sdk/artifacts/_generated/delete_artifact.py +28 -0
- wandb/sdk/artifacts/_generated/delete_artifact_collection_tag_assignments.py +25 -0
- wandb/sdk/artifacts/_generated/delete_artifact_portfolio.py +35 -0
- wandb/sdk/artifacts/_generated/delete_artifact_sequence.py +35 -0
- wandb/sdk/artifacts/_generated/enums.py +22 -0
- wandb/sdk/artifacts/_generated/fetch_artifact_manifest.py +38 -0
- wandb/sdk/artifacts/_generated/fetch_linked_artifacts.py +67 -0
- wandb/sdk/artifacts/_generated/fetch_registries.py +32 -0
- wandb/sdk/artifacts/_generated/fragments.py +524 -0
- wandb/sdk/artifacts/_generated/input_types.py +46 -0
- wandb/sdk/artifacts/_generated/link_artifact.py +27 -0
- wandb/sdk/artifacts/_generated/move_artifact_collection.py +35 -0
- wandb/sdk/artifacts/_generated/operations.py +1253 -0
- wandb/sdk/artifacts/_generated/project_artifact_collection.py +101 -0
- wandb/sdk/artifacts/_generated/project_artifact_collections.py +33 -0
- wandb/sdk/artifacts/_generated/project_artifact_type.py +24 -0
- wandb/sdk/artifacts/_generated/project_artifact_types.py +24 -0
- wandb/sdk/artifacts/_generated/project_artifacts.py +42 -0
- wandb/sdk/artifacts/_generated/registry_collections.py +34 -0
- wandb/sdk/artifacts/_generated/registry_versions.py +34 -0
- wandb/sdk/artifacts/_generated/run_input_artifacts.py +31 -0
- wandb/sdk/artifacts/_generated/run_output_artifacts.py +31 -0
- wandb/sdk/artifacts/_generated/type_info.py +19 -0
- wandb/sdk/artifacts/_generated/unlink_artifact.py +25 -0
- wandb/sdk/artifacts/_generated/update_artifact.py +26 -0
- wandb/sdk/artifacts/_generated/update_artifact_portfolio.py +35 -0
- wandb/sdk/artifacts/_generated/update_artifact_sequence.py +35 -0
- wandb/sdk/artifacts/_gqlutils.py +47 -0
- wandb/sdk/artifacts/_internal_artifact.py +54 -0
- wandb/sdk/artifacts/_models/__init__.py +4 -0
- wandb/sdk/artifacts/_models/base_model.py +20 -0
- wandb/sdk/artifacts/_validators.py +338 -0
- wandb/sdk/artifacts/artifact.py +2683 -0
- wandb/sdk/artifacts/artifact_download_logger.py +45 -0
- wandb/sdk/artifacts/artifact_file_cache.py +256 -0
- wandb/sdk/artifacts/artifact_instance_cache.py +17 -0
- wandb/sdk/artifacts/artifact_manifest.py +76 -0
- wandb/sdk/artifacts/artifact_manifest_entry.py +315 -0
- wandb/sdk/artifacts/artifact_manifests/__init__.py +0 -0
- wandb/sdk/artifacts/artifact_manifests/artifact_manifest_v1.py +94 -0
- wandb/sdk/artifacts/artifact_saver.py +277 -0
- wandb/sdk/artifacts/artifact_state.py +13 -0
- wandb/sdk/artifacts/artifact_ttl.py +9 -0
- wandb/sdk/artifacts/exceptions.py +72 -0
- wandb/sdk/artifacts/staging.py +27 -0
- wandb/sdk/artifacts/storage_handler.py +62 -0
- wandb/sdk/artifacts/storage_handlers/__init__.py +0 -0
- wandb/sdk/artifacts/storage_handlers/azure_handler.py +214 -0
- wandb/sdk/artifacts/storage_handlers/gcs_handler.py +224 -0
- wandb/sdk/artifacts/storage_handlers/http_handler.py +112 -0
- wandb/sdk/artifacts/storage_handlers/local_file_handler.py +142 -0
- wandb/sdk/artifacts/storage_handlers/multi_handler.py +56 -0
- wandb/sdk/artifacts/storage_handlers/s3_handler.py +340 -0
- wandb/sdk/artifacts/storage_handlers/tracking_handler.py +68 -0
- wandb/sdk/artifacts/storage_handlers/wb_artifact_handler.py +131 -0
- wandb/sdk/artifacts/storage_handlers/wb_local_artifact_handler.py +74 -0
- wandb/sdk/artifacts/storage_layout.py +8 -0
- wandb/sdk/artifacts/storage_policies/__init__.py +4 -0
- wandb/sdk/artifacts/storage_policies/_factories.py +63 -0
- wandb/sdk/artifacts/storage_policies/register.py +1 -0
- wandb/sdk/artifacts/storage_policies/wandb_storage_policy.py +525 -0
- wandb/sdk/artifacts/storage_policy.py +75 -0
- wandb/sdk/backend/__init__.py +0 -0
- wandb/sdk/backend/backend.py +57 -0
- wandb/sdk/data_types/__init__.py +0 -0
- wandb/sdk/data_types/_dtypes.py +914 -0
- wandb/sdk/data_types/_private.py +10 -0
- wandb/sdk/data_types/audio.py +208 -0
- wandb/sdk/data_types/base_types/__init__.py +0 -0
- wandb/sdk/data_types/base_types/json_metadata.py +55 -0
- wandb/sdk/data_types/base_types/media.py +339 -0
- wandb/sdk/data_types/base_types/wb_value.py +295 -0
- wandb/sdk/data_types/bokeh.py +91 -0
- wandb/sdk/data_types/graph.py +439 -0
- wandb/sdk/data_types/helper_types/__init__.py +0 -0
- wandb/sdk/data_types/helper_types/bounding_boxes_2d.py +327 -0
- wandb/sdk/data_types/helper_types/classes.py +159 -0
- wandb/sdk/data_types/helper_types/image_mask.py +251 -0
- wandb/sdk/data_types/histogram.py +107 -0
- wandb/sdk/data_types/html.py +165 -0
- wandb/sdk/data_types/image.py +985 -0
- wandb/sdk/data_types/molecule.py +250 -0
- wandb/sdk/data_types/object_3d.py +495 -0
- wandb/sdk/data_types/plotly.py +95 -0
- wandb/sdk/data_types/saved_model.py +435 -0
- wandb/sdk/data_types/table.py +1468 -0
- wandb/sdk/data_types/table_decorators.py +108 -0
- wandb/sdk/data_types/trace_tree.py +440 -0
- wandb/sdk/data_types/utils.py +260 -0
- wandb/sdk/data_types/video.py +303 -0
- wandb/sdk/integration_utils/__init__.py +0 -0
- wandb/sdk/integration_utils/auto_logging.py +232 -0
- wandb/sdk/integration_utils/data_logging.py +475 -0
- wandb/sdk/interface/__init__.py +0 -0
- wandb/sdk/interface/constants.py +4 -0
- wandb/sdk/interface/interface.py +1093 -0
- wandb/sdk/interface/interface_queue.py +50 -0
- wandb/sdk/interface/interface_shared.py +473 -0
- wandb/sdk/interface/interface_sock.py +55 -0
- wandb/sdk/interface/summary_record.py +67 -0
- wandb/sdk/internal/__init__.py +0 -0
- wandb/sdk/internal/_generated/__init__.py +5 -0
- wandb/sdk/internal/_generated/enums.py +4 -0
- wandb/sdk/internal/_generated/input_types.py +4 -0
- wandb/sdk/internal/_generated/operations.py +15 -0
- wandb/sdk/internal/_generated/server_features_query.py +27 -0
- wandb/sdk/internal/context.py +89 -0
- wandb/sdk/internal/datastore.py +293 -0
- wandb/sdk/internal/file_pusher.py +177 -0
- wandb/sdk/internal/file_stream.py +686 -0
- wandb/sdk/internal/handler.py +854 -0
- wandb/sdk/internal/incremental_table_util.py +53 -0
- wandb/sdk/internal/internal_api.py +4723 -0
- wandb/sdk/internal/job_builder.py +639 -0
- wandb/sdk/internal/profiler.py +79 -0
- wandb/sdk/internal/progress.py +77 -0
- wandb/sdk/internal/run.py +27 -0
- wandb/sdk/internal/sample.py +70 -0
- wandb/sdk/internal/sender.py +1692 -0
- wandb/sdk/internal/sender_config.py +203 -0
- wandb/sdk/internal/settings_static.py +40 -0
- wandb/sdk/internal/tb_watcher.py +519 -0
- wandb/sdk/internal/thread_local_settings.py +18 -0
- wandb/sdk/launch/__init__.py +15 -0
- wandb/sdk/launch/_launch.py +331 -0
- wandb/sdk/launch/_launch_add.py +255 -0
- wandb/sdk/launch/_project_spec.py +565 -0
- wandb/sdk/launch/agent/__init__.py +5 -0
- wandb/sdk/launch/agent/agent.py +931 -0
- wandb/sdk/launch/agent/config.py +296 -0
- wandb/sdk/launch/agent/job_status_tracker.py +55 -0
- wandb/sdk/launch/agent/run_queue_item_file_saver.py +39 -0
- wandb/sdk/launch/builder/__init__.py +0 -0
- wandb/sdk/launch/builder/abstract.py +156 -0
- wandb/sdk/launch/builder/build.py +296 -0
- wandb/sdk/launch/builder/context_manager.py +235 -0
- wandb/sdk/launch/builder/docker_builder.py +177 -0
- wandb/sdk/launch/builder/kaniko_builder.py +595 -0
- wandb/sdk/launch/builder/noop.py +58 -0
- wandb/sdk/launch/builder/templates/_wandb_bootstrap.py +188 -0
- wandb/sdk/launch/builder/templates/dockerfile.py +92 -0
- wandb/sdk/launch/create_job.py +541 -0
- wandb/sdk/launch/environment/abstract.py +29 -0
- wandb/sdk/launch/environment/aws_environment.py +322 -0
- wandb/sdk/launch/environment/azure_environment.py +105 -0
- wandb/sdk/launch/environment/gcp_environment.py +334 -0
- wandb/sdk/launch/environment/local_environment.py +65 -0
- wandb/sdk/launch/errors.py +13 -0
- wandb/sdk/launch/git_reference.py +109 -0
- wandb/sdk/launch/inputs/files.py +148 -0
- wandb/sdk/launch/inputs/internal.py +315 -0
- wandb/sdk/launch/inputs/manage.py +113 -0
- wandb/sdk/launch/inputs/schema.py +70 -0
- wandb/sdk/launch/loader.py +249 -0
- wandb/sdk/launch/registry/abstract.py +48 -0
- wandb/sdk/launch/registry/anon.py +29 -0
- wandb/sdk/launch/registry/azure_container_registry.py +124 -0
- wandb/sdk/launch/registry/elastic_container_registry.py +192 -0
- wandb/sdk/launch/registry/google_artifact_registry.py +219 -0
- wandb/sdk/launch/registry/local_registry.py +65 -0
- wandb/sdk/launch/runner/__init__.py +0 -0
- wandb/sdk/launch/runner/abstract.py +185 -0
- wandb/sdk/launch/runner/kubernetes_monitor.py +473 -0
- wandb/sdk/launch/runner/kubernetes_runner.py +1290 -0
- wandb/sdk/launch/runner/local_container.py +301 -0
- wandb/sdk/launch/runner/local_process.py +78 -0
- wandb/sdk/launch/runner/sagemaker_runner.py +424 -0
- wandb/sdk/launch/runner/vertex_runner.py +225 -0
- wandb/sdk/launch/sweeps/__init__.py +37 -0
- wandb/sdk/launch/sweeps/scheduler.py +739 -0
- wandb/sdk/launch/sweeps/scheduler_sweep.py +90 -0
- wandb/sdk/launch/sweeps/utils.py +324 -0
- wandb/sdk/launch/utils.py +827 -0
- wandb/sdk/launch/wandb_reference.py +138 -0
- wandb/sdk/lib/__init__.py +5 -0
- wandb/sdk/lib/apikey.py +334 -0
- wandb/sdk/lib/asyncio_compat.py +278 -0
- wandb/sdk/lib/asyncio_manager.py +252 -0
- wandb/sdk/lib/capped_dict.py +26 -0
- wandb/sdk/lib/config_util.py +101 -0
- wandb/sdk/lib/console_capture.py +219 -0
- wandb/sdk/lib/credentials.py +141 -0
- wandb/sdk/lib/deprecate.py +27 -0
- wandb/sdk/lib/disabled.py +30 -0
- wandb/sdk/lib/exit_hooks.py +54 -0
- wandb/sdk/lib/file_stream_utils.py +118 -0
- wandb/sdk/lib/filenames.py +64 -0
- wandb/sdk/lib/filesystem.py +372 -0
- wandb/sdk/lib/fsm.py +165 -0
- wandb/sdk/lib/gitlib.py +240 -0
- wandb/sdk/lib/gql_request.py +76 -0
- wandb/sdk/lib/handler_util.py +21 -0
- wandb/sdk/lib/hashutil.py +106 -0
- wandb/sdk/lib/import_hooks.py +275 -0
- wandb/sdk/lib/interrupt.py +37 -0
- wandb/sdk/lib/ipython.py +126 -0
- wandb/sdk/lib/json_util.py +75 -0
- wandb/sdk/lib/lazyloader.py +63 -0
- wandb/sdk/lib/module.py +72 -0
- wandb/sdk/lib/paths.py +108 -0
- wandb/sdk/lib/preinit.py +42 -0
- wandb/sdk/lib/printer.py +567 -0
- wandb/sdk/lib/printer_asyncio.py +48 -0
- wandb/sdk/lib/progress.py +325 -0
- wandb/sdk/lib/proto_util.py +90 -0
- wandb/sdk/lib/redirect.py +876 -0
- wandb/sdk/lib/retry.py +395 -0
- wandb/sdk/lib/run_moment.py +82 -0
- wandb/sdk/lib/runid.py +12 -0
- wandb/sdk/lib/server.py +58 -0
- wandb/sdk/lib/service/ipc_support.py +13 -0
- wandb/sdk/lib/service/service_client.py +102 -0
- wandb/sdk/lib/service/service_connection.py +238 -0
- wandb/sdk/lib/service/service_port_file.py +105 -0
- wandb/sdk/lib/service/service_process.py +111 -0
- wandb/sdk/lib/service/service_token.py +181 -0
- wandb/sdk/lib/sparkline.py +44 -0
- wandb/sdk/lib/telemetry.py +100 -0
- wandb/sdk/lib/timed_input.py +133 -0
- wandb/sdk/lib/timer.py +19 -0
- wandb/sdk/lib/wb_logging.py +161 -0
- wandb/sdk/mailbox/__init__.py +23 -0
- wandb/sdk/mailbox/mailbox.py +143 -0
- wandb/sdk/mailbox/mailbox_handle.py +134 -0
- wandb/sdk/mailbox/response_handle.py +99 -0
- wandb/sdk/mailbox/wait_with_progress.py +100 -0
- wandb/sdk/projects/_generated/__init__.py +26 -0
- wandb/sdk/projects/_generated/delete_project.py +22 -0
- wandb/sdk/projects/_generated/enums.py +4 -0
- wandb/sdk/projects/_generated/fetch_registry.py +22 -0
- wandb/sdk/projects/_generated/fragments.py +41 -0
- wandb/sdk/projects/_generated/input_types.py +13 -0
- wandb/sdk/projects/_generated/operations.py +88 -0
- wandb/sdk/projects/_generated/rename_project.py +27 -0
- wandb/sdk/projects/_generated/upsert_registry_project.py +27 -0
- wandb/sdk/verify/__init__.py +0 -0
- wandb/sdk/verify/verify.py +555 -0
- wandb/sdk/wandb_alerts.py +12 -0
- wandb/sdk/wandb_config.py +323 -0
- wandb/sdk/wandb_helper.py +54 -0
- wandb/sdk/wandb_init.py +1601 -0
- wandb/sdk/wandb_login.py +358 -0
- wandb/sdk/wandb_metric.py +112 -0
- wandb/sdk/wandb_require.py +88 -0
- wandb/sdk/wandb_require_helpers.py +44 -0
- wandb/sdk/wandb_run.py +4102 -0
- wandb/sdk/wandb_settings.py +2197 -0
- wandb/sdk/wandb_setup.py +560 -0
- wandb/sdk/wandb_summary.py +150 -0
- wandb/sdk/wandb_sweep.py +120 -0
- wandb/sdk/wandb_sync.py +71 -0
- wandb/sdk/wandb_watch.py +146 -0
- wandb/sklearn.py +35 -0
- wandb/sync/__init__.py +3 -0
- wandb/sync/sync.py +457 -0
- wandb/trigger.py +29 -0
- wandb/util.py +2040 -0
- wandb/vendor/__init__.py +0 -0
- wandb/vendor/gql-0.2.0/setup.py +40 -0
- wandb/vendor/gql-0.2.0/tests/__init__.py +0 -0
- wandb/vendor/gql-0.2.0/tests/starwars/__init__.py +0 -0
- wandb/vendor/gql-0.2.0/tests/starwars/fixtures.py +96 -0
- wandb/vendor/gql-0.2.0/tests/starwars/schema.py +146 -0
- wandb/vendor/gql-0.2.0/tests/starwars/test_dsl.py +293 -0
- wandb/vendor/gql-0.2.0/tests/starwars/test_query.py +355 -0
- wandb/vendor/gql-0.2.0/tests/starwars/test_validation.py +171 -0
- wandb/vendor/gql-0.2.0/tests/test_client.py +31 -0
- wandb/vendor/gql-0.2.0/tests/test_transport.py +89 -0
- wandb/vendor/gql-0.2.0/wandb_gql/__init__.py +4 -0
- wandb/vendor/gql-0.2.0/wandb_gql/client.py +75 -0
- wandb/vendor/gql-0.2.0/wandb_gql/dsl.py +152 -0
- wandb/vendor/gql-0.2.0/wandb_gql/gql.py +10 -0
- wandb/vendor/gql-0.2.0/wandb_gql/transport/__init__.py +0 -0
- wandb/vendor/gql-0.2.0/wandb_gql/transport/http.py +6 -0
- wandb/vendor/gql-0.2.0/wandb_gql/transport/local_schema.py +15 -0
- wandb/vendor/gql-0.2.0/wandb_gql/transport/requests.py +46 -0
- wandb/vendor/gql-0.2.0/wandb_gql/utils.py +21 -0
- wandb/vendor/graphql-core-1.1/setup.py +86 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/__init__.py +287 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/error/__init__.py +6 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/error/base.py +42 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/error/format_error.py +11 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/error/located_error.py +29 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/error/syntax_error.py +36 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/__init__.py +26 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/base.py +311 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executor.py +398 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/__init__.py +0 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/asyncio.py +53 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/gevent.py +22 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/process.py +32 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/sync.py +7 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/thread.py +35 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/utils.py +6 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/experimental/__init__.py +0 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/experimental/executor.py +66 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/experimental/fragment.py +252 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/experimental/resolver.py +151 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/experimental/utils.py +7 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/middleware.py +57 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/values.py +145 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/graphql.py +60 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/__init__.py +0 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/ast.py +1349 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/base.py +19 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/lexer.py +435 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/location.py +30 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/parser.py +779 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/printer.py +193 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/source.py +18 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/visitor.py +222 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/visitor_meta.py +82 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/__init__.py +0 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/cached_property.py +17 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/contain_subset.py +28 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/default_ordered_dict.py +40 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/ordereddict.py +8 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/pair_set.py +43 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/version.py +78 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/type/__init__.py +67 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/type/definition.py +619 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/type/directives.py +132 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/type/introspection.py +440 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/type/scalars.py +131 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/type/schema.py +100 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/type/typemap.py +145 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/__init__.py +0 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/assert_valid_name.py +9 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/ast_from_value.py +65 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/ast_to_code.py +49 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/ast_to_dict.py +24 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/base.py +75 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/build_ast_schema.py +291 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/build_client_schema.py +250 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/concat_ast.py +9 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/extend_schema.py +357 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/get_field_def.py +27 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/get_operation_ast.py +21 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/introspection_query.py +90 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/is_valid_literal_value.py +67 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/is_valid_value.py +66 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/quoted_or_list.py +21 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/schema_printer.py +168 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/suggestion_list.py +56 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/type_comparators.py +69 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/type_from_ast.py +21 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/type_info.py +149 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/value_from_ast.py +69 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/__init__.py +4 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/__init__.py +79 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/arguments_of_correct_type.py +24 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/base.py +8 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/default_values_of_correct_type.py +44 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/fields_on_correct_type.py +113 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/fragments_on_composite_types.py +33 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/known_argument_names.py +70 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/known_directives.py +97 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/known_fragment_names.py +19 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/known_type_names.py +43 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/lone_anonymous_operation.py +23 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/no_fragment_cycles.py +59 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/no_undefined_variables.py +36 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/no_unused_fragments.py +38 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/no_unused_variables.py +37 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/overlapping_fields_can_be_merged.py +529 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/possible_fragment_spreads.py +44 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/provided_non_null_arguments.py +46 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/scalar_leafs.py +33 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/unique_argument_names.py +32 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/unique_fragment_names.py +28 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/unique_input_field_names.py +33 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/unique_operation_names.py +31 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/unique_variable_names.py +27 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/variables_are_input_types.py +21 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/variables_in_allowed_position.py +53 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/validation.py +158 -0
- wandb/vendor/promise-2.3.0/conftest.py +30 -0
- wandb/vendor/promise-2.3.0/setup.py +64 -0
- wandb/vendor/promise-2.3.0/tests/__init__.py +0 -0
- wandb/vendor/promise-2.3.0/tests/conftest.py +8 -0
- wandb/vendor/promise-2.3.0/tests/test_awaitable.py +32 -0
- wandb/vendor/promise-2.3.0/tests/test_awaitable_35.py +47 -0
- wandb/vendor/promise-2.3.0/tests/test_benchmark.py +116 -0
- wandb/vendor/promise-2.3.0/tests/test_complex_threads.py +23 -0
- wandb/vendor/promise-2.3.0/tests/test_dataloader.py +452 -0
- wandb/vendor/promise-2.3.0/tests/test_dataloader_awaitable_35.py +99 -0
- wandb/vendor/promise-2.3.0/tests/test_dataloader_extra.py +65 -0
- wandb/vendor/promise-2.3.0/tests/test_extra.py +670 -0
- wandb/vendor/promise-2.3.0/tests/test_issues.py +132 -0
- wandb/vendor/promise-2.3.0/tests/test_promise_list.py +70 -0
- wandb/vendor/promise-2.3.0/tests/test_spec.py +584 -0
- wandb/vendor/promise-2.3.0/tests/test_thread_safety.py +115 -0
- wandb/vendor/promise-2.3.0/tests/utils.py +3 -0
- wandb/vendor/promise-2.3.0/wandb_promise/__init__.py +38 -0
- wandb/vendor/promise-2.3.0/wandb_promise/async_.py +135 -0
- wandb/vendor/promise-2.3.0/wandb_promise/compat.py +32 -0
- wandb/vendor/promise-2.3.0/wandb_promise/dataloader.py +326 -0
- wandb/vendor/promise-2.3.0/wandb_promise/iterate_promise.py +12 -0
- wandb/vendor/promise-2.3.0/wandb_promise/promise.py +848 -0
- wandb/vendor/promise-2.3.0/wandb_promise/promise_list.py +151 -0
- wandb/vendor/promise-2.3.0/wandb_promise/pyutils/__init__.py +0 -0
- wandb/vendor/promise-2.3.0/wandb_promise/pyutils/version.py +83 -0
- wandb/vendor/promise-2.3.0/wandb_promise/schedulers/__init__.py +0 -0
- wandb/vendor/promise-2.3.0/wandb_promise/schedulers/asyncio.py +22 -0
- wandb/vendor/promise-2.3.0/wandb_promise/schedulers/gevent.py +21 -0
- wandb/vendor/promise-2.3.0/wandb_promise/schedulers/immediate.py +27 -0
- wandb/vendor/promise-2.3.0/wandb_promise/schedulers/thread.py +18 -0
- wandb/vendor/promise-2.3.0/wandb_promise/utils.py +56 -0
- wandb/vendor/pygments/__init__.py +90 -0
- wandb/vendor/pygments/cmdline.py +568 -0
- wandb/vendor/pygments/console.py +74 -0
- wandb/vendor/pygments/filter.py +74 -0
- wandb/vendor/pygments/filters/__init__.py +350 -0
- wandb/vendor/pygments/formatter.py +95 -0
- wandb/vendor/pygments/formatters/__init__.py +153 -0
- wandb/vendor/pygments/formatters/_mapping.py +85 -0
- wandb/vendor/pygments/formatters/bbcode.py +109 -0
- wandb/vendor/pygments/formatters/html.py +851 -0
- wandb/vendor/pygments/formatters/img.py +600 -0
- wandb/vendor/pygments/formatters/irc.py +182 -0
- wandb/vendor/pygments/formatters/latex.py +482 -0
- wandb/vendor/pygments/formatters/other.py +160 -0
- wandb/vendor/pygments/formatters/rtf.py +147 -0
- wandb/vendor/pygments/formatters/svg.py +153 -0
- wandb/vendor/pygments/formatters/terminal.py +136 -0
- wandb/vendor/pygments/formatters/terminal256.py +309 -0
- wandb/vendor/pygments/lexer.py +871 -0
- wandb/vendor/pygments/lexers/__init__.py +329 -0
- wandb/vendor/pygments/lexers/_asy_builtins.py +1645 -0
- wandb/vendor/pygments/lexers/_cl_builtins.py +232 -0
- wandb/vendor/pygments/lexers/_cocoa_builtins.py +72 -0
- wandb/vendor/pygments/lexers/_csound_builtins.py +1346 -0
- wandb/vendor/pygments/lexers/_lasso_builtins.py +5327 -0
- wandb/vendor/pygments/lexers/_lua_builtins.py +295 -0
- wandb/vendor/pygments/lexers/_mapping.py +500 -0
- wandb/vendor/pygments/lexers/_mql_builtins.py +1172 -0
- wandb/vendor/pygments/lexers/_openedge_builtins.py +2547 -0
- wandb/vendor/pygments/lexers/_php_builtins.py +4756 -0
- wandb/vendor/pygments/lexers/_postgres_builtins.py +621 -0
- wandb/vendor/pygments/lexers/_scilab_builtins.py +3094 -0
- wandb/vendor/pygments/lexers/_sourcemod_builtins.py +1163 -0
- wandb/vendor/pygments/lexers/_stan_builtins.py +532 -0
- wandb/vendor/pygments/lexers/_stata_builtins.py +419 -0
- wandb/vendor/pygments/lexers/_tsql_builtins.py +1004 -0
- wandb/vendor/pygments/lexers/_vim_builtins.py +1939 -0
- wandb/vendor/pygments/lexers/actionscript.py +240 -0
- wandb/vendor/pygments/lexers/agile.py +24 -0
- wandb/vendor/pygments/lexers/algebra.py +221 -0
- wandb/vendor/pygments/lexers/ambient.py +76 -0
- wandb/vendor/pygments/lexers/ampl.py +87 -0
- wandb/vendor/pygments/lexers/apl.py +101 -0
- wandb/vendor/pygments/lexers/archetype.py +318 -0
- wandb/vendor/pygments/lexers/asm.py +641 -0
- wandb/vendor/pygments/lexers/automation.py +374 -0
- wandb/vendor/pygments/lexers/basic.py +500 -0
- wandb/vendor/pygments/lexers/bibtex.py +160 -0
- wandb/vendor/pygments/lexers/business.py +612 -0
- wandb/vendor/pygments/lexers/c_cpp.py +252 -0
- wandb/vendor/pygments/lexers/c_like.py +541 -0
- wandb/vendor/pygments/lexers/capnproto.py +78 -0
- wandb/vendor/pygments/lexers/chapel.py +102 -0
- wandb/vendor/pygments/lexers/clean.py +288 -0
- wandb/vendor/pygments/lexers/compiled.py +34 -0
- wandb/vendor/pygments/lexers/configs.py +833 -0
- wandb/vendor/pygments/lexers/console.py +114 -0
- wandb/vendor/pygments/lexers/crystal.py +393 -0
- wandb/vendor/pygments/lexers/csound.py +366 -0
- wandb/vendor/pygments/lexers/css.py +689 -0
- wandb/vendor/pygments/lexers/d.py +251 -0
- wandb/vendor/pygments/lexers/dalvik.py +125 -0
- wandb/vendor/pygments/lexers/data.py +555 -0
- wandb/vendor/pygments/lexers/diff.py +165 -0
- wandb/vendor/pygments/lexers/dotnet.py +691 -0
- wandb/vendor/pygments/lexers/dsls.py +878 -0
- wandb/vendor/pygments/lexers/dylan.py +289 -0
- wandb/vendor/pygments/lexers/ecl.py +125 -0
- wandb/vendor/pygments/lexers/eiffel.py +65 -0
- wandb/vendor/pygments/lexers/elm.py +121 -0
- wandb/vendor/pygments/lexers/erlang.py +533 -0
- wandb/vendor/pygments/lexers/esoteric.py +277 -0
- wandb/vendor/pygments/lexers/ezhil.py +69 -0
- wandb/vendor/pygments/lexers/factor.py +344 -0
- wandb/vendor/pygments/lexers/fantom.py +250 -0
- wandb/vendor/pygments/lexers/felix.py +273 -0
- wandb/vendor/pygments/lexers/forth.py +177 -0
- wandb/vendor/pygments/lexers/fortran.py +205 -0
- wandb/vendor/pygments/lexers/foxpro.py +428 -0
- wandb/vendor/pygments/lexers/functional.py +21 -0
- wandb/vendor/pygments/lexers/go.py +101 -0
- wandb/vendor/pygments/lexers/grammar_notation.py +213 -0
- wandb/vendor/pygments/lexers/graph.py +80 -0
- wandb/vendor/pygments/lexers/graphics.py +553 -0
- wandb/vendor/pygments/lexers/haskell.py +843 -0
- wandb/vendor/pygments/lexers/haxe.py +936 -0
- wandb/vendor/pygments/lexers/hdl.py +382 -0
- wandb/vendor/pygments/lexers/hexdump.py +103 -0
- wandb/vendor/pygments/lexers/html.py +602 -0
- wandb/vendor/pygments/lexers/idl.py +270 -0
- wandb/vendor/pygments/lexers/igor.py +288 -0
- wandb/vendor/pygments/lexers/inferno.py +96 -0
- wandb/vendor/pygments/lexers/installers.py +322 -0
- wandb/vendor/pygments/lexers/int_fiction.py +1343 -0
- wandb/vendor/pygments/lexers/iolang.py +63 -0
- wandb/vendor/pygments/lexers/j.py +146 -0
- wandb/vendor/pygments/lexers/javascript.py +1525 -0
- wandb/vendor/pygments/lexers/julia.py +333 -0
- wandb/vendor/pygments/lexers/jvm.py +1573 -0
- wandb/vendor/pygments/lexers/lisp.py +2621 -0
- wandb/vendor/pygments/lexers/make.py +202 -0
- wandb/vendor/pygments/lexers/markup.py +595 -0
- wandb/vendor/pygments/lexers/math.py +21 -0
- wandb/vendor/pygments/lexers/matlab.py +663 -0
- wandb/vendor/pygments/lexers/ml.py +769 -0
- wandb/vendor/pygments/lexers/modeling.py +358 -0
- wandb/vendor/pygments/lexers/modula2.py +1561 -0
- wandb/vendor/pygments/lexers/monte.py +204 -0
- wandb/vendor/pygments/lexers/ncl.py +894 -0
- wandb/vendor/pygments/lexers/nimrod.py +159 -0
- wandb/vendor/pygments/lexers/nit.py +64 -0
- wandb/vendor/pygments/lexers/nix.py +136 -0
- wandb/vendor/pygments/lexers/oberon.py +105 -0
- wandb/vendor/pygments/lexers/objective.py +504 -0
- wandb/vendor/pygments/lexers/ooc.py +85 -0
- wandb/vendor/pygments/lexers/other.py +41 -0
- wandb/vendor/pygments/lexers/parasail.py +79 -0
- wandb/vendor/pygments/lexers/parsers.py +835 -0
- wandb/vendor/pygments/lexers/pascal.py +644 -0
- wandb/vendor/pygments/lexers/pawn.py +199 -0
- wandb/vendor/pygments/lexers/perl.py +620 -0
- wandb/vendor/pygments/lexers/php.py +267 -0
- wandb/vendor/pygments/lexers/praat.py +294 -0
- wandb/vendor/pygments/lexers/prolog.py +306 -0
- wandb/vendor/pygments/lexers/python.py +939 -0
- wandb/vendor/pygments/lexers/qvt.py +152 -0
- wandb/vendor/pygments/lexers/r.py +453 -0
- wandb/vendor/pygments/lexers/rdf.py +270 -0
- wandb/vendor/pygments/lexers/rebol.py +431 -0
- wandb/vendor/pygments/lexers/resource.py +85 -0
- wandb/vendor/pygments/lexers/rnc.py +67 -0
- wandb/vendor/pygments/lexers/roboconf.py +82 -0
- wandb/vendor/pygments/lexers/robotframework.py +560 -0
- wandb/vendor/pygments/lexers/ruby.py +519 -0
- wandb/vendor/pygments/lexers/rust.py +220 -0
- wandb/vendor/pygments/lexers/sas.py +228 -0
- wandb/vendor/pygments/lexers/scripting.py +1222 -0
- wandb/vendor/pygments/lexers/shell.py +794 -0
- wandb/vendor/pygments/lexers/smalltalk.py +195 -0
- wandb/vendor/pygments/lexers/smv.py +79 -0
- wandb/vendor/pygments/lexers/snobol.py +83 -0
- wandb/vendor/pygments/lexers/special.py +103 -0
- wandb/vendor/pygments/lexers/sql.py +681 -0
- wandb/vendor/pygments/lexers/stata.py +108 -0
- wandb/vendor/pygments/lexers/supercollider.py +90 -0
- wandb/vendor/pygments/lexers/tcl.py +145 -0
- wandb/vendor/pygments/lexers/templates.py +2283 -0
- wandb/vendor/pygments/lexers/testing.py +207 -0
- wandb/vendor/pygments/lexers/text.py +25 -0
- wandb/vendor/pygments/lexers/textedit.py +169 -0
- wandb/vendor/pygments/lexers/textfmts.py +297 -0
- wandb/vendor/pygments/lexers/theorem.py +458 -0
- wandb/vendor/pygments/lexers/trafficscript.py +54 -0
- wandb/vendor/pygments/lexers/typoscript.py +226 -0
- wandb/vendor/pygments/lexers/urbi.py +133 -0
- wandb/vendor/pygments/lexers/varnish.py +190 -0
- wandb/vendor/pygments/lexers/verification.py +111 -0
- wandb/vendor/pygments/lexers/web.py +24 -0
- wandb/vendor/pygments/lexers/webmisc.py +988 -0
- wandb/vendor/pygments/lexers/whiley.py +116 -0
- wandb/vendor/pygments/lexers/x10.py +69 -0
- wandb/vendor/pygments/modeline.py +44 -0
- wandb/vendor/pygments/plugin.py +68 -0
- wandb/vendor/pygments/regexopt.py +92 -0
- wandb/vendor/pygments/scanner.py +105 -0
- wandb/vendor/pygments/sphinxext.py +158 -0
- wandb/vendor/pygments/style.py +155 -0
- wandb/vendor/pygments/styles/__init__.py +80 -0
- wandb/vendor/pygments/styles/abap.py +29 -0
- wandb/vendor/pygments/styles/algol.py +63 -0
- wandb/vendor/pygments/styles/algol_nu.py +63 -0
- wandb/vendor/pygments/styles/arduino.py +98 -0
- wandb/vendor/pygments/styles/autumn.py +65 -0
- wandb/vendor/pygments/styles/borland.py +51 -0
- wandb/vendor/pygments/styles/bw.py +49 -0
- wandb/vendor/pygments/styles/colorful.py +81 -0
- wandb/vendor/pygments/styles/default.py +73 -0
- wandb/vendor/pygments/styles/emacs.py +72 -0
- wandb/vendor/pygments/styles/friendly.py +72 -0
- wandb/vendor/pygments/styles/fruity.py +42 -0
- wandb/vendor/pygments/styles/igor.py +29 -0
- wandb/vendor/pygments/styles/lovelace.py +97 -0
- wandb/vendor/pygments/styles/manni.py +75 -0
- wandb/vendor/pygments/styles/monokai.py +106 -0
- wandb/vendor/pygments/styles/murphy.py +80 -0
- wandb/vendor/pygments/styles/native.py +65 -0
- wandb/vendor/pygments/styles/paraiso_dark.py +125 -0
- wandb/vendor/pygments/styles/paraiso_light.py +125 -0
- wandb/vendor/pygments/styles/pastie.py +75 -0
- wandb/vendor/pygments/styles/perldoc.py +69 -0
- wandb/vendor/pygments/styles/rainbow_dash.py +89 -0
- wandb/vendor/pygments/styles/rrt.py +33 -0
- wandb/vendor/pygments/styles/sas.py +44 -0
- wandb/vendor/pygments/styles/stata.py +40 -0
- wandb/vendor/pygments/styles/tango.py +141 -0
- wandb/vendor/pygments/styles/trac.py +63 -0
- wandb/vendor/pygments/styles/vim.py +63 -0
- wandb/vendor/pygments/styles/vs.py +38 -0
- wandb/vendor/pygments/styles/xcode.py +51 -0
- wandb/vendor/pygments/token.py +213 -0
- wandb/vendor/pygments/unistring.py +217 -0
- wandb/vendor/pygments/util.py +388 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/__init__.py +17 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/events.py +615 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/__init__.py +98 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/api.py +369 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/fsevents.py +172 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/fsevents2.py +239 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/inotify.py +218 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/inotify_buffer.py +81 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/inotify_c.py +575 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/kqueue.py +730 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/polling.py +145 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/read_directory_changes.py +133 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/winapi.py +348 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/patterns.py +265 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/tricks/__init__.py +174 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/__init__.py +151 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/bricks.py +249 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/compat.py +29 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/decorators.py +198 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/delayed_queue.py +88 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/dirsnapshot.py +293 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/echo.py +157 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/event_backport.py +41 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/importlib2.py +40 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/platform.py +57 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/unicode_paths.py +64 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/win32stat.py +123 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/version.py +28 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/watchmedo.py +577 -0
- wandb/wandb_agent.py +611 -0
- wandb/wandb_controller.py +719 -0
- wandb/wandb_run.py +8 -0
- wandb-0.22.1.dist-info/METADATA +223 -0
- wandb-0.22.1.dist-info/RECORD +919 -0
- wandb-0.22.1.dist-info/WHEEL +4 -0
- wandb-0.22.1.dist-info/entry_points.txt +3 -0
- wandb-0.22.1.dist-info/licenses/LICENSE +21 -0
wandb/beta/workflows.py
ADDED
@@ -0,0 +1,324 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
import json
|
4
|
+
import os
|
5
|
+
import warnings
|
6
|
+
from typing import Any
|
7
|
+
|
8
|
+
from typing_extensions import deprecated
|
9
|
+
|
10
|
+
import wandb
|
11
|
+
from wandb.data_types import WBValue, _SavedModel
|
12
|
+
from wandb.proto.wandb_deprecated import Deprecated
|
13
|
+
from wandb.sdk import wandb_setup
|
14
|
+
from wandb.sdk.artifacts.artifact import Artifact
|
15
|
+
from wandb.sdk.artifacts.artifact_manifest_entry import ArtifactManifestEntry
|
16
|
+
from wandb.sdk.lib.deprecate import deprecate as wandb_deprecate
|
17
|
+
|
18
|
+
warnings.warn(
|
19
|
+
message=f"The {__name__!r} module is deprecated and will be removed in a future version. Please use the equivalent 'wandb.Run' methods instead.",
|
20
|
+
category=DeprecationWarning,
|
21
|
+
stacklevel=2,
|
22
|
+
)
|
23
|
+
|
24
|
+
|
25
|
+
def _add_any(
|
26
|
+
artifact: Artifact,
|
27
|
+
path_or_obj: str | ArtifactManifestEntry | WBValue, # todo: add dataframe
|
28
|
+
name: str | None,
|
29
|
+
) -> Any:
|
30
|
+
"""Add an object to an artifact.
|
31
|
+
|
32
|
+
High-level wrapper to add object(s) to an artifact - calls any of the .add* methods
|
33
|
+
under Artifact depending on the type of object that's passed in. This will probably
|
34
|
+
be moved to the Artifact class in the future.
|
35
|
+
|
36
|
+
Args:
|
37
|
+
artifact: artifact created with `wandb.Artifact(...)`
|
38
|
+
path_or_obj: either a str or valid object which indicates what to add
|
39
|
+
to an artifact.
|
40
|
+
name: the name of the object which is added to an artifact.
|
41
|
+
|
42
|
+
Returns:
|
43
|
+
Type[Any] - Union[None, ArtifactManifestEntry, etc]
|
44
|
+
|
45
|
+
"""
|
46
|
+
if isinstance(path_or_obj, ArtifactManifestEntry):
|
47
|
+
return artifact.add_reference(path_or_obj, name)
|
48
|
+
elif isinstance(path_or_obj, WBValue):
|
49
|
+
return artifact.add(path_or_obj, name)
|
50
|
+
elif isinstance(path_or_obj, str):
|
51
|
+
if os.path.isdir(path_or_obj):
|
52
|
+
return artifact.add_dir(path_or_obj)
|
53
|
+
elif os.path.isfile(path_or_obj):
|
54
|
+
return artifact.add_file(path_or_obj)
|
55
|
+
else:
|
56
|
+
with artifact.new_file(name) as f:
|
57
|
+
f.write(json.dumps(path_or_obj, sort_keys=True))
|
58
|
+
else:
|
59
|
+
raise TypeError(
|
60
|
+
"Expected `path_or_obj` to be instance of `ArtifactManifestEntry`,"
|
61
|
+
f" `WBValue`, or `str, found {type(path_or_obj)}"
|
62
|
+
)
|
63
|
+
|
64
|
+
|
65
|
+
def _log_artifact_version(
|
66
|
+
name: str,
|
67
|
+
type: str,
|
68
|
+
entries: dict[str, str | ArtifactManifestEntry | WBValue],
|
69
|
+
aliases: str | list[str] | None = None,
|
70
|
+
description: str | None = None,
|
71
|
+
metadata: dict | None = None,
|
72
|
+
project: str | None = None,
|
73
|
+
scope_project: bool | None = None,
|
74
|
+
job_type: str = "auto",
|
75
|
+
) -> Artifact:
|
76
|
+
"""Create an artifact, populate it, and log it with a run.
|
77
|
+
|
78
|
+
If a run is not present, we create one.
|
79
|
+
|
80
|
+
Args:
|
81
|
+
name: `str` - name of the artifact. If not scoped to a project, name will be
|
82
|
+
suffixed by "-{run_id}".
|
83
|
+
type: `str` - type of the artifact, used in the UI to group artifacts of the
|
84
|
+
same type.
|
85
|
+
entries: `Dict` - dictionary containing the named objects we want added to this
|
86
|
+
artifact.
|
87
|
+
description: `str` - text description of artifact.
|
88
|
+
metadata: `Dict` - users can pass in artifact-specific metadata here, will be
|
89
|
+
visible in the UI.
|
90
|
+
project: `str` - project under which to place this artifact.
|
91
|
+
scope_project: `bool` - if True, we will not suffix `name` with "-{run_id}".
|
92
|
+
job_type: `str` - Only applied if run is not present and we create one.
|
93
|
+
Used to identify runs of a certain job type, i.e "evaluation".
|
94
|
+
|
95
|
+
Returns:
|
96
|
+
Artifact
|
97
|
+
|
98
|
+
"""
|
99
|
+
run = wandb_setup.singleton().most_recent_active_run
|
100
|
+
if not run:
|
101
|
+
run = wandb.init(
|
102
|
+
project=project,
|
103
|
+
job_type=job_type,
|
104
|
+
settings=wandb.Settings(silent=True),
|
105
|
+
)
|
106
|
+
|
107
|
+
if not scope_project:
|
108
|
+
name = f"{name}-{run.id}"
|
109
|
+
|
110
|
+
if metadata is None:
|
111
|
+
metadata = {}
|
112
|
+
|
113
|
+
art = wandb.Artifact(name, type, description, metadata, False, None)
|
114
|
+
|
115
|
+
for path in entries:
|
116
|
+
_add_any(art, entries[path], path)
|
117
|
+
|
118
|
+
# "latest" should always be present as an alias
|
119
|
+
aliases = wandb.util._resolve_aliases(aliases)
|
120
|
+
run.log_artifact(art, aliases=aliases)
|
121
|
+
|
122
|
+
return art
|
123
|
+
|
124
|
+
|
125
|
+
_LOG_MODEL_DEPRECATION_MSG = "`log_model` is deprecated and will be removed in a future version. Please use `Run.log_artifact` instead."
|
126
|
+
|
127
|
+
|
128
|
+
@deprecated(_LOG_MODEL_DEPRECATION_MSG)
|
129
|
+
def log_model(
|
130
|
+
model_obj: Any,
|
131
|
+
name: str = "model",
|
132
|
+
aliases: str | list[str] | None = None,
|
133
|
+
description: str | None = None,
|
134
|
+
metadata: dict | None = None,
|
135
|
+
project: str | None = None,
|
136
|
+
scope_project: bool | None = None,
|
137
|
+
**kwargs: dict[str, Any],
|
138
|
+
) -> _SavedModel:
|
139
|
+
"""Log a model object to enable model-centric workflows in the UI.
|
140
|
+
|
141
|
+
Supported frameworks include PyTorch, Keras, Tensorflow, Scikit-learn, etc. Under
|
142
|
+
the hood, we create a model artifact, bind it to the run that produced this model,
|
143
|
+
associate it with the latest metrics logged with `run.log(...)` and more.
|
144
|
+
|
145
|
+
Args:
|
146
|
+
model_obj: any model object created with the following ML frameworks: PyTorch,
|
147
|
+
Keras, Tensorflow, Scikit-learn. name: `str` - name of the model artifact
|
148
|
+
that will be created to house this model_obj.
|
149
|
+
aliases: `str, List[str]` - optional alias(es) that will be applied on this
|
150
|
+
model and allow for unique identification. The alias "latest" will always be
|
151
|
+
applied to the latest version of a model.
|
152
|
+
description: `str` - text description/notes about the model - will be visible in
|
153
|
+
the Model Card UI.
|
154
|
+
metadata: `Dict` - model-specific metadata goes here - will be visible the UI.
|
155
|
+
project: `str` - project under which to place this artifact.
|
156
|
+
scope_project: `bool` - If true, name of this model artifact will not be
|
157
|
+
suffixed by `-{run_id}`.
|
158
|
+
|
159
|
+
Returns:
|
160
|
+
_SavedModel instance
|
161
|
+
|
162
|
+
Example:
|
163
|
+
```python
|
164
|
+
import torch.nn as nn
|
165
|
+
import torch.nn.functional as F
|
166
|
+
|
167
|
+
|
168
|
+
class Net(nn.Module):
|
169
|
+
def __init__(self):
|
170
|
+
super(Net, self).__init__()
|
171
|
+
self.fc1 = nn.Linear(10, 10)
|
172
|
+
|
173
|
+
def forward(self, x):
|
174
|
+
x = self.fc1(x)
|
175
|
+
x = F.relu(x)
|
176
|
+
return x
|
177
|
+
|
178
|
+
|
179
|
+
model = Net()
|
180
|
+
sm = log_model(model, "my-simple-model", aliases=["best"])
|
181
|
+
```
|
182
|
+
|
183
|
+
"""
|
184
|
+
wandb_deprecate(
|
185
|
+
field_name=Deprecated.beta__workflows__log_model,
|
186
|
+
warning_message=_LOG_MODEL_DEPRECATION_MSG,
|
187
|
+
)
|
188
|
+
|
189
|
+
model = _SavedModel.init(model_obj, **kwargs)
|
190
|
+
_ = _log_artifact_version(
|
191
|
+
name=name,
|
192
|
+
type="model",
|
193
|
+
entries={
|
194
|
+
"index": model,
|
195
|
+
},
|
196
|
+
aliases=aliases,
|
197
|
+
description=description,
|
198
|
+
metadata=metadata,
|
199
|
+
project=project,
|
200
|
+
scope_project=scope_project,
|
201
|
+
job_type="log_model",
|
202
|
+
)
|
203
|
+
# TODO: handle offline mode appropriately.
|
204
|
+
return model
|
205
|
+
|
206
|
+
|
207
|
+
_USE_MODEL_DEPRECATION_MSG = "`use_model` is deprecated and will be removed in a future version. Please update your code to use `Run.use_artifact` instead."
|
208
|
+
|
209
|
+
|
210
|
+
@deprecated(_USE_MODEL_DEPRECATION_MSG)
|
211
|
+
def use_model(aliased_path: str, unsafe: bool = False) -> _SavedModel:
|
212
|
+
"""Fetch a saved model from an alias.
|
213
|
+
|
214
|
+
Under the hood, we use the alias to fetch the model artifact containing the
|
215
|
+
serialized model files and rebuild the model object from these files. We also
|
216
|
+
declare the fetched model artifact as an input to the run (with `run.use_artifact`).
|
217
|
+
|
218
|
+
Args:
|
219
|
+
aliased_path: `str` - the following forms are valid: "name:version",
|
220
|
+
"name:alias". May be prefixed with "entity/project".
|
221
|
+
unsafe: `bool` - must be True to indicate the user understands the risks
|
222
|
+
associated with loading external models.
|
223
|
+
|
224
|
+
Returns:
|
225
|
+
_SavedModel instance
|
226
|
+
|
227
|
+
Example:
|
228
|
+
```python
|
229
|
+
# Assuming the model with the name "my-simple-model" is trusted:
|
230
|
+
sm = use_model("my-simple-model:latest", unsafe=True)
|
231
|
+
model = sm.model_obj()
|
232
|
+
```
|
233
|
+
"""
|
234
|
+
wandb_deprecate(
|
235
|
+
field_name=Deprecated.beta__workflows__use_model,
|
236
|
+
warning_message=_USE_MODEL_DEPRECATION_MSG,
|
237
|
+
)
|
238
|
+
|
239
|
+
if not unsafe:
|
240
|
+
raise ValueError("The 'unsafe' parameter must be set to True to load a model.")
|
241
|
+
|
242
|
+
if ":" not in aliased_path:
|
243
|
+
raise ValueError(
|
244
|
+
"aliased_path must be of the form 'name:alias' or 'name:version'."
|
245
|
+
)
|
246
|
+
|
247
|
+
# Returns a _SavedModel instance
|
248
|
+
if run := wandb_setup.singleton().most_recent_active_run:
|
249
|
+
artifact = run.use_artifact(aliased_path)
|
250
|
+
sm = artifact.get("index")
|
251
|
+
|
252
|
+
if sm is None or not isinstance(sm, _SavedModel):
|
253
|
+
raise ValueError(
|
254
|
+
"Deserialization into model object failed: _SavedModel instance could not be initialized properly."
|
255
|
+
)
|
256
|
+
|
257
|
+
return sm
|
258
|
+
else:
|
259
|
+
raise ValueError(
|
260
|
+
"use_model can only be called inside a run. Please call wandb.init() before use_model(...)"
|
261
|
+
)
|
262
|
+
|
263
|
+
|
264
|
+
_LINK_MODEL_DEPRECATION_MSG = "`link_model` is deprecated and will be removed in a future version. Please use `Run.link_artifact` instead."
|
265
|
+
|
266
|
+
|
267
|
+
@deprecated(_LINK_MODEL_DEPRECATION_MSG)
|
268
|
+
def link_model(
|
269
|
+
model: _SavedModel,
|
270
|
+
target_path: str,
|
271
|
+
aliases: str | list[str] | None = None,
|
272
|
+
) -> None:
|
273
|
+
"""Link the given model to a portfolio.
|
274
|
+
|
275
|
+
A portfolio is a promoted collection which contains (in this case) model artifacts.
|
276
|
+
Linking to a portfolio allows for useful model-centric workflows in the UI.
|
277
|
+
|
278
|
+
Args:
|
279
|
+
model: `_SavedModel` - an instance of _SavedModel, most likely from the output
|
280
|
+
of `log_model` or `use_model`.
|
281
|
+
target_path: `str` - the target portfolio. The following forms are valid for the
|
282
|
+
string: {portfolio}, {project/portfolio},{entity}/{project}/{portfolio}.
|
283
|
+
aliases: `str, List[str]` - optional alias(es) that will only be applied on this
|
284
|
+
linked model inside the portfolio. The alias "latest" will always be applied
|
285
|
+
to the latest version of a model.
|
286
|
+
|
287
|
+
Returns:
|
288
|
+
None
|
289
|
+
|
290
|
+
Example:
|
291
|
+
sm = use_model("my-simple-model:latest")
|
292
|
+
link_model(sm, "my-portfolio")
|
293
|
+
|
294
|
+
"""
|
295
|
+
wandb_deprecate(
|
296
|
+
field_name=Deprecated.beta__workflows__link_model,
|
297
|
+
warning_message=_LINK_MODEL_DEPRECATION_MSG,
|
298
|
+
)
|
299
|
+
|
300
|
+
aliases = wandb.util._resolve_aliases(aliases)
|
301
|
+
|
302
|
+
if run := wandb_setup.singleton().most_recent_active_run:
|
303
|
+
# _artifact_source, if it exists, points to a Public Artifact.
|
304
|
+
# Its existence means that _SavedModel was deserialized from a logged artifact, most likely from `use_model`.
|
305
|
+
if model._artifact_source:
|
306
|
+
artifact = model._artifact_source.artifact
|
307
|
+
# If the _SavedModel has been added to a Local Artifact (most likely through `.add(WBValue)`), then
|
308
|
+
# model._artifact_target will point to that Local Artifact.
|
309
|
+
elif model._artifact_target and model._artifact_target.artifact._final:
|
310
|
+
artifact = model._artifact_target.artifact
|
311
|
+
else:
|
312
|
+
raise ValueError(
|
313
|
+
"Linking requires that the given _SavedModel belongs to an artifact"
|
314
|
+
)
|
315
|
+
|
316
|
+
run.link_artifact(artifact, target_path, aliases)
|
317
|
+
|
318
|
+
else:
|
319
|
+
if model._artifact_source is not None:
|
320
|
+
model._artifact_source.artifact.link(target_path, aliases)
|
321
|
+
else:
|
322
|
+
raise ValueError(
|
323
|
+
"Linking requires that the given _SavedModel belongs to a logged artifact."
|
324
|
+
)
|
wandb/bin/gpu_stats.exe
ADDED
Binary file
|
wandb/bin/wandb-core
ADDED
Binary file
|
wandb/cli/__init__.py
ADDED
File without changes
|
wandb/cli/beta.py
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
"""Beta versions of wandb CLI commands.
|
2
|
+
|
3
|
+
These commands are experimental and may change or be removed in future versions.
|
4
|
+
"""
|
5
|
+
|
6
|
+
from __future__ import annotations
|
7
|
+
|
8
|
+
import pathlib
|
9
|
+
|
10
|
+
import click
|
11
|
+
|
12
|
+
from wandb.errors import WandbCoreNotAvailableError
|
13
|
+
from wandb.util import get_core_path
|
14
|
+
|
15
|
+
|
16
|
+
@click.group()
|
17
|
+
def beta():
|
18
|
+
"""Beta versions of wandb CLI commands. Requires wandb-core."""
|
19
|
+
# this is the future that requires wandb-core!
|
20
|
+
import wandb.env
|
21
|
+
|
22
|
+
wandb._sentry.configure_scope(process_context="wandb_beta")
|
23
|
+
|
24
|
+
try:
|
25
|
+
get_core_path()
|
26
|
+
except WandbCoreNotAvailableError as e:
|
27
|
+
wandb._sentry.exception(f"using `wandb beta`. failed with {e}")
|
28
|
+
click.secho(
|
29
|
+
(e),
|
30
|
+
fg="red",
|
31
|
+
err=True,
|
32
|
+
)
|
33
|
+
|
34
|
+
|
35
|
+
@beta.command()
|
36
|
+
@click.argument("paths", type=click.Path(exists=True), nargs=-1)
|
37
|
+
@click.option(
|
38
|
+
"--skip-synced/--no-skip-synced",
|
39
|
+
is_flag=True,
|
40
|
+
default=True,
|
41
|
+
help="Skip runs that have already been synced with this command.",
|
42
|
+
)
|
43
|
+
@click.option(
|
44
|
+
"--dry-run",
|
45
|
+
is_flag=True,
|
46
|
+
default=False,
|
47
|
+
help="Print what would happen without uploading anything.",
|
48
|
+
)
|
49
|
+
@click.option(
|
50
|
+
"-v",
|
51
|
+
"--verbose",
|
52
|
+
is_flag=True,
|
53
|
+
default=False,
|
54
|
+
help="Print more information.",
|
55
|
+
)
|
56
|
+
@click.option(
|
57
|
+
"-n",
|
58
|
+
default=5,
|
59
|
+
help="Max number of runs to sync at a time.",
|
60
|
+
)
|
61
|
+
def sync(
|
62
|
+
paths: tuple[str, ...],
|
63
|
+
skip_synced: bool,
|
64
|
+
dry_run: bool,
|
65
|
+
verbose: bool,
|
66
|
+
n: int,
|
67
|
+
) -> None:
|
68
|
+
"""Upload .wandb files specified by PATHS.
|
69
|
+
|
70
|
+
PATHS can include .wandb files, run directories containing .wandb files,
|
71
|
+
and "wandb" directories containing run directories.
|
72
|
+
|
73
|
+
For example, to sync all runs in a directory:
|
74
|
+
|
75
|
+
wandb beta sync ./wandb
|
76
|
+
|
77
|
+
To sync a specific run:
|
78
|
+
|
79
|
+
wandb beta sync ./wandb/run-20250813_124246-n67z9ude
|
80
|
+
|
81
|
+
Or equivalently:
|
82
|
+
|
83
|
+
wandb beta sync ./wandb/run-20250813_124246-n67z9ude/run-n67z9ude.wandb
|
84
|
+
"""
|
85
|
+
from . import beta_sync
|
86
|
+
|
87
|
+
beta_sync.sync(
|
88
|
+
[pathlib.Path(path) for path in paths],
|
89
|
+
dry_run=dry_run,
|
90
|
+
skip_synced=skip_synced,
|
91
|
+
verbose=verbose,
|
92
|
+
parallelism=n,
|
93
|
+
)
|
wandb/cli/beta_sync.py
ADDED
@@ -0,0 +1,224 @@
|
|
1
|
+
"""Implements `wandb sync` using wandb-core."""
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
|
5
|
+
import asyncio
|
6
|
+
import pathlib
|
7
|
+
import time
|
8
|
+
from itertools import filterfalse
|
9
|
+
from typing import Iterable, Iterator
|
10
|
+
|
11
|
+
import click
|
12
|
+
|
13
|
+
import wandb
|
14
|
+
from wandb.proto.wandb_sync_pb2 import ServerSyncResponse
|
15
|
+
from wandb.sdk import wandb_setup
|
16
|
+
from wandb.sdk.lib import asyncio_compat
|
17
|
+
from wandb.sdk.lib.printer import Printer, new_printer
|
18
|
+
from wandb.sdk.lib.progress import progress_printer
|
19
|
+
from wandb.sdk.lib.service.service_connection import ServiceConnection
|
20
|
+
from wandb.sdk.mailbox.mailbox_handle import MailboxHandle
|
21
|
+
|
22
|
+
_MAX_LIST_LINES = 20
|
23
|
+
_POLL_WAIT_SECONDS = 0.1
|
24
|
+
_SLEEP = asyncio.sleep # patched in tests
|
25
|
+
|
26
|
+
|
27
|
+
def sync(
|
28
|
+
paths: list[pathlib.Path],
|
29
|
+
*,
|
30
|
+
dry_run: bool,
|
31
|
+
skip_synced: bool,
|
32
|
+
verbose: bool,
|
33
|
+
parallelism: int,
|
34
|
+
) -> None:
|
35
|
+
"""Replay one or more .wandb files.
|
36
|
+
|
37
|
+
Args:
|
38
|
+
paths: One or more .wandb files, run directories containing
|
39
|
+
.wandb files, and wandb directories containing run directories.
|
40
|
+
dry_run: If true, just prints what it would do and exits.
|
41
|
+
skip_synced: If true, skips files that have already been synced
|
42
|
+
as indicated by a .wandb.synced marker file in the same directory.
|
43
|
+
verbose: Verbose mode for printing more info.
|
44
|
+
parallelism: Max number of runs to sync at a time.
|
45
|
+
"""
|
46
|
+
wandb_files: set[pathlib.Path] = set()
|
47
|
+
for path in paths:
|
48
|
+
for wandb_file in _find_wandb_files(path, skip_synced=skip_synced):
|
49
|
+
wandb_files.add(wandb_file.resolve())
|
50
|
+
|
51
|
+
if not wandb_files:
|
52
|
+
click.echo("No files to sync.")
|
53
|
+
return
|
54
|
+
|
55
|
+
if dry_run:
|
56
|
+
click.echo(f"Would sync {len(wandb_files)} file(s):")
|
57
|
+
_print_sorted_paths(wandb_files, verbose=verbose)
|
58
|
+
return
|
59
|
+
|
60
|
+
click.echo(f"Syncing {len(wandb_files)} file(s):")
|
61
|
+
_print_sorted_paths(wandb_files, verbose=verbose)
|
62
|
+
|
63
|
+
singleton = wandb_setup.singleton()
|
64
|
+
service = singleton.ensure_service()
|
65
|
+
printer = new_printer()
|
66
|
+
singleton.asyncer.run(
|
67
|
+
lambda: _do_sync(
|
68
|
+
wandb_files,
|
69
|
+
service=service,
|
70
|
+
settings=singleton.settings,
|
71
|
+
printer=printer,
|
72
|
+
parallelism=parallelism,
|
73
|
+
)
|
74
|
+
)
|
75
|
+
|
76
|
+
|
77
|
+
async def _do_sync(
|
78
|
+
wandb_files: set[pathlib.Path],
|
79
|
+
*,
|
80
|
+
service: ServiceConnection,
|
81
|
+
settings: wandb.Settings,
|
82
|
+
printer: Printer,
|
83
|
+
parallelism: int,
|
84
|
+
) -> None:
|
85
|
+
"""Sync the specified files.
|
86
|
+
|
87
|
+
This is factored out to make the progress animation testable.
|
88
|
+
"""
|
89
|
+
init_handle = await service.init_sync(wandb_files, settings)
|
90
|
+
init_result = await init_handle.wait_async(timeout=5)
|
91
|
+
|
92
|
+
sync_handle = await service.sync(init_result.id, parallelism=parallelism)
|
93
|
+
|
94
|
+
await _SyncStatusLoop(
|
95
|
+
init_result.id,
|
96
|
+
service,
|
97
|
+
printer,
|
98
|
+
).wait_with_progress(sync_handle)
|
99
|
+
|
100
|
+
|
101
|
+
class _SyncStatusLoop:
|
102
|
+
"""Displays a sync operation's status until it completes."""
|
103
|
+
|
104
|
+
def __init__(
|
105
|
+
self,
|
106
|
+
id: str,
|
107
|
+
service: ServiceConnection,
|
108
|
+
printer: Printer,
|
109
|
+
) -> None:
|
110
|
+
self._id = id
|
111
|
+
self._service = service
|
112
|
+
self._printer = printer
|
113
|
+
|
114
|
+
self._rate_limit_last_time: float | None = None
|
115
|
+
self._done = asyncio.Event()
|
116
|
+
|
117
|
+
async def wait_with_progress(
|
118
|
+
self,
|
119
|
+
handle: MailboxHandle[ServerSyncResponse],
|
120
|
+
) -> None:
|
121
|
+
"""Display status updates until the handle completes."""
|
122
|
+
async with asyncio_compat.open_task_group() as group:
|
123
|
+
group.start_soon(self._wait_then_mark_done(handle))
|
124
|
+
group.start_soon(self._show_progress_until_done())
|
125
|
+
|
126
|
+
async def _wait_then_mark_done(
|
127
|
+
self,
|
128
|
+
handle: MailboxHandle[ServerSyncResponse],
|
129
|
+
) -> None:
|
130
|
+
response = await handle.wait_async(timeout=None)
|
131
|
+
for msg in response.messages:
|
132
|
+
self._printer.display(msg.content, level=msg.severity)
|
133
|
+
self._done.set()
|
134
|
+
|
135
|
+
async def _show_progress_until_done(self) -> None:
|
136
|
+
"""Show rate-limited status updates until _done is set."""
|
137
|
+
with progress_printer(self._printer, "Syncing...") as progress:
|
138
|
+
while not await self._rate_limit_check_done():
|
139
|
+
handle = await self._service.sync_status(self._id)
|
140
|
+
response = await handle.wait_async(timeout=None)
|
141
|
+
|
142
|
+
for msg in response.new_messages:
|
143
|
+
self._printer.display(msg.content, level=msg.severity)
|
144
|
+
progress.update(response.stats)
|
145
|
+
|
146
|
+
async def _rate_limit_check_done(self) -> bool:
|
147
|
+
"""Wait for rate limit and return whether _done is set."""
|
148
|
+
now = time.monotonic()
|
149
|
+
last_time = self._rate_limit_last_time
|
150
|
+
self._rate_limit_last_time = now
|
151
|
+
|
152
|
+
if last_time and (time_since_last := now - last_time) < _POLL_WAIT_SECONDS:
|
153
|
+
await asyncio_compat.race(
|
154
|
+
_SLEEP(_POLL_WAIT_SECONDS - time_since_last),
|
155
|
+
self._done.wait(),
|
156
|
+
)
|
157
|
+
|
158
|
+
return self._done.is_set()
|
159
|
+
|
160
|
+
|
161
|
+
def _find_wandb_files(
|
162
|
+
path: pathlib.Path,
|
163
|
+
*,
|
164
|
+
skip_synced: bool,
|
165
|
+
) -> Iterator[pathlib.Path]:
|
166
|
+
"""Returns paths to the .wandb files to sync."""
|
167
|
+
if skip_synced:
|
168
|
+
yield from filterfalse(_is_synced, _expand_wandb_files(path))
|
169
|
+
else:
|
170
|
+
yield from _expand_wandb_files(path)
|
171
|
+
|
172
|
+
|
173
|
+
def _expand_wandb_files(
|
174
|
+
path: pathlib.Path,
|
175
|
+
) -> Iterator[pathlib.Path]:
|
176
|
+
"""Iterate over .wandb files selected by the path."""
|
177
|
+
if path.suffix == ".wandb":
|
178
|
+
yield path
|
179
|
+
return
|
180
|
+
|
181
|
+
files_in_run_directory = path.glob("*.wandb")
|
182
|
+
try:
|
183
|
+
first_file = next(files_in_run_directory)
|
184
|
+
except StopIteration:
|
185
|
+
pass
|
186
|
+
else:
|
187
|
+
yield first_file
|
188
|
+
yield from files_in_run_directory
|
189
|
+
return
|
190
|
+
|
191
|
+
yield from path.glob("*/*.wandb")
|
192
|
+
|
193
|
+
|
194
|
+
def _is_synced(path: pathlib.Path) -> bool:
|
195
|
+
"""Returns whether the .wandb file is synced."""
|
196
|
+
return path.with_suffix(".wandb.synced").exists()
|
197
|
+
|
198
|
+
|
199
|
+
def _print_sorted_paths(paths: Iterable[pathlib.Path], verbose: bool) -> None:
|
200
|
+
"""Print file paths, sorting them and truncating the list if needed.
|
201
|
+
|
202
|
+
Args:
|
203
|
+
paths: Paths to print. Must be absolute with symlinks resolved.
|
204
|
+
verbose: If true, doesn't truncate paths.
|
205
|
+
"""
|
206
|
+
# Prefer to print paths relative to the current working directory.
|
207
|
+
cwd = pathlib.Path(".").resolve()
|
208
|
+
formatted_paths: list[str] = []
|
209
|
+
for path in paths:
|
210
|
+
try:
|
211
|
+
formatted_path = str(path.relative_to(cwd))
|
212
|
+
except ValueError:
|
213
|
+
formatted_path = str(path)
|
214
|
+
formatted_paths.append(formatted_path)
|
215
|
+
|
216
|
+
sorted_paths = sorted(formatted_paths)
|
217
|
+
max_lines = len(sorted_paths) if verbose else _MAX_LIST_LINES
|
218
|
+
|
219
|
+
for i in range(min(len(sorted_paths), max_lines)):
|
220
|
+
click.echo(f" {sorted_paths[i]}")
|
221
|
+
|
222
|
+
if len(sorted_paths) > max_lines:
|
223
|
+
remaining = len(sorted_paths) - max_lines
|
224
|
+
click.echo(f" +{remaining:,d} more (pass --verbose to see all)")
|