private/google/cloud/aiplatform/v1beta1/model.proto
// Copyright 2020 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/dataset.proto";
import "google/cloud/aiplatform/v1beta1/deployed_model_ref.proto";
import "google/cloud/aiplatform/v1beta1/env_var.proto";
import "google/cloud/aiplatform/v1beta1/explanation.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/timestamp.proto";
import "google/api/annotations.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/aiplatform/v1beta1;aiplatform";
option java_multiple_files = true;
option java_outer_classname = "ModelProto";
option java_package = "com.google.cloud.aiplatform.v1beta1";
// A trained machine learning Model.
message Model {
option (google.api.resource) = {
type: "aiplatform.googleapis.com/Model"
pattern: "projects/{project}/locations/{location}/models/{model}"
};
// Represents a supported by the Model export format.
// All formats export to Google Cloud Storage.
message ExportFormat {
// The Model content that can be exported.
enum ExportableContent {
// Should not be used.
EXPORTABLE_CONTENT_UNSPECIFIED = 0;
// Model artifact and any of its supported files. Will be exported to the
// location specified by the `artifactDestination` field of the
// [ExportModelRequest.output_config][google.cloud.aiplatform.v1beta1.ExportModelRequest.output_config] object.
ARTIFACT = 1;
// The container image that is to be used when deploying this Model. Will
// be exported to the location specified by the `imageDestination` field
// of the [ExportModelRequest.output_config][google.cloud.aiplatform.v1beta1.ExportModelRequest.output_config] object.
IMAGE = 2;
}
// Output only. The ID of the export format.
// The possible format IDs are:
//
// * `tflite`
// Used for Android mobile devices.
//
// * `edgetpu-tflite`
// Used for [Edge TPU](https://cloud.google.com/edge-tpu/) devices.
//
// * `tf-saved-model`
// A tensorflow model in SavedModel format.
//
// * `tf-js`
// A [TensorFlow.js](https://www.tensorflow.org/js) model that can be used
// in the browser and in Node.js using JavaScript.
//
// * `core-ml`
// Used for iOS mobile devices.
//
// * `custom-trained`
// A Model that was uploaded or trained by custom code.
string id = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The content of this Model that may be exported.
repeated ExportableContent exportable_contents = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// Identifies a type of Model's prediction resources.
enum DeploymentResourcesType {
// Should not be used.
DEPLOYMENT_RESOURCES_TYPE_UNSPECIFIED = 0;
// Resources that are dedicated to the [DeployedModel][google.cloud.aiplatform.v1beta1.DeployedModel], and that need a
// higher degree of manual configuration.
DEDICATED_RESOURCES = 1;
// Resources that to large degree are decided by AI Platform, and require
// only a modest additional configuration.
AUTOMATIC_RESOURCES = 2;
}
// The resource name of the Model.
string name = 1;
// Required. The display name of the Model.
// The name can be up to 128 characters long and can be consist of any UTF-8
// characters.
string display_name = 2 [(google.api.field_behavior) = REQUIRED];
// The description of the Model.
string description = 3;
// The schemata that describe formats of the Model's predictions and
// explanations as given and returned via
// [PredictionService.Predict][google.cloud.aiplatform.v1beta1.PredictionService.Predict] and [PredictionService.Explain][google.cloud.aiplatform.v1beta1.PredictionService.Explain].
PredictSchemata predict_schemata = 4;
// Immutable. Points to a YAML file stored on Google Cloud Storage describing additional
// information about the Model, that is specific to it. Unset if the Model
// does not have any additional information.
// The schema is defined as an OpenAPI 3.0.2
// [Schema Object](https://tinyurl.com/y538mdwt#schema-object).
// AutoML Models always have this field populated by AI Platform, if no
// additional metadata is needed this field is set to an empty string.
// Note: The URI given on output will be immutable and probably different,
// including the URI scheme, than the one given on input. The output URI will
// point to a location where the user only has a read access.
string metadata_schema_uri = 5 [(google.api.field_behavior) = IMMUTABLE];
// Immutable. An additional information about the Model; the schema of the metadata can
// be found in [metadata_schema][google.cloud.aiplatform.v1beta1.Model.metadata_schema_uri].
// Unset if the Model does not have any additional information.
google.protobuf.Value metadata = 6 [(google.api.field_behavior) = IMMUTABLE];
// Output only. The formats in which this Model may be exported. If empty, this Model is
// not available for export.
repeated ExportFormat supported_export_formats = 20 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The resource name of the TrainingPipeline that uploaded this Model, if any.
string training_pipeline = 7 [
(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.resource_reference) = {
type: "aiplatform.googleapis.com/TrainingPipeline"
}
];
// Input only. The specification of the container that is to be used when deploying
// this Model. The specification is ingested upon
// [ModelService.UploadModel][google.cloud.aiplatform.v1beta1.ModelService.UploadModel], and all binaries it contains are copied
// and stored internally by AI Platform.
// Not present for AutoML Models.
ModelContainerSpec container_spec = 9 [(google.api.field_behavior) = INPUT_ONLY];
// Immutable. The path to the directory containing the Model artifact and any of its
// supporting files.
// Not present for AutoML Models.
string artifact_uri = 26 [(google.api.field_behavior) = IMMUTABLE];
// Output only. When this Model is deployed, its prediction resources are described by the
// `prediction_resources` field of the [Endpoint.deployed_models][google.cloud.aiplatform.v1beta1.Endpoint.deployed_models] object.
// Because not all Models support all resource configuration types, the
// configuration types this Model supports are listed here. If no
// configuration types are listed, the Model cannot be deployed to an
// [Endpoint][google.cloud.aiplatform.v1beta1.Endpoint] and does not support
// online predictions ([PredictionService.Predict][google.cloud.aiplatform.v1beta1.PredictionService.Predict] or
// [PredictionService.Explain][google.cloud.aiplatform.v1beta1.PredictionService.Explain]). Such a Model can serve predictions by
// using a [BatchPredictionJob][google.cloud.aiplatform.v1beta1.BatchPredictionJob], if it has at least one entry each in
// [supported_input_storage_formats][google.cloud.aiplatform.v1beta1.Model.supported_input_storage_formats] and
// [supported_output_storage_formats][google.cloud.aiplatform.v1beta1.Model.supported_output_storage_formats].
repeated DeploymentResourcesType supported_deployment_resources_types = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The formats this Model supports in
// [BatchPredictionJob.input_config][google.cloud.aiplatform.v1beta1.BatchPredictionJob.input_config]. If
// [PredictSchemata.instance_schema_uri][google.cloud.aiplatform.v1beta1.PredictSchemata.instance_schema_uri] exists, the instances
// should be given as per that schema.
//
// The possible formats are:
//
// * `jsonl`
// The JSON Lines format, where each instance is a single line. Uses
// [GcsSource][google.cloud.aiplatform.v1beta1.BatchPredictionJob.InputConfig.gcs_source].
//
// * `csv`
// The CSV format, where each instance is a single comma-separated line.
// The first line in the file is the header, containing comma-separated field
// names. Uses [GcsSource][google.cloud.aiplatform.v1beta1.BatchPredictionJob.InputConfig.gcs_source].
//
// * `tf-record`
// The TFRecord format, where each instance is a single record in tfrecord
// syntax. Uses [GcsSource][google.cloud.aiplatform.v1beta1.BatchPredictionJob.InputConfig.gcs_source].
//
// * `tf-record-gzip`
// Similar to `tf-record`, but the file is gzipped. Uses
// [GcsSource][google.cloud.aiplatform.v1beta1.BatchPredictionJob.InputConfig.gcs_source].
//
// * `bigquery`
// Each instance is a single row in BigQuery. Uses
// [BigQuerySource][google.cloud.aiplatform.v1beta1.BatchPredictionJob.InputConfig.bigquery_source].
//
//
//
// If this Model doesn't support any of these formats it means it cannot be
// used with a [BatchPredictionJob][google.cloud.aiplatform.v1beta1.BatchPredictionJob]. However, if it has
// [supported_deployment_resources_types][google.cloud.aiplatform.v1beta1.Model.supported_deployment_resources_types], it could serve online
// predictions by using [PredictionService.Predict][google.cloud.aiplatform.v1beta1.PredictionService.Predict] or
// [PredictionService.Explain][google.cloud.aiplatform.v1beta1.PredictionService.Explain].
repeated string supported_input_storage_formats = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The formats this Model supports in
// [BatchPredictionJob.output_config][google.cloud.aiplatform.v1beta1.BatchPredictionJob.output_config]. If both
// [PredictSchemata.instance_schema_uri][google.cloud.aiplatform.v1beta1.PredictSchemata.instance_schema_uri] and
// [PredictSchemata.prediction_schema_uri][google.cloud.aiplatform.v1beta1.PredictSchemata.prediction_schema_uri] exist, the predictions
// are returned together with their instances. In other words, the
// prediction has the original instance data first, followed
// by the actual prediction content (as per the schema).
//
// The possible formats are:
//
// * `jsonl`
// The JSON Lines format, where each prediction is a single line. Uses
// [GcsDestination][google.cloud.aiplatform.v1beta1.BatchPredictionJob.OutputConfig.gcs_destination].
//
// * `csv`
// The CSV format, where each prediction is a single comma-separated line.
// The first line in the file is the header, containing comma-separated field
// names. Uses
// [GcsDestination][google.cloud.aiplatform.v1beta1.BatchPredictionJob.OutputConfig.gcs_destination].
//
// * `bigquery`
// Each prediction is a single row in a BigQuery table, uses
// [BigQueryDestination][google.cloud.aiplatform.v1beta1.BatchPredictionJob.OutputConfig.bigquery_destination]
// .
//
//
// If this Model doesn't support any of these formats it means it cannot be
// used with a [BatchPredictionJob][google.cloud.aiplatform.v1beta1.BatchPredictionJob]. However, if it has
// [supported_deployment_resources_types][google.cloud.aiplatform.v1beta1.Model.supported_deployment_resources_types], it could serve online
// predictions by using [PredictionService.Predict][google.cloud.aiplatform.v1beta1.PredictionService.Predict] or
// [PredictionService.Explain][google.cloud.aiplatform.v1beta1.PredictionService.Explain].
repeated string supported_output_storage_formats = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Timestamp when this Model was uploaded into AI Platform.
google.protobuf.Timestamp create_time = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Timestamp when this Model was most recently updated.
google.protobuf.Timestamp update_time = 14 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The pointers to DeployedModels created from this Model. Note that
// Model could have been deployed to Endpoints in different Locations.
repeated DeployedModelRef deployed_models = 15 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The default explanation specification for this Model.
//
// Model can be used for [requesting explanation][google.cloud.aiplatform.v1beta1.PredictionService.Explain]
// after being [deployed][google.cloud.aiplatform.v1beta1.EndpointService.DeployModel] iff it is populated.
//
// All fields of the explanation_spec can be overridden by
// [explanation_spec][google.cloud.aiplatform.v1beta1.DeployedModel.explanation_spec] of
// [DeployModelRequest.deployed_model][google.cloud.aiplatform.v1beta1.DeployModelRequest.deployed_model].
//
// This field is populated only for tabular AutoML Models.
// Specifying it with [ModelService.UploadModel][google.cloud.aiplatform.v1beta1.ModelService.UploadModel] is not supported.
ExplanationSpec explanation_spec = 23 [(google.api.field_behavior) = OUTPUT_ONLY];
// Used to perform consistent read-modify-write updates. If not set, a blind
// "overwrite" update happens.
string etag = 16;
// The labels with user-defined metadata to organize your Models.
//
// 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 and examples of labels.
map<string, string> labels = 17;
}
// Contains the schemata used in Model's predictions and explanations via
// [PredictionService.Predict][google.cloud.aiplatform.v1beta1.PredictionService.Predict], [PredictionService.Explain][google.cloud.aiplatform.v1beta1.PredictionService.Explain] and
// [BatchPredictionJob][google.cloud.aiplatform.v1beta1.BatchPredictionJob].
message PredictSchemata {
// Immutable. Points to a YAML file stored on Google Cloud Storage describing the format
// of a single instance, which are used in [PredictRequest.instances][google.cloud.aiplatform.v1beta1.PredictRequest.instances],
// [ExplainRequest.instances][google.cloud.aiplatform.v1beta1.ExplainRequest.instances] and
// [BatchPredictionJob.input_config][google.cloud.aiplatform.v1beta1.BatchPredictionJob.input_config].
// The schema is defined as an OpenAPI 3.0.2
// [Schema Object](https://tinyurl.com/y538mdwt#schema-object).
// AutoML Models always have this field populated by AI Platform.
// Note: The URI given on output will be immutable and probably different,
// including the URI scheme, than the one given on input. The output URI will
// point to a location where the user only has a read access.
string instance_schema_uri = 1 [(google.api.field_behavior) = IMMUTABLE];
// Immutable. Points to a YAML file stored on Google Cloud Storage describing the
// parameters of prediction and explanation via
// [PredictRequest.parameters][google.cloud.aiplatform.v1beta1.PredictRequest.parameters], [ExplainRequest.parameters][google.cloud.aiplatform.v1beta1.ExplainRequest.parameters] and
// [BatchPredictionJob.model_parameters][google.cloud.aiplatform.v1beta1.BatchPredictionJob.model_parameters].
// The schema is defined as an OpenAPI 3.0.2
// [Schema Object](https://tinyurl.com/y538mdwt#schema-object).
// AutoML Models always have this field populated by AI Platform, if no
// parameters are supported it is set to an empty string.
// Note: The URI given on output will be immutable and probably different,
// including the URI scheme, than the one given on input. The output URI will
// point to a location where the user only has a read access.
string parameters_schema_uri = 2 [(google.api.field_behavior) = IMMUTABLE];
// Immutable. Points to a YAML file stored on Google Cloud Storage describing the format
// of a single prediction produced by this Model, which are returned via
// [PredictResponse.predictions][google.cloud.aiplatform.v1beta1.PredictResponse.predictions], [ExplainResponse.explanations][google.cloud.aiplatform.v1beta1.ExplainResponse.explanations], and
// [BatchPredictionJob.output_config][google.cloud.aiplatform.v1beta1.BatchPredictionJob.output_config].
// The schema is defined as an OpenAPI 3.0.2
// [Schema Object](https://tinyurl.com/y538mdwt#schema-object).
// AutoML Models always have this field populated by AI Platform.
// Note: The URI given on output will be immutable and probably different,
// including the URI scheme, than the one given on input. The output URI will
// point to a location where the user only has a read access.
string prediction_schema_uri = 3 [(google.api.field_behavior) = IMMUTABLE];
}
// Specification of a container for serving predictions. This message is a
// subset of the Kubernetes Container v1 core
// [specification](https://tinyurl.com/k8s-io-api/v1.18/#container-v1-core).
message ModelContainerSpec {
// Required. Immutable. URI of the Docker image to be used as the custom container for serving
// predictions. This URI must identify an image in Artifact Registry or
// Container Registry. Learn more about the container publishing
// requirements, including permissions requirements for the AI Platform
// Service Agent,
// [here](https://tinyurl.com/cust-cont-reqs#publishing).
//
// The container image is ingested upon [ModelService.UploadModel][google.cloud.aiplatform.v1beta1.ModelService.UploadModel], stored
// internally, and this original path is afterwards not used.
//
// To learn about the requirements for the Docker image itself, see
// [Custom container requirements](https://tinyurl.com/cust-cont-reqs).
string image_uri = 1 [
(google.api.field_behavior) = REQUIRED,
(google.api.field_behavior) = IMMUTABLE
];
// Immutable. Specifies the command that runs when the container starts. This overrides
// the container's
// [ENTRYPOINT](https://docs.docker.com/engine/reference/builder/#entrypoint).
// Specify this field as an array of executable and arguments, similar to a
// Docker `ENTRYPOINT`'s "exec" form, not its "shell" form.
//
// If you do not specify this field, then the container's `ENTRYPOINT` runs,
// in conjunction with the [args][google.cloud.aiplatform.v1beta1.ModelContainerSpec.args] field or the
// container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd),
// if either exists. If this field is not specified and the container does not
// have an `ENTRYPOINT`, then refer to the Docker documentation about how
// `CMD` and `ENTRYPOINT`
// [interact](https://tinyurl.com/h3kdcgs).
//
// If you specify this field, then you can also specify the `args` field to
// provide additional arguments for this command. However, if you specify this
// field, then the container's `CMD` is ignored. See the
// [Kubernetes documentation](https://tinyurl.com/y8bvllf4) about how the
// `command` and `args` fields interact with a container's `ENTRYPOINT` and
// `CMD`.
//
// In this field, you can reference environment variables
// [set by AI Platform](https://tinyurl.com/cust-cont-reqs#aip-variables)
// and environment variables set in the [env][google.cloud.aiplatform.v1beta1.ModelContainerSpec.env] field.
// You cannot reference environment variables set in the Docker image. In
// order for environment variables to be expanded, reference them by using the
// following syntax:
// <code>$(<var>VARIABLE_NAME</var>)</code>
// Note that this differs from Bash variable expansion, which does not use
// parentheses. If a variable cannot be resolved, the reference in the input
// string is used unchanged. To avoid variable expansion, you can escape this
// syntax with `$$`; for example:
// <code>$$(<var>VARIABLE_NAME</var>)</code>
// This field corresponds to the `command` field of the Kubernetes Containers
// [v1 core API](https://tinyurl.com/k8s-io-api/v1.18/#container-v1-core).
repeated string command = 2 [(google.api.field_behavior) = IMMUTABLE];
// Immutable. Specifies arguments for the command that runs when the container starts.
// This overrides the container's
// [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd). Specify
// this field as an array of executable and arguments, similar to a Docker
// `CMD`'s "default parameters" form.
//
// If you don't specify this field but do specify the
// [command][google.cloud.aiplatform.v1beta1.ModelContainerSpec.command] field, then the command from the
// `command` field runs without any additional arguments. See the
// [Kubernetes documentation](https://tinyurl.com/y8bvllf4) about how the
// `command` and `args` fields interact with a container's `ENTRYPOINT` and
// `CMD`.
//
// If you don't specify this field and don't specify the `command` field,
// then the container's
// [`ENTRYPOINT`](https://docs.docker.com/engine/reference/builder/#cmd) and
// `CMD` determine what runs based on their default behavior. See the Docker
// documentation about how `CMD` and `ENTRYPOINT`
// [interact](https://tinyurl.com/h3kdcgs).
//
// In this field, you can reference environment variables
// [set by AI Platform](https://tinyurl.com/cust-cont-reqs#aip-variables)
// and environment variables set in the [env][google.cloud.aiplatform.v1beta1.ModelContainerSpec.env] field.
// You cannot reference environment variables set in the Docker image. In
// order for environment variables to be expanded, reference them by using the
// following syntax:
// <code>$(<var>VARIABLE_NAME</var>)</code>
// Note that this differs from Bash variable expansion, which does not use
// parentheses. If a variable cannot be resolved, the reference in the input
// string is used unchanged. To avoid variable expansion, you can escape this
// syntax with `$$`; for example:
// <code>$$(<var>VARIABLE_NAME</var>)</code>
// This field corresponds to the `args` field of the Kubernetes Containers
// [v1 core API](https://tinyurl.com/k8s-io-api/v1.18/#container-v1-core).
repeated string args = 3 [(google.api.field_behavior) = IMMUTABLE];
// Immutable. List of environment variables to set in the container. After the container
// starts running, code running in the container can read these environment
// variables.
//
// Additionally, the [command][google.cloud.aiplatform.v1beta1.ModelContainerSpec.command] and
// [args][google.cloud.aiplatform.v1beta1.ModelContainerSpec.args] fields can reference these variables. Later
// entries in this list can also reference earlier entries. For example, the
// following example sets the variable `VAR_2` to have the value `foo bar`:
//
// ```json
// [
// {
// "name": "VAR_1",
// "value": "foo"
// },
// {
// "name": "VAR_2",
// "value": "$(VAR_1) bar"
// }
// ]
// ```
//
// If you switch the order of the variables in the example, then the expansion
// does not occur.
//
// This field corresponds to the `env` field of the Kubernetes Containers
// [v1 core API](https://tinyurl.com/k8s-io-api/v1.18/#container-v1-core).
repeated EnvVar env = 4 [(google.api.field_behavior) = IMMUTABLE];
// Immutable. List of ports to expose from the container. AI Platform sends any
// prediction requests that it receives to the first port on this list. AI
// Platform also sends
// [liveness and health checks](https://tinyurl.com/cust-cont-reqs#health)
// to this port.
//
// If you do not specify this field, it defaults to following value:
//
// ```json
// [
// {
// "containerPort": 8080
// }
// ]
// ```
//
// AI Platform does not use ports other than the first one listed. This field
// corresponds to the `ports` field of the Kubernetes Containers
// [v1 core API](https://tinyurl.com/k8s-io-api/v1.18/#container-v1-core).
repeated Port ports = 5 [(google.api.field_behavior) = IMMUTABLE];
// Immutable. HTTP path on the container to send prediction requests to. AI Platform
// forwards requests sent using
// [projects.locations.endpoints.predict][google.cloud.aiplatform.v1beta1.PredictionService.Predict] to this
// path on the container's IP address and port. AI Platform then returns the
// container's response in the API response.
//
// For example, if you set this field to `/foo`, then when AI Platform
// receives a prediction request, it forwards the request body in a POST
// request to the following URL on the container:
// <code>localhost:<var>PORT</var>/foo</code>
// <var>PORT</var> refers to the first value of this `ModelContainerSpec`'s
// [ports][google.cloud.aiplatform.v1beta1.ModelContainerSpec.ports] field.
//
// If you don't specify this field, it defaults to the following value when
// you [deploy this Model to an Endpoint][google.cloud.aiplatform.v1beta1.EndpointService.DeployModel]:
// <code>/v1/endpoints/<var>ENDPOINT</var>/deployedModels/<var>DEPLOYED_MODEL</var>:predict</code>
// The placeholders in this value are replaced as follows:
//
// * <var>ENDPOINT</var>: The last segment (following `endpoints/`)of the
// Endpoint.name][] field of the Endpoint where this Model has been
// deployed. (AI Platform makes this value available to your container code
// as the
// [`AIP_ENDPOINT_ID`](https://tinyurl.com/cust-cont-reqs#aip-variables)
// environment variable.)
//
// * <var>DEPLOYED_MODEL</var>: [DeployedModel.id][google.cloud.aiplatform.v1beta1.DeployedModel.id] of the `DeployedModel`.
// (AI Platform makes this value available to your container code
// as the [`AIP_DEPLOYED_MODEL_ID` environment
// variable](https://tinyurl.com/cust-cont-reqs#aip-variables).)
string predict_route = 6 [(google.api.field_behavior) = IMMUTABLE];
// Immutable. HTTP path on the container to send health checkss to. AI Platform
// intermittently sends GET requests to this path on the container's IP
// address and port to check that the container is healthy. Read more about
// [health
// checks](https://tinyurl.com/cust-cont-reqs#checks).
//
// For example, if you set this field to `/bar`, then AI Platform
// intermittently sends a GET request to the following URL on the container:
// <code>localhost:<var>PORT</var>/bar</code>
// <var>PORT</var> refers to the first value of this `ModelContainerSpec`'s
// [ports][google.cloud.aiplatform.v1beta1.ModelContainerSpec.ports] field.
//
// If you don't specify this field, it defaults to the following value when
// you [deploy this Model to an Endpoint][google.cloud.aiplatform.v1beta1.EndpointService.DeployModel]:
// <code>/v1/endpoints/<var>ENDPOINT</var>/deployedModels/<var>DEPLOYED_MODEL</var>:predict</code>
// The placeholders in this value are replaced as follows:
//
// * <var>ENDPOINT</var>: The last segment (following `endpoints/`)of the
// Endpoint.name][] field of the Endpoint where this Model has been
// deployed. (AI Platform makes this value available to your container code
// as the
// [`AIP_ENDPOINT_ID`](https://tinyurl.com/cust-cont-reqs#aip-variables)
// environment variable.)
//
// * <var>DEPLOYED_MODEL</var>: [DeployedModel.id][google.cloud.aiplatform.v1beta1.DeployedModel.id] of the `DeployedModel`.
// (AI Platform makes this value available to your container code as the
// [`AIP_DEPLOYED_MODEL_ID`](https://tinyurl.com/cust-cont-reqs#aip-variables)
// environment variable.)
string health_route = 7 [(google.api.field_behavior) = IMMUTABLE];
}
// Represents a network port in a container.
message Port {
// The number of the port to expose on the pod's IP address.
// Must be a valid port number, between 1 and 65535 inclusive.
int32 container_port = 3;
}