/
hyper_parameter_tuning_job.go
158 lines (149 loc) · 9.13 KB
/
hyper_parameter_tuning_job.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License"). You may
// not use this file except in compliance with the License. A copy of the
// License is located at
//
// http://aws.amazon.com/apache2.0/
//
// or in the "license" file accompanying this file. This file is distributed
// on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
// express or implied. See the License for the specific language governing
// permissions and limitations under the License.
// Code generated by ack-generate. DO NOT EDIT.
package v1alpha1
import (
ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// HyperParameterTuningJobSpec defines the desired state of HyperParameterTuningJob.
type HyperParameterTuningJobSpec struct {
// Configures SageMaker Automatic model tuning (AMT) to automatically find optimal
// parameters for the following fields:
//
// - ParameterRanges (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html#sagemaker-Type-HyperParameterTuningJobConfig-ParameterRanges):
// The names and ranges of parameters that a hyperparameter tuning job can
// optimize.
//
// - ResourceLimits (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceLimits.html):
// The maximum resources that can be used for a training job. These resources
// include the maximum number of training jobs, the maximum runtime of a
// tuning job, and the maximum number of training jobs to run at the same
// time.
//
// - TrainingJobEarlyStoppingType (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html#sagemaker-Type-HyperParameterTuningJobConfig-TrainingJobEarlyStoppingType):
// A flag that specifies whether or not to use early stopping for training
// jobs launched by a hyperparameter tuning job.
//
// - RetryStrategy (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html#sagemaker-Type-HyperParameterTrainingJobDefinition-RetryStrategy):
// The number of times to retry a training job.
//
// - Strategy (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html):
// Specifies how hyperparameter tuning chooses the combinations of hyperparameter
// values to use for the training jobs that it launches.
//
// - ConvergenceDetected (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ConvergenceDetected.html):
// A flag to indicate that Automatic model tuning (AMT) has detected model
// convergence.
Autotune *Autotune `json:"autotune,omitempty"`
// The HyperParameterTuningJobConfig (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobConfig.html)
// object that describes the tuning job, including the search strategy, the
// objective metric used to evaluate training jobs, ranges of parameters to
// search, and resource limits for the tuning job. For more information, see
// How Hyperparameter Tuning Works (https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html).
// +kubebuilder:validation:Required
HyperParameterTuningJobConfig *HyperParameterTuningJobConfig `json:"hyperParameterTuningJobConfig"`
// The name of the tuning job. This name is the prefix for the names of all
// training jobs that this tuning job launches. The name must be unique within
// the same Amazon Web Services account and Amazon Web Services Region. The
// name must have 1 to 32 characters. Valid characters are a-z, A-Z, 0-9, and
// : + = @ _ % - (hyphen). The name is not case sensitive.
// +kubebuilder:validation:Required
HyperParameterTuningJobName *string `json:"hyperParameterTuningJobName"`
// An array of key-value pairs. You can use tags to categorize your Amazon Web
// Services resources in different ways, for example, by purpose, owner, or
// environment. For more information, see Tagging Amazon Web Services Resources
// (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html).
//
// Tags that you specify for the tuning job are also added to all training jobs
// that the tuning job launches.
Tags []*Tag `json:"tags,omitempty"`
// The HyperParameterTrainingJobDefinition (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html)
// object that describes the training jobs that this tuning job launches, including
// static hyperparameters, input data configuration, output data configuration,
// resource configuration, and stopping condition.
TrainingJobDefinition *HyperParameterTrainingJobDefinition `json:"trainingJobDefinition,omitempty"`
// A list of the HyperParameterTrainingJobDefinition (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTrainingJobDefinition.html)
// objects launched for this tuning job.
TrainingJobDefinitions []*HyperParameterTrainingJobDefinition `json:"trainingJobDefinitions,omitempty"`
// Specifies the configuration for starting the hyperparameter tuning job using
// one or more previous tuning jobs as a starting point. The results of previous
// tuning jobs are used to inform which combinations of hyperparameters to search
// over in the new tuning job.
//
// All training jobs launched by the new hyperparameter tuning job are evaluated
// by using the objective metric. If you specify IDENTICAL_DATA_AND_ALGORITHM
// as the WarmStartType value for the warm start configuration, the training
// job that performs the best in the new tuning job is compared to the best
// training jobs from the parent tuning jobs. From these, the training job that
// performs the best as measured by the objective metric is returned as the
// overall best training job.
//
// All training jobs launched by parent hyperparameter tuning jobs and the new
// hyperparameter tuning jobs count against the limit of training jobs for the
// tuning job.
WarmStartConfig *HyperParameterTuningJobWarmStartConfig `json:"warmStartConfig,omitempty"`
}
// HyperParameterTuningJobStatus defines the observed state of HyperParameterTuningJob
type HyperParameterTuningJobStatus struct {
// All CRs managed by ACK have a common `Status.ACKResourceMetadata` member
// that is used to contain resource sync state, account ownership,
// constructed ARN for the resource
// +kubebuilder:validation:Optional
ACKResourceMetadata *ackv1alpha1.ResourceMetadata `json:"ackResourceMetadata"`
// All CRS managed by ACK have a common `Status.Conditions` member that
// contains a collection of `ackv1alpha1.Condition` objects that describe
// the various terminal states of the CR and its backend AWS service API
// resource
// +kubebuilder:validation:Optional
Conditions []*ackv1alpha1.Condition `json:"conditions"`
// A TrainingJobSummary (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingJobSummary.html)
// object that describes the training job that completed with the best current
// HyperParameterTuningJobObjective (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HyperParameterTuningJobObjective.html).
// +kubebuilder:validation:Optional
BestTrainingJob *HyperParameterTrainingJobSummary `json:"bestTrainingJob,omitempty"`
// If the tuning job failed, the reason it failed.
// +kubebuilder:validation:Optional
FailureReason *string `json:"failureReason,omitempty"`
// The status of the tuning job.
// +kubebuilder:validation:Optional
HyperParameterTuningJobStatus *string `json:"hyperParameterTuningJobStatus,omitempty"`
// If the hyperparameter tuning job is an warm start tuning job with a WarmStartType
// of IDENTICAL_DATA_AND_ALGORITHM, this is the TrainingJobSummary (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TrainingJobSummary.html)
// for the training job with the best objective metric value of all training
// jobs launched by this tuning job and all parent jobs specified for the warm
// start tuning job.
// +kubebuilder:validation:Optional
OverallBestTrainingJob *HyperParameterTrainingJobSummary `json:"overallBestTrainingJob,omitempty"`
}
// HyperParameterTuningJob is the Schema for the HyperParameterTuningJobs API
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:printcolumn:name="FAILURE-REASON",type=string,priority=1,JSONPath=`.status.failureReason`
// +kubebuilder:printcolumn:name="STATUS",type=string,priority=0,JSONPath=`.status.hyperParameterTuningJobStatus`
type HyperParameterTuningJob struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec HyperParameterTuningJobSpec `json:"spec,omitempty"`
Status HyperParameterTuningJobStatus `json:"status,omitempty"`
}
// HyperParameterTuningJobList contains a list of HyperParameterTuningJob
// +kubebuilder:object:root=true
type HyperParameterTuningJobList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []HyperParameterTuningJob `json:"items"`
}
func init() {
SchemeBuilder.Register(&HyperParameterTuningJob{}, &HyperParameterTuningJobList{})
}