Skip to content

Commit dba25ee

Browse files
authored
Merge branch 'main' into patch-1
2 parents 9d0dfa4 + 86b6cd3 commit dba25ee

File tree

55 files changed

+33214
-106
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+33214
-106
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
ModelMonitoringService
2+
----------------------------------------
3+
4+
.. automodule:: google.cloud.aiplatform_v1beta1.services.model_monitoring_service
5+
:members:
6+
:inherited-members:
7+
8+
.. automodule:: google.cloud.aiplatform_v1beta1.services.model_monitoring_service.pagers
9+
:members:
10+
:inherited-members:

docs/aiplatform_v1beta1/services_.rst

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ Services for Google Cloud Aiplatform v1beta1 API
2222
metadata_service
2323
migration_service
2424
model_garden_service
25+
model_monitoring_service
2526
model_service
2627
notebook_service
2728
persistent_resource_service

google/cloud/aiplatform/tensorboard/plugins/tf_profiler/profile_uploader.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@
2222
import os
2323
import re
2424
from typing import DefaultDict, Dict, Generator, List, Optional, Set, Tuple
25-
from tensorboard.uploader.proto import server_info_pb2
2625

2726
from google.cloud import storage
2827
from google.cloud.aiplatform.compat.services import tensorboard_service_client
2928
from google.cloud.aiplatform.compat.types import tensorboard_data
3029
from google.cloud.aiplatform.compat.types import tensorboard_service
3130
from google.cloud.aiplatform.compat.types import tensorboard_time_series
3231
from google.cloud.aiplatform.tensorboard import upload_tracker
32+
from google.cloud.aiplatform.tensorboard import uploader_constants
3333
from google.cloud.aiplatform.tensorboard import uploader_utils
3434
import grpc
3535
import tensorflow as tf
@@ -65,7 +65,7 @@ def __init__(
6565
self,
6666
experiment_resource_name: str,
6767
api: TensorboardServiceClient,
68-
upload_limits: server_info_pb2.UploadLimits,
68+
upload_limits: uploader_constants.UploadLimits,
6969
blob_rpc_rate_limiter: uploader_utils.RateLimiter,
7070
blob_storage_bucket: storage.Bucket,
7171
blob_storage_folder: str,
@@ -81,7 +81,7 @@ def __init__(
8181
projects/{project}/locations/{location}/tensorboards/{tensorboard}/experiments/{experiment}
8282
api (TensorboardServiceClient):
8383
Required. Tensorboard service stub used to interact with experiment resource.
84-
upload_limits (server_info_pb2.UploadLimits):
84+
upload_limits (uploader_constants.UploadLimits):
8585
Required. Upload limits for for api calls.
8686
blob_rpc_rate_limiter (uploader_utils.RateLimiter):
8787
Required. A `RateLimiter` to use to limit write RPC frequency.

google/cloud/aiplatform/tensorboard/uploader.py

+4-27
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@
6262
from tensorboard.compat.proto import summary_pb2
6363
from tensorboard.compat.proto import types_pb2
6464
from tensorboard.plugins.graph import metadata as graph_metadata
65-
from tensorboard.uploader.proto import server_info_pb2
6665
from tensorboard.util import tb_logging
6766
from tensorboard.util import tensor_util
6867

@@ -96,7 +95,7 @@ def __init__(
9695
logdir: str,
9796
allowed_plugins: FrozenSet[str],
9897
experiment_display_name: Optional[str] = None,
99-
upload_limits: Optional[server_info_pb2.UploadLimits] = None,
98+
upload_limits: Optional[uploader_constants.UploadLimits] = None,
10099
logdir_poll_rate_limiter: Optional[uploader_utils.RateLimiter] = None,
101100
rpc_rate_limiter: Optional[uploader_utils.RateLimiter] = None,
102101
tensor_rpc_rate_limiter: Optional[uploader_utils.RateLimiter] = None,
@@ -121,7 +120,7 @@ def __init__(
121120
allowed_plugins: collection of string plugin names; events will only be
122121
uploaded if their time series's metadata specifies one of these plugin
123122
names
124-
upload_limits: instance of tensorboard.service.UploadLimits proto.
123+
upload_limits: dataclass of uploader_constants.UploadLimits.
125124
logdir_poll_rate_limiter: a `RateLimiter` to use to limit logdir polling
126125
frequency, to avoid thrashing disks, especially on networked file
127126
systems
@@ -160,29 +159,7 @@ def __init__(
160159

161160
self._upload_limits = upload_limits
162161
if not self._upload_limits:
163-
self._upload_limits = server_info_pb2.UploadLimits()
164-
self._upload_limits.max_scalar_request_size = (
165-
uploader_constants.DEFAULT_MAX_SCALAR_REQUEST_SIZE
166-
)
167-
self._upload_limits.min_scalar_request_interval = (
168-
uploader_constants.DEFAULT_MIN_SCALAR_REQUEST_INTERVAL
169-
)
170-
self._upload_limits.min_tensor_request_interval = (
171-
uploader_constants.DEFAULT_MIN_TENSOR_REQUEST_INTERVAL
172-
)
173-
self._upload_limits.max_tensor_request_size = (
174-
uploader_constants.DEFAULT_MAX_TENSOR_REQUEST_SIZE
175-
)
176-
self._upload_limits.max_tensor_point_size = (
177-
uploader_constants.DEFAULT_MAX_TENSOR_POINT_SIZE
178-
)
179-
self._upload_limits.min_blob_request_interval = (
180-
uploader_constants.DEFAULT_MIN_BLOB_REQUEST_INTERVAL
181-
)
182-
self._upload_limits.max_blob_request_size = (
183-
uploader_constants.DEFAULT_MAX_BLOB_REQUEST_SIZE
184-
)
185-
self._upload_limits.max_blob_size = uploader_constants.DEFAULT_MAX_BLOB_SIZE
162+
self._upload_limits = uploader_constants.UploadLimits()
186163
self._description = description
187164
self._verbosity = verbosity
188165
self._one_shot = one_shot
@@ -482,7 +459,7 @@ def __init__(
482459
experiment_resource_name: str,
483460
api: TensorboardServiceClient,
484461
allowed_plugins: Iterable[str],
485-
upload_limits: server_info_pb2.UploadLimits,
462+
upload_limits: uploader_constants.UploadLimits,
486463
rpc_rate_limiter: uploader_utils.RateLimiter,
487464
tensor_rpc_rate_limiter: uploader_utils.RateLimiter,
488465
blob_rpc_rate_limiter: uploader_utils.RateLimiter,

google/cloud/aiplatform/tensorboard/uploader_constants.py

+16
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
"""Constants shared between TensorBoard command line uploader and SDK uploader"""
22

3+
import dataclasses
4+
35
from tensorboard.plugins.distribution import (
46
metadata as distribution_metadata,
57
)
@@ -56,3 +58,17 @@
5658
DEFAULT_MAX_TENSOR_POINT_SIZE = 16 * (2**10) # 16KiB
5759

5860
DEFAULT_MAX_BLOB_SIZE = 10 * (2**30) # 10GiB
61+
62+
63+
@dataclasses.dataclass
64+
class UploadLimits:
65+
max_scalar_request_size: int = DEFAULT_MAX_SCALAR_REQUEST_SIZE
66+
max_tensor_request_size: int = DEFAULT_MAX_TENSOR_REQUEST_SIZE
67+
max_blob_request_size: int = DEFAULT_MAX_BLOB_REQUEST_SIZE
68+
69+
min_scalar_request_interval: int = DEFAULT_MIN_SCALAR_REQUEST_INTERVAL
70+
min_tensor_request_interval: int = DEFAULT_MIN_TENSOR_REQUEST_INTERVAL
71+
min_blob_request_interval: int = DEFAULT_MIN_BLOB_REQUEST_INTERVAL
72+
73+
max_blob_size: int = DEFAULT_MAX_BLOB_SIZE
74+
max_tensor_point_size: int = DEFAULT_MAX_TENSOR_POINT_SIZE

google/cloud/aiplatform/training_utils/cloud_profiler/plugins/tensorflow/tensorboard_api.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@
2121
import re
2222
from typing import Tuple
2323

24-
from tensorboard.uploader.proto import server_info_pb2
2524
from google.api_core import exceptions
2625
from google.cloud import storage
2726
from google.cloud import aiplatform
2827
from google.cloud.aiplatform import training_utils
2928
from google.cloud.aiplatform.compat.types import tensorboard_experiment
3029
from google.cloud.aiplatform.tensorboard import upload_tracker
30+
from google.cloud.aiplatform.tensorboard import uploader_constants
3131
from google.cloud.aiplatform.tensorboard import uploader_utils
3232
from google.cloud.aiplatform.tensorboard.plugins.tf_profiler import profile_uploader
3333
from google.cloud.aiplatform.utils import TensorboardClientWithOverride
@@ -76,13 +76,13 @@ def _get_project_id() -> str:
7676
return m[1]
7777

7878

79-
def _make_upload_limits() -> server_info_pb2.UploadLimits:
79+
def _make_upload_limits() -> uploader_constants.UploadLimits:
8080
"""Creates the upload limits for tensorboard.
8181
8282
Returns:
8383
An UploadLimits object.
8484
"""
85-
upload_limits = server_info_pb2.UploadLimits()
85+
upload_limits = uploader_constants.UploadLimits()
8686
upload_limits.min_blob_request_interval = 10
8787
upload_limits.max_blob_request_size = 4 * (2**20) - 256 * (2**10)
8888
upload_limits.max_blob_size = 10 * (2**30) # 10GiB

google/cloud/aiplatform_v1beta1/__init__.py

+70
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@
6868
from .services.migration_service import MigrationServiceAsyncClient
6969
from .services.model_garden_service import ModelGardenServiceClient
7070
from .services.model_garden_service import ModelGardenServiceAsyncClient
71+
from .services.model_monitoring_service import ModelMonitoringServiceClient
72+
from .services.model_monitoring_service import ModelMonitoringServiceAsyncClient
7173
from .services.model_service import ModelServiceClient
7274
from .services.model_service import ModelServiceAsyncClient
7375
from .services.notebook_service import NotebookServiceClient
@@ -650,11 +652,44 @@
650652
from .types.model_garden_service import ListPublisherModelsRequest
651653
from .types.model_garden_service import ListPublisherModelsResponse
652654
from .types.model_garden_service import PublisherModelView
655+
from .types.model_monitor import ModelMonitor
656+
from .types.model_monitor import ModelMonitoringSchema
653657
from .types.model_monitoring import ModelMonitoringAlertConfig
654658
from .types.model_monitoring import ModelMonitoringConfig
655659
from .types.model_monitoring import ModelMonitoringObjectiveConfig
656660
from .types.model_monitoring import SamplingStrategy
657661
from .types.model_monitoring import ThresholdConfig
662+
from .types.model_monitoring_alert import ModelMonitoringAlert
663+
from .types.model_monitoring_alert import ModelMonitoringAlertCondition
664+
from .types.model_monitoring_alert import ModelMonitoringAnomaly
665+
from .types.model_monitoring_job import ModelMonitoringJob
666+
from .types.model_monitoring_job import ModelMonitoringJobExecutionDetail
667+
from .types.model_monitoring_service import CreateModelMonitoringJobRequest
668+
from .types.model_monitoring_service import CreateModelMonitorOperationMetadata
669+
from .types.model_monitoring_service import CreateModelMonitorRequest
670+
from .types.model_monitoring_service import DeleteModelMonitoringJobRequest
671+
from .types.model_monitoring_service import DeleteModelMonitorRequest
672+
from .types.model_monitoring_service import GetModelMonitoringJobRequest
673+
from .types.model_monitoring_service import GetModelMonitorRequest
674+
from .types.model_monitoring_service import ListModelMonitoringJobsRequest
675+
from .types.model_monitoring_service import ListModelMonitoringJobsResponse
676+
from .types.model_monitoring_service import ListModelMonitorsRequest
677+
from .types.model_monitoring_service import ListModelMonitorsResponse
678+
from .types.model_monitoring_service import SearchModelMonitoringAlertsRequest
679+
from .types.model_monitoring_service import SearchModelMonitoringAlertsResponse
680+
from .types.model_monitoring_service import SearchModelMonitoringStatsRequest
681+
from .types.model_monitoring_service import SearchModelMonitoringStatsResponse
682+
from .types.model_monitoring_service import UpdateModelMonitorOperationMetadata
683+
from .types.model_monitoring_service import UpdateModelMonitorRequest
684+
from .types.model_monitoring_spec import ModelMonitoringInput
685+
from .types.model_monitoring_spec import ModelMonitoringNotificationSpec
686+
from .types.model_monitoring_spec import ModelMonitoringObjectiveSpec
687+
from .types.model_monitoring_spec import ModelMonitoringOutputSpec
688+
from .types.model_monitoring_spec import ModelMonitoringSpec
689+
from .types.model_monitoring_stats import ModelMonitoringStats
690+
from .types.model_monitoring_stats import ModelMonitoringStatsDataPoint
691+
from .types.model_monitoring_stats import ModelMonitoringTabularStats
692+
from .types.model_monitoring_stats import SearchModelMonitoringStatsFilter
658693
from .types.model_service import BatchImportEvaluatedAnnotationsRequest
659694
from .types.model_service import BatchImportEvaluatedAnnotationsResponse
660695
from .types.model_service import BatchImportModelEvaluationSlicesRequest
@@ -971,6 +1006,7 @@
9711006
"MetadataServiceAsyncClient",
9721007
"MigrationServiceAsyncClient",
9731008
"ModelGardenServiceAsyncClient",
1009+
"ModelMonitoringServiceAsyncClient",
9741010
"ModelServiceAsyncClient",
9751011
"NotebookServiceAsyncClient",
9761012
"PersistentResourceServiceAsyncClient",
@@ -1106,6 +1142,9 @@
11061142
"CreateMetadataStoreOperationMetadata",
11071143
"CreateMetadataStoreRequest",
11081144
"CreateModelDeploymentMonitoringJobRequest",
1145+
"CreateModelMonitorOperationMetadata",
1146+
"CreateModelMonitorRequest",
1147+
"CreateModelMonitoringJobRequest",
11091148
"CreateNasJobRequest",
11101149
"CreateNotebookRuntimeTemplateOperationMetadata",
11111150
"CreateNotebookRuntimeTemplateRequest",
@@ -1165,6 +1204,8 @@
11651204
"DeleteMetadataStoreOperationMetadata",
11661205
"DeleteMetadataStoreRequest",
11671206
"DeleteModelDeploymentMonitoringJobRequest",
1207+
"DeleteModelMonitorRequest",
1208+
"DeleteModelMonitoringJobRequest",
11681209
"DeleteModelRequest",
11691210
"DeleteModelVersionRequest",
11701211
"DeleteNasJobRequest",
@@ -1331,6 +1372,8 @@
13311372
"GetModelDeploymentMonitoringJobRequest",
13321373
"GetModelEvaluationRequest",
13331374
"GetModelEvaluationSliceRequest",
1375+
"GetModelMonitorRequest",
1376+
"GetModelMonitoringJobRequest",
13341377
"GetModelRequest",
13351378
"GetNasJobRequest",
13361379
"GetNasTrialDetailRequest",
@@ -1447,6 +1490,10 @@
14471490
"ListModelEvaluationSlicesResponse",
14481491
"ListModelEvaluationsRequest",
14491492
"ListModelEvaluationsResponse",
1493+
"ListModelMonitoringJobsRequest",
1494+
"ListModelMonitoringJobsResponse",
1495+
"ListModelMonitorsRequest",
1496+
"ListModelMonitorsResponse",
14501497
"ListModelVersionsRequest",
14511498
"ListModelVersionsResponse",
14521499
"ListModelsRequest",
@@ -1519,10 +1566,26 @@
15191566
"ModelExplanation",
15201567
"ModelGardenServiceClient",
15211568
"ModelGardenSource",
1569+
"ModelMonitor",
1570+
"ModelMonitoringAlert",
1571+
"ModelMonitoringAlertCondition",
15221572
"ModelMonitoringAlertConfig",
1573+
"ModelMonitoringAnomaly",
15231574
"ModelMonitoringConfig",
1575+
"ModelMonitoringInput",
1576+
"ModelMonitoringJob",
1577+
"ModelMonitoringJobExecutionDetail",
1578+
"ModelMonitoringNotificationSpec",
15241579
"ModelMonitoringObjectiveConfig",
1580+
"ModelMonitoringObjectiveSpec",
1581+
"ModelMonitoringOutputSpec",
1582+
"ModelMonitoringSchema",
1583+
"ModelMonitoringServiceClient",
1584+
"ModelMonitoringSpec",
1585+
"ModelMonitoringStats",
15251586
"ModelMonitoringStatsAnomalies",
1587+
"ModelMonitoringStatsDataPoint",
1588+
"ModelMonitoringTabularStats",
15261589
"ModelServiceClient",
15271590
"ModelSourceInfo",
15281591
"MutateDeployedIndexOperationMetadata",
@@ -1691,6 +1754,11 @@
16911754
"SearchMigratableResourcesResponse",
16921755
"SearchModelDeploymentMonitoringStatsAnomaliesRequest",
16931756
"SearchModelDeploymentMonitoringStatsAnomaliesResponse",
1757+
"SearchModelMonitoringAlertsRequest",
1758+
"SearchModelMonitoringAlertsResponse",
1759+
"SearchModelMonitoringStatsFilter",
1760+
"SearchModelMonitoringStatsRequest",
1761+
"SearchModelMonitoringStatsResponse",
16941762
"SearchNearestEntitiesRequest",
16951763
"SearchNearestEntitiesResponse",
16961764
"Segment",
@@ -1812,6 +1880,8 @@
18121880
"UpdateIndexRequest",
18131881
"UpdateModelDeploymentMonitoringJobOperationMetadata",
18141882
"UpdateModelDeploymentMonitoringJobRequest",
1883+
"UpdateModelMonitorOperationMetadata",
1884+
"UpdateModelMonitorRequest",
18151885
"UpdateModelRequest",
18161886
"UpdatePersistentResourceOperationMetadata",
18171887
"UpdatePersistentResourceRequest",

0 commit comments

Comments
 (0)