wandb 0.21.2__py3-none-macosx_12_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package_readme.md +97 -0
- wandb/__init__.py +248 -0
- wandb/__init__.pyi +1230 -0
- wandb/__main__.py +3 -0
- wandb/_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
@@ -0,0 +1,182 @@
|
|
1
|
+
"""catboost init."""
|
2
|
+
|
3
|
+
from pathlib import Path
|
4
|
+
from types import SimpleNamespace
|
5
|
+
from typing import List, Union
|
6
|
+
|
7
|
+
from catboost import CatBoostClassifier, CatBoostRegressor # type: ignore
|
8
|
+
|
9
|
+
import wandb
|
10
|
+
from wandb.sdk.lib import telemetry as wb_telemetry
|
11
|
+
|
12
|
+
|
13
|
+
class WandbCallback:
|
14
|
+
"""`WandbCallback` automatically integrates CatBoost with wandb.
|
15
|
+
|
16
|
+
Args:
|
17
|
+
- metric_period: (int) if you are passing `metric_period` to your CatBoost model please pass the same value here (default=1).
|
18
|
+
|
19
|
+
Passing `WandbCallback` to CatBoost will:
|
20
|
+
- log training and validation metrics at every `metric_period`
|
21
|
+
- log iteration at every `metric_period`
|
22
|
+
|
23
|
+
Example:
|
24
|
+
```
|
25
|
+
train_pool = Pool(
|
26
|
+
train[features], label=train["label"], cat_features=cat_features
|
27
|
+
)
|
28
|
+
test_pool = Pool(test[features], label=test["label"], cat_features=cat_features)
|
29
|
+
|
30
|
+
model = CatBoostRegressor(
|
31
|
+
iterations=100,
|
32
|
+
loss_function="Cox",
|
33
|
+
eval_metric="Cox",
|
34
|
+
)
|
35
|
+
|
36
|
+
model.fit(
|
37
|
+
train_pool,
|
38
|
+
eval_set=test_pool,
|
39
|
+
callbacks=[WandbCallback()],
|
40
|
+
)
|
41
|
+
```
|
42
|
+
"""
|
43
|
+
|
44
|
+
def __init__(self, metric_period: int = 1):
|
45
|
+
if wandb.run is None:
|
46
|
+
raise wandb.Error("You must call `wandb.init()` before `WandbCallback()`")
|
47
|
+
|
48
|
+
with wb_telemetry.context() as tel:
|
49
|
+
tel.feature.catboost_wandb_callback = True
|
50
|
+
|
51
|
+
self.metric_period: int = metric_period
|
52
|
+
|
53
|
+
def after_iteration(self, info: SimpleNamespace) -> bool:
|
54
|
+
if info.iteration % self.metric_period == 0:
|
55
|
+
for data, metric in info.metrics.items():
|
56
|
+
for metric_name, log in metric.items():
|
57
|
+
# todo: replace with wandb.run._log once available
|
58
|
+
wandb.log({f"{data}-{metric_name}": log[-1]}, commit=False)
|
59
|
+
# todo: replace with wandb.run._log once available
|
60
|
+
wandb.log({f"iteration@metric-period-{self.metric_period}": info.iteration})
|
61
|
+
|
62
|
+
return True
|
63
|
+
|
64
|
+
|
65
|
+
def _checkpoint_artifact(
|
66
|
+
model: Union[CatBoostClassifier, CatBoostRegressor], aliases: List[str]
|
67
|
+
) -> None:
|
68
|
+
"""Upload model checkpoint as W&B artifact."""
|
69
|
+
if wandb.run is None:
|
70
|
+
raise wandb.Error(
|
71
|
+
"You must call `wandb.init()` before `_checkpoint_artifact()`"
|
72
|
+
)
|
73
|
+
|
74
|
+
model_name = f"model_{wandb.run.id}"
|
75
|
+
# save the model in the default `cbm` format
|
76
|
+
model_path = Path(wandb.run.dir) / "model"
|
77
|
+
|
78
|
+
model.save_model(model_path)
|
79
|
+
|
80
|
+
model_artifact = wandb.Artifact(name=model_name, type="model")
|
81
|
+
model_artifact.add_file(str(model_path))
|
82
|
+
wandb.log_artifact(model_artifact, aliases=aliases)
|
83
|
+
|
84
|
+
|
85
|
+
def _log_feature_importance(
|
86
|
+
model: Union[CatBoostClassifier, CatBoostRegressor],
|
87
|
+
) -> None:
|
88
|
+
"""Log feature importance with default settings."""
|
89
|
+
if wandb.run is None:
|
90
|
+
raise wandb.Error(
|
91
|
+
"You must call `wandb.init()` before `_checkpoint_artifact()`"
|
92
|
+
)
|
93
|
+
|
94
|
+
feat_df = model.get_feature_importance(prettified=True)
|
95
|
+
|
96
|
+
fi_data = [
|
97
|
+
[feat, feat_imp]
|
98
|
+
for feat, feat_imp in zip(feat_df["Feature Id"], feat_df["Importances"])
|
99
|
+
]
|
100
|
+
table = wandb.Table(data=fi_data, columns=["Feature", "Importance"])
|
101
|
+
# todo: replace with wandb.run._log once available
|
102
|
+
wandb.log(
|
103
|
+
{
|
104
|
+
"Feature Importance": wandb.plot.bar(
|
105
|
+
table, "Feature", "Importance", title="Feature Importance"
|
106
|
+
)
|
107
|
+
},
|
108
|
+
commit=False,
|
109
|
+
)
|
110
|
+
|
111
|
+
|
112
|
+
def log_summary(
|
113
|
+
model: Union[CatBoostClassifier, CatBoostRegressor],
|
114
|
+
log_all_params: bool = True,
|
115
|
+
save_model_checkpoint: bool = False,
|
116
|
+
log_feature_importance: bool = True,
|
117
|
+
) -> None:
|
118
|
+
"""`log_summary` logs useful metrics about catboost model after training is done.
|
119
|
+
|
120
|
+
Args:
|
121
|
+
model: it can be CatBoostClassifier or CatBoostRegressor.
|
122
|
+
log_all_params: (boolean) if True (default) log the model hyperparameters as W&B config.
|
123
|
+
save_model_checkpoint: (boolean) if True saves the model upload as W&B artifacts.
|
124
|
+
log_feature_importance: (boolean) if True (default) logs feature importance as W&B bar chart using the default setting of `get_feature_importance`.
|
125
|
+
|
126
|
+
Using this along with `wandb_callback` will:
|
127
|
+
|
128
|
+
- save the hyperparameters as W&B config,
|
129
|
+
- log `best_iteration` and `best_score` as `wandb.summary`,
|
130
|
+
- save and upload your trained model to Weights & Biases Artifacts (when `save_model_checkpoint = True`)
|
131
|
+
- log feature importance plot.
|
132
|
+
|
133
|
+
Example:
|
134
|
+
```python
|
135
|
+
train_pool = Pool(
|
136
|
+
train[features], label=train["label"], cat_features=cat_features
|
137
|
+
)
|
138
|
+
test_pool = Pool(test[features], label=test["label"], cat_features=cat_features)
|
139
|
+
|
140
|
+
model = CatBoostRegressor(
|
141
|
+
iterations=100,
|
142
|
+
loss_function="Cox",
|
143
|
+
eval_metric="Cox",
|
144
|
+
)
|
145
|
+
|
146
|
+
model.fit(
|
147
|
+
train_pool,
|
148
|
+
eval_set=test_pool,
|
149
|
+
callbacks=[WandbCallback()],
|
150
|
+
)
|
151
|
+
|
152
|
+
log_summary(model)
|
153
|
+
```
|
154
|
+
"""
|
155
|
+
if wandb.run is None:
|
156
|
+
raise wandb.Error("You must call `wandb.init()` before `log_summary()`")
|
157
|
+
|
158
|
+
if not (isinstance(model, (CatBoostClassifier, CatBoostRegressor))):
|
159
|
+
raise wandb.Error(
|
160
|
+
"Model should be an instance of CatBoostClassifier or CatBoostRegressor"
|
161
|
+
)
|
162
|
+
|
163
|
+
with wb_telemetry.context() as tel:
|
164
|
+
tel.feature.catboost_log_summary = True
|
165
|
+
|
166
|
+
# log configs
|
167
|
+
params = model.get_all_params()
|
168
|
+
if log_all_params:
|
169
|
+
wandb.config.update(params)
|
170
|
+
|
171
|
+
# log best score and iteration
|
172
|
+
wandb.run.summary["best_iteration"] = model.get_best_iteration()
|
173
|
+
wandb.run.summary["best_score"] = model.get_best_score()
|
174
|
+
|
175
|
+
# log model
|
176
|
+
if save_model_checkpoint:
|
177
|
+
aliases = ["best"] if params["use_best_model"] else ["last"]
|
178
|
+
_checkpoint_artifact(model, aliases=aliases)
|
179
|
+
|
180
|
+
# Feature importance
|
181
|
+
if log_feature_importance:
|
182
|
+
_log_feature_importance(model)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import logging
|
2
|
+
|
3
|
+
from wandb.sdk.integration_utils.auto_logging import AutologAPI
|
4
|
+
|
5
|
+
from .resolver import CohereRequestResponseResolver
|
6
|
+
|
7
|
+
logger = logging.getLogger(__name__)
|
8
|
+
|
9
|
+
|
10
|
+
autolog = AutologAPI(
|
11
|
+
name="Cohere",
|
12
|
+
symbols=(
|
13
|
+
"Client.generate",
|
14
|
+
"Client.chat",
|
15
|
+
"Client.classify",
|
16
|
+
"Client.summarize",
|
17
|
+
"Client.rerank",
|
18
|
+
),
|
19
|
+
resolver=CohereRequestResponseResolver(),
|
20
|
+
telemetry_feature="cohere_autolog",
|
21
|
+
)
|
@@ -0,0 +1,347 @@
|
|
1
|
+
import logging
|
2
|
+
from datetime import datetime
|
3
|
+
from typing import Any, Dict, List, Optional, Sequence, Tuple
|
4
|
+
|
5
|
+
import wandb
|
6
|
+
from wandb.sdk.integration_utils.auto_logging import Response
|
7
|
+
from wandb.sdk.lib.runid import generate_id
|
8
|
+
|
9
|
+
logger = logging.getLogger(__name__)
|
10
|
+
|
11
|
+
|
12
|
+
def subset_dict(
|
13
|
+
original_dict: Dict[str, Any], keys_subset: Sequence[str]
|
14
|
+
) -> Dict[str, Any]:
|
15
|
+
"""Create a subset of a dictionary using a subset of keys.
|
16
|
+
|
17
|
+
:param original_dict: The original dictionary.
|
18
|
+
:param keys_subset: The subset of keys to extract.
|
19
|
+
:return: A dictionary containing only the specified keys.
|
20
|
+
"""
|
21
|
+
return {key: original_dict[key] for key in keys_subset if key in original_dict}
|
22
|
+
|
23
|
+
|
24
|
+
def reorder_and_convert_dict_list_to_table(
|
25
|
+
data: List[Dict[str, Any]], order: List[str]
|
26
|
+
) -> Tuple[List[str], List[List[Any]]]:
|
27
|
+
"""Convert a list of dictionaries to a pair of column names and corresponding values, with the option to order specific dictionaries.
|
28
|
+
|
29
|
+
:param data: A list of dictionaries.
|
30
|
+
:param order: A list of keys specifying the desired order for specific dictionaries. The remaining dictionaries will be ordered based on their original order.
|
31
|
+
:return: A pair of column names and corresponding values.
|
32
|
+
"""
|
33
|
+
final_columns = []
|
34
|
+
keys_present = set()
|
35
|
+
|
36
|
+
# First, add all ordered keys to the final columns
|
37
|
+
for key in order:
|
38
|
+
if key not in keys_present:
|
39
|
+
final_columns.append(key)
|
40
|
+
keys_present.add(key)
|
41
|
+
|
42
|
+
# Then, add any keys present in the dictionaries but not in the order
|
43
|
+
for d in data:
|
44
|
+
for key in d:
|
45
|
+
if key not in keys_present:
|
46
|
+
final_columns.append(key)
|
47
|
+
keys_present.add(key)
|
48
|
+
|
49
|
+
# Then, construct the table of values
|
50
|
+
values = []
|
51
|
+
for d in data:
|
52
|
+
row = []
|
53
|
+
for key in final_columns:
|
54
|
+
row.append(d.get(key, None))
|
55
|
+
values.append(row)
|
56
|
+
|
57
|
+
return final_columns, values
|
58
|
+
|
59
|
+
|
60
|
+
def flatten_dict(
|
61
|
+
dictionary: Dict[str, Any], parent_key: str = "", sep: str = "-"
|
62
|
+
) -> Dict[str, Any]:
|
63
|
+
"""Flatten a nested dictionary, joining keys using a specified separator.
|
64
|
+
|
65
|
+
:param dictionary: The dictionary to flatten.
|
66
|
+
:param parent_key: The base key to prepend to each key.
|
67
|
+
:param sep: The separator to use when joining keys.
|
68
|
+
:return: A flattened dictionary.
|
69
|
+
"""
|
70
|
+
flattened_dict = {}
|
71
|
+
for key, value in dictionary.items():
|
72
|
+
new_key = f"{parent_key}{sep}{key}" if parent_key else key
|
73
|
+
if isinstance(value, dict):
|
74
|
+
flattened_dict.update(flatten_dict(value, new_key, sep=sep))
|
75
|
+
else:
|
76
|
+
flattened_dict[new_key] = value
|
77
|
+
return flattened_dict
|
78
|
+
|
79
|
+
|
80
|
+
def collect_common_keys(list_of_dicts: List[Dict[str, Any]]) -> Dict[str, List[Any]]:
|
81
|
+
"""Collect the common keys of a list of dictionaries. For each common key, put its values into a list in the order they appear in the original dictionaries.
|
82
|
+
|
83
|
+
:param list_of_dicts: The list of dictionaries to inspect.
|
84
|
+
:return: A dictionary with each common key and its corresponding list of values.
|
85
|
+
"""
|
86
|
+
common_keys = set.intersection(*map(set, list_of_dicts))
|
87
|
+
common_dict = {key: [] for key in common_keys}
|
88
|
+
for d in list_of_dicts:
|
89
|
+
for key in common_keys:
|
90
|
+
common_dict[key].append(d[key])
|
91
|
+
return common_dict
|
92
|
+
|
93
|
+
|
94
|
+
class CohereRequestResponseResolver:
|
95
|
+
"""Class to resolve the request/response from the Cohere API and convert it to a dictionary that can be logged."""
|
96
|
+
|
97
|
+
def __call__(
|
98
|
+
self,
|
99
|
+
args: Sequence[Any],
|
100
|
+
kwargs: Dict[str, Any],
|
101
|
+
response: Response,
|
102
|
+
start_time: float,
|
103
|
+
time_elapsed: float,
|
104
|
+
) -> Optional[Dict[str, Any]]:
|
105
|
+
"""Process the response from the Cohere API and convert it to a dictionary that can be logged.
|
106
|
+
|
107
|
+
:param args: The arguments of the original function.
|
108
|
+
:param kwargs: The keyword arguments of the original function.
|
109
|
+
:param response: The response from the Cohere API.
|
110
|
+
:param start_time: The start time of the request.
|
111
|
+
:param time_elapsed: The time elapsed for the request.
|
112
|
+
:return: A dictionary containing the parsed response and timing information.
|
113
|
+
"""
|
114
|
+
try:
|
115
|
+
# Each of the different endpoints map to one specific response type
|
116
|
+
# We want to 'type check' the response without directly importing the packages type
|
117
|
+
# It may make more sense to pass the invoked symbol from the AutologAPI instead
|
118
|
+
response_type = str(type(response)).split("'")[1].split(".")[-1]
|
119
|
+
|
120
|
+
# Initialize parsed_response to None to handle the case where the response type is unsupported
|
121
|
+
parsed_response = None
|
122
|
+
if response_type == "Generations":
|
123
|
+
parsed_response = self._resolve_generate_response(response)
|
124
|
+
# TODO: Remove hard-coded default model name
|
125
|
+
table_column_order = [
|
126
|
+
"start_time",
|
127
|
+
"query_id",
|
128
|
+
"model",
|
129
|
+
"prompt",
|
130
|
+
"text",
|
131
|
+
"token_likelihoods",
|
132
|
+
"likelihood",
|
133
|
+
"time_elapsed_(seconds)",
|
134
|
+
"end_time",
|
135
|
+
]
|
136
|
+
default_model = "command"
|
137
|
+
elif response_type == "Chat":
|
138
|
+
parsed_response = self._resolve_chat_response(response)
|
139
|
+
table_column_order = [
|
140
|
+
"start_time",
|
141
|
+
"query_id",
|
142
|
+
"model",
|
143
|
+
"conversation_id",
|
144
|
+
"response_id",
|
145
|
+
"query",
|
146
|
+
"text",
|
147
|
+
"prompt",
|
148
|
+
"preamble",
|
149
|
+
"chat_history",
|
150
|
+
"chatlog",
|
151
|
+
"time_elapsed_(seconds)",
|
152
|
+
"end_time",
|
153
|
+
]
|
154
|
+
default_model = "command"
|
155
|
+
elif response_type == "Classifications":
|
156
|
+
parsed_response = self._resolve_classify_response(response)
|
157
|
+
kwargs = self._resolve_classify_kwargs(kwargs)
|
158
|
+
table_column_order = [
|
159
|
+
"start_time",
|
160
|
+
"query_id",
|
161
|
+
"model",
|
162
|
+
"id",
|
163
|
+
"input",
|
164
|
+
"prediction",
|
165
|
+
"confidence",
|
166
|
+
"time_elapsed_(seconds)",
|
167
|
+
"end_time",
|
168
|
+
]
|
169
|
+
default_model = "embed-english-v2.0"
|
170
|
+
elif response_type == "SummarizeResponse":
|
171
|
+
parsed_response = self._resolve_summarize_response(response)
|
172
|
+
table_column_order = [
|
173
|
+
"start_time",
|
174
|
+
"query_id",
|
175
|
+
"model",
|
176
|
+
"response_id",
|
177
|
+
"text",
|
178
|
+
"additional_command",
|
179
|
+
"summary",
|
180
|
+
"time_elapsed_(seconds)",
|
181
|
+
"end_time",
|
182
|
+
"length",
|
183
|
+
"format",
|
184
|
+
]
|
185
|
+
default_model = "summarize-xlarge"
|
186
|
+
elif response_type == "Reranking":
|
187
|
+
parsed_response = self._resolve_rerank_response(response)
|
188
|
+
table_column_order = [
|
189
|
+
"start_time",
|
190
|
+
"query_id",
|
191
|
+
"model",
|
192
|
+
"id",
|
193
|
+
"query",
|
194
|
+
"top_n",
|
195
|
+
# This is a nested dict key that got flattened
|
196
|
+
"document-text",
|
197
|
+
"relevance_score",
|
198
|
+
"index",
|
199
|
+
"time_elapsed_(seconds)",
|
200
|
+
"end_time",
|
201
|
+
]
|
202
|
+
default_model = "rerank-english-v2.0"
|
203
|
+
else:
|
204
|
+
logger.info(f"Unsupported Cohere response object: {response}")
|
205
|
+
|
206
|
+
return self._resolve(
|
207
|
+
args,
|
208
|
+
kwargs,
|
209
|
+
parsed_response,
|
210
|
+
start_time,
|
211
|
+
time_elapsed,
|
212
|
+
response_type,
|
213
|
+
table_column_order,
|
214
|
+
default_model,
|
215
|
+
)
|
216
|
+
except Exception as e:
|
217
|
+
logger.warning(f"Failed to resolve request/response: {e}")
|
218
|
+
return None
|
219
|
+
|
220
|
+
# These helper functions process the response from different endpoints of the Cohere API.
|
221
|
+
# Since the response objects for different endpoints have different structures,
|
222
|
+
# we need different logic to process them.
|
223
|
+
|
224
|
+
def _resolve_generate_response(self, response: Response) -> List[Dict[str, Any]]:
|
225
|
+
return_list = []
|
226
|
+
for _response in response:
|
227
|
+
# Built in Cohere.*.Generations function to color token_likelihoods and return a dict of response data
|
228
|
+
_response_dict = _response._visualize_helper()
|
229
|
+
try:
|
230
|
+
_response_dict["token_likelihoods"] = wandb.Html(
|
231
|
+
_response_dict["token_likelihoods"]
|
232
|
+
)
|
233
|
+
except (KeyError, ValueError):
|
234
|
+
pass
|
235
|
+
return_list.append(_response_dict)
|
236
|
+
|
237
|
+
return return_list
|
238
|
+
|
239
|
+
def _resolve_chat_response(self, response: Response) -> List[Dict[str, Any]]:
|
240
|
+
return [
|
241
|
+
subset_dict(
|
242
|
+
response.__dict__,
|
243
|
+
[
|
244
|
+
"response_id",
|
245
|
+
"generation_id",
|
246
|
+
"query",
|
247
|
+
"text",
|
248
|
+
"conversation_id",
|
249
|
+
"prompt",
|
250
|
+
"chatlog",
|
251
|
+
"preamble",
|
252
|
+
],
|
253
|
+
)
|
254
|
+
]
|
255
|
+
|
256
|
+
def _resolve_classify_response(self, response: Response) -> List[Dict[str, Any]]:
|
257
|
+
# The labels key is a dict returning the scores for the classification probability for each label provided
|
258
|
+
# We flatten this nested dict for ease of consumption in the wandb UI
|
259
|
+
return [flatten_dict(_response.__dict__) for _response in response]
|
260
|
+
|
261
|
+
def _resolve_classify_kwargs(self, kwargs: Dict[str, Any]) -> Dict[str, Any]:
|
262
|
+
# Example texts look strange when rendered in Wandb UI as it is a list of text and label
|
263
|
+
# We extract each value into its own column
|
264
|
+
example_texts = []
|
265
|
+
example_labels = []
|
266
|
+
for example in kwargs["examples"]:
|
267
|
+
example_texts.append(example.text)
|
268
|
+
example_labels.append(example.label)
|
269
|
+
kwargs.pop("examples")
|
270
|
+
kwargs["example_texts"] = example_texts
|
271
|
+
kwargs["example_labels"] = example_labels
|
272
|
+
return kwargs
|
273
|
+
|
274
|
+
def _resolve_summarize_response(self, response: Response) -> List[Dict[str, Any]]:
|
275
|
+
return [{"response_id": response.id, "summary": response.summary}]
|
276
|
+
|
277
|
+
def _resolve_rerank_response(self, response: Response) -> List[Dict[str, Any]]:
|
278
|
+
# The documents key contains a dict containing the content of the document which is at least "text"
|
279
|
+
# We flatten this nested dict for ease of consumption in the wandb UI
|
280
|
+
flattened_response_dicts = [
|
281
|
+
flatten_dict(_response.__dict__) for _response in response
|
282
|
+
]
|
283
|
+
# ReRank returns each document provided a top_n value so we aggregate into one view so users can paginate a row
|
284
|
+
# As opposed to each row being one of the top_n responses
|
285
|
+
return_dict = collect_common_keys(flattened_response_dicts)
|
286
|
+
return_dict["id"] = response.id
|
287
|
+
return [return_dict]
|
288
|
+
|
289
|
+
def _resolve(
|
290
|
+
self,
|
291
|
+
args: Sequence[Any],
|
292
|
+
kwargs: Dict[str, Any],
|
293
|
+
parsed_response: List[Dict[str, Any]],
|
294
|
+
start_time: float,
|
295
|
+
time_elapsed: float,
|
296
|
+
response_type: str,
|
297
|
+
table_column_order: List[str],
|
298
|
+
default_model: str,
|
299
|
+
) -> Dict[str, Any]:
|
300
|
+
"""Convert a list of dictionaries to a pair of column names and corresponding values, with the option to order specific dictionaries.
|
301
|
+
|
302
|
+
:param args: The arguments passed to the API client.
|
303
|
+
:param kwargs: The keyword arguments passed to the API client.
|
304
|
+
:param parsed_response: The parsed response from the API.
|
305
|
+
:param start_time: The start time of the API request.
|
306
|
+
:param time_elapsed: The time elapsed during the API request.
|
307
|
+
:param response_type: The type of the API response.
|
308
|
+
:param table_column_order: The desired order of columns in the resulting table.
|
309
|
+
:param default_model: The default model to use if not specified in the response.
|
310
|
+
:return: A dictionary containing the formatted response.
|
311
|
+
"""
|
312
|
+
# Args[0] is the client object where we can grab specific metadata about the underlying API status
|
313
|
+
query_id = generate_id(length=16)
|
314
|
+
parsed_args = subset_dict(
|
315
|
+
args[0].__dict__,
|
316
|
+
["api_version", "batch_size", "max_retries", "num_workers", "timeout"],
|
317
|
+
)
|
318
|
+
|
319
|
+
start_time_dt = datetime.fromtimestamp(start_time)
|
320
|
+
end_time_dt = datetime.fromtimestamp(start_time + time_elapsed)
|
321
|
+
|
322
|
+
timings = {
|
323
|
+
"start_time": start_time_dt,
|
324
|
+
"end_time": end_time_dt,
|
325
|
+
"time_elapsed_(seconds)": time_elapsed,
|
326
|
+
}
|
327
|
+
|
328
|
+
packed_data = []
|
329
|
+
for _parsed_response in parsed_response:
|
330
|
+
_packed_dict = {
|
331
|
+
"query_id": query_id,
|
332
|
+
**kwargs,
|
333
|
+
**_parsed_response,
|
334
|
+
**timings,
|
335
|
+
**parsed_args,
|
336
|
+
}
|
337
|
+
if "model" not in _packed_dict:
|
338
|
+
_packed_dict["model"] = default_model
|
339
|
+
packed_data.append(_packed_dict)
|
340
|
+
|
341
|
+
columns, data = reorder_and_convert_dict_list_to_table(
|
342
|
+
packed_data, table_column_order
|
343
|
+
)
|
344
|
+
|
345
|
+
request_response_table = wandb.Table(data=data, columns=columns)
|
346
|
+
|
347
|
+
return {f"{response_type}": request_response_table}
|
@@ -0,0 +1,76 @@
|
|
1
|
+
import logging
|
2
|
+
|
3
|
+
from wandb.sdk.integration_utils.auto_logging import AutologAPI
|
4
|
+
|
5
|
+
from .pipeline_resolver import DiffusersPipelineResolver
|
6
|
+
|
7
|
+
logger = logging.getLogger(__name__)
|
8
|
+
|
9
|
+
autolog = AutologAPI(
|
10
|
+
name="diffusers",
|
11
|
+
symbols=(
|
12
|
+
"DiffusionPipeline.__call__",
|
13
|
+
"AutoPipelineForText2Image.__call__",
|
14
|
+
"AutoPipelineForImage2Image.__call__",
|
15
|
+
"AutoPipelineForInpainting.__call__",
|
16
|
+
"StableDiffusionPipeline.__call__",
|
17
|
+
"KandinskyCombinedPipeline.__call__",
|
18
|
+
"KandinskyV22CombinedPipeline.__call__",
|
19
|
+
"LatentConsistencyModelPipeline.__call__",
|
20
|
+
"LDMTextToImagePipeline.__call__",
|
21
|
+
"StableDiffusionPanoramaPipeline.__call__",
|
22
|
+
"StableDiffusionParadigmsPipeline.__call__",
|
23
|
+
"PixArtAlphaPipeline.__call__",
|
24
|
+
"StableDiffusionSAGPipeline.__call__",
|
25
|
+
"SemanticStableDiffusionPipeline.__call__",
|
26
|
+
"WuerstchenCombinedPipeline.__call__",
|
27
|
+
"AltDiffusionPipeline.__call__",
|
28
|
+
"StableDiffusionAttendAndExcitePipeline.__call__",
|
29
|
+
"StableDiffusionXLPipeline.__call__",
|
30
|
+
"StableDiffusionXLImg2ImgPipeline.__call__",
|
31
|
+
"IFPipeline.__call__",
|
32
|
+
"BlipDiffusionPipeline.__call__",
|
33
|
+
"BlipDiffusionControlNetPipeline.__call__",
|
34
|
+
"StableDiffusionControlNetPipeline.__call__",
|
35
|
+
"StableDiffusionControlNetImg2ImgPipeline.__call__",
|
36
|
+
"StableDiffusionControlNetInpaintPipeline.__call__",
|
37
|
+
"CycleDiffusionPipeline.__call__",
|
38
|
+
"StableDiffusionInstructPix2PixPipeline.__call__",
|
39
|
+
"PaintByExamplePipeline.__call__",
|
40
|
+
"RePaintPipeline.__call__",
|
41
|
+
"KandinskyImg2ImgCombinedPipeline.__call__",
|
42
|
+
"KandinskyInpaintCombinedPipeline.__call__",
|
43
|
+
"KandinskyV22Img2ImgCombinedPipeline.__call__",
|
44
|
+
"KandinskyV22InpaintCombinedPipeline.__call__",
|
45
|
+
"Kandinsky3Pipeline.__call__",
|
46
|
+
"Kandinsky3Img2ImgPipeline.__call__",
|
47
|
+
"AnimateDiffPipeline.__call__",
|
48
|
+
"AudioLDMPipeline.__call__",
|
49
|
+
"AudioLDM2Pipeline.__call__",
|
50
|
+
"MusicLDMPipeline.__call__",
|
51
|
+
"StableDiffusionPix2PixZeroPipeline.__call__",
|
52
|
+
"PNDMPipeline.__call__",
|
53
|
+
"ShapEPipeline.__call__",
|
54
|
+
"StableDiffusionImg2ImgPipeline.__call__",
|
55
|
+
"StableDiffusionInpaintPipeline.__call__",
|
56
|
+
"StableDiffusionDepth2ImgPipeline.__call__",
|
57
|
+
"StableDiffusionImageVariationPipeline.__call__",
|
58
|
+
"StableDiffusionPipelineSafe.__call__",
|
59
|
+
"StableDiffusionUpscalePipeline.__call__",
|
60
|
+
"StableDiffusionAdapterPipeline.__call__",
|
61
|
+
"StableDiffusionGLIGENPipeline.__call__",
|
62
|
+
"StableDiffusionModelEditingPipeline.__call__",
|
63
|
+
"VersatileDiffusionTextToImagePipeline.__call__",
|
64
|
+
"VersatileDiffusionImageVariationPipeline.__call__",
|
65
|
+
"VersatileDiffusionDualGuidedPipeline.__call__",
|
66
|
+
"LDMPipeline.__call__",
|
67
|
+
"TextToVideoSDPipeline.__call__",
|
68
|
+
"TextToVideoZeroPipeline.__call__",
|
69
|
+
"StableVideoDiffusionPipeline.__call__",
|
70
|
+
"AmusedPipeline.__call__",
|
71
|
+
"StableDiffusionXLControlNetPipeline.__call__",
|
72
|
+
"StableDiffusionXLControlNetImg2ImgPipeline.__call__",
|
73
|
+
),
|
74
|
+
resolver=DiffusersPipelineResolver(),
|
75
|
+
telemetry_feature="diffusers_autolog",
|
76
|
+
)
|
@@ -0,0 +1,50 @@
|
|
1
|
+
from typing import Any, Dict, Sequence
|
2
|
+
|
3
|
+
from wandb.sdk.integration_utils.auto_logging import Response
|
4
|
+
|
5
|
+
from .resolvers import (
|
6
|
+
SUPPORTED_MULTIMODAL_PIPELINES,
|
7
|
+
DiffusersMultiModalPipelineResolver,
|
8
|
+
)
|
9
|
+
|
10
|
+
|
11
|
+
class DiffusersPipelineResolver:
|
12
|
+
"""Resolver for `DiffusionPipeline` request and responses from [HuggingFace Diffusers](https://huggingface.co/docs/diffusers/index), providing necessary data transformations, formatting, and logging.
|
13
|
+
|
14
|
+
This is based off `wandb.sdk.integration_utils.auto_logging.RequestResponseResolver`.
|
15
|
+
"""
|
16
|
+
|
17
|
+
def __init__(self) -> None:
|
18
|
+
self.wandb_table = None
|
19
|
+
self.pipeline_call_count = 1
|
20
|
+
|
21
|
+
def __call__(
|
22
|
+
self,
|
23
|
+
args: Sequence[Any],
|
24
|
+
kwargs: Dict[str, Any],
|
25
|
+
response: Response,
|
26
|
+
start_time: float,
|
27
|
+
time_elapsed: float,
|
28
|
+
) -> Any:
|
29
|
+
"""Main call method for the `DiffusersPipelineResolver` class.
|
30
|
+
|
31
|
+
Args:
|
32
|
+
args: (Sequence[Any]) List of arguments.
|
33
|
+
kwargs: (Dict[str, Any]) Dictionary of keyword arguments.
|
34
|
+
response: (wandb.sdk.integration_utils.auto_logging.Response) The response from
|
35
|
+
the request.
|
36
|
+
start_time: (float) Time when request started.
|
37
|
+
time_elapsed: (float) Time elapsed for the request.
|
38
|
+
|
39
|
+
Returns:
|
40
|
+
Packed data as a dictionary for logging to wandb, None if an exception occurred.
|
41
|
+
"""
|
42
|
+
pipeline_name = args[0].__class__.__name__
|
43
|
+
resolver = None
|
44
|
+
if pipeline_name in SUPPORTED_MULTIMODAL_PIPELINES:
|
45
|
+
resolver = DiffusersMultiModalPipelineResolver(
|
46
|
+
pipeline_name, self.pipeline_call_count
|
47
|
+
)
|
48
|
+
self.pipeline_call_count += 1
|
49
|
+
loggable_dict = resolver(args, kwargs, response, start_time, time_elapsed)
|
50
|
+
return loggable_dict
|