---
title: Getting Started with Datadog
description: Datadog, the leading service for cloud-scale monitoring.
breadcrumbs: Docs > Infrastructure > Datadog Resource Catalog
---

# gcp_aiplatform_hyperparameter_tuning_job{% #gcp_aiplatform_hyperparameter_tuning_job %}

## `ancestors`{% #ancestors %}

**Type**: `UNORDERED_LIST_STRING`

## `create_time`{% #create_time %}

**Type**: `TIMESTAMP`**Provider name**: `createTime`**Description**: Output only. Time when the HyperparameterTuningJob was created.

## `encryption_spec`{% #encryption_spec %}

**Type**: `STRUCT`**Provider name**: `encryptionSpec`**Description**: 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.

- `kms_key_name`**Type**: `STRING`**Provider name**: `kmsKeyName`**Description**: 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.

## `end_time`{% #end_time %}

**Type**: `TIMESTAMP`**Provider name**: `endTime`**Description**: Output only. Time when the HyperparameterTuningJob entered any of the following states: `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED`, `JOB_STATE_CANCELLED`.

## `error`{% #error %}

**Type**: `STRUCT`**Provider name**: `error`**Description**: Output only. Only populated when job's state is JOB_STATE_FAILED or JOB_STATE_CANCELLED.

- `code`**Type**: `INT32`**Provider name**: `code`**Description**: The status code, which should be an enum value of google.rpc.Code.
- `message`**Type**: `STRING`**Provider name**: `message`**Description**: 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.

## `gcp_display_name`{% #gcp_display_name %}

**Type**: `STRING`**Provider name**: `displayName`**Description**: Required. The display name of the HyperparameterTuningJob. The name can be up to 128 characters long and can consist of any UTF-8 characters.

## `labels`{% #labels %}

**Type**: `UNORDERED_LIST_STRING`

## `max_failed_trial_count`{% #max_failed_trial_count %}

**Type**: `INT32`**Provider name**: `maxFailedTrialCount`**Description**: 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.

## `max_trial_count`{% #max_trial_count %}

**Type**: `INT32`**Provider name**: `maxTrialCount`**Description**: Required. The desired total number of Trials.

## `name`{% #name %}

**Type**: `STRING`**Provider name**: `name`**Description**: Output only. Resource name of the HyperparameterTuningJob.

## `organization_id`{% #organization_id %}

**Type**: `STRING`

## `parallel_trial_count`{% #parallel_trial_count %}

**Type**: `INT32`**Provider name**: `parallelTrialCount`**Description**: Required. The desired number of Trials to run in parallel.

## `parent`{% #parent %}

**Type**: `STRING`

## `project_id`{% #project_id %}

**Type**: `STRING`

## `project_number`{% #project_number %}

**Type**: `STRING`

## `region_id`{% #region_id %}

**Type**: `STRING`

## `resource_name`{% #resource_name %}

**Type**: `STRING`

## `satisfies_pzi`{% #satisfies_pzi %}

**Type**: `BOOLEAN`**Provider name**: `satisfiesPzi`**Description**: Output only. Reserved for future use.

## `satisfies_pzs`{% #satisfies_pzs %}

**Type**: `BOOLEAN`**Provider name**: `satisfiesPzs`**Description**: Output only. Reserved for future use.

## `start_time`{% #start_time %}

**Type**: `TIMESTAMP`**Provider name**: `startTime`**Description**: Output only. Time when the HyperparameterTuningJob for the first time entered the `JOB_STATE_RUNNING` state.

## `state`{% #state %}

**Type**: `STRING`**Provider name**: `state`**Description**: Output only. The detailed state of the job.**Possible values**:

- `JOB_STATE_UNSPECIFIED` - The job state is unspecified.
- `JOB_STATE_QUEUED` - The job has been just created or resumed and processing has not yet begun.
- `JOB_STATE_PENDING` - The service is preparing to run the job.
- `JOB_STATE_RUNNING` - The job is in progress.
- `JOB_STATE_SUCCEEDED` - The job completed successfully.
- `JOB_STATE_FAILED` - The job failed.
- `JOB_STATE_CANCELLING` - The job is being cancelled. From this state the job may only go to either `JOB_STATE_SUCCEEDED`, `JOB_STATE_FAILED` or `JOB_STATE_CANCELLED`.
- `JOB_STATE_CANCELLED` - The job has been cancelled.
- `JOB_STATE_PAUSED` - The job has been stopped, and can be resumed.
- `JOB_STATE_EXPIRED` - The job has expired.
- `JOB_STATE_UPDATING` - The job is being updated. Only jobs in the `RUNNING` state can be updated. After updating, the job goes back to the `RUNNING` state.
- `JOB_STATE_PARTIALLY_SUCCEEDED` - The job is partially succeeded, some results may be missing due to errors.

## `study_spec`{% #study_spec %}

**Type**: `STRUCT`**Provider name**: `studySpec`**Description**: Required. Study configuration of the HyperparameterTuningJob.

- `algorithm`**Type**: `STRING`**Provider name**: `algorithm`**Description**: The search algorithm specified for the Study.**Possible values**:
  - `ALGORITHM_UNSPECIFIED` - The default algorithm used by Vertex AI for [hyperparameter tuning](https://cloud.google.com/vertex-ai/docs/training/hyperparameter-tuning-overview) and [Vertex AI Vizier](https://cloud.google.com/vertex-ai/docs/vizier).
  - `GRID_SEARCH` - Simple grid search within the feasible space. To use grid search, all parameters must be `INTEGER`, `CATEGORICAL`, or `DISCRETE`.
  - `RANDOM_SEARCH` - Simple random search within the feasible space.
- `convex_automated_stopping_spec`**Type**: `STRUCT`**Provider name**: `convexAutomatedStoppingSpec`**Description**: The automated early stopping spec using convex stopping rule.
  - `learning_rate_parameter_name`**Type**: `STRING`**Provider name**: `learningRateParameterName`**Description**: 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.
  - `max_step_count`**Type**: `INT64`**Provider name**: `maxStepCount`**Description**: Steps used in predicting the final objective for early stopped trials. In general, it'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.
  - `min_measurement_count`**Type**: `INT64`**Provider name**: `minMeasurementCount`**Description**: 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.
  - `min_step_count`**Type**: `INT64`**Provider name**: `minStepCount`**Description**: Minimum number of steps for a trial to complete. Trials which do not have a measurement with step_count > min_step_count won't be considered for early stopping. It'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.
  - `update_all_stopped_trials`**Type**: `BOOLEAN`**Provider name**: `updateAllStoppedTrials`**Description**: 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.
  - `use_elapsed_duration`**Type**: `BOOLEAN`**Provider name**: `useElapsedDuration`**Description**: 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.
- `decay_curve_stopping_spec`**Type**: `STRUCT`**Provider name**: `decayCurveStoppingSpec`**Description**: The automated early stopping spec using decay curve rule.
  - `use_elapsed_duration`**Type**: `BOOLEAN`**Provider name**: `useElapsedDuration`**Description**: 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.
- `measurement_selection_type`**Type**: `STRING`**Provider name**: `measurementSelectionType`**Description**: Describe which measurement selection type will be used**Possible values**:
  - `MEASUREMENT_SELECTION_TYPE_UNSPECIFIED` - Will be treated as LAST_MEASUREMENT.
  - `LAST_MEASUREMENT` - Use the last measurement reported.
  - `BEST_MEASUREMENT` - Use the best measurement reported.
- `median_automated_stopping_spec`**Type**: `STRUCT`**Provider name**: `medianAutomatedStoppingSpec`**Description**: The automated early stopping spec using median rule.
  - `use_elapsed_duration`**Type**: `BOOLEAN`**Provider name**: `useElapsedDuration`**Description**: 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.
- `metrics`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `metrics`**Description**: Required. Metric specs for the Study.
  - `goal`**Type**: `STRING`**Provider name**: `goal`**Description**: Required. The optimization goal of the metric.**Possible values**:
    - `GOAL_TYPE_UNSPECIFIED` - Goal Type will default to maximize.
    - `MAXIMIZE` - Maximize the goal metric.
    - `MINIMIZE` - Minimize the goal metric.
  - `metric_id`**Type**: `STRING`**Provider name**: `metricId`**Description**: Required. The ID of the metric. Must not contain whitespaces and must be unique amongst all MetricSpecs.
  - `safety_config`**Type**: `STRUCT`**Provider name**: `safetyConfig`**Description**: Used for safe search. In the case, the metric will be a safety metric. You must provide a separate metric for objective metric.
    - `desired_min_safe_trials_fraction`**Type**: `DOUBLE`**Provider name**: `desiredMinSafeTrialsFraction`**Description**: 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.
    - `safety_threshold`**Type**: `DOUBLE`**Provider name**: `safetyThreshold`**Description**: Safety threshold (boundary value between safe and unsafe). NOTE that if you leave SafetyMetricConfig unset, a default value of 0 will be used.
- `observation_noise`**Type**: `STRING`**Provider name**: `observationNoise`**Description**: The observation noise level of the study. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.**Possible values**:
  - `OBSERVATION_NOISE_UNSPECIFIED` - The default noise level chosen by Vertex AI.
  - `LOW` - Vertex AI assumes that the objective function is (nearly) perfectly reproducible, and will never repeat the same Trial parameters.
  - `HIGH` - Vertex AI will estimate the amount of noise in metric evaluations, it may repeat the same Trial parameters more than once.
- `parameters`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `parameters`**Description**: Required. The set of parameters to tune.
  - `categorical_value_spec`**Type**: `STRUCT`**Provider name**: `categoricalValueSpec`**Description**: The value spec for a 'CATEGORICAL' parameter.
    - `default_value`**Type**: `STRING`**Provider name**: `defaultValue`**Description**: 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.
    - `values`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `values`**Description**: Required. The list of possible categories.
  - `conditional_parameter_specs`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `conditionalParameterSpecs`**Description**: A conditional parameter node is active if the parameter's value matches the conditional node's parent_value_condition. If two items in conditional_parameter_specs have the same name, they must have disjoint parent_value_condition.
    - `parent_categorical_values`**Type**: `STRUCT`**Provider name**: `parentCategoricalValues`**Description**: The spec for matching values from a parent parameter of `CATEGORICAL` type.
      - `values`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `values`**Description**: Required. Matches values of the parent parameter of 'CATEGORICAL' type. All values must exist in `categorical_value_spec` of parent parameter.
    - `parent_discrete_values`**Type**: `STRUCT`**Provider name**: `parentDiscreteValues`**Description**: The spec for matching values from a parent parameter of `DISCRETE` type.
      - `values`**Type**: `UNORDERED_LIST_DOUBLE`**Provider name**: `values`**Description**: Required. Matches values of the parent parameter of 'DISCRETE' type. All values must exist in `discrete_value_spec` of parent parameter. The Epsilon of the value matching is 1e-10.
    - `parent_int_values`**Type**: `STRUCT`**Provider name**: `parentIntValues`**Description**: The spec for matching values from a parent parameter of `INTEGER` type.
      - `values`**Type**: `UNORDERED_LIST_INT64`**Provider name**: `values`**Description**: Required. Matches values of the parent parameter of 'INTEGER' type. All values must lie in `integer_value_spec` of parent parameter.
  - `discrete_value_spec`**Type**: `STRUCT`**Provider name**: `discreteValueSpec`**Description**: The value spec for a 'DISCRETE' parameter.
    - `default_value`**Type**: `DOUBLE`**Provider name**: `defaultValue`**Description**: 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.
    - `values`**Type**: `UNORDERED_LIST_DOUBLE`**Provider name**: `values`**Description**: 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.
  - `double_value_spec`**Type**: `STRUCT`**Provider name**: `doubleValueSpec`**Description**: The value spec for a 'DOUBLE' parameter.
    - `default_value`**Type**: `DOUBLE`**Provider name**: `defaultValue`**Description**: 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.
    - `max_value`**Type**: `DOUBLE`**Provider name**: `maxValue`**Description**: Required. Inclusive maximum value of the parameter.
    - `min_value`**Type**: `DOUBLE`**Provider name**: `minValue`**Description**: Required. Inclusive minimum value of the parameter.
  - `integer_value_spec`**Type**: `STRUCT`**Provider name**: `integerValueSpec`**Description**: The value spec for an 'INTEGER' parameter.
    - `default_value`**Type**: `INT64`**Provider name**: `defaultValue`**Description**: 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.
    - `max_value`**Type**: `INT64`**Provider name**: `maxValue`**Description**: Required. Inclusive maximum value of the parameter.
    - `min_value`**Type**: `INT64`**Provider name**: `minValue`**Description**: Required. Inclusive minimum value of the parameter.
  - `parameter_id`**Type**: `STRING`**Provider name**: `parameterId`**Description**: Required. The ID of the parameter. Must not contain whitespaces and must be unique amongst all ParameterSpecs.
  - `scale_type`**Type**: `STRING`**Provider name**: `scaleType`**Description**: How the parameter should be scaled. Leave unset for `CATEGORICAL` parameters.**Possible values**:
    - `SCALE_TYPE_UNSPECIFIED` - By default, no scaling is applied.
    - `UNIT_LINEAR_SCALE` - Scales the feasible space to (0, 1) linearly.
    - `UNIT_LOG_SCALE` - Scales the feasible space logarithmically to (0, 1). The entire feasible space must be strictly positive.
    - `UNIT_REVERSE_LOG_SCALE` - Scales the feasible space 'reverse' logarithmically to (0, 1). The result is that values close to the top of the feasible space are spread out more than points near the bottom. The entire feasible space must be strictly positive.
- `study_stopping_config`**Type**: `STRUCT`**Provider name**: `studyStoppingConfig`**Description**: Conditions for automated stopping of a Study. Enable automated stopping by configuring at least one condition.
  - `max_duration_no_progress`**Type**: `STRING`**Provider name**: `maxDurationNoProgress`**Description**: If the objective value has not improved for this much time, stop the study. WARNING: Effective only for single-objective studies.
  - `max_num_trials`**Type**: `INT32`**Provider name**: `maxNumTrials`**Description**: If there are more than this many trials, stop the study.
  - `max_num_trials_no_progress`**Type**: `INT32`**Provider name**: `maxNumTrialsNoProgress`**Description**: If the objective value has not improved for this many consecutive trials, stop the study. WARNING: Effective only for single-objective studies.
  - `maximum_runtime_constraint`**Type**: `STRUCT`**Provider name**: `maximumRuntimeConstraint`**Description**: If the specified time or duration has passed, stop the study.
    - `end_time`**Type**: `TIMESTAMP`**Provider name**: `endTime`**Description**: Compares the wallclock time to this time. Must use UTC timezone.
    - `max_duration`**Type**: `STRING`**Provider name**: `maxDuration`**Description**: Counts the wallclock time passed since the creation of this Study.
  - `min_num_trials`**Type**: `INT32`**Provider name**: `minNumTrials`**Description**: If there are fewer than this many COMPLETED trials, do not stop the study.
  - `minimum_runtime_constraint`**Type**: `STRUCT`**Provider name**: `minimumRuntimeConstraint`**Description**: Each "stopping rule" in this proto specifies an "if" 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 "if" 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.
    - `end_time`**Type**: `TIMESTAMP`**Provider name**: `endTime`**Description**: Compares the wallclock time to this time. Must use UTC timezone.
    - `max_duration`**Type**: `STRING`**Provider name**: `maxDuration`**Description**: Counts the wallclock time passed since the creation of this Study.
  - `should_stop_asap`**Type**: `BOOLEAN`**Provider name**: `shouldStopAsap`**Description**: 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).

## `tags`{% #tags %}

**Type**: `UNORDERED_LIST_STRING`

## `trial_job_spec`{% #trial_job_spec %}

**Type**: `STRUCT`**Provider name**: `trialJobSpec`**Description**: Required. The spec of a trial job. The same spec applies to the CustomJobs created in all the trials.

- `base_output_directory`**Type**: `STRUCT`**Provider name**: `baseOutputDirectory`**Description**: 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'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/`
  - `output_uri_prefix`**Type**: `STRING`**Provider name**: `outputUriPrefix`**Description**: Required. Google Cloud Storage URI to output directory. If the uri doesn't end with '/', a '/' will be automatically appended. The directory is created if it doesn't exist.
- `enable_dashboard_access`**Type**: `BOOLEAN`**Provider name**: `enableDashboardAccess`**Description**: 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).
- `enable_web_access`**Type**: `BOOLEAN`**Provider name**: `enableWebAccess`**Description**: 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).
- `experiment`**Type**: `STRING`**Provider name**: `experiment`**Description**: Optional. The Experiment associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}`
- `experiment_run`**Type**: `STRING`**Provider name**: `experimentRun`**Description**: Optional. The Experiment Run associated with this job. Format: `projects/{project}/locations/{location}/metadataStores/{metadataStores}/contexts/{experiment-name}-{experiment-run-name}`
- `models`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `models`**Description**: 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 "default" version will be returned. The "default" 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.
- `network`**Type**: `STRING`**Provider name**: `network`**Description**: Optional. The full name of the Compute Engine [network](https://docs.datadoghq.com/compute/docs/networks-and-firewalls#networks) to which the Job should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](https://docs.datadoghq.com/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.
- `persistent_resource_id`**Type**: `STRING`**Provider name**: `persistentResourceId`**Description**: Optional. The ID of the PersistentResource in the same Project and Location which to run If this is specified, the job will be run on existing machines held by the PersistentResource instead of on-demand short-live machines. The network and CMEK configs on the job should be consistent with those on the PersistentResource, otherwise, the job will be rejected.
- `protected_artifact_location_id`**Type**: `STRING`**Provider name**: `protectedArtifactLocationId`**Description**: 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](https://cloud.google.com/vertex-ai/docs/general/locations)
- `reserved_ip_ranges`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `reservedIpRanges`**Description**: 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: ['vertex-ai-ip-range'].
- `scheduling`**Type**: `STRUCT`**Provider name**: `scheduling`**Description**: Scheduling options for a CustomJob.
  - `disable_retries`**Type**: `BOOLEAN`**Provider name**: `disableRetries`**Description**: 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.
  - `max_wait_duration`**Type**: `STRING`**Provider name**: `maxWaitDuration`**Description**: Optional. This is the maximum duration that a job will wait for the requested resources to be provisioned if the scheduling strategy is set to [Strategy.DWS_FLEX_START]. If set to 0, the job will wait indefinitely. The default is 24 hours.
  - `restart_job_on_worker_restart`**Type**: `BOOLEAN`**Provider name**: `restartJobOnWorkerRestart`**Description**: Optional. 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.
  - `strategy`**Type**: `STRING`**Provider name**: `strategy`**Description**: Optional. This determines which type of scheduling strategy to use.**Possible values**:
    - `STRATEGY_UNSPECIFIED` - Strategy will default to STANDARD.
    - `ON_DEMAND` - Deprecated. Regular on-demand provisioning strategy.
    - `LOW_COST` - Deprecated. Low cost by making potential use of spot resources.
    - `STANDARD` - Standard provisioning strategy uses regular on-demand resources.
    - `SPOT` - Spot provisioning strategy uses spot resources.
    - `FLEX_START` - Flex Start strategy uses DWS to queue for resources.
  - `timeout`**Type**: `STRING`**Provider name**: `timeout`**Description**: Optional. The maximum job running time. The default is 7 days.
- `service_account`**Type**: `STRING`**Provider name**: `serviceAccount`**Description**: 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's project is used.
- `tensorboard`**Type**: `STRING`**Provider name**: `tensorboard`**Description**: Optional. The name of a Vertex AI Tensorboard resource to which this CustomJob will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
- `worker_pool_specs`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `workerPoolSpecs`**Description**: 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.
  - `container_spec`**Type**: `STRUCT`**Provider name**: `containerSpec`**Description**: The custom container task.
    - `args`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `args`**Description**: The arguments to be passed when starting the container.
    - `command`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `command`**Description**: The command to be invoked when the container is started. It overrides the entrypoint instruction in Dockerfile when provided.
    - `env`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `env`**Description**: Environment variables to be passed to the container. Maximum limit is 100.
      - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Required. Name of the environment variable. Must be a valid C identifier.
      - `value`**Type**: `STRING`**Provider name**: `value`**Description**: 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.
    - `image_uri`**Type**: `STRING`**Provider name**: `imageUri`**Description**: Required. The URI of a container image in the Container Registry that is to be run on each worker replica.
  - `disk_spec`**Type**: `STRUCT`**Provider name**: `diskSpec`**Description**: Disk spec.
    - `boot_disk_size_gb`**Type**: `INT32`**Provider name**: `bootDiskSizeGb`**Description**: Size in GB of the boot disk (default is 100GB).
    - `boot_disk_type`**Type**: `STRING`**Provider name**: `bootDiskType`**Description**: Type of the boot disk. For non-A3U machines, the default value is "pd-ssd", for A3U machines, the default value is "hyperdisk-balanced". Valid values: "pd-ssd" (Persistent Disk Solid State Drive), "pd-standard" (Persistent Disk Hard Disk Drive) or "hyperdisk-balanced".
  - `machine_spec`**Type**: `STRUCT`**Provider name**: `machineSpec`**Description**: Optional. Immutable. The specification of a single machine.
    - `accelerator_count`**Type**: `INT32`**Provider name**: `acceleratorCount`**Description**: The number of accelerators to attach to the machine.
    - `accelerator_type`**Type**: `STRING`**Provider name**: `acceleratorType`**Description**: Immutable. The type of accelerator(s) that may be attached to the machine as per accelerator_count.**Possible values**:
      - `ACCELERATOR_TYPE_UNSPECIFIED` - Unspecified accelerator type, which means no accelerator.
      - `NVIDIA_TESLA_K80` - Deprecated: Nvidia Tesla K80 GPU has reached end of support, see [https://cloud.google.com/compute/docs/eol/k80-eol](https://cloud.google.com/compute/docs/eol/k80-eol).
      - `NVIDIA_TESLA_P100` - Nvidia Tesla P100 GPU.
      - `NVIDIA_TESLA_V100` - Nvidia Tesla V100 GPU.
      - `NVIDIA_TESLA_P4` - Nvidia Tesla P4 GPU.
      - `NVIDIA_TESLA_T4` - Nvidia Tesla T4 GPU.
      - `NVIDIA_TESLA_A100` - Nvidia Tesla A100 GPU.
      - `NVIDIA_A100_80GB` - Nvidia A100 80GB GPU.
      - `NVIDIA_L4` - Nvidia L4 GPU.
      - `NVIDIA_H100_80GB` - Nvidia H100 80Gb GPU.
      - `NVIDIA_H100_MEGA_80GB` - Nvidia H100 Mega 80Gb GPU.
      - `NVIDIA_H200_141GB` - Nvidia H200 141Gb GPU.
      - `TPU_V2` - TPU v2.
      - `TPU_V3` - TPU v3.
      - `TPU_V4_POD` - TPU v4.
      - `TPU_V5_LITEPOD` - TPU v5.
    - `machine_type`**Type**: `STRING`**Provider name**: `machineType`**Description**: 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.
    - `reservation_affinity`**Type**: `STRUCT`**Provider name**: `reservationAffinity`**Description**: Optional. Immutable. Configuration controlling how this resource pool consumes reservation.
      - `key`**Type**: `STRING`**Provider name**: `key`**Description**: Optional. Corresponds to the label key of a reservation resource. To target a SPECIFIC_RESERVATION by name, use `compute.googleapis.com/reservation-name` as the key and specify the name of your reservation as its value.
      - `reservation_affinity_type`**Type**: `STRING`**Provider name**: `reservationAffinityType`**Description**: Required. Specifies the reservation affinity type.**Possible values**:
        - `TYPE_UNSPECIFIED` - Default value. This should not be used.
        - `NO_RESERVATION` - Do not consume from any reserved capacity, only use on-demand.
        - `ANY_RESERVATION` - Consume any reservation available, falling back to on-demand.
        - `SPECIFIC_RESERVATION` - Consume from a specific reservation. When chosen, the reservation must be identified via the `key` and `values` fields.
      - `values`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `values`**Description**: Optional. Corresponds to the label values of a reservation resource. This must be the full resource name of the reservation or reservation block.
    - `tpu_topology`**Type**: `STRING`**Provider name**: `tpuTopology`**Description**: Immutable. The topology of the TPUs. Corresponds to the TPU topologies available from GKE. (Example: tpu_topology: "2x2x1").
  - `nfs_mounts`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `nfsMounts`**Description**: Optional. List of NFS mount spec.
    - `mount_point`**Type**: `STRING`**Provider name**: `mountPoint`**Description**: Required. Destination mount path. The NFS will be mounted for the user under /mnt/nfs/
    - `path`**Type**: `STRING`**Provider name**: `path`**Description**: Required. Source path exported from NFS server. Has to start with '/', and combined with the ip address, it indicates the source mount path in the form of `server:path`
    - `server`**Type**: `STRING`**Provider name**: `server`**Description**: Required. IP address of the NFS server.
  - `python_package_spec`**Type**: `STRUCT`**Provider name**: `pythonPackageSpec`**Description**: The Python packaged task.
    - `args`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `args`**Description**: Command line arguments to be passed to the Python task.
    - `env`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `env`**Description**: Environment variables to be passed to the python module. Maximum limit is 100.
      - `name`**Type**: `STRING`**Provider name**: `name`**Description**: Required. Name of the environment variable. Must be a valid C identifier.
      - `value`**Type**: `STRING`**Provider name**: `value`**Description**: 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.
    - `executor_image_uri`**Type**: `STRING`**Provider name**: `executorImageUri`**Description**: 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' 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.
    - `package_uris`**Type**: `UNORDERED_LIST_STRING`**Provider name**: `packageUris`**Description**: 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.
    - `python_module`**Type**: `STRING`**Provider name**: `pythonModule`**Description**: Required. The Python module name to run after installing the packages.
  - `replica_count`**Type**: `INT64`**Provider name**: `replicaCount`**Description**: Optional. The number of worker replicas to use for this worker pool.

## `trials`{% #trials %}

**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `trials`**Description**: Output only. Trials of the HyperparameterTuningJob.

- `client_id`**Type**: `STRING`**Provider name**: `clientId`**Description**: 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.
- `custom_job`**Type**: `STRING`**Provider name**: `customJob`**Description**: Output only. The CustomJob name linked to the Trial. It's set for a HyperparameterTuningJob's Trial.
- `end_time`**Type**: `TIMESTAMP`**Provider name**: `endTime`**Description**: Output only. Time when the Trial's status changed to `SUCCEEDED` or `INFEASIBLE`.
- `final_measurement`**Type**: `STRUCT`**Provider name**: `finalMeasurement`**Description**: Output only. The final measurement containing the objective value.
  - `elapsed_duration`**Type**: `STRING`**Provider name**: `elapsedDuration`**Description**: Output only. Time that the Trial has been running at the point of this Measurement.
  - `metrics`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `metrics`**Description**: Output only. A list of metrics got by evaluating the objective functions using suggested Parameter values.
    - `metric_id`**Type**: `STRING`**Provider name**: `metricId`**Description**: Output only. The ID of the Metric. The Metric should be defined in StudySpec's Metrics.
    - `value`**Type**: `DOUBLE`**Provider name**: `value`**Description**: Output only. The value for this metric.
  - `step_count`**Type**: `INT64`**Provider name**: `stepCount`**Description**: Output only. The number of steps the machine learning model has been trained for. Must be non-negative.
- `id`**Type**: `STRING`**Provider name**: `id`**Description**: Output only. The identifier of the Trial assigned by the service.
- `infeasible_reason`**Type**: `STRING`**Provider name**: `infeasibleReason`**Description**: Output only. A human readable string describing why the Trial is infeasible. This is set only if Trial state is `INFEASIBLE`.
- `measurements`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `measurements`**Description**: 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.
  - `elapsed_duration`**Type**: `STRING`**Provider name**: `elapsedDuration`**Description**: Output only. Time that the Trial has been running at the point of this Measurement.
  - `metrics`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `metrics`**Description**: Output only. A list of metrics got by evaluating the objective functions using suggested Parameter values.
    - `metric_id`**Type**: `STRING`**Provider name**: `metricId`**Description**: Output only. The ID of the Metric. The Metric should be defined in StudySpec's Metrics.
    - `value`**Type**: `DOUBLE`**Provider name**: `value`**Description**: Output only. The value for this metric.
  - `step_count`**Type**: `INT64`**Provider name**: `stepCount`**Description**: Output only. The number of steps the machine learning model has been trained for. Must be non-negative.
- `name`**Type**: `STRING`**Provider name**: `name`**Description**: Output only. Resource name of the Trial assigned by the service.
- `parameters`**Type**: `UNORDERED_LIST_STRUCT`**Provider name**: `parameters`**Description**: Output only. The parameters of the Trial.
  - `parameter_id`**Type**: `STRING`**Provider name**: `parameterId`**Description**: Output only. The ID of the parameter. The parameter should be defined in StudySpec's Parameters.
- `start_time`**Type**: `TIMESTAMP`**Provider name**: `startTime`**Description**: Output only. Time when the Trial was started.
- `state`**Type**: `STRING`**Provider name**: `state`**Description**: Output only. The detailed state of the Trial.**Possible values**:
  - `STATE_UNSPECIFIED` - The Trial state is unspecified.
  - `REQUESTED` - Indicates that a specific Trial has been requested, but it has not yet been suggested by the service.
  - `ACTIVE` - Indicates that the Trial has been suggested.
  - `STOPPING` - Indicates that the Trial should stop according to the service.
  - `SUCCEEDED` - Indicates that the Trial is completed successfully.
  - `INFEASIBLE` - Indicates that the Trial should not be attempted again. The service will set a Trial to INFEASIBLE when it's done but missing the final_measurement.

## `update_time`{% #update_time %}

**Type**: `TIMESTAMP`**Provider name**: `updateTime`**Description**: Output only. Time when the HyperparameterTuningJob was most recently updated.

## `zone_id`{% #zone_id %}

**Type**: `STRING`
