wandb 0.21.2__py3-none-macosx_12_0_x86_64.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/_iterutils.py +65 -0
- wandb/_pydantic/__init__.py +30 -0
- wandb/_pydantic/base.py +128 -0
- wandb/_pydantic/utils.py +80 -0
- wandb/_pydantic/v1_compat.py +284 -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 +48 -0
- wandb/apis/attrs.py +50 -0
- wandb/apis/importers/__init__.py +1 -0
- wandb/apis/importers/internals/internal.py +382 -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 +239 -0
- wandb/apis/normalize.py +81 -0
- wandb/apis/paginator.py +138 -0
- wandb/apis/public/__init__.py +35 -0
- wandb/apis/public/api.py +2449 -0
- wandb/apis/public/artifacts.py +1046 -0
- wandb/apis/public/automations.py +85 -0
- wandb/apis/public/const.py +4 -0
- wandb/apis/public/files.py +402 -0
- wandb/apis/public/history.py +201 -0
- wandb/apis/public/integrations.py +203 -0
- wandb/apis/public/jobs.py +742 -0
- wandb/apis/public/projects.py +276 -0
- wandb/apis/public/query_generator.py +176 -0
- wandb/apis/public/registries/__init__.py +0 -0
- wandb/apis/public/registries/_freezable_list.py +179 -0
- wandb/apis/public/registries/_utils.py +138 -0
- wandb/apis/public/registries/registries_search.py +347 -0
- wandb/apis/public/registries/registry.py +358 -0
- wandb/apis/public/reports.py +595 -0
- wandb/apis/public/runs.py +1216 -0
- wandb/apis/public/sweeps.py +440 -0
- wandb/apis/public/teams.py +235 -0
- wandb/apis/public/users.py +177 -0
- wandb/apis/public/utils.py +210 -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 +181 -0
- wandb/automations/_filters/operators.py +258 -0
- wandb/automations/_filters/run_metrics.py +330 -0
- wandb/automations/_generated/__init__.py +177 -0
- wandb/automations/_generated/create_automation.py +17 -0
- wandb/automations/_generated/create_generic_webhook_integration.py +43 -0
- wandb/automations/_generated/delete_automation.py +15 -0
- wandb/automations/_generated/enums.py +35 -0
- wandb/automations/_generated/fragments.py +358 -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 +165 -0
- wandb/automations/actions.py +218 -0
- wandb/automations/automations.py +85 -0
- wandb/automations/events.py +285 -0
- wandb/automations/integrations.py +45 -0
- wandb/automations/scopes.py +78 -0
- wandb/beta/workflows.py +324 -0
- wandb/bin/gpu_stats +0 -0
- wandb/bin/wandb-core +0 -0
- wandb/cli/__init__.py +0 -0
- wandb/cli/beta.py +175 -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/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 +63 -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 +1728 -0
- wandb/proto/v3/wandb_server_pb2.py +228 -0
- wandb/proto/v3/wandb_settings_pb2.py +122 -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 +382 -0
- wandb/proto/v4/wandb_server_pb2.py +67 -0
- wandb/proto/v4/wandb_settings_pb2.py +47 -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 +383 -0
- wandb/proto/v5/wandb_server_pb2.py +68 -0
- wandb/proto/v5/wandb_settings_pb2.py +48 -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 +393 -0
- wandb/proto/v6/wandb_server_pb2.py +78 -0
- wandb/proto/v6/wandb_settings_pb2.py +58 -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 +49 -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_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 +17 -0
- wandb/sdk/artifacts/_generated/__init__.py +508 -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 +459 -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 +1223 -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 +51 -0
- wandb/sdk/artifacts/_generated/run_output_artifacts.py +51 -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/_graphql_fragments.py +19 -0
- wandb/sdk/artifacts/_internal_artifact.py +54 -0
- wandb/sdk/artifacts/_validators.py +309 -0
- wandb/sdk/artifacts/artifact.py +2702 -0
- wandb/sdk/artifacts/artifact_download_logger.py +45 -0
- wandb/sdk/artifacts/artifact_file_cache.py +251 -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 +258 -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 +71 -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 +114 -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 +339 -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/register.py +1 -0
- wandb/sdk/artifacts/storage_policies/wandb_storage_policy.py +580 -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 +87 -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 +974 -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 +1056 -0
- wandb/sdk/interface/interface_queue.py +40 -0
- wandb/sdk/interface/interface_shared.py +471 -0
- wandb/sdk/interface/interface_sock.py +49 -0
- wandb/sdk/interface/summary_record.py +67 -0
- wandb/sdk/internal/__init__.py +0 -0
- wandb/sdk/internal/_generated/__init__.py +15 -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 +120 -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 +314 -0
- wandb/sdk/launch/inputs/manage.py +113 -0
- wandb/sdk/launch/inputs/schema.py +40 -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 +1285 -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 +746 -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 +213 -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 +65 -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 +106 -0
- wandb/sdk/lib/preinit.py +42 -0
- wandb/sdk/lib/printer.py +571 -0
- wandb/sdk/lib/printer_asyncio.py +48 -0
- wandb/sdk/lib/progress.py +320 -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 +106 -0
- wandb/sdk/lib/service/service_connection.py +192 -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 +132 -0
- wandb/sdk/mailbox/response_handle.py +99 -0
- wandb/sdk/mailbox/wait_with_progress.py +100 -0
- wandb/sdk/projects/_generated/__init__.py +47 -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 +1581 -0
- wandb/sdk/wandb_login.py +332 -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 +4088 -0
- wandb/sdk/wandb_settings.py +2105 -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 +452 -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 +580 -0
- wandb/wandb_controller.py +719 -0
- wandb/wandb_run.py +8 -0
- wandb-0.21.2.dist-info/METADATA +223 -0
- wandb-0.21.2.dist-info/RECORD +904 -0
- wandb-0.21.2.dist-info/WHEEL +4 -0
- wandb-0.21.2.dist-info/entry_points.txt +3 -0
- wandb-0.21.2.dist-info/licenses/LICENSE +21 -0
wandb/__init__.pyi
ADDED
@@ -0,0 +1,1230 @@
|
|
1
|
+
"""Use wandb to track machine learning work.
|
2
|
+
|
3
|
+
Train and fine-tune models, manage models from experimentation to production.
|
4
|
+
|
5
|
+
For guides and examples, see https://docs.wandb.ai.
|
6
|
+
|
7
|
+
For scripts and interactive notebooks, see https://github.com/wandb/examples.
|
8
|
+
|
9
|
+
For reference documentation, see https://docs.wandb.com/ref/python.
|
10
|
+
"""
|
11
|
+
|
12
|
+
from __future__ import annotations
|
13
|
+
|
14
|
+
__all__ = (
|
15
|
+
"__version__", # doc:exclude
|
16
|
+
"init",
|
17
|
+
"finish",
|
18
|
+
"setup",
|
19
|
+
"login",
|
20
|
+
"save", # doc:exclude
|
21
|
+
"sweep",
|
22
|
+
"controller",
|
23
|
+
"agent",
|
24
|
+
"config", # doc:exclude
|
25
|
+
"log", # doc:exclude
|
26
|
+
"summary", # doc:exclude
|
27
|
+
"Api",
|
28
|
+
"Graph", # doc:exclude
|
29
|
+
"Image",
|
30
|
+
"Plotly",
|
31
|
+
"Video",
|
32
|
+
"Audio",
|
33
|
+
"Table",
|
34
|
+
"Html",
|
35
|
+
"box3d",
|
36
|
+
"Object3D",
|
37
|
+
"Molecule",
|
38
|
+
"Histogram",
|
39
|
+
"ArtifactTTL", # doc:exclude
|
40
|
+
"log_artifact", # doc:exclude
|
41
|
+
"use_artifact", # doc:exclude
|
42
|
+
"log_model", # doc:exclude
|
43
|
+
"use_model", # doc:exclude
|
44
|
+
"link_model", # doc:exclude
|
45
|
+
"define_metric", # doc:exclude
|
46
|
+
"Error", # doc:exclude
|
47
|
+
"termsetup", # doc:exclude
|
48
|
+
"termlog", # doc:exclude
|
49
|
+
"termerror", # doc:exclude
|
50
|
+
"termwarn", # doc:exclude
|
51
|
+
"Artifact",
|
52
|
+
"Settings",
|
53
|
+
"teardown",
|
54
|
+
"watch", # doc:exclude
|
55
|
+
"unwatch", # doc:exclude
|
56
|
+
"plot", # doc:exclude
|
57
|
+
"plot_table",
|
58
|
+
"restore",
|
59
|
+
"Run",
|
60
|
+
)
|
61
|
+
|
62
|
+
import os
|
63
|
+
from typing import (
|
64
|
+
TYPE_CHECKING,
|
65
|
+
Any,
|
66
|
+
Callable,
|
67
|
+
Dict,
|
68
|
+
Iterable,
|
69
|
+
List,
|
70
|
+
Literal,
|
71
|
+
Optional,
|
72
|
+
Sequence,
|
73
|
+
TextIO,
|
74
|
+
Union,
|
75
|
+
)
|
76
|
+
|
77
|
+
import wandb.plot as plot
|
78
|
+
from wandb.analytics import Sentry
|
79
|
+
from wandb.apis import InternalApi
|
80
|
+
from wandb.apis import PublicApi as Api
|
81
|
+
from wandb.data_types import (
|
82
|
+
Audio,
|
83
|
+
Graph,
|
84
|
+
Histogram,
|
85
|
+
Html,
|
86
|
+
Image,
|
87
|
+
Molecule,
|
88
|
+
Object3D,
|
89
|
+
Plotly,
|
90
|
+
Table,
|
91
|
+
Video,
|
92
|
+
box3d,
|
93
|
+
)
|
94
|
+
from wandb.errors import Error
|
95
|
+
from wandb.errors.term import termerror, termlog, termsetup, termwarn
|
96
|
+
from wandb.sdk import Artifact, Settings, wandb_config, wandb_metric, wandb_summary
|
97
|
+
from wandb.sdk.artifacts.artifact_ttl import ArtifactTTL
|
98
|
+
from wandb.sdk.interface.interface import PolicyName
|
99
|
+
from wandb.sdk.lib.paths import FilePathStr, StrPath
|
100
|
+
from wandb.sdk.wandb_run import Run
|
101
|
+
from wandb.sdk.wandb_setup import _WandbSetup
|
102
|
+
from wandb.wandb_controller import _WandbController
|
103
|
+
|
104
|
+
if TYPE_CHECKING:
|
105
|
+
import torch # type: ignore [import-not-found]
|
106
|
+
|
107
|
+
import wandb
|
108
|
+
from wandb.plot import CustomChart
|
109
|
+
|
110
|
+
__version__: str = "0.21.2"
|
111
|
+
|
112
|
+
run: Run | None
|
113
|
+
config: wandb_config.Config
|
114
|
+
summary: wandb_summary.Summary
|
115
|
+
|
116
|
+
# private attributes
|
117
|
+
_sentry: Sentry
|
118
|
+
api: InternalApi
|
119
|
+
patched: Dict[str, List[Callable]]
|
120
|
+
|
121
|
+
def require(
|
122
|
+
requirement: str | Iterable[str] | None = None,
|
123
|
+
experiment: str | Iterable[str] | None = None,
|
124
|
+
) -> None:
|
125
|
+
"""Indicate which experimental features are used by the script.
|
126
|
+
|
127
|
+
This should be called before any other `wandb` functions, ideally right
|
128
|
+
after importing `wandb`.
|
129
|
+
|
130
|
+
Args:
|
131
|
+
requirement: The name of a feature to require or an iterable of
|
132
|
+
feature names.
|
133
|
+
experiment: An alias for `requirement`.
|
134
|
+
|
135
|
+
Raises:
|
136
|
+
wandb.errors.UnsupportedError: If a feature name is unknown.
|
137
|
+
"""
|
138
|
+
...
|
139
|
+
|
140
|
+
def setup(settings: Settings | None = None) -> _WandbSetup:
|
141
|
+
"""Prepares W&B for use in the current process and its children.
|
142
|
+
|
143
|
+
You can usually ignore this as it is implicitly called by `wandb.init()`.
|
144
|
+
|
145
|
+
When using wandb in multiple processes, calling `wandb.setup()`
|
146
|
+
in the parent process before starting child processes may improve
|
147
|
+
performance and resource utilization.
|
148
|
+
|
149
|
+
Note that `wandb.setup()` modifies `os.environ`, and it is important
|
150
|
+
that child processes inherit the modified environment variables.
|
151
|
+
|
152
|
+
See also `wandb.teardown()`.
|
153
|
+
|
154
|
+
Args:
|
155
|
+
settings: Configuration settings to apply globally. These can be
|
156
|
+
overridden by subsequent `wandb.init()` calls.
|
157
|
+
|
158
|
+
Example:
|
159
|
+
```python
|
160
|
+
import multiprocessing
|
161
|
+
|
162
|
+
import wandb
|
163
|
+
|
164
|
+
def run_experiment(params):
|
165
|
+
with wandb.init(config=params):
|
166
|
+
# Run experiment
|
167
|
+
pass
|
168
|
+
|
169
|
+
if __name__ == "__main__":
|
170
|
+
# Start backend and set global config
|
171
|
+
wandb.setup(settings={"project": "my_project"})
|
172
|
+
|
173
|
+
# Define experiment parameters
|
174
|
+
experiment_params = [
|
175
|
+
{"learning_rate": 0.01, "epochs": 10},
|
176
|
+
{"learning_rate": 0.001, "epochs": 20},
|
177
|
+
]
|
178
|
+
|
179
|
+
# Start multiple processes, each running a separate experiment
|
180
|
+
processes = []
|
181
|
+
for params in experiment_params:
|
182
|
+
p = multiprocessing.Process(target=run_experiment, args=(params,))
|
183
|
+
p.start()
|
184
|
+
processes.append(p)
|
185
|
+
|
186
|
+
# Wait for all processes to complete
|
187
|
+
for p in processes:
|
188
|
+
p.join()
|
189
|
+
|
190
|
+
# Optional: Explicitly shut down the backend
|
191
|
+
wandb.teardown()
|
192
|
+
```
|
193
|
+
"""
|
194
|
+
...
|
195
|
+
|
196
|
+
def teardown(exit_code: int | None = None) -> None:
|
197
|
+
"""Waits for W&B to finish and frees resources.
|
198
|
+
|
199
|
+
Completes any runs that were not explicitly finished
|
200
|
+
using `run.finish()` and waits for all data to be uploaded.
|
201
|
+
|
202
|
+
It is recommended to call this at the end of a session
|
203
|
+
that used `wandb.setup()`. It is invoked automatically
|
204
|
+
in an `atexit` hook, but this is not reliable in certain setups
|
205
|
+
such as when using Python's `multiprocessing` module.
|
206
|
+
"""
|
207
|
+
...
|
208
|
+
|
209
|
+
def init(
|
210
|
+
entity: str | None = None,
|
211
|
+
project: str | None = None,
|
212
|
+
dir: StrPath | None = None,
|
213
|
+
id: str | None = None,
|
214
|
+
name: str | None = None,
|
215
|
+
notes: str | None = None,
|
216
|
+
tags: Sequence[str] | None = None,
|
217
|
+
config: dict[str, Any] | str | None = None,
|
218
|
+
config_exclude_keys: list[str] | None = None,
|
219
|
+
config_include_keys: list[str] | None = None,
|
220
|
+
allow_val_change: bool | None = None,
|
221
|
+
group: str | None = None,
|
222
|
+
job_type: str | None = None,
|
223
|
+
mode: Literal["online", "offline", "disabled", "shared"] | None = None,
|
224
|
+
force: bool | None = None,
|
225
|
+
anonymous: Literal["never", "allow", "must"] | None = None,
|
226
|
+
reinit: (
|
227
|
+
bool
|
228
|
+
| Literal[
|
229
|
+
None,
|
230
|
+
"default",
|
231
|
+
"return_previous",
|
232
|
+
"finish_previous",
|
233
|
+
"create_new",
|
234
|
+
]
|
235
|
+
) = None,
|
236
|
+
resume: bool | Literal["allow", "never", "must", "auto"] | None = None,
|
237
|
+
resume_from: str | None = None,
|
238
|
+
fork_from: str | None = None,
|
239
|
+
save_code: bool | None = None,
|
240
|
+
tensorboard: bool | None = None,
|
241
|
+
sync_tensorboard: bool | None = None,
|
242
|
+
monitor_gym: bool | None = None,
|
243
|
+
settings: Settings | dict[str, Any] | None = None,
|
244
|
+
) -> Run:
|
245
|
+
r"""Start a new run to track and log to W&B.
|
246
|
+
|
247
|
+
In an ML training pipeline, you could add `wandb.init()` to the beginning of
|
248
|
+
your training script as well as your evaluation script, and each piece would
|
249
|
+
be tracked as a run in W&B.
|
250
|
+
|
251
|
+
`wandb.init()` spawns a new background process to log data to a run, and it
|
252
|
+
also syncs data to https://wandb.ai by default, so you can see your results
|
253
|
+
in real-time. When you're done logging data, call `wandb.Run.finish()` to end the run.
|
254
|
+
If you don't call `run.finish()`, the run will end when your script exits.
|
255
|
+
|
256
|
+
Run IDs must not contain any of the following special characters `/ \ # ? % :`
|
257
|
+
|
258
|
+
Args:
|
259
|
+
entity: The username or team name the runs are logged to.
|
260
|
+
The entity must already exist, so ensure you create your account
|
261
|
+
or team in the UI before starting to log runs. If not specified, the
|
262
|
+
run will default your default entity. To change the default entity,
|
263
|
+
go to your settings and update the
|
264
|
+
"Default location to create new projects" under "Default team".
|
265
|
+
project: The name of the project under which this run will be logged.
|
266
|
+
If not specified, we use a heuristic to infer the project name based
|
267
|
+
on the system, such as checking the git root or the current program
|
268
|
+
file. If we can't infer the project name, the project will default to
|
269
|
+
`"uncategorized"`.
|
270
|
+
dir: The absolute path to the directory where experiment logs and
|
271
|
+
metadata files are stored. If not specified, this defaults
|
272
|
+
to the `./wandb` directory. Note that this does not affect the
|
273
|
+
location where artifacts are stored when calling `download()`.
|
274
|
+
id: A unique identifier for this run, used for resuming. It must be unique
|
275
|
+
within the project and cannot be reused once a run is deleted. For
|
276
|
+
a short descriptive name, use the `name` field,
|
277
|
+
or for saving hyperparameters to compare across runs, use `config`.
|
278
|
+
name: A short display name for this run, which appears in the UI to help
|
279
|
+
you identify it. By default, we generate a random two-word name
|
280
|
+
allowing easy cross-reference runs from table to charts. Keeping these
|
281
|
+
run names brief enhances readability in chart legends and tables. For
|
282
|
+
saving hyperparameters, we recommend using the `config` field.
|
283
|
+
notes: A detailed description of the run, similar to a commit message in
|
284
|
+
Git. Use this argument to capture any context or details that may
|
285
|
+
help you recall the purpose or setup of this run in the future.
|
286
|
+
tags: A list of tags to label this run in the UI. Tags are helpful for
|
287
|
+
organizing runs or adding temporary identifiers like "baseline" or
|
288
|
+
"production." You can easily add, remove tags, or filter by tags in
|
289
|
+
the UI.
|
290
|
+
If resuming a run, the tags provided here will replace any existing
|
291
|
+
tags. To add tags to a resumed run without overwriting the current
|
292
|
+
tags, use `run.tags += ("new_tag",)` after calling `run = wandb.init()`.
|
293
|
+
config: Sets `wandb.config`, a dictionary-like object for storing input
|
294
|
+
parameters to your run, such as model hyperparameters or data
|
295
|
+
preprocessing settings.
|
296
|
+
The config appears in the UI in an overview page, allowing you to
|
297
|
+
group, filter, and sort runs based on these parameters.
|
298
|
+
Keys should not contain periods (`.`), and values should be
|
299
|
+
smaller than 10 MB.
|
300
|
+
If a dictionary, `argparse.Namespace`, or `absl.flags.FLAGS` is
|
301
|
+
provided, the key-value pairs will be loaded directly into
|
302
|
+
`wandb.config`.
|
303
|
+
If a string is provided, it is interpreted as a path to a YAML file,
|
304
|
+
from which configuration values will be loaded into `wandb.config`.
|
305
|
+
config_exclude_keys: A list of specific keys to exclude from `wandb.config`.
|
306
|
+
config_include_keys: A list of specific keys to include in `wandb.config`.
|
307
|
+
allow_val_change: Controls whether config values can be modified after their
|
308
|
+
initial set. By default, an exception is raised if a config value is
|
309
|
+
overwritten. For tracking variables that change during training, such as
|
310
|
+
a learning rate, consider using `wandb.log()` instead. By default, this
|
311
|
+
is `False` in scripts and `True` in Notebook environments.
|
312
|
+
group: Specify a group name to organize individual runs as part of a larger
|
313
|
+
experiment. This is useful for cases like cross-validation or running
|
314
|
+
multiple jobs that train and evaluate a model on different test sets.
|
315
|
+
Grouping allows you to manage related runs collectively in the UI,
|
316
|
+
making it easy to toggle and review results as a unified experiment.
|
317
|
+
job_type: Specify the type of run, especially helpful when organizing runs
|
318
|
+
within a group as part of a larger experiment. For example, in a group,
|
319
|
+
you might label runs with job types such as "train" and "eval".
|
320
|
+
Defining job types enables you to easily filter and group similar runs
|
321
|
+
in the UI, facilitating direct comparisons.
|
322
|
+
mode: Specifies how run data is managed, with the following options:
|
323
|
+
- `"online"` (default): Enables live syncing with W&B when a network
|
324
|
+
connection is available, with real-time updates to visualizations.
|
325
|
+
- `"offline"`: Suitable for air-gapped or offline environments; data
|
326
|
+
is saved locally and can be synced later. Ensure the run folder
|
327
|
+
is preserved to enable future syncing.
|
328
|
+
- `"disabled"`: Disables all W&B functionality, making the run’s methods
|
329
|
+
no-ops. Typically used in testing to bypass W&B operations.
|
330
|
+
- `"shared"`: (This is an experimental feature). Allows multiple processes,
|
331
|
+
possibly on different machines, to simultaneously log to the same run.
|
332
|
+
In this approach you use a primary node and one or more worker nodes
|
333
|
+
to log data to the same run. Within the primary node you
|
334
|
+
initialize a run. For each worker node, initialize a run
|
335
|
+
using the run ID used by the primary node.
|
336
|
+
force: Determines if a W&B login is required to run the script. If `True`,
|
337
|
+
the user must be logged in to W&B; otherwise, the script will not
|
338
|
+
proceed. If `False` (default), the script can proceed without a login,
|
339
|
+
switching to offline mode if the user is not logged in.
|
340
|
+
anonymous: Specifies the level of control over anonymous data logging.
|
341
|
+
Available options are:
|
342
|
+
- `"never"` (default): Requires you to link your W&B account before
|
343
|
+
tracking the run. This prevents unintentional creation of anonymous
|
344
|
+
runs by ensuring each run is associated with an account.
|
345
|
+
- `"allow"`: Enables a logged-in user to track runs with their account,
|
346
|
+
but also allows someone running the script without a W&B account
|
347
|
+
to view the charts and data in the UI.
|
348
|
+
- `"must"`: Forces the run to be logged to an anonymous account, even
|
349
|
+
if the user is logged in.
|
350
|
+
reinit: Shorthand for the "reinit" setting. Determines the behavior of
|
351
|
+
`wandb.init()` when a run is active.
|
352
|
+
resume: Controls the behavior when resuming a run with the specified `id`.
|
353
|
+
Available options are:
|
354
|
+
- `"allow"`: If a run with the specified `id` exists, it will resume
|
355
|
+
from the last step; otherwise, a new run will be created.
|
356
|
+
- `"never"`: If a run with the specified `id` exists, an error will
|
357
|
+
be raised. If no such run is found, a new run will be created.
|
358
|
+
- `"must"`: If a run with the specified `id` exists, it will resume
|
359
|
+
from the last step. If no run is found, an error will be raised.
|
360
|
+
- `"auto"`: Automatically resumes the previous run if it crashed on
|
361
|
+
this machine; otherwise, starts a new run.
|
362
|
+
- `True`: Deprecated. Use `"auto"` instead.
|
363
|
+
- `False`: Deprecated. Use the default behavior (leaving `resume`
|
364
|
+
unset) to always start a new run.
|
365
|
+
If `resume` is set, `fork_from` and `resume_from` cannot be
|
366
|
+
used. When `resume` is unset, the system will always start a new run.
|
367
|
+
resume_from: Specifies a moment in a previous run to resume a run from,
|
368
|
+
using the format `{run_id}?_step={step}`. This allows users to truncate
|
369
|
+
the history logged to a run at an intermediate step and resume logging
|
370
|
+
from that step. The target run must be in the same project.
|
371
|
+
If an `id` argument is also provided, the `resume_from` argument will
|
372
|
+
take precedence.
|
373
|
+
`resume`, `resume_from` and `fork_from` cannot be used together, only
|
374
|
+
one of them can be used at a time.
|
375
|
+
Note that this feature is in beta and may change in the future.
|
376
|
+
fork_from: Specifies a point in a previous run from which to fork a new
|
377
|
+
run, using the format `{id}?_step={step}`. This creates a new run that
|
378
|
+
resumes logging from the specified step in the target run’s history.
|
379
|
+
The target run must be part of the current project.
|
380
|
+
If an `id` argument is also provided, it must be different from the
|
381
|
+
`fork_from` argument, an error will be raised if they are the same.
|
382
|
+
`resume`, `resume_from` and `fork_from` cannot be used together, only
|
383
|
+
one of them can be used at a time.
|
384
|
+
Note that this feature is in beta and may change in the future.
|
385
|
+
save_code: Enables saving the main script or notebook to W&B, aiding in
|
386
|
+
experiment reproducibility and allowing code comparisons across runs in
|
387
|
+
the UI. By default, this is disabled, but you can change the default to
|
388
|
+
enable on your settings page.
|
389
|
+
tensorboard: Deprecated. Use `sync_tensorboard` instead.
|
390
|
+
sync_tensorboard: Enables automatic syncing of W&B logs from TensorBoard
|
391
|
+
or TensorBoardX, saving relevant event files for viewing in the W&B UI.
|
392
|
+
saving relevant event files for viewing in the W&B UI. (Default: `False`)
|
393
|
+
monitor_gym: Enables automatic logging of videos of the environment when
|
394
|
+
using OpenAI Gym.
|
395
|
+
settings: Specifies a dictionary or `wandb.Settings` object with advanced
|
396
|
+
settings for the run.
|
397
|
+
|
398
|
+
Returns:
|
399
|
+
A `Run` object.
|
400
|
+
|
401
|
+
Raises:
|
402
|
+
Error: If some unknown or internal error happened during the run
|
403
|
+
initialization.
|
404
|
+
AuthenticationError: If the user failed to provide valid credentials.
|
405
|
+
CommError: If there was a problem communicating with the WandB server.
|
406
|
+
UsageError: If the user provided invalid arguments.
|
407
|
+
KeyboardInterrupt: If user interrupts the run.
|
408
|
+
|
409
|
+
Examples:
|
410
|
+
`wandb.init()` returns a `Run` object. Use the run object to log data,
|
411
|
+
save artifacts, and manage the run lifecycle.
|
412
|
+
|
413
|
+
```python
|
414
|
+
import wandb
|
415
|
+
|
416
|
+
config = {"lr": 0.01, "batch_size": 32}
|
417
|
+
with wandb.init(config=config) as run:
|
418
|
+
# Log accuracy and loss to the run
|
419
|
+
acc = 0.95 # Example accuracy
|
420
|
+
loss = 0.05 # Example loss
|
421
|
+
run.log({"accuracy": acc, "loss": loss})
|
422
|
+
```
|
423
|
+
"""
|
424
|
+
...
|
425
|
+
|
426
|
+
def finish(
|
427
|
+
exit_code: int | None = None,
|
428
|
+
quiet: bool | None = None,
|
429
|
+
) -> None:
|
430
|
+
"""Finish a run and upload any remaining data.
|
431
|
+
|
432
|
+
Marks the completion of a W&B run and ensures all data is synced to the server.
|
433
|
+
The run's final state is determined by its exit conditions and sync status.
|
434
|
+
|
435
|
+
Run States:
|
436
|
+
- Running: Active run that is logging data and/or sending heartbeats.
|
437
|
+
- Crashed: Run that stopped sending heartbeats unexpectedly.
|
438
|
+
- Finished: Run completed successfully (`exit_code=0`) with all data synced.
|
439
|
+
- Failed: Run completed with errors (`exit_code!=0`).
|
440
|
+
|
441
|
+
Args:
|
442
|
+
exit_code: Integer indicating the run's exit status. Use 0 for success,
|
443
|
+
any other value marks the run as failed.
|
444
|
+
quiet: Deprecated. Configure logging verbosity using `wandb.Settings(quiet=...)`.
|
445
|
+
"""
|
446
|
+
...
|
447
|
+
|
448
|
+
def login(
|
449
|
+
anonymous: Optional[Literal["must", "allow", "never"]] = None,
|
450
|
+
key: Optional[str] = None,
|
451
|
+
relogin: Optional[bool] = None,
|
452
|
+
host: Optional[str] = None,
|
453
|
+
force: Optional[bool] = None,
|
454
|
+
timeout: Optional[int] = None,
|
455
|
+
verify: bool = False,
|
456
|
+
referrer: Optional[str] = None,
|
457
|
+
) -> bool:
|
458
|
+
"""Set up W&B login credentials.
|
459
|
+
|
460
|
+
By default, this will only store credentials locally without
|
461
|
+
verifying them with the W&B server. To verify credentials, pass
|
462
|
+
`verify=True`.
|
463
|
+
|
464
|
+
Args:
|
465
|
+
anonymous: Set to "must", "allow", or "never".
|
466
|
+
If set to "must", always log a user in anonymously. If set to
|
467
|
+
"allow", only create an anonymous user if the user
|
468
|
+
isn't already logged in. If set to "never", never log a
|
469
|
+
user anonymously. Default set to "never". Defaults to `None`.
|
470
|
+
key: The API key to use.
|
471
|
+
relogin: If true, will re-prompt for API key.
|
472
|
+
host: The host to connect to.
|
473
|
+
force: If true, will force a relogin.
|
474
|
+
timeout: Number of seconds to wait for user input.
|
475
|
+
verify: Verify the credentials with the W&B server.
|
476
|
+
referrer: The referrer to use in the URL login request.
|
477
|
+
|
478
|
+
|
479
|
+
Returns:
|
480
|
+
bool: If `key` is configured.
|
481
|
+
|
482
|
+
Raises:
|
483
|
+
AuthenticationError: If `api_key` fails verification with the server.
|
484
|
+
UsageError: If `api_key` cannot be configured and no tty.
|
485
|
+
"""
|
486
|
+
...
|
487
|
+
|
488
|
+
def log(
|
489
|
+
data: dict[str, Any],
|
490
|
+
step: int | None = None,
|
491
|
+
commit: bool | None = None,
|
492
|
+
) -> None:
|
493
|
+
"""Upload run data.
|
494
|
+
|
495
|
+
Use `log` to log data from runs, such as scalars, images, video,
|
496
|
+
histograms, plots, and tables. See [Log objects and media](https://docs.wandb.ai/guides/track/log) for
|
497
|
+
code snippets, best practices, and more.
|
498
|
+
|
499
|
+
Basic usage:
|
500
|
+
|
501
|
+
```python
|
502
|
+
import wandb
|
503
|
+
|
504
|
+
with wandb.init() as run:
|
505
|
+
run.log({"train-loss": 0.5, "accuracy": 0.9})
|
506
|
+
```
|
507
|
+
|
508
|
+
The previous code snippet saves the loss and accuracy to the run's
|
509
|
+
history and updates the summary values for these metrics.
|
510
|
+
|
511
|
+
Visualize logged data in a workspace at [wandb.ai](https://wandb.ai),
|
512
|
+
or locally on a [self-hosted instance](https://docs.wandb.ai/guides/hosting)
|
513
|
+
of the W&B app, or export data to visualize and explore locally, such as in a
|
514
|
+
Jupyter notebook, with the [Public API](https://docs.wandb.ai/guides/track/public-api-guide).
|
515
|
+
|
516
|
+
Logged values don't have to be scalars. You can log any
|
517
|
+
[W&B supported Data Type](https://docs.wandb.ai/ref/python/data-types/)
|
518
|
+
such as images, audio, video, and more. For example, you can use
|
519
|
+
`wandb.Table` to log structured data. See
|
520
|
+
[Log tables, visualize and query data](https://docs.wandb.ai/guides/models/tables/tables-walkthrough)
|
521
|
+
tutorial for more details.
|
522
|
+
|
523
|
+
W&B organizes metrics with a forward slash (`/`) in their name
|
524
|
+
into sections named using the text before the final slash. For example,
|
525
|
+
the following results in two sections named "train" and "validate":
|
526
|
+
|
527
|
+
```python
|
528
|
+
with wandb.init() as run:
|
529
|
+
# Log metrics in the "train" section.
|
530
|
+
run.log(
|
531
|
+
{
|
532
|
+
"train/accuracy": 0.9,
|
533
|
+
"train/loss": 30,
|
534
|
+
"validate/accuracy": 0.8,
|
535
|
+
"validate/loss": 20,
|
536
|
+
}
|
537
|
+
)
|
538
|
+
```
|
539
|
+
|
540
|
+
Only one level of nesting is supported; `run.log({"a/b/c": 1})`
|
541
|
+
produces a section named "a/b".
|
542
|
+
|
543
|
+
`run.log()` is not intended to be called more than a few times per second.
|
544
|
+
For optimal performance, limit your logging to once every N iterations,
|
545
|
+
or collect data over multiple iterations and log it in a single step.
|
546
|
+
|
547
|
+
By default, each call to `log` creates a new "step".
|
548
|
+
The step must always increase, and it is not possible to log
|
549
|
+
to a previous step. You can use any metric as the X axis in charts.
|
550
|
+
See [Custom log axes](https://docs.wandb.ai/guides/track/log/customize-logging-axes/)
|
551
|
+
for more details.
|
552
|
+
|
553
|
+
In many cases, it is better to treat the W&B step like
|
554
|
+
you'd treat a timestamp rather than a training step.
|
555
|
+
|
556
|
+
```python
|
557
|
+
with wandb.init() as run:
|
558
|
+
# Example: log an "epoch" metric for use as an X axis.
|
559
|
+
run.log({"epoch": 40, "train-loss": 0.5})
|
560
|
+
```
|
561
|
+
|
562
|
+
It is possible to use multiple `wandb.Run.log()` invocations to log to
|
563
|
+
the same step with the `step` and `commit` parameters.
|
564
|
+
The following are all equivalent:
|
565
|
+
|
566
|
+
```python
|
567
|
+
with wandb.init() as run:
|
568
|
+
# Normal usage:
|
569
|
+
run.log({"train-loss": 0.5, "accuracy": 0.8})
|
570
|
+
run.log({"train-loss": 0.4, "accuracy": 0.9})
|
571
|
+
|
572
|
+
# Implicit step without auto-incrementing:
|
573
|
+
run.log({"train-loss": 0.5}, commit=False)
|
574
|
+
run.log({"accuracy": 0.8})
|
575
|
+
run.log({"train-loss": 0.4}, commit=False)
|
576
|
+
run.log({"accuracy": 0.9})
|
577
|
+
|
578
|
+
# Explicit step:
|
579
|
+
run.log({"train-loss": 0.5}, step=current_step)
|
580
|
+
run.log({"accuracy": 0.8}, step=current_step)
|
581
|
+
current_step += 1
|
582
|
+
run.log({"train-loss": 0.4}, step=current_step)
|
583
|
+
run.log({"accuracy": 0.9}, step=current_step)
|
584
|
+
```
|
585
|
+
|
586
|
+
Args:
|
587
|
+
data: A `dict` with `str` keys and values that are serializable
|
588
|
+
Python objects including: `int`, `float` and `string`;
|
589
|
+
any of the `wandb.data_types`; lists, tuples and NumPy arrays
|
590
|
+
of serializable Python objects; other `dict`s of this
|
591
|
+
structure.
|
592
|
+
step: The step number to log. If `None`, then an implicit
|
593
|
+
auto-incrementing step is used. See the notes in
|
594
|
+
the description.
|
595
|
+
commit: If true, finalize and upload the step. If false, then
|
596
|
+
accumulate data for the step. See the notes in the description.
|
597
|
+
If `step` is `None`, then the default is `commit=True`;
|
598
|
+
otherwise, the default is `commit=False`.
|
599
|
+
|
600
|
+
Examples:
|
601
|
+
For more and more detailed examples, see
|
602
|
+
[our guides to logging](https://docs.wandb.com/guides/track/log).
|
603
|
+
|
604
|
+
Basic usage
|
605
|
+
|
606
|
+
```python
|
607
|
+
import wandb
|
608
|
+
|
609
|
+
with wandb.init() as run:
|
610
|
+
run.log({"train-loss": 0.5, "accuracy": 0.9
|
611
|
+
```
|
612
|
+
|
613
|
+
Incremental logging
|
614
|
+
|
615
|
+
```python
|
616
|
+
import wandb
|
617
|
+
|
618
|
+
with wandb.init() as run:
|
619
|
+
run.log({"loss": 0.2}, commit=False)
|
620
|
+
# Somewhere else when I'm ready to report this step:
|
621
|
+
run.log({"accuracy": 0.8})
|
622
|
+
```
|
623
|
+
|
624
|
+
Histogram
|
625
|
+
|
626
|
+
```python
|
627
|
+
import numpy as np
|
628
|
+
import wandb
|
629
|
+
|
630
|
+
# sample gradients at random from normal distribution
|
631
|
+
gradients = np.random.randn(100, 100)
|
632
|
+
with wandb.init() as run:
|
633
|
+
run.log({"gradients": wandb.Histogram(gradients)})
|
634
|
+
```
|
635
|
+
|
636
|
+
Image from NumPy
|
637
|
+
|
638
|
+
```python
|
639
|
+
import numpy as np
|
640
|
+
import wandb
|
641
|
+
|
642
|
+
with wandb.init() as run:
|
643
|
+
examples = []
|
644
|
+
for i in range(3):
|
645
|
+
pixels = np.random.randint(low=0, high=256, size=(100, 100, 3))
|
646
|
+
image = wandb.Image(pixels, caption=f"random field {i}")
|
647
|
+
examples.append(image)
|
648
|
+
run.log({"examples": examples})
|
649
|
+
```
|
650
|
+
|
651
|
+
Image from PIL
|
652
|
+
|
653
|
+
```python
|
654
|
+
import numpy as np
|
655
|
+
from PIL import Image as PILImage
|
656
|
+
import wandb
|
657
|
+
|
658
|
+
with wandb.init() as run:
|
659
|
+
examples = []
|
660
|
+
for i in range(3):
|
661
|
+
pixels = np.random.randint(
|
662
|
+
low=0,
|
663
|
+
high=256,
|
664
|
+
size=(100, 100, 3),
|
665
|
+
dtype=np.uint8,
|
666
|
+
)
|
667
|
+
pil_image = PILImage.fromarray(pixels, mode="RGB")
|
668
|
+
image = wandb.Image(pil_image, caption=f"random field {i}")
|
669
|
+
examples.append(image)
|
670
|
+
run.log({"examples": examples})
|
671
|
+
```
|
672
|
+
|
673
|
+
Video from NumPy
|
674
|
+
|
675
|
+
```python
|
676
|
+
import numpy as np
|
677
|
+
import wandb
|
678
|
+
|
679
|
+
with wandb.init() as run:
|
680
|
+
# axes are (time, channel, height, width)
|
681
|
+
frames = np.random.randint(
|
682
|
+
low=0,
|
683
|
+
high=256,
|
684
|
+
size=(10, 3, 100, 100),
|
685
|
+
dtype=np.uint8,
|
686
|
+
)
|
687
|
+
run.log({"video": wandb.Video(frames, fps=4)})
|
688
|
+
```
|
689
|
+
|
690
|
+
Matplotlib plot
|
691
|
+
|
692
|
+
```python
|
693
|
+
from matplotlib import pyplot as plt
|
694
|
+
import numpy as np
|
695
|
+
import wandb
|
696
|
+
|
697
|
+
with wandb.init() as run:
|
698
|
+
fig, ax = plt.subplots()
|
699
|
+
x = np.linspace(0, 10)
|
700
|
+
y = x * x
|
701
|
+
ax.plot(x, y) # plot y = x^2
|
702
|
+
run.log({"chart": fig})
|
703
|
+
```
|
704
|
+
|
705
|
+
PR Curve
|
706
|
+
|
707
|
+
```python
|
708
|
+
import wandb
|
709
|
+
|
710
|
+
with wandb.init() as run:
|
711
|
+
run.log({"pr": wandb.plot.pr_curve(y_test, y_probas, labels)})
|
712
|
+
```
|
713
|
+
|
714
|
+
3D Object
|
715
|
+
|
716
|
+
```python
|
717
|
+
import wandb
|
718
|
+
|
719
|
+
with wandb.init() as run:
|
720
|
+
run.log(
|
721
|
+
{
|
722
|
+
"generated_samples": [
|
723
|
+
wandb.Object3D(open("sample.obj")),
|
724
|
+
wandb.Object3D(open("sample.gltf")),
|
725
|
+
wandb.Object3D(open("sample.glb")),
|
726
|
+
]
|
727
|
+
}
|
728
|
+
)
|
729
|
+
```
|
730
|
+
|
731
|
+
Raises:
|
732
|
+
wandb.Error: If called before `wandb.init()`.
|
733
|
+
ValueError: If invalid data is passed.
|
734
|
+
"""
|
735
|
+
...
|
736
|
+
|
737
|
+
def save(
|
738
|
+
glob_str: str | os.PathLike,
|
739
|
+
base_path: str | os.PathLike | None = None,
|
740
|
+
policy: PolicyName = "live",
|
741
|
+
) -> bool | list[str]:
|
742
|
+
"""Sync one or more files to W&B.
|
743
|
+
|
744
|
+
Relative paths are relative to the current working directory.
|
745
|
+
|
746
|
+
A Unix glob, such as "myfiles/*", is expanded at the time `save` is
|
747
|
+
called regardless of the `policy`. In particular, new files are not
|
748
|
+
picked up automatically.
|
749
|
+
|
750
|
+
A `base_path` may be provided to control the directory structure of
|
751
|
+
uploaded files. It should be a prefix of `glob_str`, and the directory
|
752
|
+
structure beneath it is preserved.
|
753
|
+
|
754
|
+
When given an absolute path or glob and no `base_path`, one
|
755
|
+
directory level is preserved as in the example above.
|
756
|
+
|
757
|
+
Args:
|
758
|
+
glob_str: A relative or absolute path or Unix glob.
|
759
|
+
base_path: A path to use to infer a directory structure; see examples.
|
760
|
+
policy: One of `live`, `now`, or `end`.
|
761
|
+
- live: upload the file as it changes, overwriting the previous version
|
762
|
+
- now: upload the file once now
|
763
|
+
- end: upload file when the run ends
|
764
|
+
|
765
|
+
Returns:
|
766
|
+
Paths to the symlinks created for the matched files.
|
767
|
+
|
768
|
+
For historical reasons, this may return a boolean in legacy code.
|
769
|
+
|
770
|
+
```python
|
771
|
+
import wandb
|
772
|
+
|
773
|
+
run = wandb.init()
|
774
|
+
|
775
|
+
run.save("these/are/myfiles/*")
|
776
|
+
# => Saves files in a "these/are/myfiles/" folder in the run.
|
777
|
+
|
778
|
+
run.save("these/are/myfiles/*", base_path="these")
|
779
|
+
# => Saves files in an "are/myfiles/" folder in the run.
|
780
|
+
|
781
|
+
run.save("/User/username/Documents/run123/*.txt")
|
782
|
+
# => Saves files in a "run123/" folder in the run. See note below.
|
783
|
+
|
784
|
+
run.save("/User/username/Documents/run123/*.txt", base_path="/User")
|
785
|
+
# => Saves files in a "username/Documents/run123/" folder in the run.
|
786
|
+
|
787
|
+
run.save("files/*/saveme.txt")
|
788
|
+
# => Saves each "saveme.txt" file in an appropriate subdirectory
|
789
|
+
# of "files/".
|
790
|
+
|
791
|
+
# Explicitly finish the run since a context manager is not used.
|
792
|
+
run.finish()
|
793
|
+
```
|
794
|
+
"""
|
795
|
+
...
|
796
|
+
|
797
|
+
def sweep(
|
798
|
+
sweep: Union[dict, Callable],
|
799
|
+
entity: Optional[str] = None,
|
800
|
+
project: Optional[str] = None,
|
801
|
+
prior_runs: Optional[List[str]] = None,
|
802
|
+
) -> str:
|
803
|
+
"""Initialize a hyperparameter sweep.
|
804
|
+
|
805
|
+
Search for hyperparameters that optimizes a cost function
|
806
|
+
of a machine learning model by testing various combinations.
|
807
|
+
|
808
|
+
Make note the unique identifier, `sweep_id`, that is returned.
|
809
|
+
At a later step provide the `sweep_id` to a sweep agent.
|
810
|
+
|
811
|
+
See [Sweep configuration structure](https://docs.wandb.ai/guides/sweeps/define-sweep-configuration)
|
812
|
+
for information on how to define your sweep.
|
813
|
+
|
814
|
+
Args:
|
815
|
+
sweep: The configuration of a hyperparameter search.
|
816
|
+
(or configuration generator).
|
817
|
+
If you provide a callable, ensure that the callable does
|
818
|
+
not take arguments and that it returns a dictionary that
|
819
|
+
conforms to the W&B sweep config spec.
|
820
|
+
entity: The username or team name where you want to send W&B
|
821
|
+
runs created by the sweep to. Ensure that the entity you
|
822
|
+
specify already exists. If you don't specify an entity,
|
823
|
+
the run will be sent to your default entity,
|
824
|
+
which is usually your username.
|
825
|
+
project: The name of the project where W&B runs created from
|
826
|
+
the sweep are sent to. If the project is not specified, the
|
827
|
+
run is sent to a project labeled 'Uncategorized'.
|
828
|
+
prior_runs: The run IDs of existing runs to add to this sweep.
|
829
|
+
|
830
|
+
Returns:
|
831
|
+
str: A unique identifier for the sweep.
|
832
|
+
"""
|
833
|
+
...
|
834
|
+
|
835
|
+
def controller(
|
836
|
+
sweep_id_or_config: Optional[Union[str, Dict]] = None,
|
837
|
+
entity: Optional[str] = None,
|
838
|
+
project: Optional[str] = None,
|
839
|
+
) -> _WandbController:
|
840
|
+
"""Public sweep controller constructor.
|
841
|
+
|
842
|
+
Examples:
|
843
|
+
```python
|
844
|
+
import wandb
|
845
|
+
|
846
|
+
tuner = wandb.controller(...)
|
847
|
+
print(tuner.sweep_config)
|
848
|
+
print(tuner.sweep_id)
|
849
|
+
tuner.configure_search(...)
|
850
|
+
tuner.configure_stopping(...)
|
851
|
+
```
|
852
|
+
"""
|
853
|
+
...
|
854
|
+
|
855
|
+
def agent(
|
856
|
+
sweep_id: str,
|
857
|
+
function: Optional[Callable] = None,
|
858
|
+
entity: Optional[str] = None,
|
859
|
+
project: Optional[str] = None,
|
860
|
+
count: Optional[int] = None,
|
861
|
+
) -> None:
|
862
|
+
"""Start one or more sweep agents.
|
863
|
+
|
864
|
+
The sweep agent uses the `sweep_id` to know which sweep it
|
865
|
+
is a part of, what function to execute, and (optionally) how
|
866
|
+
many agents to run.
|
867
|
+
|
868
|
+
Args:
|
869
|
+
sweep_id: The unique identifier for a sweep. A sweep ID
|
870
|
+
is generated by W&B CLI or Python SDK.
|
871
|
+
function: A function to call instead of the "program"
|
872
|
+
specified in the sweep config.
|
873
|
+
entity: The username or team name where you want to send W&B
|
874
|
+
runs created by the sweep to. Ensure that the entity you
|
875
|
+
specify already exists. If you don't specify an entity,
|
876
|
+
the run will be sent to your default entity,
|
877
|
+
which is usually your username.
|
878
|
+
project: The name of the project where W&B runs created from
|
879
|
+
the sweep are sent to. If the project is not specified, the
|
880
|
+
run is sent to a project labeled "Uncategorized".
|
881
|
+
count: The number of sweep config trials to try.
|
882
|
+
"""
|
883
|
+
...
|
884
|
+
|
885
|
+
def define_metric(
|
886
|
+
name: str,
|
887
|
+
step_metric: str | wandb_metric.Metric | None = None,
|
888
|
+
step_sync: bool | None = None,
|
889
|
+
hidden: bool | None = None,
|
890
|
+
summary: str | None = None,
|
891
|
+
goal: str | None = None,
|
892
|
+
overwrite: bool | None = None,
|
893
|
+
) -> wandb_metric.Metric:
|
894
|
+
"""Customize metrics logged with `wandb.Run.log()`.
|
895
|
+
|
896
|
+
Args:
|
897
|
+
name: The name of the metric to customize.
|
898
|
+
step_metric: The name of another metric to serve as the X-axis
|
899
|
+
for this metric in automatically generated charts.
|
900
|
+
step_sync: Automatically insert the last value of step_metric into
|
901
|
+
`wandb.Run.log()` if it is not provided explicitly. Defaults to True
|
902
|
+
if step_metric is specified.
|
903
|
+
hidden: Hide this metric from automatic plots.
|
904
|
+
summary: Specify aggregate metrics added to summary.
|
905
|
+
Supported aggregations include "min", "max", "mean", "last",
|
906
|
+
"first", "best", "copy" and "none". "none" prevents a summary
|
907
|
+
from being generated. "best" is used together with the goal
|
908
|
+
parameter, "best" is deprecated and should not be used, use
|
909
|
+
"min" or "max" instead. "copy" is deprecated and should not be
|
910
|
+
used.
|
911
|
+
goal: Specify how to interpret the "best" summary type.
|
912
|
+
Supported options are "minimize" and "maximize". "goal" is
|
913
|
+
deprecated and should not be used, use "min" or "max" instead.
|
914
|
+
overwrite: If false, then this call is merged with previous
|
915
|
+
`define_metric` calls for the same metric by using their
|
916
|
+
values for any unspecified parameters. If true, then
|
917
|
+
unspecified parameters overwrite values specified by
|
918
|
+
previous calls.
|
919
|
+
|
920
|
+
Returns:
|
921
|
+
An object that represents this call but can otherwise be discarded.
|
922
|
+
"""
|
923
|
+
...
|
924
|
+
|
925
|
+
def log_artifact(
|
926
|
+
artifact_or_path: Artifact | StrPath,
|
927
|
+
name: str | None = None,
|
928
|
+
type: str | None = None,
|
929
|
+
aliases: list[str] | None = None,
|
930
|
+
tags: list[str] | None = None,
|
931
|
+
) -> Artifact:
|
932
|
+
"""Declare an artifact as an output of a run.
|
933
|
+
|
934
|
+
Args:
|
935
|
+
artifact_or_path: (str or Artifact) A path to the contents of this artifact,
|
936
|
+
can be in the following forms:
|
937
|
+
- `/local/directory`
|
938
|
+
- `/local/directory/file.txt`
|
939
|
+
- `s3://bucket/path`
|
940
|
+
You can also pass an Artifact object created by calling
|
941
|
+
`wandb.Artifact`.
|
942
|
+
name: (str, optional) An artifact name. Valid names can be in the following forms:
|
943
|
+
- name:version
|
944
|
+
- name:alias
|
945
|
+
- digest
|
946
|
+
This will default to the basename of the path prepended with the current
|
947
|
+
run id if not specified.
|
948
|
+
type: (str) The type of artifact to log, examples include `dataset`, `model`
|
949
|
+
aliases: (list, optional) Aliases to apply to this artifact,
|
950
|
+
defaults to `["latest"]`
|
951
|
+
tags: (list, optional) Tags to apply to this artifact, if any.
|
952
|
+
|
953
|
+
Returns:
|
954
|
+
An `Artifact` object.
|
955
|
+
"""
|
956
|
+
...
|
957
|
+
|
958
|
+
def use_artifact(
|
959
|
+
artifact_or_name: str | Artifact,
|
960
|
+
type: str | None = None,
|
961
|
+
aliases: list[str] | None = None,
|
962
|
+
use_as: str | None = None,
|
963
|
+
) -> Artifact:
|
964
|
+
"""Declare an artifact as an input to a run.
|
965
|
+
|
966
|
+
Call `download` or `file` on the returned object to get the contents locally.
|
967
|
+
|
968
|
+
Args:
|
969
|
+
artifact_or_name: The name of the artifact to use. May be prefixed
|
970
|
+
with the name of the project the artifact was logged to
|
971
|
+
("<entity>" or "<entity>/<project>"). If no
|
972
|
+
entity is specified in the name, the Run or API setting's entity is used.
|
973
|
+
Valid names can be in the following forms
|
974
|
+
- name:version
|
975
|
+
- name:alias
|
976
|
+
type: The type of artifact to use.
|
977
|
+
aliases: Aliases to apply to this artifact
|
978
|
+
use_as: This argument is deprecated and does nothing.
|
979
|
+
|
980
|
+
Returns:
|
981
|
+
An `Artifact` object.
|
982
|
+
|
983
|
+
Examples:
|
984
|
+
```python
|
985
|
+
import wandb
|
986
|
+
|
987
|
+
run = wandb.init(project="<example>")
|
988
|
+
|
989
|
+
# Use an artifact by name and alias
|
990
|
+
artifact_a = run.use_artifact(artifact_or_name="<name>:<alias>")
|
991
|
+
|
992
|
+
# Use an artifact by name and version
|
993
|
+
artifact_b = run.use_artifact(artifact_or_name="<name>:v<version>")
|
994
|
+
|
995
|
+
# Use an artifact by entity/project/name:alias
|
996
|
+
artifact_c = run.use_artifact(artifact_or_name="<entity>/<project>/<name>:<alias>")
|
997
|
+
|
998
|
+
# Use an artifact by entity/project/name:version
|
999
|
+
artifact_d = run.use_artifact(
|
1000
|
+
artifact_or_name="<entity>/<project>/<name>:v<version>"
|
1001
|
+
)
|
1002
|
+
|
1003
|
+
# Explicitly finish the run since a context manager is not used.
|
1004
|
+
run.finish()
|
1005
|
+
```
|
1006
|
+
"""
|
1007
|
+
...
|
1008
|
+
|
1009
|
+
def log_model(
|
1010
|
+
path: StrPath,
|
1011
|
+
name: str | None = None,
|
1012
|
+
aliases: list[str] | None = None,
|
1013
|
+
) -> None:
|
1014
|
+
"""Logs a model artifact containing the contents inside the 'path' to a run and marks it as an output to this run.
|
1015
|
+
|
1016
|
+
The name of model artifact can only contain alphanumeric characters,
|
1017
|
+
underscores, and hyphens.
|
1018
|
+
|
1019
|
+
Args:
|
1020
|
+
path: (str) A path to the contents of this model,
|
1021
|
+
can be in the following forms:
|
1022
|
+
- `/local/directory`
|
1023
|
+
- `/local/directory/file.txt`
|
1024
|
+
- `s3://bucket/path`
|
1025
|
+
name: A name to assign to the model artifact that
|
1026
|
+
the file contents will be added to. This will default to the
|
1027
|
+
basename of the path prepended with the current run id if
|
1028
|
+
not specified.
|
1029
|
+
aliases: Aliases to apply to the created model artifact,
|
1030
|
+
defaults to `["latest"]`
|
1031
|
+
|
1032
|
+
Raises:
|
1033
|
+
ValueError: If name has invalid special characters.
|
1034
|
+
|
1035
|
+
Returns:
|
1036
|
+
None
|
1037
|
+
"""
|
1038
|
+
...
|
1039
|
+
|
1040
|
+
def use_model(name: str) -> FilePathStr:
|
1041
|
+
"""Download the files logged in a model artifact 'name'.
|
1042
|
+
|
1043
|
+
Args:
|
1044
|
+
name: A model artifact name. 'name' must match the name of an existing logged
|
1045
|
+
model artifact. May be prefixed with `entity/project/`. Valid names
|
1046
|
+
can be in the following forms
|
1047
|
+
- model_artifact_name:version
|
1048
|
+
- model_artifact_name:alias
|
1049
|
+
|
1050
|
+
Returns:
|
1051
|
+
path (str): Path to downloaded model artifact file(s).
|
1052
|
+
|
1053
|
+
Raises:
|
1054
|
+
AssertionError: If model artifact 'name' is of a type that does
|
1055
|
+
not contain the substring 'model'.
|
1056
|
+
"""
|
1057
|
+
...
|
1058
|
+
|
1059
|
+
def link_model(
|
1060
|
+
path: StrPath,
|
1061
|
+
registered_model_name: str,
|
1062
|
+
name: str | None = None,
|
1063
|
+
aliases: list[str] | None = None,
|
1064
|
+
) -> Artifact | None:
|
1065
|
+
"""Log a model artifact version and link it to a registered model in the model registry.
|
1066
|
+
|
1067
|
+
Linked model versions are visible in the UI for the specified registered model.
|
1068
|
+
|
1069
|
+
This method will:
|
1070
|
+
- Check if 'name' model artifact has been logged. If so, use the artifact version that matches the files
|
1071
|
+
located at 'path' or log a new version. Otherwise log files under 'path' as a new model artifact, 'name'
|
1072
|
+
of type 'model'.
|
1073
|
+
- Check if registered model with name 'registered_model_name' exists in the 'model-registry' project.
|
1074
|
+
If not, create a new registered model with name 'registered_model_name'.
|
1075
|
+
- Link version of model artifact 'name' to registered model, 'registered_model_name'.
|
1076
|
+
- Attach aliases from 'aliases' list to the newly linked model artifact version.
|
1077
|
+
|
1078
|
+
Args:
|
1079
|
+
path: (str) A path to the contents of this model, can be in the
|
1080
|
+
following forms:
|
1081
|
+
- `/local/directory`
|
1082
|
+
- `/local/directory/file.txt`
|
1083
|
+
- `s3://bucket/path`
|
1084
|
+
registered_model_name: The name of the registered model that the
|
1085
|
+
model is to be linked to. A registered model is a collection of
|
1086
|
+
model versions linked to the model registry, typically
|
1087
|
+
representing a team's specific ML Task. The entity that this
|
1088
|
+
registered model belongs to will be derived from the run.
|
1089
|
+
name: The name of the model artifact that files in 'path' will be
|
1090
|
+
logged to. This will default to the basename of the path
|
1091
|
+
prepended with the current run id if not specified.
|
1092
|
+
aliases: Aliases that will only be applied on this linked artifact
|
1093
|
+
inside the registered model. The alias "latest" will always be
|
1094
|
+
applied to the latest version of an artifact that is linked.
|
1095
|
+
|
1096
|
+
Raises:
|
1097
|
+
AssertionError: If registered_model_name is a path or
|
1098
|
+
if model artifact 'name' is of a type that does not contain
|
1099
|
+
the substring 'model'.
|
1100
|
+
ValueError: If name has invalid special characters.
|
1101
|
+
|
1102
|
+
Returns:
|
1103
|
+
The linked artifact if linking was successful, otherwise `None`.
|
1104
|
+
"""
|
1105
|
+
...
|
1106
|
+
|
1107
|
+
def plot_table(
|
1108
|
+
vega_spec_name: str,
|
1109
|
+
data_table: wandb.Table,
|
1110
|
+
fields: dict[str, Any],
|
1111
|
+
string_fields: dict[str, Any] | None = None,
|
1112
|
+
split_table: bool = False,
|
1113
|
+
) -> CustomChart:
|
1114
|
+
"""Creates a custom charts using a Vega-Lite specification and a `wandb.Table`.
|
1115
|
+
|
1116
|
+
This function creates a custom chart based on a Vega-Lite specification and
|
1117
|
+
a data table represented by a `wandb.Table` object. The specification needs
|
1118
|
+
to be predefined and stored in the W&B backend. The function returns a custom
|
1119
|
+
chart object that can be logged to W&B using `wandb.Run.log()`.
|
1120
|
+
|
1121
|
+
Args:
|
1122
|
+
vega_spec_name: The name or identifier of the Vega-Lite spec
|
1123
|
+
that defines the visualization structure.
|
1124
|
+
data_table: A `wandb.Table` object containing the data to be
|
1125
|
+
visualized.
|
1126
|
+
fields: A mapping between the fields in the Vega-Lite spec and the
|
1127
|
+
corresponding columns in the data table to be visualized.
|
1128
|
+
string_fields: A dictionary for providing values for any string constants
|
1129
|
+
required by the custom visualization.
|
1130
|
+
split_table: Whether the table should be split into a separate section
|
1131
|
+
in the W&B UI. If `True`, the table will be displayed in a section named
|
1132
|
+
"Custom Chart Tables". Default is `False`.
|
1133
|
+
|
1134
|
+
Returns:
|
1135
|
+
CustomChart: A custom chart object that can be logged to W&B. To log the
|
1136
|
+
chart, pass the chart object as argument to `wandb.Run.log()`.
|
1137
|
+
|
1138
|
+
Raises:
|
1139
|
+
wandb.Error: If `data_table` is not a `wandb.Table` object.
|
1140
|
+
|
1141
|
+
Example:
|
1142
|
+
```python
|
1143
|
+
# Create a custom chart using a Vega-Lite spec and the data table.
|
1144
|
+
import wandb
|
1145
|
+
|
1146
|
+
data = [[1, 1], [2, 2], [3, 3], [4, 4], [5, 5]]
|
1147
|
+
table = wandb.Table(data=data, columns=["x", "y"])
|
1148
|
+
fields = {"x": "x", "y": "y", "title": "MY TITLE"}
|
1149
|
+
|
1150
|
+
with wandb.init() as run:
|
1151
|
+
# Training code goes here
|
1152
|
+
|
1153
|
+
# Create a custom title with `string_fields`.
|
1154
|
+
my_custom_chart = wandb.plot_table(
|
1155
|
+
vega_spec_name="wandb/line/v0",
|
1156
|
+
data_table=table,
|
1157
|
+
fields=fields,
|
1158
|
+
string_fields={"title": "Title"},
|
1159
|
+
)
|
1160
|
+
|
1161
|
+
run.log({"custom_chart": my_custom_chart})
|
1162
|
+
```
|
1163
|
+
"""
|
1164
|
+
...
|
1165
|
+
|
1166
|
+
def watch(
|
1167
|
+
models: torch.nn.Module | Sequence[torch.nn.Module],
|
1168
|
+
criterion: torch.F | None = None,
|
1169
|
+
log: Literal["gradients", "parameters", "all"] | None = "gradients",
|
1170
|
+
log_freq: int = 1000,
|
1171
|
+
idx: int | None = None,
|
1172
|
+
log_graph: bool = False,
|
1173
|
+
) -> None:
|
1174
|
+
"""Hook into given PyTorch model to monitor gradients and the model's computational graph.
|
1175
|
+
|
1176
|
+
This function can track parameters, gradients, or both during training.
|
1177
|
+
|
1178
|
+
Args:
|
1179
|
+
models: A single model or a sequence of models to be monitored.
|
1180
|
+
criterion: The loss function being optimized (optional).
|
1181
|
+
log: Specifies whether to log "gradients", "parameters", or "all".
|
1182
|
+
Set to None to disable logging. (default="gradients").
|
1183
|
+
log_freq: Frequency (in batches) to log gradients and parameters. (default=1000)
|
1184
|
+
idx: Index used when tracking multiple models with `wandb.watch`. (default=None)
|
1185
|
+
log_graph: Whether to log the model's computational graph. (default=False)
|
1186
|
+
|
1187
|
+
Raises:
|
1188
|
+
ValueError:
|
1189
|
+
If `wandb.init()` has not been called or if any of the models are not instances
|
1190
|
+
of `torch.nn.Module`.
|
1191
|
+
"""
|
1192
|
+
...
|
1193
|
+
|
1194
|
+
def unwatch(
|
1195
|
+
models: torch.nn.Module | Sequence[torch.nn.Module] | None = None,
|
1196
|
+
) -> None:
|
1197
|
+
"""Remove pytorch model topology, gradient and parameter hooks.
|
1198
|
+
|
1199
|
+
Args:
|
1200
|
+
models: Optional list of pytorch models that have had watch called on them.
|
1201
|
+
"""
|
1202
|
+
...
|
1203
|
+
|
1204
|
+
def restore(
|
1205
|
+
name: str,
|
1206
|
+
run_path: str | None = None,
|
1207
|
+
replace: bool = False,
|
1208
|
+
root: str | None = None,
|
1209
|
+
) -> None | TextIO:
|
1210
|
+
"""Download the specified file from cloud storage.
|
1211
|
+
|
1212
|
+
File is placed into the current directory or run directory.
|
1213
|
+
By default, will only download the file if it doesn't already exist.
|
1214
|
+
|
1215
|
+
Args:
|
1216
|
+
name: The name of the file.
|
1217
|
+
run_path: Optional path to a run to pull files from, i.e. `username/project_name/run_id`
|
1218
|
+
if wandb.init has not been called, this is required.
|
1219
|
+
replace: Whether to download the file even if it already exists locally
|
1220
|
+
root: The directory to download the file to. Defaults to the current
|
1221
|
+
directory or the run directory if wandb.init was called.
|
1222
|
+
|
1223
|
+
Returns:
|
1224
|
+
None if it can't find the file, otherwise a file object open for reading.
|
1225
|
+
|
1226
|
+
Raises:
|
1227
|
+
CommError: If W&B can't connect to the W&B backend.
|
1228
|
+
ValueError: If the file is not found or can't find run_path.
|
1229
|
+
"""
|
1230
|
+
...
|