googleapis / googleapis/python-aiplatform
ModelDeploymentMonitoringJob.create fails with "model_deployment_monitoring_objective_configs is empty"
- Dominant language
- Python
- Stars
- 905
- Forks
- 465
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 44
Description
#### Environment details
- OS type and version: MacOS 13.4.1
- Python version: 3.8.12
- `google-cloud-aiplatform` version: 1.28.0
#### Steps to reproduce
Just create a model monitoring job using the Python SDK will fail with the error "List of found errors: 1.Field: model_deployment_monitoring_job; Message: model_deployment_monitoring_objective_configs is empty in ModelDeploymentMonitoringJob.".
#### Code example
The below code is from the [model monitoring example notebook](https://github.com/GoogleCloudPlatform/vertex-ai-samples/blob/main/notebooks/official/model_monitoring/model_monitoring.ipynb):
```python
project_id = 'pbalm-myproj'
region = 'europe-west4'
aiplatform.init(project=project_id, location=region)
print(f"{aiplatform.__version__=}")
DATASET_BQ_URI=f"bq://{project_id}.creditcards.ulb_fraud_detection"
SKEW_THRESHOLDS={'V1': 0.5, "V2": 0.4}
ATTRIB_SKEW_THRESHOLDS=SKEW_THRESHOLDS
TARGET="Class"
DRIFT_THRESHOLDS=SKEW_THRESHOLDS
ATTRIB_DRIFT_THRESHOLDS=SKEW_THRESHOLDS
LOG_SAMPLE_RATE=0.5
MONITOR_INTERVAL=5
USER_EMAIL='redacted@google.com'
JOB_NAME='testmodelmon'
endpoint = f'projects/{project_id}/locations/{region}/endpoints/3183121346783608832'
skew_config = model_monitoring.SkewDetectionConfig(
data_source=DATASET_BQ_URI,
skew_thresholds=SKEW_THRESHOLDS,
attribute_skew_thresholds=ATTRIB_SKEW_THRESHOLDS,
target_field=TARGET,
)
drift_config = model_monitoring.DriftDetectionConfig(
drift_thresholds=DRIFT_THRESHOLDS,
attribute_drift_thresholds=ATTRIB_DRIFT_THRESHOLDS,
)
explanation_config = model_monitoring.ExplanationConfig()
objective_config = model_monitoring.ObjectiveConfig(
skew_config, drift_config, explanation_config
)
# Create sampling configuration
random_sampling = model_monitoring.RandomSampleConfig(sample_rate=LOG_SAMPLE_RATE)
# Create schedule configuration
schedule_config = model_monitoring.ScheduleConfig(monitor_interval=MONITOR_INTERVAL)
# Create alerting configuration.
emails = [USER_EMAIL]
alerting_config = model_monitoring.EmailAlertConfig(
user_emails=emails, enable_logging=True
)
# Create the monitoring job.
job = aiplatform.ModelDeploymentMonitoringJob.create(
display_name=JOB_NAME,
logging_sampling_strategy=random_sampling,
schedule_config=schedule_config,
alert_config=alerting_config,
objective_configs=objective_config,
project=project_id,
location=region,
endpoint=endpoint,
)
```
#### Stack trace
```
_InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
status = StatusCode.INVALID_ARGUMENT
details = "List of found errors: 1.Field: model_deployment_monitoring_job; Message: model_deployment_monitoring_objective_configs is empty in ModelDeploymentMonitoringJob. "
debug_error_string = "UNKNOWN:Error received from peer ipv4:216.58.215.138:443 {grpc_message:"List of found errors:\t1.Field: model_deployment_monitoring_job; Message: model_deployment_monitoring_objective_configs is empty in ModelDeploymentMonitoringJob.\t", grpc_status:3, created_time:"2023-07-13T14:44:43.464163+02:00"}"
```
Contributor guide
Assessment
This issue has not been assessed yet.