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.
Scopes
You will need authorization for the https://www.googleapis.com/auth/cloud-platform scope to make a valid call.
If unset, the scope for this method defaults to https://www.googleapis.com/auth/cloud-platform.
You can set the scope for this method like this: ml1 --scope <scope> projects models-versions-create ...
Required Scalar Argument
- <parent> (string)
- Required. The name of the model.
Required Request Value
The request value is a data-structure with various fields. Each field may be a simple scalar or another data-structure. In the latter case it is advised to set the field-cursor to the data-structure's field to specify values more concisely.
For example, a structure like this:
GoogleCloudMlV1__Version:
accelerator-config:
count: string
type: string
auto-scaling:
max-nodes: integer
min-nodes: integer
container:
args: [string]
command: [string]
image: string
create-time: string
deployment-uri: string
description: string
error-message: string
etag: string
explanation-config:
integrated-gradients-attribution:
num-integral-steps: integer
sampled-shapley-attribution:
num-paths: integer
xrai-attribution:
num-integral-steps: integer
framework: string
is-default: boolean
labels: { string: string }
last-migration-model-id: string
last-migration-time: string
last-use-time: string
machine-type: string
manual-scaling:
nodes: integer
name: string
package-uris: [string]
prediction-class: string
python-version: string
request-logging-config:
bigquery-table-name: string
sampling-percentage: number
routes:
health: string
predict: string
runtime-version: string
service-account: string
state: string
can be set completely with the following arguments which are assumed to be executed in the given order. Note how the cursor position is adjusted to the respective structures, allowing simple field names to be used most of the time.
-r .accelerator-config count=ipsum
- The number of accelerators to attach to each machine running the job.
-
type=ea
- The type of accelerator to use.
-
..auto-scaling max-nodes=74
- The maximum number of nodes to scale this model under load. The actual value will depend on resource quota and availability.
-
min-nodes=48
- Optional. The minimum number of nodes to allocate for this model. These nodes are always up, starting from the time the model is deployed. Therefore, the cost of operating this model will be at least
rate
*min_nodes
* number of hours since last billing cycle, whererate
is the cost per node-hour as documented in the pricing guide, even if no predictions are performed. There is additional cost for each prediction performed. Unlike manual scaling, if the load gets too heavy for the nodes that are up, the service will automatically add nodes to handle the increased load as well as scale back as traffic drops, always maintaining at leastmin_nodes
. You will be charged for the time in which additional nodes are used. Ifmin_nodes
is not specified and AutoScaling is used with a legacy (MLS1) machine type,min_nodes
defaults to 0, in which case, when traffic to a model stops (and after a cool-down period), nodes will be shut down and no charges will be incurred until traffic to the model resumes. Ifmin_nodes
is not specified and AutoScaling is used with a Compute Engine (N1) machine type,min_nodes
defaults to 1.min_nodes
must be at least 1 for use with a Compute Engine machine type. You can setmin_nodes
when creating the model version, and you can also updatemin_nodes
for an existing version: update_body.json: { 'autoScaling': { 'minNodes': 5 } } HTTP request: PATCH https://ml.googleapis.com/v1/{name=projects//models//versions/*}?update_mask=autoScaling.minNodes -d @./update_body.json
- Optional. The minimum number of nodes to allocate for this model. These nodes are always up, starting from the time the model is deployed. Therefore, the cost of operating this model will be at least
-
..container args=sit
- Immutable. Specifies arguments for the command that runs when the container starts. This overrides the container's
CMD
. Specify this field as an array of executable and arguments, similar to a DockerCMD
's "default parameters" form. If you don't specify this field but do specify the command field, then the command from thecommand
field runs without any additional arguments. See the Kubernetes documentation about how thecommand
andargs
fields interact with a container'sENTRYPOINT
andCMD
. If you don't specify this field and don't specify thecommmand
field, then the container'sENTRYPOINT
andCMD
determine what runs based on their default behavior. See the Docker documentation about howCMD
andENTRYPOINT
interact. In this field, you can reference environment variables set by AI Platform Prediction and environment variables set in the 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: $( VARIABLE_NAME) 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: $$(VARIABLE_NAME) This field corresponds to theargs
field of the Kubernetes Containers v1 core API. - Each invocation of this argument appends the given value to the array.
- Immutable. Specifies arguments for the command that runs when the container starts. This overrides the container's
command=lorem
- Immutable. Specifies the command that runs when the container starts. This overrides the container's
ENTRYPOINT
. Specify this field as an array of executable and arguments, similar to a DockerENTRYPOINT
's "exec" form, not its "shell" form. If you do not specify this field, then the container'sENTRYPOINT
runs, in conjunction with the args field or the container'sCMD
, if either exists. If this field is not specified and the container does not have anENTRYPOINT
, then refer to the Docker documentation about howCMD
andENTRYPOINT
interact. If you specify this field, then you can also specify theargs
field to provide additional arguments for this command. However, if you specify this field, then the container'sCMD
is ignored. See the Kubernetes documentation about how thecommand
andargs
fields interact with a container'sENTRYPOINT
andCMD
. In this field, you can reference environment variables set by AI Platform Prediction and environment variables set in the 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: $( VARIABLE_NAME) 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: $$(VARIABLE_NAME) This field corresponds to thecommand
field of the Kubernetes Containers v1 core API. - Each invocation of this argument appends the given value to the array.
- Immutable. Specifies the command that runs when the container starts. This overrides the container's
-
image=stet
- URI of the Docker image to be used as the custom container for serving predictions. This URI must identify an image in Artifact Registry and begin with the hostname
{REGION}-docker.pkg.dev
, where{REGION}
is replaced by the region that matches AI Platform Prediction regional endpoint that you are using. For example, if you are using theus-central1-ml.googleapis.com
endpoint, then this URI must begin withus-central1-docker.pkg.dev
. To use a custom container, the AI Platform Google-managed service account must have permission to pull (read) the Docker image at this URI. The AI Platform Google-managed service account has the following format:service-{PROJECT_NUMBER}@cloud-ml.google.com.iam.gserviceaccount.com
{PROJECT_NUMBER} is replaced by your Google Cloud project number. By default, this service account has necessary permissions to pull an Artifact Registry image in the same Google Cloud project where you are using AI Platform Prediction. In this case, no configuration is necessary. If you want to use an image from a different Google Cloud project, learn how to grant the Artifact Registry Reader (roles/artifactregistry.reader) role for a repository to your projet's AI Platform Google-managed service account. To learn about the requirements for the Docker image itself, read Custom container requirements.
- URI of the Docker image to be used as the custom container for serving predictions. This URI must identify an image in Artifact Registry and begin with the hostname
-
.. create-time=duo
- Output only. The time the version was created.
deployment-uri=elitr
- The Cloud Storage URI of a directory containing trained model artifacts to be used to create the model version. See the guide to deploying models for more information. The total number of files under this directory must not exceed 1000. During projects.models.versions.create, AI Platform Prediction copies all files from the specified directory to a location managed by the service. From then on, AI Platform Prediction uses these copies of the model artifacts to serve predictions, not the original files in Cloud Storage, so this location is useful only as a historical record. If you specify container, then this field is optional. Otherwise, it is required. Learn how to use this field with a custom container.
description=aliquyam
- Optional. The description specified for the version when it was created.
error-message=erat
- Output only. The details of a failure or a cancellation.
etag=ut
etag
is used for optimistic concurrency control as a way to help prevent simultaneous updates of a model from overwriting each other. It is strongly suggested that systems make use of theetag
in the read-modify-write cycle to perform model updates in order to avoid race conditions: Anetag
is returned in the response toGetVersion
, and systems are expected to put that etag in the request toUpdateVersion
to ensure that their change will be applied to the model as intended.
-
explanation-config.integrated-gradients-attribution num-integral-steps=83
- Number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is met within the desired error range.
-
..sampled-shapley-attribution num-paths=50
- The number of feature permutations to consider when approximating the Shapley values.
-
..xrai-attribution num-integral-steps=35
- Number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is met within the desired error range.
-
... framework=et
- Optional. The machine learning framework AI Platform uses to train this version of the model. Valid values are
TENSORFLOW
,SCIKIT_LEARN
,XGBOOST
. If you do not specify a framework, AI Platform will analyze files in the deployment_uri to determine a framework. If you chooseSCIKIT_LEARN
orXGBOOST
, you must also set the runtime version of the model to 1.4 or greater. Do not specify a framework if you're deploying a custom prediction routine or if you're using a custom container.
- Optional. The machine learning framework AI Platform uses to train this version of the model. Valid values are
is-default=true
- 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.
labels=key=aliquyam
- Optional. One or more labels that you can add, to organize your model versions. Each label is a key-value pair, where both the key and the value are arbitrary strings that you supply. For more information, see the documentation on using labels. Note that this field is not updatable for mls1* models.
- the value will be associated with the given
key
last-migration-model-id=kasd
- Output only. The AI Platform (Unified)
Model
ID for the last model migration.
- Output only. The AI Platform (Unified)
last-migration-time=lorem
- Output only. The last time this version was successfully migrated to AI Platform (Unified).
last-use-time=sit
- Output only. The time the version was last used for prediction.
machine-type=kasd
- Optional. The type of machine on which to serve the model. Currently only applies to online prediction service. To learn about valid values for this field, read Choosing a machine type for online prediction. If this field is not specified and you are using a regional endpoint, then the machine type defaults to
n1-standard-2
. If this field is not specified and you are using the global endpoint (ml.googleapis.com
), then the machine type defaults tomls1-c1-m2
.
- Optional. The type of machine on which to serve the model. Currently only applies to online prediction service. To learn about valid values for this field, read Choosing a machine type for online prediction. If this field is not specified and you are using a regional endpoint, then the machine type defaults to
-
manual-scaling nodes=62
- 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 last billing cycle plus the cost for each prediction performed.
- 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
-
.. name=dolor
- Required. The name specified for the version when it was created. The version name must be unique within the model it is created in.
package-uris=amet
- Optional. Cloud Storage paths (
gs://…
) of packages for custom prediction routines or scikit-learn pipelines with custom code. For a custom prediction routine, one of these packages must contain your Predictor class (seepredictionClass
). Additionally, include any dependencies used by your Predictor or scikit-learn pipeline uses that are not already included in your selected runtime version. If you specify this field, you must also setruntimeVersion
to 1.4 or greater. - Each invocation of this argument appends the given value to the array.
- Optional. Cloud Storage paths (
prediction-class=sit
- Optional. The fully qualified name (module_name.class_name) of a class that implements the Predictor interface described in this reference field. The module containing this class should be included in a package provided to the
packageUris
field. Specify this field if and only if you are deploying a custom prediction routine (beta). If you specify this field, you must setruntimeVersion
to 1.4 or greater and you must setmachineType
to a legacy (MLS1) machine type. The following code sample provides the Predictor interface: class Predictor(object): """Interface for constructing custom predictors.""" def predict(self, instances, kwargs): """Performs custom prediction. Instances are the decoded values from the request. They have already been deserialized from JSON. Args: instances: A list of prediction input instances. kwargs: A dictionary of keyword args provided as additional fields on the predict request body. Returns: A list of outputs containing the prediction results. This list must be JSON serializable. """ raise NotImplementedError() @classmethod def from_path(cls, model_dir): """Creates an instance of Predictor using the given path. Loading of the predictor should be done in this method. Args: model_dir: The local directory that contains the exported model file along with any additional files uploaded when creating the version resource. Returns: An instance implementing this Predictor class. """ raise NotImplementedError() Learn more about the Predictor interface and custom prediction routines.
- Optional. The fully qualified name (module_name.class_name) of a class that implements the Predictor interface described in this reference field. The module containing this class should be included in a package provided to the
python-version=rebum.
- Required. The version of Python used in prediction. The following Python versions are available: * Python '3.7' is available when
runtime_version
is set to '1.15' or later. * Python '3.5' is available whenruntime_version
is set to a version from '1.4' to '1.14'. * Python '2.7' is available whenruntime_version
is set to '1.15' or earlier. Read more about the Python versions available for each runtime version.
- Required. The version of Python used in prediction. The following Python versions are available: * Python '3.7' is available when
request-logging-config bigquery-table-name=sea
- Required. Fully qualified BigQuery table name in the following format: " project_id.dataset_name.table_name" The specified table must already exist, and the "Cloud ML Service Agent" for your project must have permission to write to it. The table must have the following schema: Field nameType Mode model STRING REQUIRED model_version STRING REQUIRED time TIMESTAMP REQUIRED raw_data STRING REQUIRED raw_prediction STRING NULLABLE groundtruth STRING NULLABLE
-
sampling-percentage=0.012890508443760607
- Percentage of requests to be logged, expressed as a fraction from 0 to 1. For example, if you want to log 10% of requests, enter
0.1
. The sampling window is the lifetime of the model version. Defaults to 0.
- Percentage of requests to be logged, expressed as a fraction from 0 to 1. For example, if you want to log 10% of requests, enter
-
..routes health=et
- HTTP path on the container to send health checkss to. AI Platform Prediction 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. For example, if you set this field to
/bar
, then AI Platform Prediction intermittently sends a GET request to the/bar
path on the port of your container specified by the first value of Version.container.ports. If you don't specify this field, it defaults to the following value: /v1/models/ MODEL/versions/VERSION The placeholders in this value are replaced as follows: * MODEL: The name of the parent Model. This does not include the "projects/PROJECT_ID/models/" prefix that the API returns in output; it is the bare model name, as provided to projects.models.create. * VERSION: The name of the model version. This does not include the "projects/PROJECT_ID /models/MODEL/versions/" prefix that the API returns in output; it is the bare version name, as provided to projects.models.versions.create.
- HTTP path on the container to send health checkss to. AI Platform Prediction 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. For example, if you set this field to
-
predict=elitr
- HTTP path on the container to send prediction requests to. AI Platform Prediction forwards requests sent using projects.predict to this path on the container's IP address and port. AI Platform Prediction then returns the container's response in the API response. For example, if you set this field to
/foo
, then when AI Platform Prediction receives a prediction request, it forwards the request body in a POST request to the/foo
path on the port of your container specified by the first value of Version.container.ports. If you don't specify this field, it defaults to the following value: /v1/models/MODEL/versions/VERSION:predict The placeholders in this value are replaced as follows: * MODEL: The name of the parent Model. This does not include the "projects/PROJECT_ID/models/" prefix that the API returns in output; it is the bare model name, as provided to projects.models.create. * VERSION: The name of the model version. This does not include the "projects/PROJECT_ID/models/MODEL/versions/" prefix that the API returns in output; it is the bare version name, as provided to projects.models.versions.create.
- HTTP path on the container to send prediction requests to. AI Platform Prediction forwards requests sent using projects.predict to this path on the container's IP address and port. AI Platform Prediction then returns the container's response in the API response. For example, if you set this field to
-
.. runtime-version=eirmod
- Required. The AI Platform runtime version to use for this deployment. For more information, see the runtime version list and how to manage runtime versions.
service-account=dolor
- Optional. Specifies the service account for resource access control. If you specify this field, then you must also specify either the
containerSpec
or thepredictionClass
field. Learn more about using a custom service account.
- Optional. Specifies the service account for resource access control. If you specify this field, then you must also specify either the
state=sadipscing
- Output only. The state of a version.
About Cursors
The cursor position is key to comfortably set complex nested structures. The following rules apply:
- The cursor position is always set relative to the current one, unless the field name starts with the
.
character. Fields can be nested such as in-r f.s.o
. - The cursor position is set relative to the top-level structure if it starts with
.
, e.g.-r .s.s
- You can also set nested fields without setting the cursor explicitly. For example, to set a value relative to the current cursor position, you would specify
-r struct.sub_struct=bar
. - You can move the cursor one level up by using
..
. Each additional.
moves it up one additional level. E.g....
would go three levels up.
Optional Output Flags
The method's return value a JSON encoded structure, which will be written to standard output by default.
- -o out
- out specifies the destination to which to write the server's result to.
It will be a JSON-encoded structure.
The destination may be
-
to indicate standard output, or a filepath that is to contain the received bytes. If unset, it defaults to standard output.
- out specifies the destination to which to write the server's result to.
It will be a JSON-encoded structure.
The destination may be
Optional General Properties
The following properties can configure any call, and are not specific to this method.
-
-p $-xgafv=string
- V1 error format.
-
-p access-token=string
- OAuth access token.
-
-p alt=string
- Data format for response.
-
-p callback=string
- JSONP
-
-p fields=string
- Selector specifying which fields to include in a partial response.
-
-p key=string
- API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.
-
-p oauth-token=string
- OAuth 2.0 token for the current user.
-
-p pretty-print=boolean
- Returns response with indentations and line breaks.
-
-p quota-user=string
- Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.
-
-p upload-type=string
- Legacy upload protocol for media (e.g. "media", "multipart").
-
-p upload-protocol=string
- Upload protocol for media (e.g. "raw", "multipart").