Skip to content

Commit

Permalink
feat: add feature.proto
Browse files Browse the repository at this point in the history
feat: add feature_view_sync.proto
feat: add feature_regstry_service.proto
feat: add feature_online_store.proto
feat: add feature_online_store_service.proto
feat: add feature_group.proto
feat: add feature_view.proto
feat: add feature_online_store_admin_service.proto

PiperOrigin-RevId: 568671726
  • Loading branch information
Google APIs authored and Copybara-Service committed Sep 26, 2023
1 parent 9b6656e commit 76f607f
Show file tree
Hide file tree
Showing 11 changed files with 1,747 additions and 8 deletions.
7 changes: 7 additions & 0 deletions google/cloud/aiplatform/v1beta1/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,13 @@ proto_library(
"feature_monitoring_stats.proto",
"feature_selector.proto",
"featurestore.proto",
"feature_group.proto",
"feature_view.proto",
"feature_online_store.proto",
"feature_online_store_admin_service.proto",
"feature_registry_service.proto",
"feature_view_sync.proto",
"feature_online_store_service.proto",
"featurestore_monitoring.proto",
"featurestore_online_service.proto",
"featurestore_service.proto",
Expand Down
31 changes: 31 additions & 0 deletions google/cloud/aiplatform/v1beta1/aiplatform_v1beta1.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ apis:
- name: google.cloud.aiplatform.v1beta1.DatasetService
- name: google.cloud.aiplatform.v1beta1.DeploymentResourcePoolService
- name: google.cloud.aiplatform.v1beta1.EndpointService
- name: google.cloud.aiplatform.v1beta1.FeatureOnlineStoreAdminService
- name: google.cloud.aiplatform.v1beta1.FeatureOnlineStoreService
- name: google.cloud.aiplatform.v1beta1.FeatureRegistryService
- name: google.cloud.aiplatform.v1beta1.FeaturestoreOnlineServingService
- name: google.cloud.aiplatform.v1beta1.FeaturestoreService
- name: google.cloud.aiplatform.v1beta1.IndexEndpointService
Expand Down Expand Up @@ -44,12 +47,16 @@ types:
- name: google.cloud.aiplatform.v1beta1.CreateDeploymentResourcePoolOperationMetadata
- name: google.cloud.aiplatform.v1beta1.CreateEndpointOperationMetadata
- name: google.cloud.aiplatform.v1beta1.CreateEntityTypeOperationMetadata
- name: google.cloud.aiplatform.v1beta1.CreateFeatureGroupOperationMetadata
- name: google.cloud.aiplatform.v1beta1.CreateFeatureOnlineStoreOperationMetadata
- name: google.cloud.aiplatform.v1beta1.CreateFeatureOperationMetadata
- name: google.cloud.aiplatform.v1beta1.CreateFeatureViewOperationMetadata
- name: google.cloud.aiplatform.v1beta1.CreateFeaturestoreOperationMetadata
- name: google.cloud.aiplatform.v1beta1.CreateIndexEndpointOperationMetadata
- name: google.cloud.aiplatform.v1beta1.CreateIndexOperationMetadata
- name: google.cloud.aiplatform.v1beta1.CreateMetadataStoreOperationMetadata
- name: google.cloud.aiplatform.v1beta1.CreatePersistentResourceOperationMetadata
- name: google.cloud.aiplatform.v1beta1.CreateRegistryFeatureOperationMetadata
- name: google.cloud.aiplatform.v1beta1.CreateSpecialistPoolOperationMetadata
- name: google.cloud.aiplatform.v1beta1.CreateTensorboardOperationMetadata
- name: google.cloud.aiplatform.v1beta1.DeleteFeatureValuesOperationMetadata
Expand All @@ -66,6 +73,10 @@ types:
- name: google.cloud.aiplatform.v1beta1.ExportFeatureValuesResponse
- name: google.cloud.aiplatform.v1beta1.ExportModelOperationMetadata
- name: google.cloud.aiplatform.v1beta1.ExportModelResponse
- name: google.cloud.aiplatform.v1beta1.Feature
- name: google.cloud.aiplatform.v1beta1.FeatureGroup
- name: google.cloud.aiplatform.v1beta1.FeatureOnlineStore
- name: google.cloud.aiplatform.v1beta1.FeatureView
- name: google.cloud.aiplatform.v1beta1.ImportDataOperationMetadata
- name: google.cloud.aiplatform.v1beta1.ImportDataResponse
- name: google.cloud.aiplatform.v1beta1.ImportFeatureValuesOperationMetadata
Expand All @@ -91,6 +102,10 @@ types:
- name: google.cloud.aiplatform.v1beta1.UpdateDeploymentResourcePoolOperationMetadata
- name: google.cloud.aiplatform.v1beta1.UpdateExplanationDatasetOperationMetadata
- name: google.cloud.aiplatform.v1beta1.UpdateExplanationDatasetResponse
- name: google.cloud.aiplatform.v1beta1.UpdateFeatureGroupOperationMetadata
- name: google.cloud.aiplatform.v1beta1.UpdateFeatureOnlineStoreOperationMetadata
- name: google.cloud.aiplatform.v1beta1.UpdateFeatureOperationMetadata
- name: google.cloud.aiplatform.v1beta1.UpdateFeatureViewOperationMetadata
- name: google.cloud.aiplatform.v1beta1.UpdateFeaturestoreOperationMetadata
- name: google.cloud.aiplatform.v1beta1.UpdateIndexOperationMetadata
- name: google.cloud.aiplatform.v1beta1.UpdateModelDeploymentMonitoringJobOperationMetadata
Expand Down Expand Up @@ -635,6 +650,22 @@ authentication:
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform
- selector: 'google.cloud.aiplatform.v1beta1.FeatureOnlineStoreAdminService.*'
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform
- selector: google.cloud.aiplatform.v1beta1.FeatureOnlineStoreService.FetchFeatureValues
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform
- selector: google.cloud.aiplatform.v1beta1.FeatureOnlineStoreService.SearchNearestEntities
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform
- selector: 'google.cloud.aiplatform.v1beta1.FeatureRegistryService.*'
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform
- selector: 'google.cloud.aiplatform.v1beta1.FeaturestoreOnlineServingService.*'
oauth:
canonical_scopes: |-
Expand Down
10 changes: 5 additions & 5 deletions google/cloud/aiplatform/v1beta1/feature.proto
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ message Feature {
option (google.api.resource) = {
type: "aiplatform.googleapis.com/Feature"
pattern: "projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}"
pattern: "projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}"
plural: "features"
singular: "feature"
};

// A list of historical
Expand Down Expand Up @@ -116,11 +119,8 @@ message Feature {
// Description of the Feature.
string description = 2;

// Required. Immutable. Type of Feature value.
ValueType value_type = 3 [
(google.api.field_behavior) = REQUIRED,
(google.api.field_behavior) = IMMUTABLE
];
// Immutable. Type of Feature value.
ValueType value_type = 3 [(google.api.field_behavior) = IMMUTABLE];

// Output only. Timestamp when this EntityType was created.
google.protobuf.Timestamp create_time = 4
Expand Down
95 changes: 95 additions & 0 deletions google/cloud/aiplatform/v1beta1/feature_group.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package google.cloud.aiplatform.v1beta1;

import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/cloud/aiplatform/v1beta1/io.proto";
import "google/protobuf/timestamp.proto";

option csharp_namespace = "Google.Cloud.AIPlatform.V1Beta1";
option go_package = "cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb;aiplatformpb";
option java_multiple_files = true;
option java_outer_classname = "FeatureGroupProto";
option java_package = "com.google.cloud.aiplatform.v1beta1";
option php_namespace = "Google\\Cloud\\AIPlatform\\V1beta1";
option ruby_package = "Google::Cloud::AIPlatform::V1beta1";

// Vertex AI Feature Group.
message FeatureGroup {
option (google.api.resource) = {
type: "aiplatform.googleapis.com/FeatureGroup"
pattern: "projects/{project}/locations/{location}/featureGroups/{feature_group}"
plural: "featureGroups"
singular: "featureGroup"
};

// Input source type for BigQuery Tables and Views.
message BigQuery {
// Required. Immutable. The BigQuery source URI that points to either a
// BigQuery Table or View.
BigQuerySource big_query_source = 1 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.field_behavior) = REQUIRED
];

// Optional. Columns to construct entity_id / row keys. Currently only
// supports 1 entity_id_column. If not provided defaults to `entity_id`.
repeated string entity_id_columns = 2
[(google.api.field_behavior) = OPTIONAL];
}

oneof source {
// Indicates that features for this group come from BigQuery Table/View.
// By default treats the source as a sparse time series source, which is
// required to have an entity_id and a feature_timestamp column in the
// source.
BigQuery big_query = 7;
}

// Output only. Name of the FeatureGroup. Format:
// `projects/{project}/locations/{location}/featureGroups/{featureGroup}`
string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];

// Output only. Timestamp when this FeatureGroup was created.
google.protobuf.Timestamp create_time = 2
[(google.api.field_behavior) = OUTPUT_ONLY];

// Output only. Timestamp when this FeatureGroup was last updated.
google.protobuf.Timestamp update_time = 3
[(google.api.field_behavior) = OUTPUT_ONLY];

// Optional. Used to perform consistent read-modify-write updates. If not set,
// a blind "overwrite" update happens.
string etag = 4 [(google.api.field_behavior) = OPTIONAL];

// Optional. The labels with user-defined metadata to organize your
// FeatureGroup.
//
// Label keys and values can be no longer than 64 characters
// (Unicode codepoints), can only contain lowercase letters, numeric
// characters, underscores and dashes. International characters are allowed.
//
// See https://goo.gl/xmQnxf for more information on and examples of labels.
// No more than 64 user labels can be associated with one
// FeatureGroup(System labels are excluded)." System reserved label keys
// are prefixed with "aiplatform.googleapis.com/" and are immutable.
map<string, string> labels = 5 [(google.api.field_behavior) = OPTIONAL];

// Optional. Description of the FeatureGroup.
string description = 6 [(google.api.field_behavior) = OPTIONAL];
}
133 changes: 133 additions & 0 deletions google/cloud/aiplatform/v1beta1/feature_online_store.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package google.cloud.aiplatform.v1beta1;

import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/protobuf/timestamp.proto";

option csharp_namespace = "Google.Cloud.AIPlatform.V1Beta1";
option go_package = "cloud.google.com/go/aiplatform/apiv1beta1/aiplatformpb;aiplatformpb";
option java_multiple_files = true;
option java_outer_classname = "FeatureOnlineStoreProto";
option java_package = "com.google.cloud.aiplatform.v1beta1";
option php_namespace = "Google\\Cloud\\AIPlatform\\V1beta1";
option ruby_package = "Google::Cloud::AIPlatform::V1beta1";

// Vertex AI Feature Online Store provides a centralized repository for serving
// ML features and embedding indexes at low latency. The Feature Online Store is
// a top-level container.
message FeatureOnlineStore {
option (google.api.resource) = {
type: "aiplatform.googleapis.com/FeatureOnlineStore"
pattern: "projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}"
};

message Bigtable {
message AutoScaling {
// Required. The minimum number of nodes to scale down to. Must be greater
// than or equal to 1.
int32 min_node_count = 1 [(google.api.field_behavior) = REQUIRED];

// Required. The maximum number of nodes to scale up to. Must be greater
// than or equal to min_node_count, and less than or equal to 10 times of
// 'min_node_count'.
int32 max_node_count = 2 [(google.api.field_behavior) = REQUIRED];

// Optional. A percentage of the cluster's CPU capacity. Can be from 10%
// to 80%. When a cluster's CPU utilization exceeds the target that you
// have set, Bigtable immediately adds nodes to the cluster. When CPU
// utilization is substantially lower than the target, Bigtable removes
// nodes. If not set will default to 50%.
int32 cpu_utilization_target = 3 [(google.api.field_behavior) = OPTIONAL];
}

// Required. Autoscaling config applied to Bigtable Instance.
AutoScaling auto_scaling = 1 [(google.api.field_behavior) = REQUIRED];
}

// Contains settings for embedding management.
message EmbeddingManagement {
// Optional. Immutable. Whether to enable embedding management in this
// FeatureOnlineStore. It's immutable after creation to ensure the
// FeatureOnlineStore availability.
bool enabled = 1 [
(google.api.field_behavior) = OPTIONAL,
(google.api.field_behavior) = IMMUTABLE
];
}

// Possible states a featureOnlineStore can have.
enum State {
// Default value. This value is unused.
STATE_UNSPECIFIED = 0;

// State when the featureOnlineStore configuration is not being updated and
// the fields reflect the current configuration of the featureOnlineStore.
// The featureOnlineStore is usable in this state.
STABLE = 1;

// The state of the featureOnlineStore configuration when it is being
// updated. During an update, the fields reflect either the original
// configuration or the updated configuration of the featureOnlineStore. The
// featureOnlineStore is still usable in this state.
UPDATING = 2;
}

oneof storage_type {
// Contains settings for the Cloud Bigtable instance that will be created
// to serve featureValues for all FeatureViews under this
// FeatureOnlineStore.
Bigtable bigtable = 8;
}

// Output only. Name of the FeatureOnlineStore. Format:
// `projects/{project}/locations/{location}/featureOnlineStores/{featureOnlineStore}`
string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];

// Output only. Timestamp when this FeatureOnlineStore was created.
google.protobuf.Timestamp create_time = 3
[(google.api.field_behavior) = OUTPUT_ONLY];

// Output only. Timestamp when this FeatureOnlineStore was last updated.
google.protobuf.Timestamp update_time = 4
[(google.api.field_behavior) = OUTPUT_ONLY];

// Optional. Used to perform consistent read-modify-write updates. If not set,
// a blind "overwrite" update happens.
string etag = 5 [(google.api.field_behavior) = OPTIONAL];

// Optional. The labels with user-defined metadata to organize your
// FeatureOnlineStore.
//
// Label keys and values can be no longer than 64 characters
// (Unicode codepoints), can only contain lowercase letters, numeric
// characters, underscores and dashes. International characters are allowed.
//
// See https://goo.gl/xmQnxf for more information on and examples of labels.
// No more than 64 user labels can be associated with one
// FeatureOnlineStore(System labels are excluded)." System reserved label keys
// are prefixed with "aiplatform.googleapis.com/" and are immutable.
map<string, string> labels = 6 [(google.api.field_behavior) = OPTIONAL];

// Output only. State of the featureOnlineStore.
State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY];

// Optional. The settings for embedding management in FeatureOnlineStore.
EmbeddingManagement embedding_management = 11
[(google.api.field_behavior) = OPTIONAL];
}
Loading

0 comments on commit 76f607f

Please sign in to comment.