529 lines
19 KiB
529 lines
19 KiB
// Copyright 2022 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/annotations.proto"; |
|
import "google/api/client.proto"; |
|
import "google/api/field_behavior.proto"; |
|
import "google/api/resource.proto"; |
|
import "google/cloud/aiplatform/v1beta1/operation.proto"; |
|
import "google/cloud/aiplatform/v1beta1/study.proto"; |
|
import "google/longrunning/operations.proto"; |
|
import "google/protobuf/empty.proto"; |
|
import "google/protobuf/timestamp.proto"; |
|
|
|
option csharp_namespace = "Google.Cloud.AIPlatform.V1Beta1"; |
|
option go_package = "google.golang.org/genproto/googleapis/cloud/aiplatform/v1beta1;aiplatform"; |
|
option java_multiple_files = true; |
|
option java_outer_classname = "VizierServiceProto"; |
|
option java_package = "com.google.cloud.aiplatform.v1beta1"; |
|
option php_namespace = "Google\\Cloud\\AIPlatform\\V1beta1"; |
|
option ruby_package = "Google::Cloud::AIPlatform::V1beta1"; |
|
|
|
// Vertex AI Vizier API. |
|
// |
|
// Vertex AI Vizier is a service to solve blackbox optimization problems, |
|
// such as tuning machine learning hyperparameters and searching over deep |
|
// learning architectures. |
|
service VizierService { |
|
option (google.api.default_host) = "aiplatform.googleapis.com"; |
|
option (google.api.oauth_scopes) = |
|
"https://www.googleapis.com/auth/cloud-platform"; |
|
|
|
// Creates a Study. A resource name will be generated after creation of the |
|
// Study. |
|
rpc CreateStudy(CreateStudyRequest) returns (Study) { |
|
option (google.api.http) = { |
|
post: "/v1beta1/{parent=projects/*/locations/*}/studies" |
|
body: "study" |
|
}; |
|
option (google.api.method_signature) = "parent,study"; |
|
} |
|
|
|
// Gets a Study by name. |
|
rpc GetStudy(GetStudyRequest) returns (Study) { |
|
option (google.api.http) = { |
|
get: "/v1beta1/{name=projects/*/locations/*/studies/*}" |
|
}; |
|
option (google.api.method_signature) = "name"; |
|
} |
|
|
|
// Lists all the studies in a region for an associated project. |
|
rpc ListStudies(ListStudiesRequest) returns (ListStudiesResponse) { |
|
option (google.api.http) = { |
|
get: "/v1beta1/{parent=projects/*/locations/*}/studies" |
|
}; |
|
option (google.api.method_signature) = "parent"; |
|
} |
|
|
|
// Deletes a Study. |
|
rpc DeleteStudy(DeleteStudyRequest) returns (google.protobuf.Empty) { |
|
option (google.api.http) = { |
|
delete: "/v1beta1/{name=projects/*/locations/*/studies/*}" |
|
}; |
|
option (google.api.method_signature) = "name"; |
|
} |
|
|
|
// Looks a study up using the user-defined display_name field instead of the |
|
// fully qualified resource name. |
|
rpc LookupStudy(LookupStudyRequest) returns (Study) { |
|
option (google.api.http) = { |
|
post: "/v1beta1/{parent=projects/*/locations/*}/studies:lookup" |
|
body: "*" |
|
}; |
|
option (google.api.method_signature) = "parent"; |
|
} |
|
|
|
// Adds one or more Trials to a Study, with parameter values |
|
// suggested by Vertex AI Vizier. Returns a long-running |
|
// operation associated with the generation of Trial suggestions. |
|
// When this long-running operation succeeds, it will contain |
|
// a [SuggestTrialsResponse][google.cloud.ml.v1.SuggestTrialsResponse]. |
|
rpc SuggestTrials(SuggestTrialsRequest) |
|
returns (google.longrunning.Operation) { |
|
option (google.api.http) = { |
|
post: "/v1beta1/{parent=projects/*/locations/*/studies/*}/trials:suggest" |
|
body: "*" |
|
}; |
|
option (google.longrunning.operation_info) = { |
|
response_type: "SuggestTrialsResponse" |
|
metadata_type: "SuggestTrialsMetadata" |
|
}; |
|
} |
|
|
|
// Adds a user provided Trial to a Study. |
|
rpc CreateTrial(CreateTrialRequest) returns (Trial) { |
|
option (google.api.http) = { |
|
post: "/v1beta1/{parent=projects/*/locations/*/studies/*}/trials" |
|
body: "trial" |
|
}; |
|
option (google.api.method_signature) = "parent,trial"; |
|
} |
|
|
|
// Gets a Trial. |
|
rpc GetTrial(GetTrialRequest) returns (Trial) { |
|
option (google.api.http) = { |
|
get: "/v1beta1/{name=projects/*/locations/*/studies/*/trials/*}" |
|
}; |
|
option (google.api.method_signature) = "name"; |
|
} |
|
|
|
// Lists the Trials associated with a Study. |
|
rpc ListTrials(ListTrialsRequest) returns (ListTrialsResponse) { |
|
option (google.api.http) = { |
|
get: "/v1beta1/{parent=projects/*/locations/*/studies/*}/trials" |
|
}; |
|
option (google.api.method_signature) = "parent"; |
|
} |
|
|
|
// Adds a measurement of the objective metrics to a Trial. This measurement |
|
// is assumed to have been taken before the Trial is complete. |
|
rpc AddTrialMeasurement(AddTrialMeasurementRequest) returns (Trial) { |
|
option (google.api.http) = { |
|
post: "/v1beta1/{trial_name=projects/*/locations/*/studies/*/trials/*}:addTrialMeasurement" |
|
body: "*" |
|
}; |
|
} |
|
|
|
// Marks a Trial as complete. |
|
rpc CompleteTrial(CompleteTrialRequest) returns (Trial) { |
|
option (google.api.http) = { |
|
post: "/v1beta1/{name=projects/*/locations/*/studies/*/trials/*}:complete" |
|
body: "*" |
|
}; |
|
} |
|
|
|
// Deletes a Trial. |
|
rpc DeleteTrial(DeleteTrialRequest) returns (google.protobuf.Empty) { |
|
option (google.api.http) = { |
|
delete: "/v1beta1/{name=projects/*/locations/*/studies/*/trials/*}" |
|
}; |
|
option (google.api.method_signature) = "name"; |
|
} |
|
|
|
// Checks whether a Trial should stop or not. Returns a |
|
// long-running operation. When the operation is successful, |
|
// it will contain a |
|
// [CheckTrialEarlyStoppingStateResponse][google.cloud.ml.v1.CheckTrialEarlyStoppingStateResponse]. |
|
rpc CheckTrialEarlyStoppingState(CheckTrialEarlyStoppingStateRequest) |
|
returns (google.longrunning.Operation) { |
|
option (google.api.http) = { |
|
post: "/v1beta1/{trial_name=projects/*/locations/*/studies/*/trials/*}:checkTrialEarlyStoppingState" |
|
body: "*" |
|
}; |
|
option (google.longrunning.operation_info) = { |
|
response_type: "CheckTrialEarlyStoppingStateResponse" |
|
metadata_type: "CheckTrialEarlyStoppingStateMetatdata" |
|
}; |
|
} |
|
|
|
// Stops a Trial. |
|
rpc StopTrial(StopTrialRequest) returns (Trial) { |
|
option (google.api.http) = { |
|
post: "/v1beta1/{name=projects/*/locations/*/studies/*/trials/*}:stop" |
|
body: "*" |
|
}; |
|
} |
|
|
|
// Lists the pareto-optimal Trials for multi-objective Study or the |
|
// optimal Trials for single-objective Study. The definition of |
|
// pareto-optimal can be checked in wiki page. |
|
// https://en.wikipedia.org/wiki/Pareto_efficiency |
|
rpc ListOptimalTrials(ListOptimalTrialsRequest) |
|
returns (ListOptimalTrialsResponse) { |
|
option (google.api.http) = { |
|
post: "/v1beta1/{parent=projects/*/locations/*/studies/*}/trials:listOptimalTrials" |
|
body: "*" |
|
}; |
|
option (google.api.method_signature) = "parent"; |
|
} |
|
} |
|
|
|
// Request message for |
|
// [VizierService.GetStudy][google.cloud.aiplatform.v1beta1.VizierService.GetStudy]. |
|
message GetStudyRequest { |
|
// Required. The name of the Study resource. |
|
// Format: `projects/{project}/locations/{location}/studies/{study}` |
|
string name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "aiplatform.googleapis.com/Study" |
|
} |
|
]; |
|
} |
|
|
|
// Request message for |
|
// [VizierService.CreateStudy][google.cloud.aiplatform.v1beta1.VizierService.CreateStudy]. |
|
message CreateStudyRequest { |
|
// Required. The resource name of the Location to create the CustomJob in. |
|
// Format: `projects/{project}/locations/{location}` |
|
string parent = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "locations.googleapis.com/Location" |
|
} |
|
]; |
|
|
|
// Required. The Study configuration used to create the Study. |
|
Study study = 2 [(google.api.field_behavior) = REQUIRED]; |
|
} |
|
|
|
// Request message for |
|
// [VizierService.ListStudies][google.cloud.aiplatform.v1beta1.VizierService.ListStudies]. |
|
message ListStudiesRequest { |
|
// Required. The resource name of the Location to list the Study from. |
|
// Format: `projects/{project}/locations/{location}` |
|
string parent = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "locations.googleapis.com/Location" |
|
} |
|
]; |
|
|
|
// Optional. A page token to request the next page of results. |
|
// If unspecified, there are no subsequent pages. |
|
string page_token = 2 [(google.api.field_behavior) = OPTIONAL]; |
|
|
|
// Optional. The maximum number of studies to return per "page" of results. |
|
// If unspecified, service will pick an appropriate default. |
|
int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL]; |
|
} |
|
|
|
// Response message for |
|
// [VizierService.ListStudies][google.cloud.aiplatform.v1beta1.VizierService.ListStudies]. |
|
message ListStudiesResponse { |
|
// The studies associated with the project. |
|
repeated Study studies = 1; |
|
|
|
// Passes this token as the `page_token` field of the request for a |
|
// subsequent call. |
|
// If this field is omitted, there are no subsequent pages. |
|
string next_page_token = 2; |
|
} |
|
|
|
// Request message for |
|
// [VizierService.DeleteStudy][google.cloud.aiplatform.v1beta1.VizierService.DeleteStudy]. |
|
message DeleteStudyRequest { |
|
// Required. The name of the Study resource to be deleted. |
|
// Format: `projects/{project}/locations/{location}/studies/{study}` |
|
string name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "aiplatform.googleapis.com/Study" |
|
} |
|
]; |
|
} |
|
|
|
// Request message for |
|
// [VizierService.LookupStudy][google.cloud.aiplatform.v1beta1.VizierService.LookupStudy]. |
|
message LookupStudyRequest { |
|
// Required. The resource name of the Location to get the Study from. |
|
// Format: `projects/{project}/locations/{location}` |
|
string parent = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "locations.googleapis.com/Location" |
|
} |
|
]; |
|
|
|
// Required. The user-defined display name of the Study |
|
string display_name = 2 [(google.api.field_behavior) = REQUIRED]; |
|
} |
|
|
|
// Request message for |
|
// [VizierService.SuggestTrials][google.cloud.aiplatform.v1beta1.VizierService.SuggestTrials]. |
|
message SuggestTrialsRequest { |
|
// Required. The project and location that the Study belongs to. |
|
// Format: `projects/{project}/locations/{location}/studies/{study}` |
|
string parent = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "aiplatform.googleapis.com/Study" |
|
} |
|
]; |
|
|
|
// Required. The number of suggestions requested. It must be positive. |
|
int32 suggestion_count = 2 [(google.api.field_behavior) = REQUIRED]; |
|
|
|
// Required. The identifier of the client that is requesting the suggestion. |
|
// |
|
// If multiple SuggestTrialsRequests have the same `client_id`, |
|
// the service will return the identical suggested Trial if the Trial is |
|
// pending, and provide a new Trial if the last suggested Trial was completed. |
|
string client_id = 3 [(google.api.field_behavior) = REQUIRED]; |
|
} |
|
|
|
// Response message for |
|
// [VizierService.SuggestTrials][google.cloud.aiplatform.v1beta1.VizierService.SuggestTrials]. |
|
message SuggestTrialsResponse { |
|
// A list of Trials. |
|
repeated Trial trials = 1; |
|
|
|
// The state of the Study. |
|
Study.State study_state = 2; |
|
|
|
// The time at which the operation was started. |
|
google.protobuf.Timestamp start_time = 3; |
|
|
|
// The time at which operation processing completed. |
|
google.protobuf.Timestamp end_time = 4; |
|
} |
|
|
|
// Details of operations that perform Trials suggestion. |
|
message SuggestTrialsMetadata { |
|
// Operation metadata for suggesting Trials. |
|
GenericOperationMetadata generic_metadata = 1; |
|
|
|
// The identifier of the client that is requesting the suggestion. |
|
// |
|
// If multiple SuggestTrialsRequests have the same `client_id`, |
|
// the service will return the identical suggested Trial if the Trial is |
|
// pending, and provide a new Trial if the last suggested Trial was completed. |
|
string client_id = 2; |
|
} |
|
|
|
// Request message for |
|
// [VizierService.CreateTrial][google.cloud.aiplatform.v1beta1.VizierService.CreateTrial]. |
|
message CreateTrialRequest { |
|
// Required. The resource name of the Study to create the Trial in. |
|
// Format: `projects/{project}/locations/{location}/studies/{study}` |
|
string parent = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "aiplatform.googleapis.com/Study" |
|
} |
|
]; |
|
|
|
// Required. The Trial to create. |
|
Trial trial = 2 [(google.api.field_behavior) = REQUIRED]; |
|
} |
|
|
|
// Request message for |
|
// [VizierService.GetTrial][google.cloud.aiplatform.v1beta1.VizierService.GetTrial]. |
|
message GetTrialRequest { |
|
// Required. The name of the Trial resource. |
|
// Format: |
|
// `projects/{project}/locations/{location}/studies/{study}/trials/{trial}` |
|
string name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "aiplatform.googleapis.com/Trial" |
|
} |
|
]; |
|
} |
|
|
|
// Request message for |
|
// [VizierService.ListTrials][google.cloud.aiplatform.v1beta1.VizierService.ListTrials]. |
|
message ListTrialsRequest { |
|
// Required. The resource name of the Study to list the Trial from. |
|
// Format: `projects/{project}/locations/{location}/studies/{study}` |
|
string parent = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "aiplatform.googleapis.com/Study" |
|
} |
|
]; |
|
|
|
// Optional. A page token to request the next page of results. |
|
// If unspecified, there are no subsequent pages. |
|
string page_token = 2 [(google.api.field_behavior) = OPTIONAL]; |
|
|
|
// Optional. The number of Trials to retrieve per "page" of results. |
|
// If unspecified, the service will pick an appropriate default. |
|
int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL]; |
|
} |
|
|
|
// Response message for |
|
// [VizierService.ListTrials][google.cloud.aiplatform.v1beta1.VizierService.ListTrials]. |
|
message ListTrialsResponse { |
|
// The Trials associated with the Study. |
|
repeated Trial trials = 1; |
|
|
|
// Pass this token as the `page_token` field of the request for a |
|
// subsequent call. |
|
// If this field is omitted, there are no subsequent pages. |
|
string next_page_token = 2; |
|
} |
|
|
|
// Request message for |
|
// [VizierService.AddTrialMeasurement][google.cloud.aiplatform.v1beta1.VizierService.AddTrialMeasurement]. |
|
message AddTrialMeasurementRequest { |
|
// Required. The name of the trial to add measurement. |
|
// Format: |
|
// `projects/{project}/locations/{location}/studies/{study}/trials/{trial}` |
|
string trial_name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "aiplatform.googleapis.com/Trial" |
|
} |
|
]; |
|
|
|
// Required. The measurement to be added to a Trial. |
|
Measurement measurement = 3 [(google.api.field_behavior) = REQUIRED]; |
|
} |
|
|
|
// Request message for |
|
// [VizierService.CompleteTrial][google.cloud.aiplatform.v1beta1.VizierService.CompleteTrial]. |
|
message CompleteTrialRequest { |
|
// Required. The Trial's name. |
|
// Format: |
|
// `projects/{project}/locations/{location}/studies/{study}/trials/{trial}` |
|
string name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "aiplatform.googleapis.com/Trial" |
|
} |
|
]; |
|
|
|
// Optional. If provided, it will be used as the completed Trial's |
|
// final_measurement; Otherwise, the service will auto-select a |
|
// previously reported measurement as the final-measurement |
|
Measurement final_measurement = 2 [(google.api.field_behavior) = OPTIONAL]; |
|
|
|
// Optional. True if the Trial cannot be run with the given Parameter, and |
|
// final_measurement will be ignored. |
|
bool trial_infeasible = 3 [(google.api.field_behavior) = OPTIONAL]; |
|
|
|
// Optional. A human readable reason why the trial was infeasible. This should |
|
// only be provided if `trial_infeasible` is true. |
|
string infeasible_reason = 4 [(google.api.field_behavior) = OPTIONAL]; |
|
} |
|
|
|
// Request message for |
|
// [VizierService.DeleteTrial][google.cloud.aiplatform.v1beta1.VizierService.DeleteTrial]. |
|
message DeleteTrialRequest { |
|
// Required. The Trial's name. |
|
// Format: |
|
// `projects/{project}/locations/{location}/studies/{study}/trials/{trial}` |
|
string name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "aiplatform.googleapis.com/Trial" |
|
} |
|
]; |
|
} |
|
|
|
// Request message for |
|
// [VizierService.CheckTrialEarlyStoppingState][google.cloud.aiplatform.v1beta1.VizierService.CheckTrialEarlyStoppingState]. |
|
message CheckTrialEarlyStoppingStateRequest { |
|
// Required. The Trial's name. |
|
// Format: |
|
// `projects/{project}/locations/{location}/studies/{study}/trials/{trial}` |
|
string trial_name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "aiplatform.googleapis.com/Trial" |
|
} |
|
]; |
|
} |
|
|
|
// Response message for |
|
// [VizierService.CheckTrialEarlyStoppingState][google.cloud.aiplatform.v1beta1.VizierService.CheckTrialEarlyStoppingState]. |
|
message CheckTrialEarlyStoppingStateResponse { |
|
// True if the Trial should stop. |
|
bool should_stop = 1; |
|
} |
|
|
|
// This message will be placed in the metadata field of a |
|
// google.longrunning.Operation associated with a CheckTrialEarlyStoppingState |
|
// request. |
|
message CheckTrialEarlyStoppingStateMetatdata { |
|
// Operation metadata for suggesting Trials. |
|
GenericOperationMetadata generic_metadata = 1; |
|
|
|
// The name of the Study that the Trial belongs to. |
|
string study = 2; |
|
|
|
// The Trial name. |
|
string trial = 3; |
|
} |
|
|
|
// Request message for |
|
// [VizierService.StopTrial][google.cloud.aiplatform.v1beta1.VizierService.StopTrial]. |
|
message StopTrialRequest { |
|
// Required. The Trial's name. |
|
// Format: |
|
// `projects/{project}/locations/{location}/studies/{study}/trials/{trial}` |
|
string name = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "aiplatform.googleapis.com/Trial" |
|
} |
|
]; |
|
} |
|
|
|
// Request message for |
|
// [VizierService.ListOptimalTrials][google.cloud.aiplatform.v1beta1.VizierService.ListOptimalTrials]. |
|
message ListOptimalTrialsRequest { |
|
// Required. The name of the Study that the optimal Trial belongs to. |
|
string parent = 1 [ |
|
(google.api.field_behavior) = REQUIRED, |
|
(google.api.resource_reference) = { |
|
type: "aiplatform.googleapis.com/Study" |
|
} |
|
]; |
|
} |
|
|
|
// Response message for |
|
// [VizierService.ListOptimalTrials][google.cloud.aiplatform.v1beta1.VizierService.ListOptimalTrials]. |
|
message ListOptimalTrialsResponse { |
|
// The pareto-optimal Trials for multiple objective Study or the |
|
// optimal trial for single objective Study. The definition of |
|
// pareto-optimal can be checked in wiki page. |
|
// https://en.wikipedia.org/wiki/Pareto_efficiency |
|
repeated Trial optimal_trials = 1; |
|
}
|
|
|