From c16b4f981c6718940cb751d6963e88465ee685ad Mon Sep 17 00:00:00 2001 From: alanpo1 <143033175+alanpo1@users.noreply.github.com> Date: Tue, 11 Jun 2024 16:14:50 -0700 Subject: [PATCH] Hotfix import of AzureMLOnBehalfOfCredential to only credential-less datastore scenario. (#3032) * hotfix the importing of new azureML OBO token class * syntatx * syntax * also init the token service endpoint * comment * add debug logs for which credential is returned from StoreUrl.get_credential() * differentiate different debug messages * upgrade all component versions * improve arrangement of try/catch block --- .../data_drift_compute_metrics/spec.yaml | 2 +- .../data_drift_signal_monitor/spec.yaml | 18 +++--- .../data_quality_compute_metrics/spec.yaml | 2 +- .../data_quality_metrics_joiner/spec.yaml | 2 +- .../data_quality_signal_monitor/spec.yaml | 18 +++--- .../data_quality_statistics/spec.yaml | 2 +- .../spec.yaml | 2 +- .../spec.yaml | 12 ++-- .../feature_importance_metrics/spec.yaml | 2 +- .../spec.yaml | 2 +- .../spec.yaml | 6 +- .../annotation_compute_histogram/spec.yaml | 2 +- .../annotation_compute_metrics/spec.yaml | 2 +- .../spec.yaml | 12 ++-- .../input_schema_adaptor/spec.yaml | 2 +- .../genai_mdc_preprocessor/spec.yaml | 2 +- .../spec.yaml | 2 +- .../spec.yaml | 2 +- .../model_monitor_compute_histogram/spec.yaml | 2 +- .../spec.yaml | 2 +- .../model_monitor_create_manifest/spec.yaml | 2 +- .../model_monitor_data_joiner/spec.yaml | 2 +- .../spec.yaml | 2 +- .../model_monitor_feature_selector/spec.yaml | 2 +- .../model_monitor_metric_outputter/spec.yaml | 2 +- .../model_monitor_output_metrics/spec.yaml | 2 +- .../spec.yaml | 2 +- .../spec.yaml | 2 +- .../spec.yaml | 2 +- .../action_analyzer_output_actions/spec.yaml | 2 +- .../model_monitor_action_analyzer/spec.yaml | 10 ++-- .../model_monitor_action_detector/spec.yaml | 2 +- .../spec.yaml | 2 +- .../spec.yaml | 8 +-- .../prediction_drift_signal_monitor/spec.yaml | 16 ++--- .../src/model_monitor_create_manifest/run.py | 19 ++++-- .../src/shared_utilities/io_utils.py | 27 +++++++-- .../src/shared_utilities/store_url.py | 60 +++++++++++++------ .../spec.yaml | 2 +- 39 files changed, 156 insertions(+), 106 deletions(-) diff --git a/assets/model_monitoring/components/data_drift/data_drift_compute_metrics/spec.yaml b/assets/model_monitoring/components/data_drift/data_drift_compute_metrics/spec.yaml index c16041071b..1f7d4d6857 100644 --- a/assets/model_monitoring/components/data_drift/data_drift_compute_metrics/spec.yaml +++ b/assets/model_monitoring/components/data_drift/data_drift_compute_metrics/spec.yaml @@ -4,7 +4,7 @@ type: spark name: data_drift_compute_metrics display_name: Data Drift - Compute Metrics description: Compute data drift metrics given a baseline and a deployment's model data input. -version: 0.3.21 +version: 0.3.22 is_deterministic: true code: ../../src diff --git a/assets/model_monitoring/components/data_drift/data_drift_signal_monitor/spec.yaml b/assets/model_monitoring/components/data_drift/data_drift_signal_monitor/spec.yaml index 78ce56aec7..80f7e5ffa7 100644 --- a/assets/model_monitoring/components/data_drift/data_drift_signal_monitor/spec.yaml +++ b/assets/model_monitoring/components/data_drift/data_drift_signal_monitor/spec.yaml @@ -4,7 +4,7 @@ type: pipeline name: data_drift_signal_monitor display_name: Data Drift - Signal Monitor description: Computes the data drift between a baseline and production data assets. -version: 0.3.40 +version: 0.3.41 is_deterministic: true inputs: @@ -63,7 +63,7 @@ outputs: jobs: compute_feature_importances: type: spark - component: azureml://registries/azureml/components/feature_importance_metrics/versions/0.3.19 + component: azureml://registries/azureml/components/feature_importance_metrics/versions/0.3.20 inputs: baseline_data: type: mltable @@ -82,7 +82,7 @@ jobs: type: aml_token feature_selection: type: spark - component: azureml://registries/azureml/components/model_monitor_feature_selector/versions/0.3.15 + component: azureml://registries/azureml/components/model_monitor_feature_selector/versions/0.3.16 inputs: input_data_1: type: mltable @@ -103,7 +103,7 @@ jobs: type: aml_token compute_drift_metrics: type: spark - component: azureml://registries/azureml/components/data_drift_compute_metrics/versions/0.3.21 + component: azureml://registries/azureml/components/data_drift_compute_metrics/versions/0.3.22 inputs: production_dataset: type: mltable @@ -130,7 +130,7 @@ jobs: type: aml_token compute_histogram_buckets: type: spark - component: azureml://registries/azureml/components/model_monitor_compute_histogram_buckets/versions/0.3.15 + component: azureml://registries/azureml/components/model_monitor_compute_histogram_buckets/versions/0.3.16 inputs: input_data_1: type: mltable @@ -150,7 +150,7 @@ jobs: type: aml_token compute_baseline_histogram: type: spark - component: azureml://registries/azureml/components/model_monitor_compute_histogram/versions/0.3.15 + component: azureml://registries/azureml/components/model_monitor_compute_histogram/versions/0.3.16 inputs: input_data: type: mltable @@ -170,7 +170,7 @@ jobs: type: aml_token compute_target_histogram: type: spark - component: azureml://registries/azureml/components/model_monitor_compute_histogram/versions/0.3.15 + component: azureml://registries/azureml/components/model_monitor_compute_histogram/versions/0.3.16 inputs: input_data: type: mltable @@ -190,7 +190,7 @@ jobs: type: aml_token output_signal_metrics: type: spark - component: azureml://registries/azureml/components/model_monitor_output_metrics/versions/0.3.19 + component: azureml://registries/azureml/components/model_monitor_output_metrics/versions/0.3.20 inputs: signal_metrics: type: mltable @@ -218,7 +218,7 @@ jobs: type: aml_token evaluate_metric_thresholds: type: spark - component: azureml://registries/azureml/components/model_monitor_evaluate_metrics_threshold/versions/0.3.20 + component: azureml://registries/azureml/components/model_monitor_evaluate_metrics_threshold/versions/0.3.21 inputs: signal_metrics: type: mltable diff --git a/assets/model_monitoring/components/data_quality/data_quality_compute_metrics/spec.yaml b/assets/model_monitoring/components/data_quality/data_quality_compute_metrics/spec.yaml index 19f2cf8605..69b5f5421b 100644 --- a/assets/model_monitoring/components/data_quality/data_quality_compute_metrics/spec.yaml +++ b/assets/model_monitoring/components/data_quality/data_quality_compute_metrics/spec.yaml @@ -4,7 +4,7 @@ type: spark name: data_quality_compute_metrics display_name: Data Quality - Compute Metrics description: Compute data quality metrics leveraged by the data quality monitor. -version: 0.3.19 +version: 0.3.20 is_deterministic: true inputs: diff --git a/assets/model_monitoring/components/data_quality/data_quality_metrics_joiner/spec.yaml b/assets/model_monitoring/components/data_quality/data_quality_metrics_joiner/spec.yaml index 4b2e2d62e1..49131e7fad 100644 --- a/assets/model_monitoring/components/data_quality/data_quality_metrics_joiner/spec.yaml +++ b/assets/model_monitoring/components/data_quality/data_quality_metrics_joiner/spec.yaml @@ -4,7 +4,7 @@ type: spark name: data_quality_metrics_joiner display_name: Data Quality - Metrics Joiner description: Join baseline and target data quality metrics into a single output. -version: 0.3.13 +version: 0.3.14 is_deterministic: true inputs: diff --git a/assets/model_monitoring/components/data_quality/data_quality_signal_monitor/spec.yaml b/assets/model_monitoring/components/data_quality/data_quality_signal_monitor/spec.yaml index 4541be352b..f3951694e0 100644 --- a/assets/model_monitoring/components/data_quality/data_quality_signal_monitor/spec.yaml +++ b/assets/model_monitoring/components/data_quality/data_quality_signal_monitor/spec.yaml @@ -4,7 +4,7 @@ type: pipeline name: data_quality_signal_monitor display_name: Data Quality - Signal Monitor description: Computes the data quality of a target dataset with reference to a baseline. -version: 0.3.38 +version: 0.3.39 is_deterministic: true inputs: @@ -63,7 +63,7 @@ outputs: jobs: compute_feature_importances: type: spark - component: azureml://registries/azureml/components/feature_importance_metrics/versions/0.3.19 + component: azureml://registries/azureml/components/feature_importance_metrics/versions/0.3.20 inputs: baseline_data: type: mltable @@ -82,7 +82,7 @@ jobs: type: aml_token feature_selection: type: spark - component: azureml://registries/azureml/components/model_monitor_feature_selector/versions/0.3.15 + component: azureml://registries/azureml/components/model_monitor_feature_selector/versions/0.3.16 inputs: input_data_1: type: mltable @@ -103,7 +103,7 @@ jobs: type: aml_token compute_baseline_data_statistics: type: spark - component: azureml://registries/azureml/components/data_quality_data_statistics/versions/0.3.15 + component: azureml://registries/azureml/components/data_quality_data_statistics/versions/0.3.16 inputs: baseline_data: type: mltable @@ -120,7 +120,7 @@ jobs: type: aml_token compute_baseline_data_quality: type: spark - component: azureml://registries/azureml/components/data_quality_compute_metrics/versions/0.3.19 + component: azureml://registries/azureml/components/data_quality_compute_metrics/versions/0.3.20 inputs: input_data: type: mltable @@ -145,7 +145,7 @@ jobs: type: aml_token compute_target_data_quality: type: spark - component: azureml://registries/azureml/components/data_quality_compute_metrics/versions/0.3.19 + component: azureml://registries/azureml/components/data_quality_compute_metrics/versions/0.3.20 inputs: input_data: type: mltable @@ -168,7 +168,7 @@ jobs: type: aml_token join_data_quality_metrics: type: spark - component: azureml://registries/azureml/components/data_quality_metrics_joiner/versions/0.3.13 + component: azureml://registries/azureml/components/data_quality_metrics_joiner/versions/0.3.14 inputs: baseline_metrics: type: mltable @@ -188,7 +188,7 @@ jobs: type: aml_token output_signal_metrics: type: spark - component: azureml://registries/azureml/components/model_monitor_output_metrics/versions/0.3.19 + component: azureml://registries/azureml/components/model_monitor_output_metrics/versions/0.3.20 inputs: signal_metrics: type: mltable @@ -210,7 +210,7 @@ jobs: type: aml_token evaluate_metric_thresholds: type: spark - component: azureml://registries/azureml/components/model_monitor_evaluate_metrics_threshold/versions/0.3.20 + component: azureml://registries/azureml/components/model_monitor_evaluate_metrics_threshold/versions/0.3.21 inputs: signal_metrics: type: mltable diff --git a/assets/model_monitoring/components/data_quality/data_quality_statistics/spec.yaml b/assets/model_monitoring/components/data_quality/data_quality_statistics/spec.yaml index dbf3786c15..f967bf67f7 100644 --- a/assets/model_monitoring/components/data_quality/data_quality_statistics/spec.yaml +++ b/assets/model_monitoring/components/data_quality/data_quality_statistics/spec.yaml @@ -4,7 +4,7 @@ type: spark name: data_quality_data_statistics display_name: Data Quality - Data Statistics description: Compute data statistics leveraged by the data quality monitor. -version: 0.3.15 +version: 0.3.16 is_deterministic: true inputs: diff --git a/assets/model_monitoring/components/feature_attribution_drift/feature_attribution_drift_compute_metrics/spec.yaml b/assets/model_monitoring/components/feature_attribution_drift/feature_attribution_drift_compute_metrics/spec.yaml index f364e463f6..7308e460d3 100644 --- a/assets/model_monitoring/components/feature_attribution_drift/feature_attribution_drift_compute_metrics/spec.yaml +++ b/assets/model_monitoring/components/feature_attribution_drift/feature_attribution_drift_compute_metrics/spec.yaml @@ -2,7 +2,7 @@ $schema: http://azureml/sdk-2-0/SparkComponent.json type: spark name: feature_attribution_drift_compute_metrics -version: 0.3.16 +version: 0.3.17 display_name: Feature Attribution Drift - Compute Metrics is_deterministic: true description: Feature attribution drift using model monitoring. diff --git a/assets/model_monitoring/components/feature_attribution_drift/feature_attribution_drift_signal_monitor/spec.yaml b/assets/model_monitoring/components/feature_attribution_drift/feature_attribution_drift_signal_monitor/spec.yaml index 43e652b1a8..09a7c077dd 100644 --- a/assets/model_monitoring/components/feature_attribution_drift/feature_attribution_drift_signal_monitor/spec.yaml +++ b/assets/model_monitoring/components/feature_attribution_drift/feature_attribution_drift_signal_monitor/spec.yaml @@ -4,7 +4,7 @@ type: pipeline name: feature_attribution_drift_signal_monitor display_name: Feature Attribution Drift - Signal Monitor description: Computes the feature attribution between a baseline and production data assets. -version: 0.3.31 +version: 0.3.32 is_deterministic: true inputs: @@ -44,7 +44,7 @@ outputs: jobs: compute_baseline_explanations: type: spark - component: azureml://registries/azureml/components/feature_importance_metrics/versions/0.3.19 + component: azureml://registries/azureml/components/feature_importance_metrics/versions/0.3.20 inputs: baseline_data: type: mltable @@ -63,7 +63,7 @@ jobs: type: aml_token compute_production_explanations: type: spark - component: azureml://registries/azureml/components/feature_importance_metrics/versions/0.3.19 + component: azureml://registries/azureml/components/feature_importance_metrics/versions/0.3.20 inputs: baseline_data: type: mltable @@ -82,7 +82,7 @@ jobs: type: aml_token compute_feature_attribution: type: spark - component: azureml://registries/azureml/components/feature_attribution_drift_compute_metrics/versions/0.3.16 + component: azureml://registries/azureml/components/feature_attribution_drift_compute_metrics/versions/0.3.17 inputs: production_data: type: mltable @@ -101,7 +101,7 @@ jobs: type: aml_token output_signal_metrics: type: spark - component: azureml://registries/azureml/components/model_monitor_output_metrics/versions/0.3.19 + component: azureml://registries/azureml/components/model_monitor_output_metrics/versions/0.3.20 inputs: signal_metrics: type: mltable @@ -122,7 +122,7 @@ jobs: type: aml_token evaluate_metric_thresholds: type: spark - component: azureml://registries/azureml/components/model_monitor_evaluate_metrics_threshold/versions/0.3.20 + component: azureml://registries/azureml/components/model_monitor_evaluate_metrics_threshold/versions/0.3.21 inputs: signal_metrics: type: mltable diff --git a/assets/model_monitoring/components/feature_attribution_drift/feature_importance_metrics/spec.yaml b/assets/model_monitoring/components/feature_attribution_drift/feature_importance_metrics/spec.yaml index c2173ed0f0..b327d813d0 100644 --- a/assets/model_monitoring/components/feature_attribution_drift/feature_importance_metrics/spec.yaml +++ b/assets/model_monitoring/components/feature_attribution_drift/feature_importance_metrics/spec.yaml @@ -2,7 +2,7 @@ $schema: http://azureml/sdk-2-0/SparkComponent.json type: spark name: feature_importance_metrics -version: 0.3.19 +version: 0.3.20 display_name: Feature importance is_deterministic: true description: Feature importance for model monitoring. diff --git a/assets/model_monitoring/components/genai_token_statistics/genai_token_statistics_compute_metrics/spec.yaml b/assets/model_monitoring/components/genai_token_statistics/genai_token_statistics_compute_metrics/spec.yaml index fd68c551f7..e07bc92779 100644 --- a/assets/model_monitoring/components/genai_token_statistics/genai_token_statistics_compute_metrics/spec.yaml +++ b/assets/model_monitoring/components/genai_token_statistics/genai_token_statistics_compute_metrics/spec.yaml @@ -4,7 +4,7 @@ type: spark name: genai_token_statistics_compute_metrics display_name: GenAI Token Statistics - Compute Metrics description: Compute token statistics metrics. -version: 0.0.8 +version: 0.0.9 is_deterministic: true inputs: diff --git a/assets/model_monitoring/components/genai_token_statistics/genai_token_statistics_signal_monitor/spec.yaml b/assets/model_monitoring/components/genai_token_statistics/genai_token_statistics_signal_monitor/spec.yaml index c1917248a7..21b4bd2c68 100644 --- a/assets/model_monitoring/components/genai_token_statistics/genai_token_statistics_signal_monitor/spec.yaml +++ b/assets/model_monitoring/components/genai_token_statistics/genai_token_statistics_signal_monitor/spec.yaml @@ -4,7 +4,7 @@ type: pipeline name: genai_token_statistics_signal_monitor display_name: GenAI Token Statistics - Signal Monitor description: Computes the token and cost metrics over LLM outputs. -version: 0.0.8 +version: 0.0.9 is_deterministic: true inputs: monitor_name: @@ -30,7 +30,7 @@ outputs: jobs: compute_metrics: type: spark - component: azureml://registries/azureml/components/genai_token_statistics_compute_metrics/versions/0.0.8 + component: azureml://registries/azureml/components/genai_token_statistics_compute_metrics/versions/0.0.9 inputs: production_dataset: type: mltable @@ -49,7 +49,7 @@ jobs: type: aml_token output_signal_metrics: type: spark - component: azureml://registries/azureml/components/model_monitor_metric_outputter/versions/0.3.23 + component: azureml://registries/azureml/components/model_monitor_metric_outputter/versions/0.3.24 inputs: signal_metrics: type: mltable diff --git a/assets/model_monitoring/components/generation_safety_quality/annotation_compute_histogram/spec.yaml b/assets/model_monitoring/components/generation_safety_quality/annotation_compute_histogram/spec.yaml index 726bef4ea1..4d4ec1f4c4 100644 --- a/assets/model_monitoring/components/generation_safety_quality/annotation_compute_histogram/spec.yaml +++ b/assets/model_monitoring/components/generation_safety_quality/annotation_compute_histogram/spec.yaml @@ -4,7 +4,7 @@ type: spark name: gsq_annotation_compute_histogram display_name: Annotation - Compute Histogram description: Compute annotation histogram given a deployment's model data input. -version: 0.4.23 +version: 0.4.24 is_deterministic: false inputs: production_dataset: diff --git a/assets/model_monitoring/components/generation_safety_quality/annotation_compute_metrics/spec.yaml b/assets/model_monitoring/components/generation_safety_quality/annotation_compute_metrics/spec.yaml index 83cb86d24e..ac870c772d 100644 --- a/assets/model_monitoring/components/generation_safety_quality/annotation_compute_metrics/spec.yaml +++ b/assets/model_monitoring/components/generation_safety_quality/annotation_compute_metrics/spec.yaml @@ -4,7 +4,7 @@ type: spark name: gsq_annotation_compute_metrics display_name: Annotation - Compute Metrics description: Compute annotation metrics given a deployment's model data input. -version: 0.4.16 +version: 0.4.17 is_deterministic: True inputs: annotation_histogram: diff --git a/assets/model_monitoring/components/generation_safety_quality/generation_safety_quality_signal_monitor/spec.yaml b/assets/model_monitoring/components/generation_safety_quality/generation_safety_quality_signal_monitor/spec.yaml index a7fa7f17a4..4708e69ad4 100644 --- a/assets/model_monitoring/components/generation_safety_quality/generation_safety_quality_signal_monitor/spec.yaml +++ b/assets/model_monitoring/components/generation_safety_quality/generation_safety_quality_signal_monitor/spec.yaml @@ -4,7 +4,7 @@ type: pipeline name: generation_safety_quality_signal_monitor display_name: Generation Safety & Quality - Signal Monitor description: Computes the content generation safety metrics over LLM outputs. -version: 0.5.14 +version: 0.5.15 is_deterministic: true inputs: monitor_name: @@ -109,7 +109,7 @@ outputs: jobs: input_schema_adaptor: type: spark - component: azureml://registries/azureml/components/gsq_input_schema_adaptor/versions/0.0.11 + component: azureml://registries/azureml/components/gsq_input_schema_adaptor/versions/0.0.12 inputs: production_dataset: type: mltable @@ -124,7 +124,7 @@ jobs: type: aml_token compute_histogram: type: spark - component: azureml://registries/azureml/components/gsq_annotation_compute_histogram/versions/0.4.23 + component: azureml://registries/azureml/components/gsq_annotation_compute_histogram/versions/0.4.24 inputs: production_dataset: type: mltable @@ -167,7 +167,7 @@ jobs: type: aml_token compute_metrics: type: spark - component: azureml://registries/azureml/components/gsq_annotation_compute_metrics/versions/0.4.16 + component: azureml://registries/azureml/components/gsq_annotation_compute_metrics/versions/0.4.17 inputs: annotation_histogram: type: mltable @@ -189,7 +189,7 @@ jobs: type: aml_token output_signal_metrics: type: spark - component: azureml://registries/azureml/components/model_monitor_metric_outputter/versions/0.3.23 + component: azureml://registries/azureml/components/model_monitor_metric_outputter/versions/0.3.24 inputs: signal_metrics: type: mltable @@ -211,7 +211,7 @@ jobs: type: aml_token evaluate_metric_thresholds: type: spark - component: azureml://registries/azureml/components/model_monitor_evaluate_metrics_threshold/versions/0.3.20 + component: azureml://registries/azureml/components/model_monitor_evaluate_metrics_threshold/versions/0.3.21 inputs: signal_metrics: type: mltable diff --git a/assets/model_monitoring/components/generation_safety_quality/input_schema_adaptor/spec.yaml b/assets/model_monitoring/components/generation_safety_quality/input_schema_adaptor/spec.yaml index 4f987d0bba..139fe75885 100644 --- a/assets/model_monitoring/components/generation_safety_quality/input_schema_adaptor/spec.yaml +++ b/assets/model_monitoring/components/generation_safety_quality/input_schema_adaptor/spec.yaml @@ -4,7 +4,7 @@ type: spark name: gsq_input_schema_adaptor display_name: Input Schema Adaptor description: Adapt data to fit into GSQ component. -version: 0.0.11 +version: 0.0.12 is_deterministic: True inputs: production_dataset: diff --git a/assets/model_monitoring/components/model_monitor/genai_mdc_preprocessor/spec.yaml b/assets/model_monitoring/components/model_monitor/genai_mdc_preprocessor/spec.yaml index 78f16447a8..ee15e28106 100644 --- a/assets/model_monitoring/components/model_monitor/genai_mdc_preprocessor/spec.yaml +++ b/assets/model_monitoring/components/model_monitor/genai_mdc_preprocessor/spec.yaml @@ -4,7 +4,7 @@ type: spark name: genai_mdc_preprocessor display_name: GenAI MDC - Preprocessor description: Filters the raw span log based on the window provided, and aggregates it to trace level. -version: 0.0.15 +version: 0.0.16 is_deterministic: true code: ../../src diff --git a/assets/model_monitoring/components/model_monitor/model_data_collector_preprocessor/spec.yaml b/assets/model_monitoring/components/model_monitor/model_data_collector_preprocessor/spec.yaml index e83486cb05..07f743ec77 100644 --- a/assets/model_monitoring/components/model_monitor/model_data_collector_preprocessor/spec.yaml +++ b/assets/model_monitoring/components/model_monitor/model_data_collector_preprocessor/spec.yaml @@ -4,7 +4,7 @@ type: spark name: model_data_collector_preprocessor display_name: Model Data Collector - Preprocessor description: Filters the data based on the window provided. -version: 0.4.16 +version: 0.4.17 is_deterministic: true code: ../../src diff --git a/assets/model_monitoring/components/model_monitor/model_monitor_azmon_metric_publisher/spec.yaml b/assets/model_monitoring/components/model_monitor/model_monitor_azmon_metric_publisher/spec.yaml index fcb085b706..1d13f428f6 100644 --- a/assets/model_monitoring/components/model_monitor/model_monitor_azmon_metric_publisher/spec.yaml +++ b/assets/model_monitoring/components/model_monitor/model_monitor_azmon_metric_publisher/spec.yaml @@ -4,7 +4,7 @@ type: spark name: model_monitor_azmon_metric_publisher display_name: Model Monitor - Azure Monitor Metric Publisher description: Azure Monitor Publisher for the computed model monitor metrics. -version: 0.3.19 +version: 0.3.20 is_deterministic: true code: ../../src/ diff --git a/assets/model_monitoring/components/model_monitor/model_monitor_compute_histogram/spec.yaml b/assets/model_monitoring/components/model_monitor/model_monitor_compute_histogram/spec.yaml index eb1014b8e3..cf3c7156f5 100644 --- a/assets/model_monitoring/components/model_monitor/model_monitor_compute_histogram/spec.yaml +++ b/assets/model_monitoring/components/model_monitor/model_monitor_compute_histogram/spec.yaml @@ -4,7 +4,7 @@ type: spark name: model_monitor_compute_histogram display_name: Model Monitor - Compute Histogram description: Compute a histogram given an input data and associated histogram buckets. -version: 0.3.15 +version: 0.3.16 is_deterministic: true code: ../../src diff --git a/assets/model_monitoring/components/model_monitor/model_monitor_compute_histogram_buckets/spec.yaml b/assets/model_monitoring/components/model_monitor/model_monitor_compute_histogram_buckets/spec.yaml index 54da86a931..acdb311bd4 100644 --- a/assets/model_monitoring/components/model_monitor/model_monitor_compute_histogram_buckets/spec.yaml +++ b/assets/model_monitoring/components/model_monitor/model_monitor_compute_histogram_buckets/spec.yaml @@ -4,7 +4,7 @@ type: spark name: model_monitor_compute_histogram_buckets display_name: Model Monitor - Compute Histogram Buckets description: Compute histogram buckets given up to two datasets. -version: 0.3.15 +version: 0.3.16 is_deterministic: true code: ../../src diff --git a/assets/model_monitoring/components/model_monitor/model_monitor_create_manifest/spec.yaml b/assets/model_monitoring/components/model_monitor/model_monitor_create_manifest/spec.yaml index 644440a7d6..2aa111e520 100644 --- a/assets/model_monitoring/components/model_monitor/model_monitor_create_manifest/spec.yaml +++ b/assets/model_monitoring/components/model_monitor/model_monitor_create_manifest/spec.yaml @@ -4,7 +4,7 @@ type: spark name: model_monitor_create_manifest display_name: Model Monitor - Create Manifest description: Creates the model monitor metric manifest. -version: 0.3.12 +version: 0.3.13 is_deterministic: true code: ../../src/ diff --git a/assets/model_monitoring/components/model_monitor/model_monitor_data_joiner/spec.yaml b/assets/model_monitoring/components/model_monitor/model_monitor_data_joiner/spec.yaml index 21d1f44daa..96eb74714c 100644 --- a/assets/model_monitoring/components/model_monitor/model_monitor_data_joiner/spec.yaml +++ b/assets/model_monitoring/components/model_monitor/model_monitor_data_joiner/spec.yaml @@ -4,7 +4,7 @@ type: spark name: model_monitor_data_joiner display_name: Model Monitor - Data Joiner description: Joins two data assets on the given columns for model monitor. -version: 0.3.15 +version: 0.3.16 is_deterministic: true code: ../../src/ diff --git a/assets/model_monitoring/components/model_monitor/model_monitor_evaluate_metrics_threshold/spec.yaml b/assets/model_monitoring/components/model_monitor/model_monitor_evaluate_metrics_threshold/spec.yaml index a3729ad995..e221578298 100644 --- a/assets/model_monitoring/components/model_monitor/model_monitor_evaluate_metrics_threshold/spec.yaml +++ b/assets/model_monitoring/components/model_monitor/model_monitor_evaluate_metrics_threshold/spec.yaml @@ -4,7 +4,7 @@ type: spark name: model_monitor_evaluate_metrics_threshold display_name: Model Monitor - Evaluate Metrics Threshold description: Evaluate signal metrics against the threshold provided in the monitoring signal. -version: 0.3.20 +version: 0.3.21 is_deterministic: true code: ../../src diff --git a/assets/model_monitoring/components/model_monitor/model_monitor_feature_selector/spec.yaml b/assets/model_monitoring/components/model_monitor/model_monitor_feature_selector/spec.yaml index e8c719404b..be5641ad2d 100644 --- a/assets/model_monitoring/components/model_monitor/model_monitor_feature_selector/spec.yaml +++ b/assets/model_monitoring/components/model_monitor/model_monitor_feature_selector/spec.yaml @@ -4,7 +4,7 @@ type: spark name: model_monitor_feature_selector display_name: Model Monitor - Feature Selector description: Selects features to compute signal metrics on. -version: 0.3.15 +version: 0.3.16 is_deterministic: true code: ../../src diff --git a/assets/model_monitoring/components/model_monitor/model_monitor_metric_outputter/spec.yaml b/assets/model_monitoring/components/model_monitor/model_monitor_metric_outputter/spec.yaml index b9ca9e7e30..a61a4433d0 100644 --- a/assets/model_monitoring/components/model_monitor/model_monitor_metric_outputter/spec.yaml +++ b/assets/model_monitoring/components/model_monitor/model_monitor_metric_outputter/spec.yaml @@ -4,7 +4,7 @@ type: spark name: model_monitor_metric_outputter display_name: Model Monitor - Metric Outputter description: Output the computed model monitor metrics. -version: 0.3.23 +version: 0.3.24 is_deterministic: true code: ../../src/ diff --git a/assets/model_monitoring/components/model_monitor/model_monitor_output_metrics/spec.yaml b/assets/model_monitoring/components/model_monitor/model_monitor_output_metrics/spec.yaml index 4d8cecca00..b848ac0dac 100644 --- a/assets/model_monitoring/components/model_monitor/model_monitor_output_metrics/spec.yaml +++ b/assets/model_monitoring/components/model_monitor/model_monitor_output_metrics/spec.yaml @@ -4,7 +4,7 @@ type: spark name: model_monitor_output_metrics display_name: Model Monitor - Output Metrics description: Output the computed model monitor metrics to the default datastore. -version: 0.3.19 +version: 0.3.20 is_deterministic: true code: ../../src/ diff --git a/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_correlation_test/spec.yaml b/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_correlation_test/spec.yaml index c544790ec2..dd34eb66bf 100644 --- a/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_correlation_test/spec.yaml +++ b/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_correlation_test/spec.yaml @@ -4,7 +4,7 @@ type: spark name: action_analyzer_correlation_test display_name: Action Analyzer - Correlation Test description: Perform correlation test on different groups to generate actions. -version: 0.0.9 +version: 0.0.10 is_deterministic: True inputs: data_with_action_metric_score: diff --git a/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_identify_problem_traffic/spec.yaml b/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_identify_problem_traffic/spec.yaml index 9655039f35..d3030ee213 100644 --- a/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_identify_problem_traffic/spec.yaml +++ b/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_identify_problem_traffic/spec.yaml @@ -4,7 +4,7 @@ type: spark name: action_analyzer_identify_problem_traffic display_name: Action Analyzer - Identify Problem Traffic description: Separate bad queries into different groups. -version: 0.0.12 +version: 0.0.13 is_deterministic: True inputs: signal_output: diff --git a/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_metrics_calculation/spec.yaml b/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_metrics_calculation/spec.yaml index c3168fdc77..641c7992d1 100644 --- a/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_metrics_calculation/spec.yaml +++ b/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_metrics_calculation/spec.yaml @@ -4,7 +4,7 @@ type: spark name: action_analyzer_metrics_calculation display_name: Action Analyzer - Metrics Calculation description: Calculate futher metrics for generating actions. -version: 0.0.9 +version: 0.0.10 is_deterministic: True inputs: data_with_groups: diff --git a/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_output_actions/spec.yaml b/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_output_actions/spec.yaml index e0662b3655..1a64956469 100644 --- a/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_output_actions/spec.yaml +++ b/assets/model_monitoring/components/model_monitor_action_analyzer/action_analyzer_output_actions/spec.yaml @@ -4,7 +4,7 @@ type: spark name: action_analyzer_output_actions display_name: Action Analyzer - Output Actions description: Merge and output actions. -version: 0.0.12 +version: 0.0.13 is_deterministic: True inputs: action_data: diff --git a/assets/model_monitoring/components/model_monitor_action_analyzer/model_monitor_action_analyzer/spec.yaml b/assets/model_monitoring/components/model_monitor_action_analyzer/model_monitor_action_analyzer/spec.yaml index 87c37616de..04e5bc685d 100644 --- a/assets/model_monitoring/components/model_monitor_action_analyzer/model_monitor_action_analyzer/spec.yaml +++ b/assets/model_monitoring/components/model_monitor_action_analyzer/model_monitor_action_analyzer/spec.yaml @@ -4,7 +4,7 @@ type: pipeline name: model_monitor_action_analyzer display_name: Model Monitor - Action Analyzer description: Generate and output actions to the default datastore. -version: 0.0.13 +version: 0.0.14 is_deterministic: true inputs: signal_output: @@ -52,7 +52,7 @@ outputs: jobs: identify_problem_traffic: type: spark - component: azureml://registries/azureml/components/action_analyzer_identify_problem_traffic/versions/0.0.12 + component: azureml://registries/azureml/components/action_analyzer_identify_problem_traffic/versions/0.0.13 inputs: signal_output: type: uri_folder @@ -74,7 +74,7 @@ jobs: type: aml_token metrics_calculation: type: spark - component: azureml://registries/azureml/components/action_analyzer_metrics_calculation/versions/0.0.9 + component: azureml://registries/azureml/components/action_analyzer_metrics_calculation/versions/0.0.10 inputs: data_with_groups: type: mltable @@ -91,7 +91,7 @@ jobs: type: aml_token correlation_test: type: spark - component: azureml://registries/azureml/components/action_analyzer_correlation_test/versions/0.0.9 + component: azureml://registries/azureml/components/action_analyzer_correlation_test/versions/0.0.10 inputs: data_with_action_metric_score: type: mltable @@ -106,7 +106,7 @@ jobs: type: aml_token output_actions: type: spark - component: azureml://registries/azureml/components/action_analyzer_output_actions/versions/0.0.12 + component: azureml://registries/azureml/components/action_analyzer_output_actions/versions/0.0.13 inputs: action_data: type: mltable diff --git a/assets/model_monitoring/components/model_monitor_action_analyzer/model_monitor_action_detector/spec.yaml b/assets/model_monitoring/components/model_monitor_action_analyzer/model_monitor_action_detector/spec.yaml index f069414405..8a388d6ed8 100644 --- a/assets/model_monitoring/components/model_monitor_action_analyzer/model_monitor_action_detector/spec.yaml +++ b/assets/model_monitoring/components/model_monitor_action_analyzer/model_monitor_action_detector/spec.yaml @@ -4,7 +4,7 @@ type: spark name: model_monitor_action_detector display_name: Model Monitor - Action Detector description: Generate and output actions -version: 0.0.5 +version: 0.0.6 is_deterministic: true inputs: signal_output: diff --git a/assets/model_monitoring/components/model_performance/model_performance_compute_metrics/spec.yaml b/assets/model_monitoring/components/model_performance/model_performance_compute_metrics/spec.yaml index f21d924d36..f2be4571c6 100644 --- a/assets/model_monitoring/components/model_performance/model_performance_compute_metrics/spec.yaml +++ b/assets/model_monitoring/components/model_performance/model_performance_compute_metrics/spec.yaml @@ -4,7 +4,7 @@ type: spark name: model_performance_compute_metrics display_name: Model Performance - Compute Metrics description: Compute model performance metrics leveraged by the model performance monitor. -version: 0.0.14 +version: 0.0.15 is_deterministic: true code: ../../src diff --git a/assets/model_monitoring/components/model_performance/model_performance_signal_monitor/spec.yaml b/assets/model_monitoring/components/model_performance/model_performance_signal_monitor/spec.yaml index 63db6ee34e..10b06d870e 100644 --- a/assets/model_monitoring/components/model_performance/model_performance_signal_monitor/spec.yaml +++ b/assets/model_monitoring/components/model_performance/model_performance_signal_monitor/spec.yaml @@ -4,7 +4,7 @@ type: pipeline name: model_performance_signal_monitor display_name: Model Performance - Signal Monitor description: Computes the model performance -version: 0.0.16 +version: 0.0.17 is_deterministic: true inputs: task: @@ -57,7 +57,7 @@ outputs: jobs: compute_metrics: type: spark - component: azureml://registries/azureml/components/model_performance_compute_metrics/versions/0.0.14 + component: azureml://registries/azureml/components/model_performance_compute_metrics/versions/0.0.15 inputs: task: ${{parent.inputs.task}} baseline_data_target_column: ${{parent.inputs.baseline_data_target_column}} @@ -78,7 +78,7 @@ jobs: type: aml_token output_signal_metrics: type: spark - component: azureml://registries/azureml/components/model_monitor_metric_outputter/versions/0.3.23 + component: azureml://registries/azureml/components/model_monitor_metric_outputter/versions/0.3.24 inputs: signal_metrics: type: mltable @@ -99,7 +99,7 @@ jobs: type: aml_token evaluate_metric_thresholds: type: spark - component: azureml://registries/azureml/components/model_monitor_evaluate_metrics_threshold/versions/0.3.20 + component: azureml://registries/azureml/components/model_monitor_evaluate_metrics_threshold/versions/0.3.21 inputs: signal_metrics: type: mltable diff --git a/assets/model_monitoring/components/prediction_drift/prediction_drift_signal_monitor/spec.yaml b/assets/model_monitoring/components/prediction_drift/prediction_drift_signal_monitor/spec.yaml index b4f9d28bbc..1b7aa4c651 100644 --- a/assets/model_monitoring/components/prediction_drift/prediction_drift_signal_monitor/spec.yaml +++ b/assets/model_monitoring/components/prediction_drift/prediction_drift_signal_monitor/spec.yaml @@ -4,7 +4,7 @@ type: pipeline name: prediction_drift_signal_monitor display_name: Prediction Drift - Signal Monitor description: Computes the prediction drift between a baseline and a target data assets. -version: 0.4.16 +version: 0.4.17 is_deterministic: true inputs: @@ -57,7 +57,7 @@ outputs: jobs: feature_selection: type: spark - component: azureml://registries/azureml/components/model_monitor_feature_selector/versions/0.3.15 + component: azureml://registries/azureml/components/model_monitor_feature_selector/versions/0.3.16 inputs: input_data_1: type: mltable @@ -77,7 +77,7 @@ jobs: type: aml_token compute_drift_metrics: type: spark - component: azureml://registries/azureml/components/data_drift_compute_metrics/versions/0.3.21 + component: azureml://registries/azureml/components/data_drift_compute_metrics/versions/0.3.22 inputs: production_dataset: type: mltable @@ -104,7 +104,7 @@ jobs: type: aml_token compute_histogram_buckets: type: spark - component: azureml://registries/azureml/components/model_monitor_compute_histogram_buckets/versions/0.3.15 + component: azureml://registries/azureml/components/model_monitor_compute_histogram_buckets/versions/0.3.16 inputs: input_data_1: type: mltable @@ -124,7 +124,7 @@ jobs: type: aml_token compute_baseline_histogram: type: spark - component: azureml://registries/azureml/components/model_monitor_compute_histogram/versions/0.3.15 + component: azureml://registries/azureml/components/model_monitor_compute_histogram/versions/0.3.16 inputs: input_data: type: mltable @@ -144,7 +144,7 @@ jobs: type: aml_token compute_target_histogram: type: spark - component: azureml://registries/azureml/components/model_monitor_compute_histogram/versions/0.3.15 + component: azureml://registries/azureml/components/model_monitor_compute_histogram/versions/0.3.16 inputs: input_data: type: mltable @@ -164,7 +164,7 @@ jobs: type: aml_token output_signal_metrics: type: spark - component: azureml://registries/azureml/components/model_monitor_output_metrics/versions/0.3.19 + component: azureml://registries/azureml/components/model_monitor_output_metrics/versions/0.3.20 inputs: signal_metrics: type: mltable @@ -191,7 +191,7 @@ jobs: type: aml_token evaluate_metric_thresholds: type: spark - component: azureml://registries/azureml/components/model_monitor_evaluate_metrics_threshold/versions/0.3.20 + component: azureml://registries/azureml/components/model_monitor_evaluate_metrics_threshold/versions/0.3.21 inputs: signal_metrics: type: mltable diff --git a/assets/model_monitoring/components/src/model_monitor_create_manifest/run.py b/assets/model_monitoring/components/src/model_monitor_create_manifest/run.py index c4ee0db2dd..54c5e7735a 100644 --- a/assets/model_monitoring/components/src/model_monitor_create_manifest/run.py +++ b/assets/model_monitoring/components/src/model_monitor_create_manifest/run.py @@ -8,8 +8,8 @@ import json import os import uuid -from azure.ai.ml.identity import AzureMLOnBehalfOfCredential from shared_utilities.amlfs import amlfs_put_as_json, amlfs_download, amlfs_upload +from shared_utilities.io_utils import init_spark def _generate_manifest(root_dir: str): @@ -27,10 +27,19 @@ def _generate_manifest(root_dir: str): def run(): """Create Manifest.""" - # init aml OBO class for supporting credential-less datastore scenarios. - # this class will init specific env variables required by Amlfs to get - # user token in case of credential-less data access scenario - AzureMLOnBehalfOfCredential() + # TODO: investigate why these aren't initialized by AzureML Filesystem itself + # init env-vars for supporting credential-less datastore scenarios. + # this env variable is required by Amlfs to get user token. + spark = init_spark() + spark_conf = spark.sparkContext.getConf() + spark_conf_vars = { + "AZUREML_SYNAPSE_CLUSTER_IDENTIFIER": "spark.synapse.clusteridentifier", + "AZUREML_SYNAPSE_TOKEN_SERVICE_ENDPOINT": "spark.tokenServiceEndpoint", + } + for env_key, conf_key in spark_conf_vars.items(): + value = spark_conf.get(conf_key) + if value: + os.environ[env_key] = value # Parse arguments parser = argparse.ArgumentParser() diff --git a/assets/model_monitoring/components/src/shared_utilities/io_utils.py b/assets/model_monitoring/components/src/shared_utilities/io_utils.py index cd358c4177..08fcaaa4a7 100644 --- a/assets/model_monitoring/components/src/shared_utilities/io_utils.py +++ b/assets/model_monitoring/components/src/shared_utilities/io_utils.py @@ -9,7 +9,6 @@ import time import uuid import yaml -from azure.ai.ml.identity import AzureMLOnBehalfOfCredential, CredentialUnavailableError from azureml.dataprep.api.errorhandlers import ExecutionError from azureml.fsspec import AzureMachineLearningFileSystem from pyspark.sql import SparkSession, DataFrame @@ -117,8 +116,14 @@ def process_input_not_found(input_not_found_category: InputNotFoundCategory): return process_input_not_found(input_not_found_category) else: # TODO: remove this check block after we are able to support submitting managed identity MoMo graphs. - if isinstance(error, CredentialUnavailableError): - raise InvalidInputError(MISSING_OBO_CREDENTIAL_HELPFUL_ERROR_MESSAGE.format(message=error.message)) + try: + from azure.ai.ml.identity import CredentialUnavailableError + if isinstance(error, CredentialUnavailableError): + raise InvalidInputError(MISSING_OBO_CREDENTIAL_HELPFUL_ERROR_MESSAGE.format(message=error.message)) + except ModuleNotFoundError: + print( + "Failed to import from module azure-ai-ml to check if we have CredentialUnavailableError. " + "Check for LM failure or stale cache being used. Throwing exception as usual.") raise error return df if df and not df.isEmpty() else process_input_not_found(InputNotFoundCategory.NO_INPUT_IN_WINDOW) @@ -174,9 +179,19 @@ def read_mltable_in_spark(mltable_path: str): def save_spark_df_as_mltable(metrics_df, folder_path: str, file_system=None): """Save spark dataframe as mltable.""" - # init aml OBO class for supporting credential-less datastore scenarios. - # this class will init specific env variables required by Amlfs to get user token. - AzureMLOnBehalfOfCredential() + # TODO: remove this explicit initialization after switch over to StoreUrl. + # init env-vars for supporting credential-less datastore scenarios. + # this env variable is required by Amlfs to get user token. + spark = init_spark() + spark_conf = spark.sparkContext.getConf() + spark_conf_vars = { + "AZUREML_SYNAPSE_CLUSTER_IDENTIFIER": "spark.synapse.clusteridentifier", + "AZUREML_SYNAPSE_TOKEN_SERVICE_ENDPOINT": "spark.tokenServiceEndpoint", + } + for env_key, conf_key in spark_conf_vars.items(): + value = spark_conf.get(conf_key) + if value: + os.environ[env_key] = value try: metrics_df.write.mode("overwrite").parquet(folder_path) diff --git a/assets/model_monitoring/components/src/shared_utilities/store_url.py b/assets/model_monitoring/components/src/shared_utilities/store_url.py index 04de4c472f..3073b35b0d 100644 --- a/assets/model_monitoring/components/src/shared_utilities/store_url.py +++ b/assets/model_monitoring/components/src/shared_utilities/store_url.py @@ -7,7 +7,6 @@ import os import re from typing import Union, Tuple -from azure.ai.ml.identity import AzureMLOnBehalfOfCredential, CredentialUnavailableError from azure.identity import ClientSecretCredential from azure.core.credentials import AzureSasCredential from azure.storage.blob import ContainerClient @@ -77,25 +76,36 @@ def _get_url(self, scheme=None, store_type=None, relative_path=None) -> str: return url def get_credential(self) -> Union[ - str, ClientSecretCredential, AzureSasCredential, AzureMLOnBehalfOfCredential, None]: + str, ClientSecretCredential, AzureSasCredential, None]: """Get credential for this store url.""" if not self._datastore: + from azure.ai.ml.identity import AzureMLOnBehalfOfCredential + print("Using AML OBO credential from StoreUrl.get_credential() because the internal datastore is None.") return AzureMLOnBehalfOfCredential() elif self._datastore.datastore_type == "AzureBlob": if self._datastore.credential_type == "AccountKey": + print("Using acount key credential from StoreUrl.get_credential() with blob datastore.") return self._datastore.account_key elif self._datastore.credential_type == "Sas": + print("Using SAS token credential from StoreUrl.get_credential() with blob datastore.") return AzureSasCredential(self._datastore.sas_token) elif self._datastore.credential_type is None or self._datastore.credential_type == "None": + from azure.ai.ml.identity import AzureMLOnBehalfOfCredential + print("Using AML OBO credential from StoreUrl.get_credential() with blob datastore" + " where the saved credential type is null.") return AzureMLOnBehalfOfCredential() else: raise InvalidInputError(f"Unsupported credential type: {self._datastore.credential_type}, " "only AccountKey and Sas are supported.") elif self._datastore.datastore_type == "AzureDataLakeGen2": if self._datastore.tenant_id and self._datastore.client_id and self._datastore.client_secret: + print("Using Client Secret credential from StoreUrl.get_credential() with Gen2 datastore.") return ClientSecretCredential(tenant_id=self._datastore.tenant_id, client_id=self._datastore.client_id, client_secret=self._datastore.client_secret) else: + from azure.ai.ml.identity import AzureMLOnBehalfOfCredential + print("Using AML OBO credential from StoreUrl.get_credential() with Gen2 datastore" + " where the saved credential info does not have client secret available to authenticate with.") return AzureMLOnBehalfOfCredential() else: raise InvalidInputError(f"Unsupported datastore type: {self._datastore.datastore_type}, " @@ -103,13 +113,23 @@ def get_credential(self) -> Union[ def is_credentials_less(self) -> bool: """Check if the store url is credential less.""" - credential = self.get_credential() - return credential is None or isinstance(credential, AzureMLOnBehalfOfCredential) + # TODO: remove after we figure out cache failure issues. + # Should be able to import AzureMLOnBehalfOfCredential to check the class w/o issues. + credential = None + try: + credential = self.get_credential() + from azure.ai.ml.identity import AzureMLOnBehalfOfCredential + return credential is None or isinstance(credential, AzureMLOnBehalfOfCredential) + except ModuleNotFoundError: + print( + "Failed to import AzureMLOnBehalfOfCredential to check credential class instance. " + "Defaulting to None credential-check solely.") + return credential is None def get_container_client( self, credential: Union[ - str, AzureSasCredential, ClientSecretCredential, AzureMLOnBehalfOfCredential, None] = None + str, AzureSasCredential, ClientSecretCredential, None] = None ) -> Union[FileSystemClient, ContainerClient, None]: """ Get container client for this store url. @@ -132,9 +152,15 @@ def get_container_client( # Requires that we submit MoMo component with managed identity or will fail later on. credential = credential or self.get_credential() account_url_scheme = "https" if self._is_secure() else "http" - if not self._is_secure() and isinstance(credential, AzureMLOnBehalfOfCredential): - raise InvalidInputError("Token credential is only supported with secure HTTPS protocol." - "Please use a secure url for the StoreUrl.") + try: + from azure.ai.ml.identity import AzureMLOnBehalfOfCredential + if not self._is_secure() and isinstance(credential, AzureMLOnBehalfOfCredential): + raise InvalidInputError("Token credential is only supported with secure HTTPS protocol." + "Please use a secure url for the StoreUrl.") + except ModuleNotFoundError: + print("Failed to import AzureMLOnBehalfOfCredential. " + "Cannot check if unsecure URL was used with token credential. " + "Continuing and expecting no failures...") if self.store_type == "blob": return ContainerClient(account_url=f"{account_url_scheme}://{self.account_name}.blob.core.windows.net", @@ -160,9 +186,9 @@ def is_folder_exists(self, relative_path: str) -> bool: full_path = f"{self.path}/{relative_path}/" if relative_path else f"{self.path}/" blobs = container_client.list_blobs(name_starts_with=full_path) return any(blobs) - except CredentialUnavailableError as cue: - if "AzureML Spark On Behalf of credentials not available in this environment" in cue.message: - raise InvalidInputError(MISSING_OBO_CREDENTIAL_HELPFUL_ERROR_MESSAGE.format(message=cue.message)) + except Exception as cue: + if "AzureML Spark On Behalf of credentials not available in this environment" in str(cue): + raise InvalidInputError(MISSING_OBO_CREDENTIAL_HELPFUL_ERROR_MESSAGE.format(message=str(cue))) raise cue def is_local_path(self) -> bool: @@ -191,9 +217,9 @@ def read_file_content(self, relative_path: str = None, else: with container_client.get_blob_client(full_path) as blob_client: return blob_client.download_blob().readall().decode() - except CredentialUnavailableError as cue: - if "AzureML Spark On Behalf of credentials not available in this environment" in cue.message: - raise InvalidInputError(MISSING_OBO_CREDENTIAL_HELPFUL_ERROR_MESSAGE.format(message=cue.message)) + except Exception as cue: + if "AzureML Spark On Behalf of credentials not available in this environment" in str(cue): + raise InvalidInputError(MISSING_OBO_CREDENTIAL_HELPFUL_ERROR_MESSAGE.format(message=str(cue))) raise cue def write_file(self, file_content: Union[str, bytes], relative_path: str = None, overwrite: bool = False, @@ -212,9 +238,9 @@ def write_file(self, file_content: Union[str, bytes], relative_path: str = None, else: with container_client.get_blob_client(full_path) as blob_client: return blob_client.upload_blob(file_content, overwrite=overwrite) - except CredentialUnavailableError as cue: - if "AzureML Spark On Behalf of credentials not available in this environment" in cue.message: - raise InvalidInputError(MISSING_OBO_CREDENTIAL_HELPFUL_ERROR_MESSAGE.format(message=cue.message)) + except Exception as cue: + if "AzureML Spark On Behalf of credentials not available in this environment" in str(cue): + raise InvalidInputError(MISSING_OBO_CREDENTIAL_HELPFUL_ERROR_MESSAGE.format(message=str(cue))) @staticmethod def _normalize_local_path(local_path: str) -> str: diff --git a/assets/model_monitoring/components/token_statistics/token_statistics_compute_metrics/spec.yaml b/assets/model_monitoring/components/token_statistics/token_statistics_compute_metrics/spec.yaml index ca1f94cbd7..e0164c21fb 100644 --- a/assets/model_monitoring/components/token_statistics/token_statistics_compute_metrics/spec.yaml +++ b/assets/model_monitoring/components/token_statistics/token_statistics_compute_metrics/spec.yaml @@ -4,7 +4,7 @@ type: spark name: token_statistics_compute_metrics display_name: Token Statistics - Compute Metrics description: Compute token statistics metrics. -version: 0.0.11 +version: 0.0.12 is_deterministic: true inputs: