diff options
author | Dan Willemsen <dwillemsen@google.com> | 2019-04-09 20:30:35 +0000 |
---|---|---|
committer | Dan Willemsen <dwillemsen@google.com> | 2019-04-09 20:32:11 +0000 |
commit | cf713bac0768fa14bad9fd1a537f8529fc8a7911 (patch) | |
tree | 27a3541dc77e80c226ca6a8fb80709eb565b299c /google/cloud/ml/v1/model_service.proto | |
parent | f8fa0e96f5b4851ddd164bd99964955f5fa17df4 (diff) | |
parent | 3f57de2fbe951640b587d9c2d503daf554747749 (diff) | |
download | googleapis-cf713bac0768fa14bad9fd1a537f8529fc8a7911.tar.gz |
Merge branch 'aosp/upstream-master'build-tools-release
Includes android-required NOTICE/MODULE_LICENSE*/METADATA files.
Test: treehugger
Change-Id: Ia1c1b002f10d7c9ff37aa47df44e4d8edc041879
Diffstat (limited to 'google/cloud/ml/v1/model_service.proto')
-rw-r--r-- | google/cloud/ml/v1/model_service.proto | 392 |
1 files changed, 392 insertions, 0 deletions
diff --git a/google/cloud/ml/v1/model_service.proto b/google/cloud/ml/v1/model_service.proto new file mode 100644 index 000000000..c57b16b50 --- /dev/null +++ b/google/cloud/ml/v1/model_service.proto @@ -0,0 +1,392 @@ +// Copyright 2017 Google Inc. +// +// 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.ml.v1; + +import "google/api/annotations.proto"; +import "google/api/auth.proto"; +import "google/longrunning/operations.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "google.golang.org/genproto/googleapis/cloud/ml/v1;ml"; +option java_multiple_files = true; +option java_outer_classname = "ModelServiceProto"; +option java_package = "com.google.cloud.ml.api.v1"; + +// Copyright 2017 Google Inc. All Rights Reserved. +// +// Proto file for the Google Cloud Machine Learning Engine. +// Describes the 'models service' to work with the 'model' and 'version' +// resources. + +// Provides methods that create and manage machine learning models and their +// versions. +// +// A model in this context is a container for versions. The model can't provide +// predictions without first having a version created for it. +// +// Each version is a trained machine learning model, and each is assumed to be +// an iteration of the same machine learning problem as the other versions of +// the same model. +// +// Your project can define multiple models, each with multiple versions. +// +// The basic life cycle of a model is: +// +// * Create and train the machine learning model and save it to a +// Google Cloud Storage location. +// * Use +// [projects.models.create](/ml/reference/rest/v1/projects.models/create) +// to make a new model in your project. +// * Use +// [projects.models.versions.create](/ml/reference/rest/v1/projects.models.versions/create) +// to deploy your saved model. +// * Use [projects.predict](/ml/reference/rest/v1/projects/predict to +// request predictions of a version of your model, or use +// [projects.jobs.create](/ml/reference/rest/v1/projects.jobs/create) +// to start a batch prediction job. +service ModelService { + // Creates a model which will later contain one or more versions. + // + // You must add at least one version before you can request predictions from + // the model. Add versions by calling + // [projects.models.versions.create](/ml/reference/rest/v1/projects.models.versions/create). + rpc CreateModel(CreateModelRequest) returns (Model) { + option (google.api.http) = { + post: "/v1/{parent=projects/*}/models" + body: "model" + }; + } + + // Lists the models in a project. + // + // Each project can contain multiple models, and each model can have multiple + // versions. + rpc ListModels(ListModelsRequest) returns (ListModelsResponse) { + option (google.api.http) = { + get: "/v1/{parent=projects/*}/models" + }; + } + + // Gets information about a model, including its name, the description (if + // set), and the default version (if at least one version of the model has + // been deployed). + rpc GetModel(GetModelRequest) returns (Model) { + option (google.api.http) = { + get: "/v1/{name=projects/*/models/*}" + }; + } + + // Deletes a model. + // + // You can only delete a model if there are no versions in it. You can delete + // versions by calling + // [projects.models.versions.delete](/ml/reference/rest/v1/projects.models.versions/delete). + rpc DeleteModel(DeleteModelRequest) returns (google.longrunning.Operation) { + option (google.api.http) = { + delete: "/v1/{name=projects/*/models/*}" + }; + } + + // Creates a new version of a model from a trained TensorFlow model. + // + // If the version created in the cloud by this call is the first deployed + // version of the specified model, it will be made the default version of the + // model. When you add a version to a model that already has one or more + // versions, the default version does not automatically change. If you want a + // new version to be the default, you must call + // [projects.models.versions.setDefault](/ml/reference/rest/v1/projects.models.versions/setDefault). + rpc CreateVersion(CreateVersionRequest) + returns (google.longrunning.Operation) { + option (google.api.http) = { + post: "/v1/{parent=projects/*/models/*}/versions" + body: "version" + }; + } + + // Gets basic information about all the versions of a model. + // + // If you expect that a model has a lot of versions, or if you need to handle + // only a limited number of results at a time, you can request that the list + // be retrieved in batches (called pages): + rpc ListVersions(ListVersionsRequest) returns (ListVersionsResponse) { + option (google.api.http) = { + get: "/v1/{parent=projects/*/models/*}/versions" + }; + } + + // Gets information about a model version. + // + // Models can have multiple versions. You can call + // [projects.models.versions.list](/ml/reference/rest/v1/projects.models.versions/list) + // to get the same information that this method returns for all of the + // versions of a model. + rpc GetVersion(GetVersionRequest) returns (Version) { + option (google.api.http) = { + get: "/v1/{name=projects/*/models/*/versions/*}" + }; + } + + // Deletes a model version. + // + // Each model can have multiple versions deployed and in use at any given + // time. Use this method to remove a single version. + // + // Note: You cannot delete the version that is set as the default version + // of the model unless it is the only remaining version. + rpc DeleteVersion(DeleteVersionRequest) + returns (google.longrunning.Operation) { + option (google.api.http) = { + delete: "/v1/{name=projects/*/models/*/versions/*}" + }; + } + + // Designates a version to be the default for the model. + // + // The default version is used for prediction requests made against the model + // that don't specify a version. + // + // The first version to be created for a model is automatically set as the + // default. You must make any subsequent changes to the default version + // setting manually using this method. + rpc SetDefaultVersion(SetDefaultVersionRequest) returns (Version) { + option (google.api.http) = { + post: "/v1/{name=projects/*/models/*/versions/*}:setDefault" + body: "*" + }; + } +} + +// Represents a machine learning solution. +// +// A model can have multiple versions, each of which is a deployed, trained +// model ready to receive prediction requests. The model itself is just a +// container. +message Model { + // Required. The name specified for the model when it was created. + // + // The model name must be unique within the project it is created in. + string name = 1; + + // Optional. The description specified for the model when it was created. + string description = 2; + + // Output only. The default version of the model. This version will be used to + // handle prediction requests that do not specify a version. + // + // You can change the default version by calling + // [projects.methods.versions.setDefault](/ml/reference/rest/v1/projects.models.versions/setDefault). + Version default_version = 3; + + // Optional. The list of regions where the model is going to be deployed. + // Currently only one region per model is supported. + // Defaults to 'us-central1' if nothing is set. + repeated string regions = 4; + + // Optional. If true, enables StackDriver Logging for online prediction. + // Default is false. + bool online_prediction_logging = 5; +} + +// Represents a version of the model. +// +// Each version is a trained model deployed in the cloud, ready to handle +// prediction requests. A model can have multiple versions. You can get +// information about all of the versions of a given model by calling +// [projects.models.versions.list](/ml/reference/rest/v1/projects.models.versions/list). +message Version { + // Required.The name specified for the version when it was created. + // + // The version name must be unique within the model it is created in. + string name = 1; + + // Optional. The description specified for the version when it was created. + string description = 2; + + // Output only. If true, this version will be used to handle prediction + // requests that do not specify a version. + // + // You can change the default version by calling + // [projects.methods.versions.setDefault](/ml/reference/rest/v1/projects.models.versions/setDefault). + bool is_default = 3; + + // Required. The Google Cloud Storage location of the trained model used to + // create the version. See the + // [overview of model deployment](/ml/docs/concepts/deployment-overview) for + // more informaiton. + // + // When passing Version to + // [projects.models.versions.create](/ml/reference/rest/v1/projects.models.versions/create) + // the model service uses the specified location as the source of the model. + // Once deployed, the model version is hosted by the prediction service, so + // this location is useful only as a historical record. + string deployment_uri = 4; + + // Output only. The time the version was created. + google.protobuf.Timestamp create_time = 5; + + // Output only. The time the version was last used for prediction. + google.protobuf.Timestamp last_use_time = 6; + + // Optional. The Google Cloud ML runtime version to use for this deployment. + // If not set, Google Cloud ML will choose a version. + string runtime_version = 8; + + // Optional. Manually select the number of nodes to use for serving the + // model. If unset (i.e., by default), the number of nodes used to serve + // the model automatically scales with traffic. However, care should be + // taken to ramp up traffic according to the model's ability to scale. If + // your model needs to handle bursts of traffic beyond it's ability to + // scale, it is recommended you set this field appropriately. + ManualScaling manual_scaling = 9; +} + +// Options for manually scaling a model. +message ManualScaling { + // The number of nodes to allocate for this model. These nodes are always up, + // starting from the time the model is deployed, so the cost of operating + // this model will be proportional to nodes * number of hours since + // deployment. + int32 nodes = 1; +} + +// Request message for the CreateModel method. +message CreateModelRequest { + // Required. The project name. + // + // Authorization: requires `Editor` role on the specified project. + string parent = 1; + + // Required. The model to create. + Model model = 2; +} + +// Request message for the ListModels method. +message ListModelsRequest { + // Required. The name of the project whose models are to be listed. + // + // Authorization: requires `Viewer` role on the specified project. + string parent = 1; + + // Optional. A page token to request the next page of results. + // + // You get the token from the `next_page_token` field of the response from + // the previous call. + string page_token = 4; + + // Optional. The number of models to retrieve per "page" of results. If there + // are more remaining results than this number, the response message will + // contain a valid value in the `next_page_token` field. + // + // The default value is 20, and the maximum page size is 100. + int32 page_size = 5; +} + +// Response message for the ListModels method. +message ListModelsResponse { + // The list of models. + repeated Model models = 1; + + // Optional. Pass this token as the `page_token` field of the request for a + // subsequent call. + string next_page_token = 2; +} + +// Request message for the GetModel method. +message GetModelRequest { + // Required. The name of the model. + // + // Authorization: requires `Viewer` role on the parent project. + string name = 1; +} + +// Request message for the DeleteModel method. +message DeleteModelRequest { + // Required. The name of the model. + // + // Authorization: requires `Editor` role on the parent project. + string name = 1; +} + +// Uploads the provided trained model version to Cloud Machine Learning. +message CreateVersionRequest { + // Required. The name of the model. + // + // Authorization: requires `Editor` role on the parent project. + string parent = 1; + + // Required. The version details. + Version version = 2; +} + +// Request message for the ListVersions method. +message ListVersionsRequest { + // Required. The name of the model for which to list the version. + // + // Authorization: requires `Viewer` role on the parent project. + string parent = 1; + + // Optional. A page token to request the next page of results. + // + // You get the token from the `next_page_token` field of the response from + // the previous call. + string page_token = 4; + + // Optional. The number of versions to retrieve per "page" of results. If + // there are more remaining results than this number, the response message + // will contain a valid value in the `next_page_token` field. + // + // The default value is 20, and the maximum page size is 100. + int32 page_size = 5; +} + +// Response message for the ListVersions method. +message ListVersionsResponse { + // The list of versions. + repeated Version versions = 1; + + // Optional. Pass this token as the `page_token` field of the request for a + // subsequent call. + string next_page_token = 2; +} + +// Request message for the GetVersion method. +message GetVersionRequest { + // Required. The name of the version. + // + // Authorization: requires `Viewer` role on the parent project. + string name = 1; +} + +// Request message for the DeleteVerionRequest method. +message DeleteVersionRequest { + // Required. The name of the version. You can get the names of all the + // versions of a model by calling + // [projects.models.versions.list](/ml/reference/rest/v1/projects.models.versions/list). + // + // Authorization: requires `Editor` role on the parent project. + string name = 1; +} + +// Request message for the SetDefaultVersion request. +message SetDefaultVersionRequest { + // Required. The name of the version to make the default for the model. You + // can get the names of all the versions of a model by calling + // [projects.models.versions.list](/ml/reference/rest/v1/projects.models.versions/list). + // + // Authorization: requires `Editor` role on the parent project. + string name = 1; +} |