<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="aiplatform_v1.html">Vertex AI API</a> . <a href="aiplatform_v1.projects.html">projects</a> . <a href="aiplatform_v1.projects.locations.html">locations</a> . <a href="aiplatform_v1.projects.locations.hyperparameterTuningJobs.html">hyperparameterTuningJobs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="aiplatform_v1.projects.locations.hyperparameterTuningJobs.operations.html">operations()</a></code>
</p>
<p class="firstline">Returns the operations Resource.</p>

<p class="toc_element">
  <code><a href="#cancel">cancel(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Cancels a HyperparameterTuningJob. Starts asynchronous cancellation on the HyperparameterTuningJob. The server makes a best effort to cancel the job, but success is not guaranteed. Clients can use JobService.GetHyperparameterTuningJob or other methods to check whether the cancellation succeeded or whether the job completed despite cancellation. On successful cancellation, the HyperparameterTuningJob is not deleted; instead it becomes a job with a HyperparameterTuningJob.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`, and HyperparameterTuningJob.state is set to `CANCELLED`.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a HyperparameterTuningJob</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a HyperparameterTuningJob.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a HyperparameterTuningJob</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, pageSize=None, pageToken=None, readMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists HyperparameterTuningJobs in a Location.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="cancel">cancel(name, body=None, x__xgafv=None)</code>
  <pre>Cancels a HyperparameterTuningJob. Starts asynchronous cancellation on the HyperparameterTuningJob. The server makes a best effort to cancel the job, but success is not guaranteed. Clients can use JobService.GetHyperparameterTuningJob or other methods to check whether the cancellation succeeded or whether the job completed despite cancellation. On successful cancellation, the HyperparameterTuningJob is not deleted; instead it becomes a job with a HyperparameterTuningJob.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`, and HyperparameterTuningJob.state is set to `CANCELLED`.

Args:
  name: string, Required. The name of the HyperparameterTuningJob to cancel. Format: `projects/{project}/locations/{location}/hyperparameterTuningJobs/{hyperparameter_tuning_job}` (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for JobService.CancelHyperparameterTuningJob.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a HyperparameterTuningJob

Args:
  parent: string, Required. The resource name of the Location to create the HyperparameterTuningJob in. Format: `projects/{project}/locations/{location}` (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents a HyperparameterTuningJob. A HyperparameterTuningJob has a Study specification and multiple CustomJobs with identical CustomJob specification.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob was created.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the HyperparameterTuningJob. The name can be up to 128 characters long and can consist of any UTF-8 characters.
  &quot;encryptionSpec&quot;: { # Represents a customer-managed encryption key spec that can be applied to a top-level resource. # Customer-managed encryption key options for a HyperparameterTuningJob. If this is set, then all resources created by the HyperparameterTuningJob will be encrypted with the provided encryption key.
    &quot;kmsKeyName&quot;: &quot;A String&quot;, # Required. The Cloud KMS resource identifier of the customer managed encryption key used to protect a resource. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. The key needs to be in the same region as where the compute resource is created.
  },
  &quot;endTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Output only. Only populated when job&#x27;s state is JOB_STATE_FAILED or JOB_STATE_CANCELLED.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;labels&quot;: { # The labels with user-defined metadata to organize HyperparameterTuningJobs. 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.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;maxFailedTrialCount&quot;: 42, # The number of failed Trials that need to be seen before failing the HyperparameterTuningJob. If set to 0, Vertex AI decides how many Trials must fail before the whole job fails.
  &quot;maxTrialCount&quot;: 42, # Required. The desired total number of Trials.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the HyperparameterTuningJob.
  &quot;parallelTrialCount&quot;: 42, # Required. The desired number of Trials to run in parallel.
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob for the first time entered the `JOB_STATE_RUNNING` state.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of the job.
  &quot;studySpec&quot;: { # Represents specification of a Study. # Required. Study configuration of the HyperparameterTuningJob.
    &quot;algorithm&quot;: &quot;A String&quot;, # The search algorithm specified for the Study.
    &quot;convexAutomatedStoppingSpec&quot;: { # Configuration for ConvexAutomatedStoppingSpec. When there are enough completed trials (configured by min_measurement_count), for pending trials with enough measurements and steps, the policy first computes an overestimate of the objective value at max_num_steps according to the slope of the incomplete objective value curve. No prediction can be made if the curve is completely flat. If the overestimation is worse than the best objective value of the completed trials, this pending trial will be early-stopped, but a last measurement will be added to the pending trial with max_num_steps and predicted objective value from the autoregression model. # The automated early stopping spec using convex stopping rule.
      &quot;learningRateParameterName&quot;: &quot;A String&quot;, # The hyper-parameter name used in the tuning job that stands for learning rate. Leave it blank if learning rate is not in a parameter in tuning. The learning_rate is used to estimate the objective value of the ongoing trial.
      &quot;maxStepCount&quot;: &quot;A String&quot;, # Steps used in predicting the final objective for early stopped trials. In general, it&#x27;s set to be the same as the defined steps in training / tuning. If not defined, it will learn it from the completed trials. When use_steps is false, this field is set to the maximum elapsed seconds.
      &quot;minMeasurementCount&quot;: &quot;A String&quot;, # The minimal number of measurements in a Trial. Early-stopping checks will not trigger if less than min_measurement_count+1 completed trials or pending trials with less than min_measurement_count measurements. If not defined, the default value is 5.
      &quot;minStepCount&quot;: &quot;A String&quot;, # Minimum number of steps for a trial to complete. Trials which do not have a measurement with step_count &gt; min_step_count won&#x27;t be considered for early stopping. It&#x27;s ok to set it to 0, and a trial can be early stopped at any stage. By default, min_step_count is set to be one-tenth of the max_step_count. When use_elapsed_duration is true, this field is set to the minimum elapsed seconds.
      &quot;updateAllStoppedTrials&quot;: True or False, # ConvexAutomatedStoppingSpec by default only updates the trials that needs to be early stopped using a newly trained auto-regressive model. When this flag is set to True, all stopped trials from the beginning are potentially updated in terms of their `final_measurement`. Also, note that the training logic of autoregressive models is different in this case. Enabling this option has shown better results and this may be the default option in the future.
      &quot;useElapsedDuration&quot;: True or False, # This bool determines whether or not the rule is applied based on elapsed_secs or steps. If use_elapsed_duration==false, the early stopping decision is made according to the predicted objective values according to the target steps. If use_elapsed_duration==true, elapsed_secs is used instead of steps. Also, in this case, the parameters max_num_steps and min_num_steps are overloaded to contain max_elapsed_seconds and min_elapsed_seconds.
    },
    &quot;decayCurveStoppingSpec&quot;: { # The decay curve automated stopping rule builds a Gaussian Process Regressor to predict the final objective value of a Trial based on the already completed Trials and the intermediate measurements of the current Trial. Early stopping is requested for the current Trial if there is very low probability to exceed the optimal value found so far. # The automated early stopping spec using decay curve rule.
      &quot;useElapsedDuration&quot;: True or False, # True if Measurement.elapsed_duration is used as the x-axis of each Trials Decay Curve. Otherwise, Measurement.step_count will be used as the x-axis.
    },
    &quot;measurementSelectionType&quot;: &quot;A String&quot;, # Describe which measurement selection type will be used
    &quot;medianAutomatedStoppingSpec&quot;: { # The median automated stopping rule stops a pending Trial if the Trial&#x27;s best objective_value is strictly below the median &#x27;performance&#x27; of all completed Trials reported up to the Trial&#x27;s last measurement. Currently, &#x27;performance&#x27; refers to the running average of the objective values reported by the Trial in each measurement. # The automated early stopping spec using median rule.
      &quot;useElapsedDuration&quot;: True or False, # True if median automated stopping rule applies on Measurement.elapsed_duration. It means that elapsed_duration field of latest measurement of current Trial is used to compute median objective value for each completed Trials.
    },
    &quot;metrics&quot;: [ # Required. Metric specs for the Study.
      { # Represents a metric to optimize.
        &quot;goal&quot;: &quot;A String&quot;, # Required. The optimization goal of the metric.
        &quot;metricId&quot;: &quot;A String&quot;, # Required. The ID of the metric. Must not contain whitespaces and must be unique amongst all MetricSpecs.
        &quot;safetyConfig&quot;: { # Used in safe optimization to specify threshold levels and risk tolerance. # Used for safe search. In the case, the metric will be a safety metric. You must provide a separate metric for objective metric.
          &quot;desiredMinSafeTrialsFraction&quot;: 3.14, # Desired minimum fraction of safe trials (over total number of trials) that should be targeted by the algorithm at any time during the study (best effort). This should be between 0.0 and 1.0 and a value of 0.0 means that there is no minimum and an algorithm proceeds without targeting any specific fraction. A value of 1.0 means that the algorithm attempts to only Suggest safe Trials.
          &quot;safetyThreshold&quot;: 3.14, # Safety threshold (boundary value between safe and unsafe). NOTE that if you leave SafetyMetricConfig unset, a default value of 0 will be used.
        },
      },
    ],
    &quot;observationNoise&quot;: &quot;A String&quot;, # The observation noise level of the study. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
    &quot;parameters&quot;: [ # Required. The set of parameters to tune.
      { # Represents a single parameter to optimize.
        &quot;categoricalValueSpec&quot;: { # Value specification for a parameter in `CATEGORICAL` type. # The value spec for a &#x27;CATEGORICAL&#x27; parameter.
          &quot;defaultValue&quot;: &quot;A String&quot;, # A default value for a `CATEGORICAL` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
          &quot;values&quot;: [ # Required. The list of possible categories.
            &quot;A String&quot;,
          ],
        },
        &quot;conditionalParameterSpecs&quot;: [ # A conditional parameter node is active if the parameter&#x27;s value matches the conditional node&#x27;s parent_value_condition. If two items in conditional_parameter_specs have the same name, they must have disjoint parent_value_condition.
          { # Represents a parameter spec with condition from its parent parameter.
            &quot;parameterSpec&quot;: # Object with schema name: GoogleCloudAiplatformV1StudySpecParameterSpec # Required. The spec for a conditional parameter.
            &quot;parentCategoricalValues&quot;: { # Represents the spec to match categorical values from parent parameter. # The spec for matching values from a parent parameter of `CATEGORICAL` type.
              &quot;values&quot;: [ # Required. Matches values of the parent parameter of &#x27;CATEGORICAL&#x27; type. All values must exist in `categorical_value_spec` of parent parameter.
                &quot;A String&quot;,
              ],
            },
            &quot;parentDiscreteValues&quot;: { # Represents the spec to match discrete values from parent parameter. # The spec for matching values from a parent parameter of `DISCRETE` type.
              &quot;values&quot;: [ # Required. Matches values of the parent parameter of &#x27;DISCRETE&#x27; type. All values must exist in `discrete_value_spec` of parent parameter. The Epsilon of the value matching is 1e-10.
                3.14,
              ],
            },
            &quot;parentIntValues&quot;: { # Represents the spec to match integer values from parent parameter. # The spec for matching values from a parent parameter of `INTEGER` type.
              &quot;values&quot;: [ # Required. Matches values of the parent parameter of &#x27;INTEGER&#x27; type. All values must lie in `integer_value_spec` of parent parameter.
                &quot;A String&quot;,
              ],
            },
          },
        ],
        &quot;discreteValueSpec&quot;: { # Value specification for a parameter in `DISCRETE` type. # The value spec for a &#x27;DISCRETE&#x27; parameter.
          &quot;defaultValue&quot;: 3.14, # A default value for a `DISCRETE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. It automatically rounds to the nearest feasible discrete point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
          &quot;values&quot;: [ # Required. A list of possible values. The list should be in increasing order and at least 1e-10 apart. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values.
            3.14,
          ],
        },
        &quot;doubleValueSpec&quot;: { # Value specification for a parameter in `DOUBLE` type. # The value spec for a &#x27;DOUBLE&#x27; parameter.
          &quot;defaultValue&quot;: 3.14, # A default value for a `DOUBLE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
          &quot;maxValue&quot;: 3.14, # Required. Inclusive maximum value of the parameter.
          &quot;minValue&quot;: 3.14, # Required. Inclusive minimum value of the parameter.
        },
        &quot;integerValueSpec&quot;: { # Value specification for a parameter in `INTEGER` type. # The value spec for an &#x27;INTEGER&#x27; parameter.
          &quot;defaultValue&quot;: &quot;A String&quot;, # A default value for an `INTEGER` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
          &quot;maxValue&quot;: &quot;A String&quot;, # Required. Inclusive maximum value of the parameter.
          &quot;minValue&quot;: &quot;A String&quot;, # Required. Inclusive minimum value of the parameter.
        },
        &quot;parameterId&quot;: &quot;A String&quot;, # Required. The ID of the parameter. Must not contain whitespaces and must be unique amongst all ParameterSpecs.
        &quot;scaleType&quot;: &quot;A String&quot;, # How the parameter should be scaled. Leave unset for `CATEGORICAL` parameters.
      },
    ],
    &quot;studyStoppingConfig&quot;: { # The configuration (stopping conditions) for automated stopping of a Study. Conditions include trial budgets, time budgets, and convergence detection. # Conditions for automated stopping of a Study. Enable automated stopping by configuring at least one condition.
      &quot;maxDurationNoProgress&quot;: &quot;A String&quot;, # If the objective value has not improved for this much time, stop the study. WARNING: Effective only for single-objective studies.
      &quot;maxNumTrials&quot;: 42, # If there are more than this many trials, stop the study.
      &quot;maxNumTrialsNoProgress&quot;: 42, # If the objective value has not improved for this many consecutive trials, stop the study. WARNING: Effective only for single-objective studies.
      &quot;maximumRuntimeConstraint&quot;: { # Time-based Constraint for Study # If the specified time or duration has passed, stop the study.
        &quot;endTime&quot;: &quot;A String&quot;, # Compares the wallclock time to this time. Must use UTC timezone.
        &quot;maxDuration&quot;: &quot;A String&quot;, # Counts the wallclock time passed since the creation of this Study.
      },
      &quot;minNumTrials&quot;: 42, # If there are fewer than this many COMPLETED trials, do not stop the study.
      &quot;minimumRuntimeConstraint&quot;: { # Time-based Constraint for Study # Each &quot;stopping rule&quot; in this proto specifies an &quot;if&quot; condition. Before Vizier would generate a new suggestion, it first checks each specified stopping rule, from top to bottom in this list. Note that the first few rules (e.g. minimum_runtime_constraint, min_num_trials) will prevent other stopping rules from being evaluated until they are met. For example, setting `min_num_trials=5` and `always_stop_after= 1 hour` means that the Study will ONLY stop after it has 5 COMPLETED trials, even if more than an hour has passed since its creation. It follows the first applicable rule (whose &quot;if&quot; condition is satisfied) to make a stopping decision. If none of the specified rules are applicable, then Vizier decides that the study should not stop. If Vizier decides that the study should stop, the study enters STOPPING state (or STOPPING_ASAP if should_stop_asap = true). IMPORTANT: The automatic study state transition happens precisely as described above; that is, deleting trials or updating StudyConfig NEVER automatically moves the study state back to ACTIVE. If you want to _resume_ a Study that was stopped, 1) change the stopping conditions if necessary, 2) activate the study, and then 3) ask for suggestions. If the specified time or duration has not passed, do not stop the study.
        &quot;endTime&quot;: &quot;A String&quot;, # Compares the wallclock time to this time. Must use UTC timezone.
        &quot;maxDuration&quot;: &quot;A String&quot;, # Counts the wallclock time passed since the creation of this Study.
      },
      &quot;shouldStopAsap&quot;: True or False, # If true, a Study enters STOPPING_ASAP whenever it would normally enters STOPPING state. The bottom line is: set to true if you want to interrupt on-going evaluations of Trials as soon as the study stopping condition is met. (Please see Study.State documentation for the source of truth).
    },
  },
  &quot;trialJobSpec&quot;: { # Represents the spec of a CustomJob. # Required. The spec of a trial job. The same spec applies to the CustomJobs created in all the trials.
    &quot;baseOutputDirectory&quot;: { # The Google Cloud Storage location where the output is to be written to. # The Cloud Storage location to store the output of this CustomJob or HyperparameterTuningJob. For HyperparameterTuningJob, the baseOutputDirectory of each child CustomJob backing a Trial is set to a subdirectory of name id under its parent HyperparameterTuningJob&#x27;s baseOutputDirectory. The following Vertex AI environment variables will be passed to containers or python modules when this field is set: For CustomJob: * AIP_MODEL_DIR = `/model/` * AIP_CHECKPOINT_DIR = `/checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `/logs/` For CustomJob backing a Trial of HyperparameterTuningJob: * AIP_MODEL_DIR = `//model/` * AIP_CHECKPOINT_DIR = `//checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `//logs/`
      &quot;outputUriPrefix&quot;: &quot;A String&quot;, # Required. Google Cloud Storage URI to output directory. If the uri doesn&#x27;t end with &#x27;/&#x27;, a &#x27;/&#x27; will be automatically appended. The directory is created if it doesn&#x27;t exist.
    },
    &quot;enableDashboardAccess&quot;: True or False, # Optional. Whether you want Vertex AI to enable access to the customized dashboard in training chief container. If set to `true`, you can access the dashboard at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials).
    &quot;enableWebAccess&quot;: True or False, # Optional. Whether you want Vertex AI to enable [interactive shell access](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) to training containers. If set to `true`, you can access interactive shells at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials).
    &quot;experiment&quot;: &quot;A String&quot;, # Optional. The Experiment associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}`
    &quot;experimentRun&quot;: &quot;A String&quot;, # Optional. The Experiment Run associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}-{experiment-run-name}`
    &quot;models&quot;: [ # Optional. The name of the Model resources for which to generate a mapping to artifact URIs. Applicable only to some of the Google-provided custom jobs. Format: `projects/{project}/locations/{location}/models/{model}` In order to retrieve a specific version of the model, also provide the version ID or version alias. Example: `projects/{project}/locations/{location}/models/{model}@2` or `projects/{project}/locations/{location}/models/{model}@golden` If no version ID or alias is specified, the &quot;default&quot; version will be returned. The &quot;default&quot; version alias is created for the first version of the model, and can be moved to other versions later on. There will be exactly one default version.
      &quot;A String&quot;,
    ],
    &quot;network&quot;: &quot;A String&quot;, # Optional. The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Job should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. To specify this field, you must have already [configured VPC Network Peering for Vertex AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering). If this field is left unspecified, the job is not peered with any network.
    &quot;protectedArtifactLocationId&quot;: &quot;A String&quot;, # The ID of the location to store protected artifacts. e.g. us-central1. Populate only when the location is different than CustomJob location. List of supported locations: https://cloud.google.com/vertex-ai/docs/general/locations
    &quot;reservedIpRanges&quot;: [ # Optional. A list of names for the reserved ip ranges under the VPC network that can be used for this job. If set, we will deploy the job within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: [&#x27;vertex-ai-ip-range&#x27;].
      &quot;A String&quot;,
    ],
    &quot;scheduling&quot;: { # All parameters related to queuing and scheduling of custom jobs. # Scheduling options for a CustomJob.
      &quot;disableRetries&quot;: True or False, # Optional. Indicates if the job should retry for internal errors after the job starts running. If true, overrides `Scheduling.restart_job_on_worker_restart` to false.
      &quot;restartJobOnWorkerRestart&quot;: True or False, # Restarts the entire CustomJob if a worker gets restarted. This feature can be used by distributed training jobs that are not resilient to workers leaving and joining a job.
      &quot;timeout&quot;: &quot;A String&quot;, # The maximum job running time. The default is 7 days.
    },
    &quot;serviceAccount&quot;: &quot;A String&quot;, # Specifies the service account for workload run-as account. Users submitting jobs must have act-as permission on this run-as account. If unspecified, the [Vertex AI Custom Code Service Agent](https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents) for the CustomJob&#x27;s project is used.
    &quot;tensorboard&quot;: &quot;A String&quot;, # Optional. The name of a Vertex AI Tensorboard resource to which this CustomJob will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
    &quot;workerPoolSpecs&quot;: [ # Required. The spec of the worker pools including machine type and Docker image. All worker pools except the first one are optional and can be skipped by providing an empty value.
      { # Represents the spec of a worker pool in a job.
        &quot;containerSpec&quot;: { # The spec of a Container. # The custom container task.
          &quot;args&quot;: [ # The arguments to be passed when starting the container.
            &quot;A String&quot;,
          ],
          &quot;command&quot;: [ # The command to be invoked when the container is started. It overrides the entrypoint instruction in Dockerfile when provided.
            &quot;A String&quot;,
          ],
          &quot;env&quot;: [ # Environment variables to be passed to the container. Maximum limit is 100.
            { # Represents an environment variable present in a Container or Python Module.
              &quot;name&quot;: &quot;A String&quot;, # Required. Name of the environment variable. Must be a valid C identifier.
              &quot;value&quot;: &quot;A String&quot;, # Required. Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.
            },
          ],
          &quot;imageUri&quot;: &quot;A String&quot;, # Required. The URI of a container image in the Container Registry that is to be run on each worker replica.
        },
        &quot;diskSpec&quot;: { # Represents the spec of disk options. # Disk spec.
          &quot;bootDiskSizeGb&quot;: 42, # Size in GB of the boot disk (default is 100GB).
          &quot;bootDiskType&quot;: &quot;A String&quot;, # Type of the boot disk (default is &quot;pd-ssd&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
        },
        &quot;machineSpec&quot;: { # Specification of a single machine. # Optional. Immutable. The specification of a single machine.
          &quot;acceleratorCount&quot;: 42, # The number of accelerators to attach to the machine.
          &quot;acceleratorType&quot;: &quot;A String&quot;, # Immutable. The type of accelerator(s) that may be attached to the machine as per accelerator_count.
          &quot;machineType&quot;: &quot;A String&quot;, # Immutable. The type of the machine. See the [list of machine types supported for prediction](https://cloud.google.com/vertex-ai/docs/predictions/configure-compute#machine-types) See the [list of machine types supported for custom training](https://cloud.google.com/vertex-ai/docs/training/configure-compute#machine-types). For DeployedModel this field is optional, and the default value is `n1-standard-2`. For BatchPredictionJob or as part of WorkerPoolSpec this field is required.
          &quot;tpuTopology&quot;: &quot;A String&quot;, # Immutable. The topology of the TPUs. Corresponds to the TPU topologies available from GKE. (Example: tpu_topology: &quot;2x2x1&quot;).
        },
        &quot;nfsMounts&quot;: [ # Optional. List of NFS mount spec.
          { # Represents a mount configuration for Network File System (NFS) to mount.
            &quot;mountPoint&quot;: &quot;A String&quot;, # Required. Destination mount path. The NFS will be mounted for the user under /mnt/nfs/
            &quot;path&quot;: &quot;A String&quot;, # Required. Source path exported from NFS server. Has to start with &#x27;/&#x27;, and combined with the ip address, it indicates the source mount path in the form of `server:path`
            &quot;server&quot;: &quot;A String&quot;, # Required. IP address of the NFS server.
          },
        ],
        &quot;pythonPackageSpec&quot;: { # The spec of a Python packaged code. # The Python packaged task.
          &quot;args&quot;: [ # Command line arguments to be passed to the Python task.
            &quot;A String&quot;,
          ],
          &quot;env&quot;: [ # Environment variables to be passed to the python module. Maximum limit is 100.
            { # Represents an environment variable present in a Container or Python Module.
              &quot;name&quot;: &quot;A String&quot;, # Required. Name of the environment variable. Must be a valid C identifier.
              &quot;value&quot;: &quot;A String&quot;, # Required. Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.
            },
          ],
          &quot;executorImageUri&quot;: &quot;A String&quot;, # Required. The URI of a container image in Artifact Registry that will run the provided Python package. Vertex AI provides a wide range of executor images with pre-installed packages to meet users&#x27; various use cases. See the list of [pre-built containers for training](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers). You must use an image from this list.
          &quot;packageUris&quot;: [ # Required. The Google Cloud Storage location of the Python package files which are the training program and its dependent packages. The maximum number of package URIs is 100.
            &quot;A String&quot;,
          ],
          &quot;pythonModule&quot;: &quot;A String&quot;, # Required. The Python module name to run after installing the packages.
        },
        &quot;replicaCount&quot;: &quot;A String&quot;, # Optional. The number of worker replicas to use for this worker pool.
      },
    ],
  },
  &quot;trials&quot;: [ # Output only. Trials of the HyperparameterTuningJob.
    { # A message representing a Trial. A Trial contains a unique set of Parameters that has been or will be evaluated, along with the objective metrics got by running the Trial.
      &quot;clientId&quot;: &quot;A String&quot;, # Output only. The identifier of the client that originally requested this Trial. Each client is identified by a unique client_id. When a client asks for a suggestion, Vertex AI Vizier will assign it a Trial. The client should evaluate the Trial, complete it, and report back to Vertex AI Vizier. If suggestion is asked again by same client_id before the Trial is completed, the same Trial will be returned. Multiple clients with different client_ids can ask for suggestions simultaneously, each of them will get their own Trial.
      &quot;customJob&quot;: &quot;A String&quot;, # Output only. The CustomJob name linked to the Trial. It&#x27;s set for a HyperparameterTuningJob&#x27;s Trial.
      &quot;endTime&quot;: &quot;A String&quot;, # Output only. Time when the Trial&#x27;s status changed to `SUCCEEDED` or `INFEASIBLE`.
      &quot;finalMeasurement&quot;: { # A message representing a Measurement of a Trial. A Measurement contains the Metrics got by executing a Trial using suggested hyperparameter values. # Output only. The final measurement containing the objective value.
        &quot;elapsedDuration&quot;: &quot;A String&quot;, # Output only. Time that the Trial has been running at the point of this Measurement.
        &quot;metrics&quot;: [ # Output only. A list of metrics got by evaluating the objective functions using suggested Parameter values.
          { # A message representing a metric in the measurement.
            &quot;metricId&quot;: &quot;A String&quot;, # Output only. The ID of the Metric. The Metric should be defined in StudySpec&#x27;s Metrics.
            &quot;value&quot;: 3.14, # Output only. The value for this metric.
          },
        ],
        &quot;stepCount&quot;: &quot;A String&quot;, # Output only. The number of steps the machine learning model has been trained for. Must be non-negative.
      },
      &quot;id&quot;: &quot;A String&quot;, # Output only. The identifier of the Trial assigned by the service.
      &quot;infeasibleReason&quot;: &quot;A String&quot;, # Output only. A human readable string describing why the Trial is infeasible. This is set only if Trial state is `INFEASIBLE`.
      &quot;measurements&quot;: [ # Output only. A list of measurements that are strictly lexicographically ordered by their induced tuples (steps, elapsed_duration). These are used for early stopping computations.
        { # A message representing a Measurement of a Trial. A Measurement contains the Metrics got by executing a Trial using suggested hyperparameter values.
          &quot;elapsedDuration&quot;: &quot;A String&quot;, # Output only. Time that the Trial has been running at the point of this Measurement.
          &quot;metrics&quot;: [ # Output only. A list of metrics got by evaluating the objective functions using suggested Parameter values.
            { # A message representing a metric in the measurement.
              &quot;metricId&quot;: &quot;A String&quot;, # Output only. The ID of the Metric. The Metric should be defined in StudySpec&#x27;s Metrics.
              &quot;value&quot;: 3.14, # Output only. The value for this metric.
            },
          ],
          &quot;stepCount&quot;: &quot;A String&quot;, # Output only. The number of steps the machine learning model has been trained for. Must be non-negative.
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the Trial assigned by the service.
      &quot;parameters&quot;: [ # Output only. The parameters of the Trial.
        { # A message representing a parameter to be tuned.
          &quot;parameterId&quot;: &quot;A String&quot;, # Output only. The ID of the parameter. The parameter should be defined in StudySpec&#x27;s Parameters.
          &quot;value&quot;: &quot;&quot;, # Output only. The value of the parameter. `number_value` will be set if a parameter defined in StudySpec is in type &#x27;INTEGER&#x27;, &#x27;DOUBLE&#x27; or &#x27;DISCRETE&#x27;. `string_value` will be set if a parameter defined in StudySpec is in type &#x27;CATEGORICAL&#x27;.
        },
      ],
      &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time when the Trial was started.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of the Trial.
      &quot;webAccessUris&quot;: { # Output only. URIs for accessing [interactive shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each training node). Only available if this trial is part of a HyperparameterTuningJob and the job&#x27;s trial_job_spec.enable_web_access field is `true`. The keys are names of each node used for the trial; for example, `workerpool0-0` for the primary node, `workerpool1-0` for the first node in the second worker pool, and `workerpool1-1` for the second node in the second worker pool. The values are the URIs for each node&#x27;s interactive shell.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
  ],
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob was most recently updated.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a HyperparameterTuningJob. A HyperparameterTuningJob has a Study specification and multiple CustomJobs with identical CustomJob specification.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob was created.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the HyperparameterTuningJob. The name can be up to 128 characters long and can consist of any UTF-8 characters.
  &quot;encryptionSpec&quot;: { # Represents a customer-managed encryption key spec that can be applied to a top-level resource. # Customer-managed encryption key options for a HyperparameterTuningJob. If this is set, then all resources created by the HyperparameterTuningJob will be encrypted with the provided encryption key.
    &quot;kmsKeyName&quot;: &quot;A String&quot;, # Required. The Cloud KMS resource identifier of the customer managed encryption key used to protect a resource. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. The key needs to be in the same region as where the compute resource is created.
  },
  &quot;endTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Output only. Only populated when job&#x27;s state is JOB_STATE_FAILED or JOB_STATE_CANCELLED.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;labels&quot;: { # The labels with user-defined metadata to organize HyperparameterTuningJobs. 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.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;maxFailedTrialCount&quot;: 42, # The number of failed Trials that need to be seen before failing the HyperparameterTuningJob. If set to 0, Vertex AI decides how many Trials must fail before the whole job fails.
  &quot;maxTrialCount&quot;: 42, # Required. The desired total number of Trials.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the HyperparameterTuningJob.
  &quot;parallelTrialCount&quot;: 42, # Required. The desired number of Trials to run in parallel.
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob for the first time entered the `JOB_STATE_RUNNING` state.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of the job.
  &quot;studySpec&quot;: { # Represents specification of a Study. # Required. Study configuration of the HyperparameterTuningJob.
    &quot;algorithm&quot;: &quot;A String&quot;, # The search algorithm specified for the Study.
    &quot;convexAutomatedStoppingSpec&quot;: { # Configuration for ConvexAutomatedStoppingSpec. When there are enough completed trials (configured by min_measurement_count), for pending trials with enough measurements and steps, the policy first computes an overestimate of the objective value at max_num_steps according to the slope of the incomplete objective value curve. No prediction can be made if the curve is completely flat. If the overestimation is worse than the best objective value of the completed trials, this pending trial will be early-stopped, but a last measurement will be added to the pending trial with max_num_steps and predicted objective value from the autoregression model. # The automated early stopping spec using convex stopping rule.
      &quot;learningRateParameterName&quot;: &quot;A String&quot;, # The hyper-parameter name used in the tuning job that stands for learning rate. Leave it blank if learning rate is not in a parameter in tuning. The learning_rate is used to estimate the objective value of the ongoing trial.
      &quot;maxStepCount&quot;: &quot;A String&quot;, # Steps used in predicting the final objective for early stopped trials. In general, it&#x27;s set to be the same as the defined steps in training / tuning. If not defined, it will learn it from the completed trials. When use_steps is false, this field is set to the maximum elapsed seconds.
      &quot;minMeasurementCount&quot;: &quot;A String&quot;, # The minimal number of measurements in a Trial. Early-stopping checks will not trigger if less than min_measurement_count+1 completed trials or pending trials with less than min_measurement_count measurements. If not defined, the default value is 5.
      &quot;minStepCount&quot;: &quot;A String&quot;, # Minimum number of steps for a trial to complete. Trials which do not have a measurement with step_count &gt; min_step_count won&#x27;t be considered for early stopping. It&#x27;s ok to set it to 0, and a trial can be early stopped at any stage. By default, min_step_count is set to be one-tenth of the max_step_count. When use_elapsed_duration is true, this field is set to the minimum elapsed seconds.
      &quot;updateAllStoppedTrials&quot;: True or False, # ConvexAutomatedStoppingSpec by default only updates the trials that needs to be early stopped using a newly trained auto-regressive model. When this flag is set to True, all stopped trials from the beginning are potentially updated in terms of their `final_measurement`. Also, note that the training logic of autoregressive models is different in this case. Enabling this option has shown better results and this may be the default option in the future.
      &quot;useElapsedDuration&quot;: True or False, # This bool determines whether or not the rule is applied based on elapsed_secs or steps. If use_elapsed_duration==false, the early stopping decision is made according to the predicted objective values according to the target steps. If use_elapsed_duration==true, elapsed_secs is used instead of steps. Also, in this case, the parameters max_num_steps and min_num_steps are overloaded to contain max_elapsed_seconds and min_elapsed_seconds.
    },
    &quot;decayCurveStoppingSpec&quot;: { # The decay curve automated stopping rule builds a Gaussian Process Regressor to predict the final objective value of a Trial based on the already completed Trials and the intermediate measurements of the current Trial. Early stopping is requested for the current Trial if there is very low probability to exceed the optimal value found so far. # The automated early stopping spec using decay curve rule.
      &quot;useElapsedDuration&quot;: True or False, # True if Measurement.elapsed_duration is used as the x-axis of each Trials Decay Curve. Otherwise, Measurement.step_count will be used as the x-axis.
    },
    &quot;measurementSelectionType&quot;: &quot;A String&quot;, # Describe which measurement selection type will be used
    &quot;medianAutomatedStoppingSpec&quot;: { # The median automated stopping rule stops a pending Trial if the Trial&#x27;s best objective_value is strictly below the median &#x27;performance&#x27; of all completed Trials reported up to the Trial&#x27;s last measurement. Currently, &#x27;performance&#x27; refers to the running average of the objective values reported by the Trial in each measurement. # The automated early stopping spec using median rule.
      &quot;useElapsedDuration&quot;: True or False, # True if median automated stopping rule applies on Measurement.elapsed_duration. It means that elapsed_duration field of latest measurement of current Trial is used to compute median objective value for each completed Trials.
    },
    &quot;metrics&quot;: [ # Required. Metric specs for the Study.
      { # Represents a metric to optimize.
        &quot;goal&quot;: &quot;A String&quot;, # Required. The optimization goal of the metric.
        &quot;metricId&quot;: &quot;A String&quot;, # Required. The ID of the metric. Must not contain whitespaces and must be unique amongst all MetricSpecs.
        &quot;safetyConfig&quot;: { # Used in safe optimization to specify threshold levels and risk tolerance. # Used for safe search. In the case, the metric will be a safety metric. You must provide a separate metric for objective metric.
          &quot;desiredMinSafeTrialsFraction&quot;: 3.14, # Desired minimum fraction of safe trials (over total number of trials) that should be targeted by the algorithm at any time during the study (best effort). This should be between 0.0 and 1.0 and a value of 0.0 means that there is no minimum and an algorithm proceeds without targeting any specific fraction. A value of 1.0 means that the algorithm attempts to only Suggest safe Trials.
          &quot;safetyThreshold&quot;: 3.14, # Safety threshold (boundary value between safe and unsafe). NOTE that if you leave SafetyMetricConfig unset, a default value of 0 will be used.
        },
      },
    ],
    &quot;observationNoise&quot;: &quot;A String&quot;, # The observation noise level of the study. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
    &quot;parameters&quot;: [ # Required. The set of parameters to tune.
      { # Represents a single parameter to optimize.
        &quot;categoricalValueSpec&quot;: { # Value specification for a parameter in `CATEGORICAL` type. # The value spec for a &#x27;CATEGORICAL&#x27; parameter.
          &quot;defaultValue&quot;: &quot;A String&quot;, # A default value for a `CATEGORICAL` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
          &quot;values&quot;: [ # Required. The list of possible categories.
            &quot;A String&quot;,
          ],
        },
        &quot;conditionalParameterSpecs&quot;: [ # A conditional parameter node is active if the parameter&#x27;s value matches the conditional node&#x27;s parent_value_condition. If two items in conditional_parameter_specs have the same name, they must have disjoint parent_value_condition.
          { # Represents a parameter spec with condition from its parent parameter.
            &quot;parameterSpec&quot;: # Object with schema name: GoogleCloudAiplatformV1StudySpecParameterSpec # Required. The spec for a conditional parameter.
            &quot;parentCategoricalValues&quot;: { # Represents the spec to match categorical values from parent parameter. # The spec for matching values from a parent parameter of `CATEGORICAL` type.
              &quot;values&quot;: [ # Required. Matches values of the parent parameter of &#x27;CATEGORICAL&#x27; type. All values must exist in `categorical_value_spec` of parent parameter.
                &quot;A String&quot;,
              ],
            },
            &quot;parentDiscreteValues&quot;: { # Represents the spec to match discrete values from parent parameter. # The spec for matching values from a parent parameter of `DISCRETE` type.
              &quot;values&quot;: [ # Required. Matches values of the parent parameter of &#x27;DISCRETE&#x27; type. All values must exist in `discrete_value_spec` of parent parameter. The Epsilon of the value matching is 1e-10.
                3.14,
              ],
            },
            &quot;parentIntValues&quot;: { # Represents the spec to match integer values from parent parameter. # The spec for matching values from a parent parameter of `INTEGER` type.
              &quot;values&quot;: [ # Required. Matches values of the parent parameter of &#x27;INTEGER&#x27; type. All values must lie in `integer_value_spec` of parent parameter.
                &quot;A String&quot;,
              ],
            },
          },
        ],
        &quot;discreteValueSpec&quot;: { # Value specification for a parameter in `DISCRETE` type. # The value spec for a &#x27;DISCRETE&#x27; parameter.
          &quot;defaultValue&quot;: 3.14, # A default value for a `DISCRETE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. It automatically rounds to the nearest feasible discrete point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
          &quot;values&quot;: [ # Required. A list of possible values. The list should be in increasing order and at least 1e-10 apart. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values.
            3.14,
          ],
        },
        &quot;doubleValueSpec&quot;: { # Value specification for a parameter in `DOUBLE` type. # The value spec for a &#x27;DOUBLE&#x27; parameter.
          &quot;defaultValue&quot;: 3.14, # A default value for a `DOUBLE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
          &quot;maxValue&quot;: 3.14, # Required. Inclusive maximum value of the parameter.
          &quot;minValue&quot;: 3.14, # Required. Inclusive minimum value of the parameter.
        },
        &quot;integerValueSpec&quot;: { # Value specification for a parameter in `INTEGER` type. # The value spec for an &#x27;INTEGER&#x27; parameter.
          &quot;defaultValue&quot;: &quot;A String&quot;, # A default value for an `INTEGER` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
          &quot;maxValue&quot;: &quot;A String&quot;, # Required. Inclusive maximum value of the parameter.
          &quot;minValue&quot;: &quot;A String&quot;, # Required. Inclusive minimum value of the parameter.
        },
        &quot;parameterId&quot;: &quot;A String&quot;, # Required. The ID of the parameter. Must not contain whitespaces and must be unique amongst all ParameterSpecs.
        &quot;scaleType&quot;: &quot;A String&quot;, # How the parameter should be scaled. Leave unset for `CATEGORICAL` parameters.
      },
    ],
    &quot;studyStoppingConfig&quot;: { # The configuration (stopping conditions) for automated stopping of a Study. Conditions include trial budgets, time budgets, and convergence detection. # Conditions for automated stopping of a Study. Enable automated stopping by configuring at least one condition.
      &quot;maxDurationNoProgress&quot;: &quot;A String&quot;, # If the objective value has not improved for this much time, stop the study. WARNING: Effective only for single-objective studies.
      &quot;maxNumTrials&quot;: 42, # If there are more than this many trials, stop the study.
      &quot;maxNumTrialsNoProgress&quot;: 42, # If the objective value has not improved for this many consecutive trials, stop the study. WARNING: Effective only for single-objective studies.
      &quot;maximumRuntimeConstraint&quot;: { # Time-based Constraint for Study # If the specified time or duration has passed, stop the study.
        &quot;endTime&quot;: &quot;A String&quot;, # Compares the wallclock time to this time. Must use UTC timezone.
        &quot;maxDuration&quot;: &quot;A String&quot;, # Counts the wallclock time passed since the creation of this Study.
      },
      &quot;minNumTrials&quot;: 42, # If there are fewer than this many COMPLETED trials, do not stop the study.
      &quot;minimumRuntimeConstraint&quot;: { # Time-based Constraint for Study # Each &quot;stopping rule&quot; in this proto specifies an &quot;if&quot; condition. Before Vizier would generate a new suggestion, it first checks each specified stopping rule, from top to bottom in this list. Note that the first few rules (e.g. minimum_runtime_constraint, min_num_trials) will prevent other stopping rules from being evaluated until they are met. For example, setting `min_num_trials=5` and `always_stop_after= 1 hour` means that the Study will ONLY stop after it has 5 COMPLETED trials, even if more than an hour has passed since its creation. It follows the first applicable rule (whose &quot;if&quot; condition is satisfied) to make a stopping decision. If none of the specified rules are applicable, then Vizier decides that the study should not stop. If Vizier decides that the study should stop, the study enters STOPPING state (or STOPPING_ASAP if should_stop_asap = true). IMPORTANT: The automatic study state transition happens precisely as described above; that is, deleting trials or updating StudyConfig NEVER automatically moves the study state back to ACTIVE. If you want to _resume_ a Study that was stopped, 1) change the stopping conditions if necessary, 2) activate the study, and then 3) ask for suggestions. If the specified time or duration has not passed, do not stop the study.
        &quot;endTime&quot;: &quot;A String&quot;, # Compares the wallclock time to this time. Must use UTC timezone.
        &quot;maxDuration&quot;: &quot;A String&quot;, # Counts the wallclock time passed since the creation of this Study.
      },
      &quot;shouldStopAsap&quot;: True or False, # If true, a Study enters STOPPING_ASAP whenever it would normally enters STOPPING state. The bottom line is: set to true if you want to interrupt on-going evaluations of Trials as soon as the study stopping condition is met. (Please see Study.State documentation for the source of truth).
    },
  },
  &quot;trialJobSpec&quot;: { # Represents the spec of a CustomJob. # Required. The spec of a trial job. The same spec applies to the CustomJobs created in all the trials.
    &quot;baseOutputDirectory&quot;: { # The Google Cloud Storage location where the output is to be written to. # The Cloud Storage location to store the output of this CustomJob or HyperparameterTuningJob. For HyperparameterTuningJob, the baseOutputDirectory of each child CustomJob backing a Trial is set to a subdirectory of name id under its parent HyperparameterTuningJob&#x27;s baseOutputDirectory. The following Vertex AI environment variables will be passed to containers or python modules when this field is set: For CustomJob: * AIP_MODEL_DIR = `/model/` * AIP_CHECKPOINT_DIR = `/checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `/logs/` For CustomJob backing a Trial of HyperparameterTuningJob: * AIP_MODEL_DIR = `//model/` * AIP_CHECKPOINT_DIR = `//checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `//logs/`
      &quot;outputUriPrefix&quot;: &quot;A String&quot;, # Required. Google Cloud Storage URI to output directory. If the uri doesn&#x27;t end with &#x27;/&#x27;, a &#x27;/&#x27; will be automatically appended. The directory is created if it doesn&#x27;t exist.
    },
    &quot;enableDashboardAccess&quot;: True or False, # Optional. Whether you want Vertex AI to enable access to the customized dashboard in training chief container. If set to `true`, you can access the dashboard at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials).
    &quot;enableWebAccess&quot;: True or False, # Optional. Whether you want Vertex AI to enable [interactive shell access](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) to training containers. If set to `true`, you can access interactive shells at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials).
    &quot;experiment&quot;: &quot;A String&quot;, # Optional. The Experiment associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}`
    &quot;experimentRun&quot;: &quot;A String&quot;, # Optional. The Experiment Run associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}-{experiment-run-name}`
    &quot;models&quot;: [ # Optional. The name of the Model resources for which to generate a mapping to artifact URIs. Applicable only to some of the Google-provided custom jobs. Format: `projects/{project}/locations/{location}/models/{model}` In order to retrieve a specific version of the model, also provide the version ID or version alias. Example: `projects/{project}/locations/{location}/models/{model}@2` or `projects/{project}/locations/{location}/models/{model}@golden` If no version ID or alias is specified, the &quot;default&quot; version will be returned. The &quot;default&quot; version alias is created for the first version of the model, and can be moved to other versions later on. There will be exactly one default version.
      &quot;A String&quot;,
    ],
    &quot;network&quot;: &quot;A String&quot;, # Optional. The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Job should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. To specify this field, you must have already [configured VPC Network Peering for Vertex AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering). If this field is left unspecified, the job is not peered with any network.
    &quot;protectedArtifactLocationId&quot;: &quot;A String&quot;, # The ID of the location to store protected artifacts. e.g. us-central1. Populate only when the location is different than CustomJob location. List of supported locations: https://cloud.google.com/vertex-ai/docs/general/locations
    &quot;reservedIpRanges&quot;: [ # Optional. A list of names for the reserved ip ranges under the VPC network that can be used for this job. If set, we will deploy the job within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: [&#x27;vertex-ai-ip-range&#x27;].
      &quot;A String&quot;,
    ],
    &quot;scheduling&quot;: { # All parameters related to queuing and scheduling of custom jobs. # Scheduling options for a CustomJob.
      &quot;disableRetries&quot;: True or False, # Optional. Indicates if the job should retry for internal errors after the job starts running. If true, overrides `Scheduling.restart_job_on_worker_restart` to false.
      &quot;restartJobOnWorkerRestart&quot;: True or False, # Restarts the entire CustomJob if a worker gets restarted. This feature can be used by distributed training jobs that are not resilient to workers leaving and joining a job.
      &quot;timeout&quot;: &quot;A String&quot;, # The maximum job running time. The default is 7 days.
    },
    &quot;serviceAccount&quot;: &quot;A String&quot;, # Specifies the service account for workload run-as account. Users submitting jobs must have act-as permission on this run-as account. If unspecified, the [Vertex AI Custom Code Service Agent](https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents) for the CustomJob&#x27;s project is used.
    &quot;tensorboard&quot;: &quot;A String&quot;, # Optional. The name of a Vertex AI Tensorboard resource to which this CustomJob will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
    &quot;workerPoolSpecs&quot;: [ # Required. The spec of the worker pools including machine type and Docker image. All worker pools except the first one are optional and can be skipped by providing an empty value.
      { # Represents the spec of a worker pool in a job.
        &quot;containerSpec&quot;: { # The spec of a Container. # The custom container task.
          &quot;args&quot;: [ # The arguments to be passed when starting the container.
            &quot;A String&quot;,
          ],
          &quot;command&quot;: [ # The command to be invoked when the container is started. It overrides the entrypoint instruction in Dockerfile when provided.
            &quot;A String&quot;,
          ],
          &quot;env&quot;: [ # Environment variables to be passed to the container. Maximum limit is 100.
            { # Represents an environment variable present in a Container or Python Module.
              &quot;name&quot;: &quot;A String&quot;, # Required. Name of the environment variable. Must be a valid C identifier.
              &quot;value&quot;: &quot;A String&quot;, # Required. Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.
            },
          ],
          &quot;imageUri&quot;: &quot;A String&quot;, # Required. The URI of a container image in the Container Registry that is to be run on each worker replica.
        },
        &quot;diskSpec&quot;: { # Represents the spec of disk options. # Disk spec.
          &quot;bootDiskSizeGb&quot;: 42, # Size in GB of the boot disk (default is 100GB).
          &quot;bootDiskType&quot;: &quot;A String&quot;, # Type of the boot disk (default is &quot;pd-ssd&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
        },
        &quot;machineSpec&quot;: { # Specification of a single machine. # Optional. Immutable. The specification of a single machine.
          &quot;acceleratorCount&quot;: 42, # The number of accelerators to attach to the machine.
          &quot;acceleratorType&quot;: &quot;A String&quot;, # Immutable. The type of accelerator(s) that may be attached to the machine as per accelerator_count.
          &quot;machineType&quot;: &quot;A String&quot;, # Immutable. The type of the machine. See the [list of machine types supported for prediction](https://cloud.google.com/vertex-ai/docs/predictions/configure-compute#machine-types) See the [list of machine types supported for custom training](https://cloud.google.com/vertex-ai/docs/training/configure-compute#machine-types). For DeployedModel this field is optional, and the default value is `n1-standard-2`. For BatchPredictionJob or as part of WorkerPoolSpec this field is required.
          &quot;tpuTopology&quot;: &quot;A String&quot;, # Immutable. The topology of the TPUs. Corresponds to the TPU topologies available from GKE. (Example: tpu_topology: &quot;2x2x1&quot;).
        },
        &quot;nfsMounts&quot;: [ # Optional. List of NFS mount spec.
          { # Represents a mount configuration for Network File System (NFS) to mount.
            &quot;mountPoint&quot;: &quot;A String&quot;, # Required. Destination mount path. The NFS will be mounted for the user under /mnt/nfs/
            &quot;path&quot;: &quot;A String&quot;, # Required. Source path exported from NFS server. Has to start with &#x27;/&#x27;, and combined with the ip address, it indicates the source mount path in the form of `server:path`
            &quot;server&quot;: &quot;A String&quot;, # Required. IP address of the NFS server.
          },
        ],
        &quot;pythonPackageSpec&quot;: { # The spec of a Python packaged code. # The Python packaged task.
          &quot;args&quot;: [ # Command line arguments to be passed to the Python task.
            &quot;A String&quot;,
          ],
          &quot;env&quot;: [ # Environment variables to be passed to the python module. Maximum limit is 100.
            { # Represents an environment variable present in a Container or Python Module.
              &quot;name&quot;: &quot;A String&quot;, # Required. Name of the environment variable. Must be a valid C identifier.
              &quot;value&quot;: &quot;A String&quot;, # Required. Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.
            },
          ],
          &quot;executorImageUri&quot;: &quot;A String&quot;, # Required. The URI of a container image in Artifact Registry that will run the provided Python package. Vertex AI provides a wide range of executor images with pre-installed packages to meet users&#x27; various use cases. See the list of [pre-built containers for training](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers). You must use an image from this list.
          &quot;packageUris&quot;: [ # Required. The Google Cloud Storage location of the Python package files which are the training program and its dependent packages. The maximum number of package URIs is 100.
            &quot;A String&quot;,
          ],
          &quot;pythonModule&quot;: &quot;A String&quot;, # Required. The Python module name to run after installing the packages.
        },
        &quot;replicaCount&quot;: &quot;A String&quot;, # Optional. The number of worker replicas to use for this worker pool.
      },
    ],
  },
  &quot;trials&quot;: [ # Output only. Trials of the HyperparameterTuningJob.
    { # A message representing a Trial. A Trial contains a unique set of Parameters that has been or will be evaluated, along with the objective metrics got by running the Trial.
      &quot;clientId&quot;: &quot;A String&quot;, # Output only. The identifier of the client that originally requested this Trial. Each client is identified by a unique client_id. When a client asks for a suggestion, Vertex AI Vizier will assign it a Trial. The client should evaluate the Trial, complete it, and report back to Vertex AI Vizier. If suggestion is asked again by same client_id before the Trial is completed, the same Trial will be returned. Multiple clients with different client_ids can ask for suggestions simultaneously, each of them will get their own Trial.
      &quot;customJob&quot;: &quot;A String&quot;, # Output only. The CustomJob name linked to the Trial. It&#x27;s set for a HyperparameterTuningJob&#x27;s Trial.
      &quot;endTime&quot;: &quot;A String&quot;, # Output only. Time when the Trial&#x27;s status changed to `SUCCEEDED` or `INFEASIBLE`.
      &quot;finalMeasurement&quot;: { # A message representing a Measurement of a Trial. A Measurement contains the Metrics got by executing a Trial using suggested hyperparameter values. # Output only. The final measurement containing the objective value.
        &quot;elapsedDuration&quot;: &quot;A String&quot;, # Output only. Time that the Trial has been running at the point of this Measurement.
        &quot;metrics&quot;: [ # Output only. A list of metrics got by evaluating the objective functions using suggested Parameter values.
          { # A message representing a metric in the measurement.
            &quot;metricId&quot;: &quot;A String&quot;, # Output only. The ID of the Metric. The Metric should be defined in StudySpec&#x27;s Metrics.
            &quot;value&quot;: 3.14, # Output only. The value for this metric.
          },
        ],
        &quot;stepCount&quot;: &quot;A String&quot;, # Output only. The number of steps the machine learning model has been trained for. Must be non-negative.
      },
      &quot;id&quot;: &quot;A String&quot;, # Output only. The identifier of the Trial assigned by the service.
      &quot;infeasibleReason&quot;: &quot;A String&quot;, # Output only. A human readable string describing why the Trial is infeasible. This is set only if Trial state is `INFEASIBLE`.
      &quot;measurements&quot;: [ # Output only. A list of measurements that are strictly lexicographically ordered by their induced tuples (steps, elapsed_duration). These are used for early stopping computations.
        { # A message representing a Measurement of a Trial. A Measurement contains the Metrics got by executing a Trial using suggested hyperparameter values.
          &quot;elapsedDuration&quot;: &quot;A String&quot;, # Output only. Time that the Trial has been running at the point of this Measurement.
          &quot;metrics&quot;: [ # Output only. A list of metrics got by evaluating the objective functions using suggested Parameter values.
            { # A message representing a metric in the measurement.
              &quot;metricId&quot;: &quot;A String&quot;, # Output only. The ID of the Metric. The Metric should be defined in StudySpec&#x27;s Metrics.
              &quot;value&quot;: 3.14, # Output only. The value for this metric.
            },
          ],
          &quot;stepCount&quot;: &quot;A String&quot;, # Output only. The number of steps the machine learning model has been trained for. Must be non-negative.
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the Trial assigned by the service.
      &quot;parameters&quot;: [ # Output only. The parameters of the Trial.
        { # A message representing a parameter to be tuned.
          &quot;parameterId&quot;: &quot;A String&quot;, # Output only. The ID of the parameter. The parameter should be defined in StudySpec&#x27;s Parameters.
          &quot;value&quot;: &quot;&quot;, # Output only. The value of the parameter. `number_value` will be set if a parameter defined in StudySpec is in type &#x27;INTEGER&#x27;, &#x27;DOUBLE&#x27; or &#x27;DISCRETE&#x27;. `string_value` will be set if a parameter defined in StudySpec is in type &#x27;CATEGORICAL&#x27;.
        },
      ],
      &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time when the Trial was started.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of the Trial.
      &quot;webAccessUris&quot;: { # Output only. URIs for accessing [interactive shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each training node). Only available if this trial is part of a HyperparameterTuningJob and the job&#x27;s trial_job_spec.enable_web_access field is `true`. The keys are names of each node used for the trial; for example, `workerpool0-0` for the primary node, `workerpool1-0` for the first node in the second worker pool, and `workerpool1-1` for the second node in the second worker pool. The values are the URIs for each node&#x27;s interactive shell.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
  ],
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob was most recently updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes a HyperparameterTuningJob.

Args:
  name: string, Required. The name of the HyperparameterTuningJob resource to be deleted. Format: `projects/{project}/locations/{location}/hyperparameterTuningJobs/{hyperparameter_tuning_job}` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets a HyperparameterTuningJob

Args:
  name: string, Required. The name of the HyperparameterTuningJob resource. Format: `projects/{project}/locations/{location}/hyperparameterTuningJobs/{hyperparameter_tuning_job}` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a HyperparameterTuningJob. A HyperparameterTuningJob has a Study specification and multiple CustomJobs with identical CustomJob specification.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob was created.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the HyperparameterTuningJob. The name can be up to 128 characters long and can consist of any UTF-8 characters.
  &quot;encryptionSpec&quot;: { # Represents a customer-managed encryption key spec that can be applied to a top-level resource. # Customer-managed encryption key options for a HyperparameterTuningJob. If this is set, then all resources created by the HyperparameterTuningJob will be encrypted with the provided encryption key.
    &quot;kmsKeyName&quot;: &quot;A String&quot;, # Required. The Cloud KMS resource identifier of the customer managed encryption key used to protect a resource. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. The key needs to be in the same region as where the compute resource is created.
  },
  &quot;endTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Output only. Only populated when job&#x27;s state is JOB_STATE_FAILED or JOB_STATE_CANCELLED.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;labels&quot;: { # The labels with user-defined metadata to organize HyperparameterTuningJobs. 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.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;maxFailedTrialCount&quot;: 42, # The number of failed Trials that need to be seen before failing the HyperparameterTuningJob. If set to 0, Vertex AI decides how many Trials must fail before the whole job fails.
  &quot;maxTrialCount&quot;: 42, # Required. The desired total number of Trials.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the HyperparameterTuningJob.
  &quot;parallelTrialCount&quot;: 42, # Required. The desired number of Trials to run in parallel.
  &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob for the first time entered the `JOB_STATE_RUNNING` state.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of the job.
  &quot;studySpec&quot;: { # Represents specification of a Study. # Required. Study configuration of the HyperparameterTuningJob.
    &quot;algorithm&quot;: &quot;A String&quot;, # The search algorithm specified for the Study.
    &quot;convexAutomatedStoppingSpec&quot;: { # Configuration for ConvexAutomatedStoppingSpec. When there are enough completed trials (configured by min_measurement_count), for pending trials with enough measurements and steps, the policy first computes an overestimate of the objective value at max_num_steps according to the slope of the incomplete objective value curve. No prediction can be made if the curve is completely flat. If the overestimation is worse than the best objective value of the completed trials, this pending trial will be early-stopped, but a last measurement will be added to the pending trial with max_num_steps and predicted objective value from the autoregression model. # The automated early stopping spec using convex stopping rule.
      &quot;learningRateParameterName&quot;: &quot;A String&quot;, # The hyper-parameter name used in the tuning job that stands for learning rate. Leave it blank if learning rate is not in a parameter in tuning. The learning_rate is used to estimate the objective value of the ongoing trial.
      &quot;maxStepCount&quot;: &quot;A String&quot;, # Steps used in predicting the final objective for early stopped trials. In general, it&#x27;s set to be the same as the defined steps in training / tuning. If not defined, it will learn it from the completed trials. When use_steps is false, this field is set to the maximum elapsed seconds.
      &quot;minMeasurementCount&quot;: &quot;A String&quot;, # The minimal number of measurements in a Trial. Early-stopping checks will not trigger if less than min_measurement_count+1 completed trials or pending trials with less than min_measurement_count measurements. If not defined, the default value is 5.
      &quot;minStepCount&quot;: &quot;A String&quot;, # Minimum number of steps for a trial to complete. Trials which do not have a measurement with step_count &gt; min_step_count won&#x27;t be considered for early stopping. It&#x27;s ok to set it to 0, and a trial can be early stopped at any stage. By default, min_step_count is set to be one-tenth of the max_step_count. When use_elapsed_duration is true, this field is set to the minimum elapsed seconds.
      &quot;updateAllStoppedTrials&quot;: True or False, # ConvexAutomatedStoppingSpec by default only updates the trials that needs to be early stopped using a newly trained auto-regressive model. When this flag is set to True, all stopped trials from the beginning are potentially updated in terms of their `final_measurement`. Also, note that the training logic of autoregressive models is different in this case. Enabling this option has shown better results and this may be the default option in the future.
      &quot;useElapsedDuration&quot;: True or False, # This bool determines whether or not the rule is applied based on elapsed_secs or steps. If use_elapsed_duration==false, the early stopping decision is made according to the predicted objective values according to the target steps. If use_elapsed_duration==true, elapsed_secs is used instead of steps. Also, in this case, the parameters max_num_steps and min_num_steps are overloaded to contain max_elapsed_seconds and min_elapsed_seconds.
    },
    &quot;decayCurveStoppingSpec&quot;: { # The decay curve automated stopping rule builds a Gaussian Process Regressor to predict the final objective value of a Trial based on the already completed Trials and the intermediate measurements of the current Trial. Early stopping is requested for the current Trial if there is very low probability to exceed the optimal value found so far. # The automated early stopping spec using decay curve rule.
      &quot;useElapsedDuration&quot;: True or False, # True if Measurement.elapsed_duration is used as the x-axis of each Trials Decay Curve. Otherwise, Measurement.step_count will be used as the x-axis.
    },
    &quot;measurementSelectionType&quot;: &quot;A String&quot;, # Describe which measurement selection type will be used
    &quot;medianAutomatedStoppingSpec&quot;: { # The median automated stopping rule stops a pending Trial if the Trial&#x27;s best objective_value is strictly below the median &#x27;performance&#x27; of all completed Trials reported up to the Trial&#x27;s last measurement. Currently, &#x27;performance&#x27; refers to the running average of the objective values reported by the Trial in each measurement. # The automated early stopping spec using median rule.
      &quot;useElapsedDuration&quot;: True or False, # True if median automated stopping rule applies on Measurement.elapsed_duration. It means that elapsed_duration field of latest measurement of current Trial is used to compute median objective value for each completed Trials.
    },
    &quot;metrics&quot;: [ # Required. Metric specs for the Study.
      { # Represents a metric to optimize.
        &quot;goal&quot;: &quot;A String&quot;, # Required. The optimization goal of the metric.
        &quot;metricId&quot;: &quot;A String&quot;, # Required. The ID of the metric. Must not contain whitespaces and must be unique amongst all MetricSpecs.
        &quot;safetyConfig&quot;: { # Used in safe optimization to specify threshold levels and risk tolerance. # Used for safe search. In the case, the metric will be a safety metric. You must provide a separate metric for objective metric.
          &quot;desiredMinSafeTrialsFraction&quot;: 3.14, # Desired minimum fraction of safe trials (over total number of trials) that should be targeted by the algorithm at any time during the study (best effort). This should be between 0.0 and 1.0 and a value of 0.0 means that there is no minimum and an algorithm proceeds without targeting any specific fraction. A value of 1.0 means that the algorithm attempts to only Suggest safe Trials.
          &quot;safetyThreshold&quot;: 3.14, # Safety threshold (boundary value between safe and unsafe). NOTE that if you leave SafetyMetricConfig unset, a default value of 0 will be used.
        },
      },
    ],
    &quot;observationNoise&quot;: &quot;A String&quot;, # The observation noise level of the study. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
    &quot;parameters&quot;: [ # Required. The set of parameters to tune.
      { # Represents a single parameter to optimize.
        &quot;categoricalValueSpec&quot;: { # Value specification for a parameter in `CATEGORICAL` type. # The value spec for a &#x27;CATEGORICAL&#x27; parameter.
          &quot;defaultValue&quot;: &quot;A String&quot;, # A default value for a `CATEGORICAL` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
          &quot;values&quot;: [ # Required. The list of possible categories.
            &quot;A String&quot;,
          ],
        },
        &quot;conditionalParameterSpecs&quot;: [ # A conditional parameter node is active if the parameter&#x27;s value matches the conditional node&#x27;s parent_value_condition. If two items in conditional_parameter_specs have the same name, they must have disjoint parent_value_condition.
          { # Represents a parameter spec with condition from its parent parameter.
            &quot;parameterSpec&quot;: # Object with schema name: GoogleCloudAiplatformV1StudySpecParameterSpec # Required. The spec for a conditional parameter.
            &quot;parentCategoricalValues&quot;: { # Represents the spec to match categorical values from parent parameter. # The spec for matching values from a parent parameter of `CATEGORICAL` type.
              &quot;values&quot;: [ # Required. Matches values of the parent parameter of &#x27;CATEGORICAL&#x27; type. All values must exist in `categorical_value_spec` of parent parameter.
                &quot;A String&quot;,
              ],
            },
            &quot;parentDiscreteValues&quot;: { # Represents the spec to match discrete values from parent parameter. # The spec for matching values from a parent parameter of `DISCRETE` type.
              &quot;values&quot;: [ # Required. Matches values of the parent parameter of &#x27;DISCRETE&#x27; type. All values must exist in `discrete_value_spec` of parent parameter. The Epsilon of the value matching is 1e-10.
                3.14,
              ],
            },
            &quot;parentIntValues&quot;: { # Represents the spec to match integer values from parent parameter. # The spec for matching values from a parent parameter of `INTEGER` type.
              &quot;values&quot;: [ # Required. Matches values of the parent parameter of &#x27;INTEGER&#x27; type. All values must lie in `integer_value_spec` of parent parameter.
                &quot;A String&quot;,
              ],
            },
          },
        ],
        &quot;discreteValueSpec&quot;: { # Value specification for a parameter in `DISCRETE` type. # The value spec for a &#x27;DISCRETE&#x27; parameter.
          &quot;defaultValue&quot;: 3.14, # A default value for a `DISCRETE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. It automatically rounds to the nearest feasible discrete point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
          &quot;values&quot;: [ # Required. A list of possible values. The list should be in increasing order and at least 1e-10 apart. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values.
            3.14,
          ],
        },
        &quot;doubleValueSpec&quot;: { # Value specification for a parameter in `DOUBLE` type. # The value spec for a &#x27;DOUBLE&#x27; parameter.
          &quot;defaultValue&quot;: 3.14, # A default value for a `DOUBLE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
          &quot;maxValue&quot;: 3.14, # Required. Inclusive maximum value of the parameter.
          &quot;minValue&quot;: 3.14, # Required. Inclusive minimum value of the parameter.
        },
        &quot;integerValueSpec&quot;: { # Value specification for a parameter in `INTEGER` type. # The value spec for an &#x27;INTEGER&#x27; parameter.
          &quot;defaultValue&quot;: &quot;A String&quot;, # A default value for an `INTEGER` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
          &quot;maxValue&quot;: &quot;A String&quot;, # Required. Inclusive maximum value of the parameter.
          &quot;minValue&quot;: &quot;A String&quot;, # Required. Inclusive minimum value of the parameter.
        },
        &quot;parameterId&quot;: &quot;A String&quot;, # Required. The ID of the parameter. Must not contain whitespaces and must be unique amongst all ParameterSpecs.
        &quot;scaleType&quot;: &quot;A String&quot;, # How the parameter should be scaled. Leave unset for `CATEGORICAL` parameters.
      },
    ],
    &quot;studyStoppingConfig&quot;: { # The configuration (stopping conditions) for automated stopping of a Study. Conditions include trial budgets, time budgets, and convergence detection. # Conditions for automated stopping of a Study. Enable automated stopping by configuring at least one condition.
      &quot;maxDurationNoProgress&quot;: &quot;A String&quot;, # If the objective value has not improved for this much time, stop the study. WARNING: Effective only for single-objective studies.
      &quot;maxNumTrials&quot;: 42, # If there are more than this many trials, stop the study.
      &quot;maxNumTrialsNoProgress&quot;: 42, # If the objective value has not improved for this many consecutive trials, stop the study. WARNING: Effective only for single-objective studies.
      &quot;maximumRuntimeConstraint&quot;: { # Time-based Constraint for Study # If the specified time or duration has passed, stop the study.
        &quot;endTime&quot;: &quot;A String&quot;, # Compares the wallclock time to this time. Must use UTC timezone.
        &quot;maxDuration&quot;: &quot;A String&quot;, # Counts the wallclock time passed since the creation of this Study.
      },
      &quot;minNumTrials&quot;: 42, # If there are fewer than this many COMPLETED trials, do not stop the study.
      &quot;minimumRuntimeConstraint&quot;: { # Time-based Constraint for Study # Each &quot;stopping rule&quot; in this proto specifies an &quot;if&quot; condition. Before Vizier would generate a new suggestion, it first checks each specified stopping rule, from top to bottom in this list. Note that the first few rules (e.g. minimum_runtime_constraint, min_num_trials) will prevent other stopping rules from being evaluated until they are met. For example, setting `min_num_trials=5` and `always_stop_after= 1 hour` means that the Study will ONLY stop after it has 5 COMPLETED trials, even if more than an hour has passed since its creation. It follows the first applicable rule (whose &quot;if&quot; condition is satisfied) to make a stopping decision. If none of the specified rules are applicable, then Vizier decides that the study should not stop. If Vizier decides that the study should stop, the study enters STOPPING state (or STOPPING_ASAP if should_stop_asap = true). IMPORTANT: The automatic study state transition happens precisely as described above; that is, deleting trials or updating StudyConfig NEVER automatically moves the study state back to ACTIVE. If you want to _resume_ a Study that was stopped, 1) change the stopping conditions if necessary, 2) activate the study, and then 3) ask for suggestions. If the specified time or duration has not passed, do not stop the study.
        &quot;endTime&quot;: &quot;A String&quot;, # Compares the wallclock time to this time. Must use UTC timezone.
        &quot;maxDuration&quot;: &quot;A String&quot;, # Counts the wallclock time passed since the creation of this Study.
      },
      &quot;shouldStopAsap&quot;: True or False, # If true, a Study enters STOPPING_ASAP whenever it would normally enters STOPPING state. The bottom line is: set to true if you want to interrupt on-going evaluations of Trials as soon as the study stopping condition is met. (Please see Study.State documentation for the source of truth).
    },
  },
  &quot;trialJobSpec&quot;: { # Represents the spec of a CustomJob. # Required. The spec of a trial job. The same spec applies to the CustomJobs created in all the trials.
    &quot;baseOutputDirectory&quot;: { # The Google Cloud Storage location where the output is to be written to. # The Cloud Storage location to store the output of this CustomJob or HyperparameterTuningJob. For HyperparameterTuningJob, the baseOutputDirectory of each child CustomJob backing a Trial is set to a subdirectory of name id under its parent HyperparameterTuningJob&#x27;s baseOutputDirectory. The following Vertex AI environment variables will be passed to containers or python modules when this field is set: For CustomJob: * AIP_MODEL_DIR = `/model/` * AIP_CHECKPOINT_DIR = `/checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `/logs/` For CustomJob backing a Trial of HyperparameterTuningJob: * AIP_MODEL_DIR = `//model/` * AIP_CHECKPOINT_DIR = `//checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `//logs/`
      &quot;outputUriPrefix&quot;: &quot;A String&quot;, # Required. Google Cloud Storage URI to output directory. If the uri doesn&#x27;t end with &#x27;/&#x27;, a &#x27;/&#x27; will be automatically appended. The directory is created if it doesn&#x27;t exist.
    },
    &quot;enableDashboardAccess&quot;: True or False, # Optional. Whether you want Vertex AI to enable access to the customized dashboard in training chief container. If set to `true`, you can access the dashboard at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials).
    &quot;enableWebAccess&quot;: True or False, # Optional. Whether you want Vertex AI to enable [interactive shell access](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) to training containers. If set to `true`, you can access interactive shells at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials).
    &quot;experiment&quot;: &quot;A String&quot;, # Optional. The Experiment associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}`
    &quot;experimentRun&quot;: &quot;A String&quot;, # Optional. The Experiment Run associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}-{experiment-run-name}`
    &quot;models&quot;: [ # Optional. The name of the Model resources for which to generate a mapping to artifact URIs. Applicable only to some of the Google-provided custom jobs. Format: `projects/{project}/locations/{location}/models/{model}` In order to retrieve a specific version of the model, also provide the version ID or version alias. Example: `projects/{project}/locations/{location}/models/{model}@2` or `projects/{project}/locations/{location}/models/{model}@golden` If no version ID or alias is specified, the &quot;default&quot; version will be returned. The &quot;default&quot; version alias is created for the first version of the model, and can be moved to other versions later on. There will be exactly one default version.
      &quot;A String&quot;,
    ],
    &quot;network&quot;: &quot;A String&quot;, # Optional. The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Job should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. To specify this field, you must have already [configured VPC Network Peering for Vertex AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering). If this field is left unspecified, the job is not peered with any network.
    &quot;protectedArtifactLocationId&quot;: &quot;A String&quot;, # The ID of the location to store protected artifacts. e.g. us-central1. Populate only when the location is different than CustomJob location. List of supported locations: https://cloud.google.com/vertex-ai/docs/general/locations
    &quot;reservedIpRanges&quot;: [ # Optional. A list of names for the reserved ip ranges under the VPC network that can be used for this job. If set, we will deploy the job within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: [&#x27;vertex-ai-ip-range&#x27;].
      &quot;A String&quot;,
    ],
    &quot;scheduling&quot;: { # All parameters related to queuing and scheduling of custom jobs. # Scheduling options for a CustomJob.
      &quot;disableRetries&quot;: True or False, # Optional. Indicates if the job should retry for internal errors after the job starts running. If true, overrides `Scheduling.restart_job_on_worker_restart` to false.
      &quot;restartJobOnWorkerRestart&quot;: True or False, # Restarts the entire CustomJob if a worker gets restarted. This feature can be used by distributed training jobs that are not resilient to workers leaving and joining a job.
      &quot;timeout&quot;: &quot;A String&quot;, # The maximum job running time. The default is 7 days.
    },
    &quot;serviceAccount&quot;: &quot;A String&quot;, # Specifies the service account for workload run-as account. Users submitting jobs must have act-as permission on this run-as account. If unspecified, the [Vertex AI Custom Code Service Agent](https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents) for the CustomJob&#x27;s project is used.
    &quot;tensorboard&quot;: &quot;A String&quot;, # Optional. The name of a Vertex AI Tensorboard resource to which this CustomJob will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
    &quot;workerPoolSpecs&quot;: [ # Required. The spec of the worker pools including machine type and Docker image. All worker pools except the first one are optional and can be skipped by providing an empty value.
      { # Represents the spec of a worker pool in a job.
        &quot;containerSpec&quot;: { # The spec of a Container. # The custom container task.
          &quot;args&quot;: [ # The arguments to be passed when starting the container.
            &quot;A String&quot;,
          ],
          &quot;command&quot;: [ # The command to be invoked when the container is started. It overrides the entrypoint instruction in Dockerfile when provided.
            &quot;A String&quot;,
          ],
          &quot;env&quot;: [ # Environment variables to be passed to the container. Maximum limit is 100.
            { # Represents an environment variable present in a Container or Python Module.
              &quot;name&quot;: &quot;A String&quot;, # Required. Name of the environment variable. Must be a valid C identifier.
              &quot;value&quot;: &quot;A String&quot;, # Required. Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.
            },
          ],
          &quot;imageUri&quot;: &quot;A String&quot;, # Required. The URI of a container image in the Container Registry that is to be run on each worker replica.
        },
        &quot;diskSpec&quot;: { # Represents the spec of disk options. # Disk spec.
          &quot;bootDiskSizeGb&quot;: 42, # Size in GB of the boot disk (default is 100GB).
          &quot;bootDiskType&quot;: &quot;A String&quot;, # Type of the boot disk (default is &quot;pd-ssd&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
        },
        &quot;machineSpec&quot;: { # Specification of a single machine. # Optional. Immutable. The specification of a single machine.
          &quot;acceleratorCount&quot;: 42, # The number of accelerators to attach to the machine.
          &quot;acceleratorType&quot;: &quot;A String&quot;, # Immutable. The type of accelerator(s) that may be attached to the machine as per accelerator_count.
          &quot;machineType&quot;: &quot;A String&quot;, # Immutable. The type of the machine. See the [list of machine types supported for prediction](https://cloud.google.com/vertex-ai/docs/predictions/configure-compute#machine-types) See the [list of machine types supported for custom training](https://cloud.google.com/vertex-ai/docs/training/configure-compute#machine-types). For DeployedModel this field is optional, and the default value is `n1-standard-2`. For BatchPredictionJob or as part of WorkerPoolSpec this field is required.
          &quot;tpuTopology&quot;: &quot;A String&quot;, # Immutable. The topology of the TPUs. Corresponds to the TPU topologies available from GKE. (Example: tpu_topology: &quot;2x2x1&quot;).
        },
        &quot;nfsMounts&quot;: [ # Optional. List of NFS mount spec.
          { # Represents a mount configuration for Network File System (NFS) to mount.
            &quot;mountPoint&quot;: &quot;A String&quot;, # Required. Destination mount path. The NFS will be mounted for the user under /mnt/nfs/
            &quot;path&quot;: &quot;A String&quot;, # Required. Source path exported from NFS server. Has to start with &#x27;/&#x27;, and combined with the ip address, it indicates the source mount path in the form of `server:path`
            &quot;server&quot;: &quot;A String&quot;, # Required. IP address of the NFS server.
          },
        ],
        &quot;pythonPackageSpec&quot;: { # The spec of a Python packaged code. # The Python packaged task.
          &quot;args&quot;: [ # Command line arguments to be passed to the Python task.
            &quot;A String&quot;,
          ],
          &quot;env&quot;: [ # Environment variables to be passed to the python module. Maximum limit is 100.
            { # Represents an environment variable present in a Container or Python Module.
              &quot;name&quot;: &quot;A String&quot;, # Required. Name of the environment variable. Must be a valid C identifier.
              &quot;value&quot;: &quot;A String&quot;, # Required. Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.
            },
          ],
          &quot;executorImageUri&quot;: &quot;A String&quot;, # Required. The URI of a container image in Artifact Registry that will run the provided Python package. Vertex AI provides a wide range of executor images with pre-installed packages to meet users&#x27; various use cases. See the list of [pre-built containers for training](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers). You must use an image from this list.
          &quot;packageUris&quot;: [ # Required. The Google Cloud Storage location of the Python package files which are the training program and its dependent packages. The maximum number of package URIs is 100.
            &quot;A String&quot;,
          ],
          &quot;pythonModule&quot;: &quot;A String&quot;, # Required. The Python module name to run after installing the packages.
        },
        &quot;replicaCount&quot;: &quot;A String&quot;, # Optional. The number of worker replicas to use for this worker pool.
      },
    ],
  },
  &quot;trials&quot;: [ # Output only. Trials of the HyperparameterTuningJob.
    { # A message representing a Trial. A Trial contains a unique set of Parameters that has been or will be evaluated, along with the objective metrics got by running the Trial.
      &quot;clientId&quot;: &quot;A String&quot;, # Output only. The identifier of the client that originally requested this Trial. Each client is identified by a unique client_id. When a client asks for a suggestion, Vertex AI Vizier will assign it a Trial. The client should evaluate the Trial, complete it, and report back to Vertex AI Vizier. If suggestion is asked again by same client_id before the Trial is completed, the same Trial will be returned. Multiple clients with different client_ids can ask for suggestions simultaneously, each of them will get their own Trial.
      &quot;customJob&quot;: &quot;A String&quot;, # Output only. The CustomJob name linked to the Trial. It&#x27;s set for a HyperparameterTuningJob&#x27;s Trial.
      &quot;endTime&quot;: &quot;A String&quot;, # Output only. Time when the Trial&#x27;s status changed to `SUCCEEDED` or `INFEASIBLE`.
      &quot;finalMeasurement&quot;: { # A message representing a Measurement of a Trial. A Measurement contains the Metrics got by executing a Trial using suggested hyperparameter values. # Output only. The final measurement containing the objective value.
        &quot;elapsedDuration&quot;: &quot;A String&quot;, # Output only. Time that the Trial has been running at the point of this Measurement.
        &quot;metrics&quot;: [ # Output only. A list of metrics got by evaluating the objective functions using suggested Parameter values.
          { # A message representing a metric in the measurement.
            &quot;metricId&quot;: &quot;A String&quot;, # Output only. The ID of the Metric. The Metric should be defined in StudySpec&#x27;s Metrics.
            &quot;value&quot;: 3.14, # Output only. The value for this metric.
          },
        ],
        &quot;stepCount&quot;: &quot;A String&quot;, # Output only. The number of steps the machine learning model has been trained for. Must be non-negative.
      },
      &quot;id&quot;: &quot;A String&quot;, # Output only. The identifier of the Trial assigned by the service.
      &quot;infeasibleReason&quot;: &quot;A String&quot;, # Output only. A human readable string describing why the Trial is infeasible. This is set only if Trial state is `INFEASIBLE`.
      &quot;measurements&quot;: [ # Output only. A list of measurements that are strictly lexicographically ordered by their induced tuples (steps, elapsed_duration). These are used for early stopping computations.
        { # A message representing a Measurement of a Trial. A Measurement contains the Metrics got by executing a Trial using suggested hyperparameter values.
          &quot;elapsedDuration&quot;: &quot;A String&quot;, # Output only. Time that the Trial has been running at the point of this Measurement.
          &quot;metrics&quot;: [ # Output only. A list of metrics got by evaluating the objective functions using suggested Parameter values.
            { # A message representing a metric in the measurement.
              &quot;metricId&quot;: &quot;A String&quot;, # Output only. The ID of the Metric. The Metric should be defined in StudySpec&#x27;s Metrics.
              &quot;value&quot;: 3.14, # Output only. The value for this metric.
            },
          ],
          &quot;stepCount&quot;: &quot;A String&quot;, # Output only. The number of steps the machine learning model has been trained for. Must be non-negative.
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the Trial assigned by the service.
      &quot;parameters&quot;: [ # Output only. The parameters of the Trial.
        { # A message representing a parameter to be tuned.
          &quot;parameterId&quot;: &quot;A String&quot;, # Output only. The ID of the parameter. The parameter should be defined in StudySpec&#x27;s Parameters.
          &quot;value&quot;: &quot;&quot;, # Output only. The value of the parameter. `number_value` will be set if a parameter defined in StudySpec is in type &#x27;INTEGER&#x27;, &#x27;DOUBLE&#x27; or &#x27;DISCRETE&#x27;. `string_value` will be set if a parameter defined in StudySpec is in type &#x27;CATEGORICAL&#x27;.
        },
      ],
      &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time when the Trial was started.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of the Trial.
      &quot;webAccessUris&quot;: { # Output only. URIs for accessing [interactive shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each training node). Only available if this trial is part of a HyperparameterTuningJob and the job&#x27;s trial_job_spec.enable_web_access field is `true`. The keys are names of each node used for the trial; for example, `workerpool0-0` for the primary node, `workerpool1-0` for the first node in the second worker pool, and `workerpool1-1` for the second node in the second worker pool. The values are the URIs for each node&#x27;s interactive shell.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
  ],
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob was most recently updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, pageSize=None, pageToken=None, readMask=None, x__xgafv=None)</code>
  <pre>Lists HyperparameterTuningJobs in a Location.

Args:
  parent: string, Required. The resource name of the Location to list the HyperparameterTuningJobs from. Format: `projects/{project}/locations/{location}` (required)
  filter: string, The standard list filter. Supported fields: * `display_name` supports `=`, `!=` comparisons, and `:` wildcard. * `state` supports `=`, `!=` comparisons. * `create_time` supports `=`, `!=`,`&lt;`, `&lt;=`,`&gt;`, `&gt;=` comparisons. `create_time` must be in RFC 3339 format. * `labels` supports general map functions that is: `labels.key=value` - key:value equality `labels.key:* - key existence Some examples of using the filter are: * `state=&quot;JOB_STATE_SUCCEEDED&quot; AND display_name:&quot;my_job_*&quot;` * `state!=&quot;JOB_STATE_FAILED&quot; OR display_name=&quot;my_job&quot;` * `NOT display_name=&quot;my_job&quot;` * `create_time&gt;&quot;2021-05-18T00:00:00Z&quot;` * `labels.keyA=valueA` * `labels.keyB:*`
  pageSize: integer, The standard list page size.
  pageToken: string, The standard list page token. Typically obtained via ListHyperparameterTuningJobsResponse.next_page_token of the previous JobService.ListHyperparameterTuningJobs call.
  readMask: string, Mask specifying which fields to read.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for JobService.ListHyperparameterTuningJobs
  &quot;hyperparameterTuningJobs&quot;: [ # List of HyperparameterTuningJobs in the requested page. HyperparameterTuningJob.trials of the jobs will be not be returned.
    { # Represents a HyperparameterTuningJob. A HyperparameterTuningJob has a Study specification and multiple CustomJobs with identical CustomJob specification.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob was created.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the HyperparameterTuningJob. The name can be up to 128 characters long and can consist of any UTF-8 characters.
      &quot;encryptionSpec&quot;: { # Represents a customer-managed encryption key spec that can be applied to a top-level resource. # Customer-managed encryption key options for a HyperparameterTuningJob. If this is set, then all resources created by the HyperparameterTuningJob will be encrypted with the provided encryption key.
        &quot;kmsKeyName&quot;: &quot;A String&quot;, # Required. The Cloud KMS resource identifier of the customer managed encryption key used to protect a resource. Has the form: `projects/my-project/locations/my-region/keyRings/my-kr/cryptoKeys/my-key`. The key needs to be in the same region as where the compute resource is created.
      },
      &quot;endTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.
      &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Output only. Only populated when job&#x27;s state is JOB_STATE_FAILED or JOB_STATE_CANCELLED.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
          {
            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
          },
        ],
        &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      },
      &quot;labels&quot;: { # The labels with user-defined metadata to organize HyperparameterTuningJobs. 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.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;maxFailedTrialCount&quot;: 42, # The number of failed Trials that need to be seen before failing the HyperparameterTuningJob. If set to 0, Vertex AI decides how many Trials must fail before the whole job fails.
      &quot;maxTrialCount&quot;: 42, # Required. The desired total number of Trials.
      &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the HyperparameterTuningJob.
      &quot;parallelTrialCount&quot;: 42, # Required. The desired number of Trials to run in parallel.
      &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob for the first time entered the `JOB_STATE_RUNNING` state.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of the job.
      &quot;studySpec&quot;: { # Represents specification of a Study. # Required. Study configuration of the HyperparameterTuningJob.
        &quot;algorithm&quot;: &quot;A String&quot;, # The search algorithm specified for the Study.
        &quot;convexAutomatedStoppingSpec&quot;: { # Configuration for ConvexAutomatedStoppingSpec. When there are enough completed trials (configured by min_measurement_count), for pending trials with enough measurements and steps, the policy first computes an overestimate of the objective value at max_num_steps according to the slope of the incomplete objective value curve. No prediction can be made if the curve is completely flat. If the overestimation is worse than the best objective value of the completed trials, this pending trial will be early-stopped, but a last measurement will be added to the pending trial with max_num_steps and predicted objective value from the autoregression model. # The automated early stopping spec using convex stopping rule.
          &quot;learningRateParameterName&quot;: &quot;A String&quot;, # The hyper-parameter name used in the tuning job that stands for learning rate. Leave it blank if learning rate is not in a parameter in tuning. The learning_rate is used to estimate the objective value of the ongoing trial.
          &quot;maxStepCount&quot;: &quot;A String&quot;, # Steps used in predicting the final objective for early stopped trials. In general, it&#x27;s set to be the same as the defined steps in training / tuning. If not defined, it will learn it from the completed trials. When use_steps is false, this field is set to the maximum elapsed seconds.
          &quot;minMeasurementCount&quot;: &quot;A String&quot;, # The minimal number of measurements in a Trial. Early-stopping checks will not trigger if less than min_measurement_count+1 completed trials or pending trials with less than min_measurement_count measurements. If not defined, the default value is 5.
          &quot;minStepCount&quot;: &quot;A String&quot;, # Minimum number of steps for a trial to complete. Trials which do not have a measurement with step_count &gt; min_step_count won&#x27;t be considered for early stopping. It&#x27;s ok to set it to 0, and a trial can be early stopped at any stage. By default, min_step_count is set to be one-tenth of the max_step_count. When use_elapsed_duration is true, this field is set to the minimum elapsed seconds.
          &quot;updateAllStoppedTrials&quot;: True or False, # ConvexAutomatedStoppingSpec by default only updates the trials that needs to be early stopped using a newly trained auto-regressive model. When this flag is set to True, all stopped trials from the beginning are potentially updated in terms of their `final_measurement`. Also, note that the training logic of autoregressive models is different in this case. Enabling this option has shown better results and this may be the default option in the future.
          &quot;useElapsedDuration&quot;: True or False, # This bool determines whether or not the rule is applied based on elapsed_secs or steps. If use_elapsed_duration==false, the early stopping decision is made according to the predicted objective values according to the target steps. If use_elapsed_duration==true, elapsed_secs is used instead of steps. Also, in this case, the parameters max_num_steps and min_num_steps are overloaded to contain max_elapsed_seconds and min_elapsed_seconds.
        },
        &quot;decayCurveStoppingSpec&quot;: { # The decay curve automated stopping rule builds a Gaussian Process Regressor to predict the final objective value of a Trial based on the already completed Trials and the intermediate measurements of the current Trial. Early stopping is requested for the current Trial if there is very low probability to exceed the optimal value found so far. # The automated early stopping spec using decay curve rule.
          &quot;useElapsedDuration&quot;: True or False, # True if Measurement.elapsed_duration is used as the x-axis of each Trials Decay Curve. Otherwise, Measurement.step_count will be used as the x-axis.
        },
        &quot;measurementSelectionType&quot;: &quot;A String&quot;, # Describe which measurement selection type will be used
        &quot;medianAutomatedStoppingSpec&quot;: { # The median automated stopping rule stops a pending Trial if the Trial&#x27;s best objective_value is strictly below the median &#x27;performance&#x27; of all completed Trials reported up to the Trial&#x27;s last measurement. Currently, &#x27;performance&#x27; refers to the running average of the objective values reported by the Trial in each measurement. # The automated early stopping spec using median rule.
          &quot;useElapsedDuration&quot;: True or False, # True if median automated stopping rule applies on Measurement.elapsed_duration. It means that elapsed_duration field of latest measurement of current Trial is used to compute median objective value for each completed Trials.
        },
        &quot;metrics&quot;: [ # Required. Metric specs for the Study.
          { # Represents a metric to optimize.
            &quot;goal&quot;: &quot;A String&quot;, # Required. The optimization goal of the metric.
            &quot;metricId&quot;: &quot;A String&quot;, # Required. The ID of the metric. Must not contain whitespaces and must be unique amongst all MetricSpecs.
            &quot;safetyConfig&quot;: { # Used in safe optimization to specify threshold levels and risk tolerance. # Used for safe search. In the case, the metric will be a safety metric. You must provide a separate metric for objective metric.
              &quot;desiredMinSafeTrialsFraction&quot;: 3.14, # Desired minimum fraction of safe trials (over total number of trials) that should be targeted by the algorithm at any time during the study (best effort). This should be between 0.0 and 1.0 and a value of 0.0 means that there is no minimum and an algorithm proceeds without targeting any specific fraction. A value of 1.0 means that the algorithm attempts to only Suggest safe Trials.
              &quot;safetyThreshold&quot;: 3.14, # Safety threshold (boundary value between safe and unsafe). NOTE that if you leave SafetyMetricConfig unset, a default value of 0 will be used.
            },
          },
        ],
        &quot;observationNoise&quot;: &quot;A String&quot;, # The observation noise level of the study. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
        &quot;parameters&quot;: [ # Required. The set of parameters to tune.
          { # Represents a single parameter to optimize.
            &quot;categoricalValueSpec&quot;: { # Value specification for a parameter in `CATEGORICAL` type. # The value spec for a &#x27;CATEGORICAL&#x27; parameter.
              &quot;defaultValue&quot;: &quot;A String&quot;, # A default value for a `CATEGORICAL` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
              &quot;values&quot;: [ # Required. The list of possible categories.
                &quot;A String&quot;,
              ],
            },
            &quot;conditionalParameterSpecs&quot;: [ # A conditional parameter node is active if the parameter&#x27;s value matches the conditional node&#x27;s parent_value_condition. If two items in conditional_parameter_specs have the same name, they must have disjoint parent_value_condition.
              { # Represents a parameter spec with condition from its parent parameter.
                &quot;parameterSpec&quot;: # Object with schema name: GoogleCloudAiplatformV1StudySpecParameterSpec # Required. The spec for a conditional parameter.
                &quot;parentCategoricalValues&quot;: { # Represents the spec to match categorical values from parent parameter. # The spec for matching values from a parent parameter of `CATEGORICAL` type.
                  &quot;values&quot;: [ # Required. Matches values of the parent parameter of &#x27;CATEGORICAL&#x27; type. All values must exist in `categorical_value_spec` of parent parameter.
                    &quot;A String&quot;,
                  ],
                },
                &quot;parentDiscreteValues&quot;: { # Represents the spec to match discrete values from parent parameter. # The spec for matching values from a parent parameter of `DISCRETE` type.
                  &quot;values&quot;: [ # Required. Matches values of the parent parameter of &#x27;DISCRETE&#x27; type. All values must exist in `discrete_value_spec` of parent parameter. The Epsilon of the value matching is 1e-10.
                    3.14,
                  ],
                },
                &quot;parentIntValues&quot;: { # Represents the spec to match integer values from parent parameter. # The spec for matching values from a parent parameter of `INTEGER` type.
                  &quot;values&quot;: [ # Required. Matches values of the parent parameter of &#x27;INTEGER&#x27; type. All values must lie in `integer_value_spec` of parent parameter.
                    &quot;A String&quot;,
                  ],
                },
              },
            ],
            &quot;discreteValueSpec&quot;: { # Value specification for a parameter in `DISCRETE` type. # The value spec for a &#x27;DISCRETE&#x27; parameter.
              &quot;defaultValue&quot;: 3.14, # A default value for a `DISCRETE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. It automatically rounds to the nearest feasible discrete point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
              &quot;values&quot;: [ # Required. A list of possible values. The list should be in increasing order and at least 1e-10 apart. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values.
                3.14,
              ],
            },
            &quot;doubleValueSpec&quot;: { # Value specification for a parameter in `DOUBLE` type. # The value spec for a &#x27;DOUBLE&#x27; parameter.
              &quot;defaultValue&quot;: 3.14, # A default value for a `DOUBLE` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
              &quot;maxValue&quot;: 3.14, # Required. Inclusive maximum value of the parameter.
              &quot;minValue&quot;: 3.14, # Required. Inclusive minimum value of the parameter.
            },
            &quot;integerValueSpec&quot;: { # Value specification for a parameter in `INTEGER` type. # The value spec for an &#x27;INTEGER&#x27; parameter.
              &quot;defaultValue&quot;: &quot;A String&quot;, # A default value for an `INTEGER` parameter that is assumed to be a relatively good starting point. Unset value signals that there is no offered starting point. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
              &quot;maxValue&quot;: &quot;A String&quot;, # Required. Inclusive maximum value of the parameter.
              &quot;minValue&quot;: &quot;A String&quot;, # Required. Inclusive minimum value of the parameter.
            },
            &quot;parameterId&quot;: &quot;A String&quot;, # Required. The ID of the parameter. Must not contain whitespaces and must be unique amongst all ParameterSpecs.
            &quot;scaleType&quot;: &quot;A String&quot;, # How the parameter should be scaled. Leave unset for `CATEGORICAL` parameters.
          },
        ],
        &quot;studyStoppingConfig&quot;: { # The configuration (stopping conditions) for automated stopping of a Study. Conditions include trial budgets, time budgets, and convergence detection. # Conditions for automated stopping of a Study. Enable automated stopping by configuring at least one condition.
          &quot;maxDurationNoProgress&quot;: &quot;A String&quot;, # If the objective value has not improved for this much time, stop the study. WARNING: Effective only for single-objective studies.
          &quot;maxNumTrials&quot;: 42, # If there are more than this many trials, stop the study.
          &quot;maxNumTrialsNoProgress&quot;: 42, # If the objective value has not improved for this many consecutive trials, stop the study. WARNING: Effective only for single-objective studies.
          &quot;maximumRuntimeConstraint&quot;: { # Time-based Constraint for Study # If the specified time or duration has passed, stop the study.
            &quot;endTime&quot;: &quot;A String&quot;, # Compares the wallclock time to this time. Must use UTC timezone.
            &quot;maxDuration&quot;: &quot;A String&quot;, # Counts the wallclock time passed since the creation of this Study.
          },
          &quot;minNumTrials&quot;: 42, # If there are fewer than this many COMPLETED trials, do not stop the study.
          &quot;minimumRuntimeConstraint&quot;: { # Time-based Constraint for Study # Each &quot;stopping rule&quot; in this proto specifies an &quot;if&quot; condition. Before Vizier would generate a new suggestion, it first checks each specified stopping rule, from top to bottom in this list. Note that the first few rules (e.g. minimum_runtime_constraint, min_num_trials) will prevent other stopping rules from being evaluated until they are met. For example, setting `min_num_trials=5` and `always_stop_after= 1 hour` means that the Study will ONLY stop after it has 5 COMPLETED trials, even if more than an hour has passed since its creation. It follows the first applicable rule (whose &quot;if&quot; condition is satisfied) to make a stopping decision. If none of the specified rules are applicable, then Vizier decides that the study should not stop. If Vizier decides that the study should stop, the study enters STOPPING state (or STOPPING_ASAP if should_stop_asap = true). IMPORTANT: The automatic study state transition happens precisely as described above; that is, deleting trials or updating StudyConfig NEVER automatically moves the study state back to ACTIVE. If you want to _resume_ a Study that was stopped, 1) change the stopping conditions if necessary, 2) activate the study, and then 3) ask for suggestions. If the specified time or duration has not passed, do not stop the study.
            &quot;endTime&quot;: &quot;A String&quot;, # Compares the wallclock time to this time. Must use UTC timezone.
            &quot;maxDuration&quot;: &quot;A String&quot;, # Counts the wallclock time passed since the creation of this Study.
          },
          &quot;shouldStopAsap&quot;: True or False, # If true, a Study enters STOPPING_ASAP whenever it would normally enters STOPPING state. The bottom line is: set to true if you want to interrupt on-going evaluations of Trials as soon as the study stopping condition is met. (Please see Study.State documentation for the source of truth).
        },
      },
      &quot;trialJobSpec&quot;: { # Represents the spec of a CustomJob. # Required. The spec of a trial job. The same spec applies to the CustomJobs created in all the trials.
        &quot;baseOutputDirectory&quot;: { # The Google Cloud Storage location where the output is to be written to. # The Cloud Storage location to store the output of this CustomJob or HyperparameterTuningJob. For HyperparameterTuningJob, the baseOutputDirectory of each child CustomJob backing a Trial is set to a subdirectory of name id under its parent HyperparameterTuningJob&#x27;s baseOutputDirectory. The following Vertex AI environment variables will be passed to containers or python modules when this field is set: For CustomJob: * AIP_MODEL_DIR = `/model/` * AIP_CHECKPOINT_DIR = `/checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `/logs/` For CustomJob backing a Trial of HyperparameterTuningJob: * AIP_MODEL_DIR = `//model/` * AIP_CHECKPOINT_DIR = `//checkpoints/` * AIP_TENSORBOARD_LOG_DIR = `//logs/`
          &quot;outputUriPrefix&quot;: &quot;A String&quot;, # Required. Google Cloud Storage URI to output directory. If the uri doesn&#x27;t end with &#x27;/&#x27;, a &#x27;/&#x27; will be automatically appended. The directory is created if it doesn&#x27;t exist.
        },
        &quot;enableDashboardAccess&quot;: True or False, # Optional. Whether you want Vertex AI to enable access to the customized dashboard in training chief container. If set to `true`, you can access the dashboard at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials).
        &quot;enableWebAccess&quot;: True or False, # Optional. Whether you want Vertex AI to enable [interactive shell access](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) to training containers. If set to `true`, you can access interactive shells at the URIs given by CustomJob.web_access_uris or Trial.web_access_uris (within HyperparameterTuningJob.trials).
        &quot;experiment&quot;: &quot;A String&quot;, # Optional. The Experiment associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}`
        &quot;experimentRun&quot;: &quot;A String&quot;, # Optional. The Experiment Run associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}-{experiment-run-name}`
        &quot;models&quot;: [ # Optional. The name of the Model resources for which to generate a mapping to artifact URIs. Applicable only to some of the Google-provided custom jobs. Format: `projects/{project}/locations/{location}/models/{model}` In order to retrieve a specific version of the model, also provide the version ID or version alias. Example: `projects/{project}/locations/{location}/models/{model}@2` or `projects/{project}/locations/{location}/models/{model}@golden` If no version ID or alias is specified, the &quot;default&quot; version will be returned. The &quot;default&quot; version alias is created for the first version of the model, and can be moved to other versions later on. There will be exactly one default version.
          &quot;A String&quot;,
        ],
        &quot;network&quot;: &quot;A String&quot;, # Optional. The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Job should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. To specify this field, you must have already [configured VPC Network Peering for Vertex AI](https://cloud.google.com/vertex-ai/docs/general/vpc-peering). If this field is left unspecified, the job is not peered with any network.
        &quot;protectedArtifactLocationId&quot;: &quot;A String&quot;, # The ID of the location to store protected artifacts. e.g. us-central1. Populate only when the location is different than CustomJob location. List of supported locations: https://cloud.google.com/vertex-ai/docs/general/locations
        &quot;reservedIpRanges&quot;: [ # Optional. A list of names for the reserved ip ranges under the VPC network that can be used for this job. If set, we will deploy the job within the provided ip ranges. Otherwise, the job will be deployed to any ip ranges under the provided VPC network. Example: [&#x27;vertex-ai-ip-range&#x27;].
          &quot;A String&quot;,
        ],
        &quot;scheduling&quot;: { # All parameters related to queuing and scheduling of custom jobs. # Scheduling options for a CustomJob.
          &quot;disableRetries&quot;: True or False, # Optional. Indicates if the job should retry for internal errors after the job starts running. If true, overrides `Scheduling.restart_job_on_worker_restart` to false.
          &quot;restartJobOnWorkerRestart&quot;: True or False, # Restarts the entire CustomJob if a worker gets restarted. This feature can be used by distributed training jobs that are not resilient to workers leaving and joining a job.
          &quot;timeout&quot;: &quot;A String&quot;, # The maximum job running time. The default is 7 days.
        },
        &quot;serviceAccount&quot;: &quot;A String&quot;, # Specifies the service account for workload run-as account. Users submitting jobs must have act-as permission on this run-as account. If unspecified, the [Vertex AI Custom Code Service Agent](https://cloud.google.com/vertex-ai/docs/general/access-control#service-agents) for the CustomJob&#x27;s project is used.
        &quot;tensorboard&quot;: &quot;A String&quot;, # Optional. The name of a Vertex AI Tensorboard resource to which this CustomJob will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
        &quot;workerPoolSpecs&quot;: [ # Required. The spec of the worker pools including machine type and Docker image. All worker pools except the first one are optional and can be skipped by providing an empty value.
          { # Represents the spec of a worker pool in a job.
            &quot;containerSpec&quot;: { # The spec of a Container. # The custom container task.
              &quot;args&quot;: [ # The arguments to be passed when starting the container.
                &quot;A String&quot;,
              ],
              &quot;command&quot;: [ # The command to be invoked when the container is started. It overrides the entrypoint instruction in Dockerfile when provided.
                &quot;A String&quot;,
              ],
              &quot;env&quot;: [ # Environment variables to be passed to the container. Maximum limit is 100.
                { # Represents an environment variable present in a Container or Python Module.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Name of the environment variable. Must be a valid C identifier.
                  &quot;value&quot;: &quot;A String&quot;, # Required. Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.
                },
              ],
              &quot;imageUri&quot;: &quot;A String&quot;, # Required. The URI of a container image in the Container Registry that is to be run on each worker replica.
            },
            &quot;diskSpec&quot;: { # Represents the spec of disk options. # Disk spec.
              &quot;bootDiskSizeGb&quot;: 42, # Size in GB of the boot disk (default is 100GB).
              &quot;bootDiskType&quot;: &quot;A String&quot;, # Type of the boot disk (default is &quot;pd-ssd&quot;). Valid values: &quot;pd-ssd&quot; (Persistent Disk Solid State Drive) or &quot;pd-standard&quot; (Persistent Disk Hard Disk Drive).
            },
            &quot;machineSpec&quot;: { # Specification of a single machine. # Optional. Immutable. The specification of a single machine.
              &quot;acceleratorCount&quot;: 42, # The number of accelerators to attach to the machine.
              &quot;acceleratorType&quot;: &quot;A String&quot;, # Immutable. The type of accelerator(s) that may be attached to the machine as per accelerator_count.
              &quot;machineType&quot;: &quot;A String&quot;, # Immutable. The type of the machine. See the [list of machine types supported for prediction](https://cloud.google.com/vertex-ai/docs/predictions/configure-compute#machine-types) See the [list of machine types supported for custom training](https://cloud.google.com/vertex-ai/docs/training/configure-compute#machine-types). For DeployedModel this field is optional, and the default value is `n1-standard-2`. For BatchPredictionJob or as part of WorkerPoolSpec this field is required.
              &quot;tpuTopology&quot;: &quot;A String&quot;, # Immutable. The topology of the TPUs. Corresponds to the TPU topologies available from GKE. (Example: tpu_topology: &quot;2x2x1&quot;).
            },
            &quot;nfsMounts&quot;: [ # Optional. List of NFS mount spec.
              { # Represents a mount configuration for Network File System (NFS) to mount.
                &quot;mountPoint&quot;: &quot;A String&quot;, # Required. Destination mount path. The NFS will be mounted for the user under /mnt/nfs/
                &quot;path&quot;: &quot;A String&quot;, # Required. Source path exported from NFS server. Has to start with &#x27;/&#x27;, and combined with the ip address, it indicates the source mount path in the form of `server:path`
                &quot;server&quot;: &quot;A String&quot;, # Required. IP address of the NFS server.
              },
            ],
            &quot;pythonPackageSpec&quot;: { # The spec of a Python packaged code. # The Python packaged task.
              &quot;args&quot;: [ # Command line arguments to be passed to the Python task.
                &quot;A String&quot;,
              ],
              &quot;env&quot;: [ # Environment variables to be passed to the python module. Maximum limit is 100.
                { # Represents an environment variable present in a Container or Python Module.
                  &quot;name&quot;: &quot;A String&quot;, # Required. Name of the environment variable. Must be a valid C identifier.
                  &quot;value&quot;: &quot;A String&quot;, # Required. Variables that reference a $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not.
                },
              ],
              &quot;executorImageUri&quot;: &quot;A String&quot;, # Required. The URI of a container image in Artifact Registry that will run the provided Python package. Vertex AI provides a wide range of executor images with pre-installed packages to meet users&#x27; various use cases. See the list of [pre-built containers for training](https://cloud.google.com/vertex-ai/docs/training/pre-built-containers). You must use an image from this list.
              &quot;packageUris&quot;: [ # Required. The Google Cloud Storage location of the Python package files which are the training program and its dependent packages. The maximum number of package URIs is 100.
                &quot;A String&quot;,
              ],
              &quot;pythonModule&quot;: &quot;A String&quot;, # Required. The Python module name to run after installing the packages.
            },
            &quot;replicaCount&quot;: &quot;A String&quot;, # Optional. The number of worker replicas to use for this worker pool.
          },
        ],
      },
      &quot;trials&quot;: [ # Output only. Trials of the HyperparameterTuningJob.
        { # A message representing a Trial. A Trial contains a unique set of Parameters that has been or will be evaluated, along with the objective metrics got by running the Trial.
          &quot;clientId&quot;: &quot;A String&quot;, # Output only. The identifier of the client that originally requested this Trial. Each client is identified by a unique client_id. When a client asks for a suggestion, Vertex AI Vizier will assign it a Trial. The client should evaluate the Trial, complete it, and report back to Vertex AI Vizier. If suggestion is asked again by same client_id before the Trial is completed, the same Trial will be returned. Multiple clients with different client_ids can ask for suggestions simultaneously, each of them will get their own Trial.
          &quot;customJob&quot;: &quot;A String&quot;, # Output only. The CustomJob name linked to the Trial. It&#x27;s set for a HyperparameterTuningJob&#x27;s Trial.
          &quot;endTime&quot;: &quot;A String&quot;, # Output only. Time when the Trial&#x27;s status changed to `SUCCEEDED` or `INFEASIBLE`.
          &quot;finalMeasurement&quot;: { # A message representing a Measurement of a Trial. A Measurement contains the Metrics got by executing a Trial using suggested hyperparameter values. # Output only. The final measurement containing the objective value.
            &quot;elapsedDuration&quot;: &quot;A String&quot;, # Output only. Time that the Trial has been running at the point of this Measurement.
            &quot;metrics&quot;: [ # Output only. A list of metrics got by evaluating the objective functions using suggested Parameter values.
              { # A message representing a metric in the measurement.
                &quot;metricId&quot;: &quot;A String&quot;, # Output only. The ID of the Metric. The Metric should be defined in StudySpec&#x27;s Metrics.
                &quot;value&quot;: 3.14, # Output only. The value for this metric.
              },
            ],
            &quot;stepCount&quot;: &quot;A String&quot;, # Output only. The number of steps the machine learning model has been trained for. Must be non-negative.
          },
          &quot;id&quot;: &quot;A String&quot;, # Output only. The identifier of the Trial assigned by the service.
          &quot;infeasibleReason&quot;: &quot;A String&quot;, # Output only. A human readable string describing why the Trial is infeasible. This is set only if Trial state is `INFEASIBLE`.
          &quot;measurements&quot;: [ # Output only. A list of measurements that are strictly lexicographically ordered by their induced tuples (steps, elapsed_duration). These are used for early stopping computations.
            { # A message representing a Measurement of a Trial. A Measurement contains the Metrics got by executing a Trial using suggested hyperparameter values.
              &quot;elapsedDuration&quot;: &quot;A String&quot;, # Output only. Time that the Trial has been running at the point of this Measurement.
              &quot;metrics&quot;: [ # Output only. A list of metrics got by evaluating the objective functions using suggested Parameter values.
                { # A message representing a metric in the measurement.
                  &quot;metricId&quot;: &quot;A String&quot;, # Output only. The ID of the Metric. The Metric should be defined in StudySpec&#x27;s Metrics.
                  &quot;value&quot;: 3.14, # Output only. The value for this metric.
                },
              ],
              &quot;stepCount&quot;: &quot;A String&quot;, # Output only. The number of steps the machine learning model has been trained for. Must be non-negative.
            },
          ],
          &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of the Trial assigned by the service.
          &quot;parameters&quot;: [ # Output only. The parameters of the Trial.
            { # A message representing a parameter to be tuned.
              &quot;parameterId&quot;: &quot;A String&quot;, # Output only. The ID of the parameter. The parameter should be defined in StudySpec&#x27;s Parameters.
              &quot;value&quot;: &quot;&quot;, # Output only. The value of the parameter. `number_value` will be set if a parameter defined in StudySpec is in type &#x27;INTEGER&#x27;, &#x27;DOUBLE&#x27; or &#x27;DISCRETE&#x27;. `string_value` will be set if a parameter defined in StudySpec is in type &#x27;CATEGORICAL&#x27;.
            },
          ],
          &quot;startTime&quot;: &quot;A String&quot;, # Output only. Time when the Trial was started.
          &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of the Trial.
          &quot;webAccessUris&quot;: { # Output only. URIs for accessing [interactive shells](https://cloud.google.com/vertex-ai/docs/training/monitor-debug-interactive-shell) (one URI for each training node). Only available if this trial is part of a HyperparameterTuningJob and the job&#x27;s trial_job_spec.enable_web_access field is `true`. The keys are names of each node used for the trial; for example, `workerpool0-0` for the primary node, `workerpool1-0` for the first node in the second worker pool, and `workerpool1-1` for the second node in the second worker pool. The values are the URIs for each node&#x27;s interactive shell.
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
      ],
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time when the HyperparameterTuningJob was most recently updated.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of results. Pass to ListHyperparameterTuningJobsRequest.page_token to obtain that page.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</code>
  <pre>Retrieves the next page of results.

        Args:
          previous_request: The request for the previous page. (required)
          previous_response: The response from the request for the previous page. (required)

        Returns:
          A request object that you can call &#x27;execute()&#x27; on to request the next
          page. Returns None if there are no more items in the collection.
        </pre>
</div>

</body></html>