Represents specification of a Study.
metrics[]
object (MetricSpec
)
Required. Metric specs for the Study.
parameters[]
object (ParameterSpec
)
Required. The set of parameters to tune.
algorithm
enum (Algorithm
)
The search algorithm specified for the Study.
observationNoise
enum (ObservationNoise
)
The observation noise level of the study. Currently only supported by the Vertex AI Vizier service. Not supported by HyperparameterTuningJob or TrainingPipeline.
measurementSelectionType
enum (MeasurementSelectionType
)
Describe which measurement selection type will be used
automated_stopping_spec
Union type
automated_stopping_spec
can be only one of the following:decayCurveStoppingSpec
object (DecayCurveAutomatedStoppingSpec
)
The automated early stopping spec using decay curve rule.
medianAutomatedStoppingSpec
object (MedianAutomatedStoppingSpec
)
The automated early stopping spec using median rule.
convexAutomatedStoppingSpec
object (ConvexAutomatedStoppingSpec
)
The automated early stopping spec using convex stopping rule.
studyStoppingConfig
object (StudyStoppingConfig
)
Conditions for automated stopping of a Study. Enable automated stopping by configuring at least one condition.
JSON representation |
---|
{ "metrics": [ { object ( |
DecayCurveAutomatedStoppingSpec
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.
useElapsedDuration
boolean
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.
JSON representation |
---|
{ "useElapsedDuration": boolean } |
MedianAutomatedStoppingSpec
The median automated stopping rule stops a pending Trial if the Trial's best objectiveValue is strictly below the median 'performance' of all completed Trials reported up to the Trial's last measurement. Currently, 'performance' refers to the running average of the objective values reported by the Trial in each measurement.
useElapsedDuration
boolean
True if median automated stopping rule applies on Measurement.elapsed_duration
. It means that elapsedDuration field of latest measurement of current Trial is used to compute median objective value for each completed Trials.
JSON representation |
---|
{ "useElapsedDuration": boolean } |
ConvexAutomatedStoppingSpec
Configuration for ConvexAutomatedStoppingSpec. When there are enough completed trials (configured by minMeasurementCount), for pending trials with enough measurements and steps, the policy first computes an overestimate of the objective value at maxNumSteps 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 maxNumSteps and predicted objective value from the autoregression model.
maxStepCount
string (int64 format)
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.
minStepCount
string (int64 format)
Minimum number of steps for a trial to complete. Trials which do not have a measurement with stepCount > minStepCount 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, minStepCount is set to be one-tenth of the maxStepCount. When useElapsedDuration is true, this field is set to the minimum elapsed seconds.
minMeasurementCount
string (int64 format)
The minimal number of measurements in a Trial. Early-stopping checks will not trigger if less than minMeasurementCount+1 completed trials or pending trials with less than minMeasurementCount measurements. If not defined, the default value is 5.
learningRateParameterName
string
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 learningRate is used to estimate the objective value of the ongoing trial.
useElapsedDuration
boolean
This bool determines whether or not the rule is applied based on elapsed_secs or steps. If useElapsedDuration==false, the early stopping decision is made according to the predicted objective values according to the target steps. If useElapsedDuration==true, elapsed_secs is used instead of steps. Also, in this case, the parameters maxNumSteps and minNumSteps are overloaded to contain max_elapsed_seconds and min_elapsed_seconds.
updateAllStoppedTrials
boolean
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 finalMeasurement
. 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.
JSON representation |
---|
{ "maxStepCount": string, "minStepCount": string, "minMeasurementCount": string, "learningRateParameterName": string, "useElapsedDuration": boolean, "updateAllStoppedTrials": boolean } |
MetricSpec
Represents a metric to optimize.
metricId
string
Required. The id of the metric. Must not contain whitespaces and must be unique amongst all MetricSpecs.
goal
enum (GoalType
)
Required. The optimization goal of the metric.
safetyConfig
object (SafetyMetricConfig
)
Used for safe search. In the case, the metric will be a safety metric. You must provide a separate metric for objective metric.
JSON representation |
---|
{ "metricId": string, "goal": enum ( |
GoalType
The available types of optimization goals.
Enums | |
---|---|
GOAL_TYPE_UNSPECIFIED |
Goal type will default to maximize. |
MAXIMIZE |
Maximize the goal metric. |
MINIMIZE |
Minimize the goal metric. |
SafetyMetricConfig
Used in safe optimization to specify threshold levels and risk tolerance.
safetyThreshold
number
Safety threshold (boundary value between safe and unsafe). NOTE that if you leave SafetyMetricConfig unset, a default value of 0 will be used.
desiredMinSafeTrialsFraction
number
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.
JSON representation |
---|
{ "safetyThreshold": number, "desiredMinSafeTrialsFraction": number } |
ParameterSpec
Represents a single parameter to optimize.
parameterId
string
Required. The id of the parameter. Must not contain whitespaces and must be unique amongst all ParameterSpecs.
scaleType
enum (ScaleType
)
How the parameter should be scaled. Leave unset for CATEGORICAL
parameters.
conditionalParameterSpecs[]
object (ConditionalParameterSpec
)
A conditional parameter node is active if the parameter's value matches the conditional node's parent_value_condition.
If two items in conditionalParameterSpecs have the same name, they must have disjoint parent_value_condition.
parameter_value_spec
Union type
parameter_value_spec
can be only one of the following:doubleValueSpec
object (DoubleValueSpec
)
The value spec for a 'DOUBLE' parameter.
integerValueSpec
object (IntegerValueSpec
)
The value spec for an 'INTEGER' parameter.
categoricalValueSpec
object (CategoricalValueSpec
)
The value spec for a 'CATEGORICAL' parameter.
discreteValueSpec
object (DiscreteValueSpec
)
The value spec for a 'DISCRETE' parameter.
JSON representation |
---|
{ "parameterId": string, "scaleType": enum ( |
DoubleValueSpec
value specification for a parameter in DOUBLE
type.
minValue
number
Required. Inclusive minimum value of the parameter.
maxValue
number
Required. Inclusive maximum value of the parameter.
defaultValue
number
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.
JSON representation |
---|
{ "minValue": number, "maxValue": number, "defaultValue": number } |
IntegerValueSpec
value specification for a parameter in INTEGER
type.
minValue
string (int64 format)
Required. Inclusive minimum value of the parameter.
maxValue
string (int64 format)
Required. Inclusive maximum value of the parameter.
defaultValue
string (int64 format)
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.
JSON representation |
---|
{ "minValue": string, "maxValue": string, "defaultValue": string } |
CategoricalValueSpec
value specification for a parameter in CATEGORICAL
type.
values[]
string
Required. The list of possible categories.
defaultValue
string
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.
JSON representation |
---|
{ "values": [ string ], "defaultValue": string } |
DiscreteValueSpec
value specification for a parameter in DISCRETE
type.
values[]
number
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.
defaultValue
number
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.
JSON representation |
---|
{ "values": [ number ], "defaultValue": number } |
ScaleType
The type of scaling that should be applied to this parameter.
Enums | |
---|---|
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. |
ConditionalParameterSpec
Represents a parameter spec with condition from its parent parameter.
parameterSpec
object (ParameterSpec
)
Required. The spec for a conditional parameter.
parent_value_condition
Union type
parent_value_condition
can be only one of the following:parentDiscreteValues
object (DiscreteValueCondition
)
The spec for matching values from a parent parameter of DISCRETE
type.
parentIntValues
object (IntValueCondition
)
The spec for matching values from a parent parameter of INTEGER
type.
parentCategoricalValues
object (CategoricalValueCondition
)
The spec for matching values from a parent parameter of CATEGORICAL
type.
JSON representation |
---|
{ "parameterSpec": { object ( |
DiscreteValueCondition
Represents the spec to match discrete values from parent parameter.
values[]
number
Required. Matches values of the parent parameter of 'DISCRETE' type. All values must exist in discreteValueSpec
of parent parameter.
The Epsilon of the value matching is 1e-10.
JSON representation |
---|
{ "values": [ number ] } |
IntValueCondition
Represents the spec to match integer values from parent parameter.
values[]
string (int64 format)
Required. Matches values of the parent parameter of 'INTEGER' type. All values must lie in integerValueSpec
of parent parameter.
JSON representation |
---|
{ "values": [ string ] } |
CategoricalValueCondition
Represents the spec to match categorical values from parent parameter.
values[]
string
Required. Matches values of the parent parameter of 'CATEGORICAL' type. All values must exist in categoricalValueSpec
of parent parameter.
JSON representation |
---|
{ "values": [ string ] } |
Algorithm
The available search algorithms for the Study.
Enums | |
---|---|
ALGORITHM_UNSPECIFIED |
The default algorithm used by Vertex AI for hyperparameter tuning and Vertex AI 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. |
ObservationNoise
Describes the noise level of the repeated observations.
"Noisy" means that the repeated observations with the same Trial parameters may lead to different metric evaluations.
Enums | |
---|---|
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. |
MeasurementSelectionType
This indicates which measurement to use if/when the service automatically selects the final measurement from previously reported intermediate measurements. Choose this based on two considerations: A) Do you expect your measurements to monotonically improve? If so, choose LAST_MEASUREMENT. On the other hand, if you're in a situation where your system can "over-train" and you expect the performance to get better for a while but then start declining, choose BEST_MEASUREMENT. B) Are your measurements significantly noisy and/or irreproducible? If so, BEST_MEASUREMENT will tend to be over-optimistic, and it may be better to choose LAST_MEASUREMENT. If both or neither of (A) and (B) apply, it doesn't matter which selection type is chosen.
Enums | |
---|---|
MEASUREMENT_SELECTION_TYPE_UNSPECIFIED |
Will be treated as LAST_MEASUREMENT. |
LAST_MEASUREMENT |
Use the last measurement reported. |
BEST_MEASUREMENT |
Use the best measurement reported. |
StudyStoppingConfig
The configuration (stopping conditions) for automated stopping of a Study. Conditions include trial budgets, time budgets, and convergence detection.
shouldStopAsap
boolean
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).
minimumRuntimeConstraint
object (StudyTimeConstraint
)
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. minimumRuntimeConstraint, minNumTrials) will prevent other stopping rules from being evaluated until they are met. For example, setting minNumTrials=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 shouldStopAsap = 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.
maximumRuntimeConstraint
object (StudyTimeConstraint
)
If the specified time or duration has passed, stop the study.
minNumTrials
integer
If there are fewer than this many COMPLETED trials, do not stop the study.
maxNumTrials
integer
If there are more than this many trials, stop the study.
maxNumTrialsNoProgress
integer
If the objective value has not improved for this many consecutive trials, stop the study.
WARNING: Effective only for single-objective studies.
maxDurationNoProgress
string (Duration
format)
If the objective value has not improved for this much time, stop the study.
WARNING: Effective only for single-objective studies.
A duration in seconds with up to nine fractional digits, ending with 's
'. Example: "3.5s"
.
JSON representation |
---|
{ "shouldStopAsap": boolean, "minimumRuntimeConstraint": { object ( |
StudyTimeConstraint
time-based Constraint for Study
constraint
Union type
constraint
can be only one of the following:maxDuration
string (Duration
format)
Counts the wallclock time passed since the creation of this Study.
A duration in seconds with up to nine fractional digits, ending with 's
'. Example: "3.5s"
.
endTime
string (Timestamp
format)
Compares the wallclock time to this time. Must use UTC timezone.
Uses RFC 3339, where generated output will always be Z-normalized and uses 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: "2014-10-02T15:01:23Z"
, "2014-10-02T15:01:23.045123456Z"
or "2014-10-02T15:01:23+05:30"
.
JSON representation |
---|
{ // constraint "maxDuration": string, "endTime": string // Union type } |