aboutsummaryrefslogtreecommitdiff
path: root/google/cloud/ml/v1/model_service.proto
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2019-04-09 20:30:35 +0000
committerDan Willemsen <dwillemsen@google.com>2019-04-09 20:32:11 +0000
commitcf713bac0768fa14bad9fd1a537f8529fc8a7911 (patch)
tree27a3541dc77e80c226ca6a8fb80709eb565b299c /google/cloud/ml/v1/model_service.proto
parentf8fa0e96f5b4851ddd164bd99964955f5fa17df4 (diff)
parent3f57de2fbe951640b587d9c2d503daf554747749 (diff)
downloadgoogleapis-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.proto392
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;
+}