amazonka-sagemaker-2.0: gen/Amazonka/SageMaker/Types/HyperParameterTuningJobWarmStartConfig.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Amazonka.SageMaker.Types.HyperParameterTuningJobWarmStartConfig
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SageMaker.Types.HyperParameterTuningJobWarmStartConfig where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.SageMaker.Types.HyperParameterTuningJobWarmStartType
import Amazonka.SageMaker.Types.ParentHyperParameterTuningJob
-- | Specifies the configuration for a hyperparameter tuning job that uses
-- one or more previous hyperparameter 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, and the training job that
-- performs the best 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.
--
-- /See:/ 'newHyperParameterTuningJobWarmStartConfig' smart constructor.
data HyperParameterTuningJobWarmStartConfig = HyperParameterTuningJobWarmStartConfig'
{ -- | An array of hyperparameter tuning jobs that are used as the starting
-- point for the new hyperparameter tuning job. For more information about
-- warm starting a hyperparameter tuning job, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-warm-start.html Using a Previous Hyperparameter Tuning Job as a Starting Point>.
--
-- Hyperparameter tuning jobs created before October 1, 2018 cannot be used
-- as parent jobs for warm start tuning jobs.
parentHyperParameterTuningJobs :: Prelude.NonEmpty ParentHyperParameterTuningJob,
-- | Specifies one of the following:
--
-- [IDENTICAL_DATA_AND_ALGORITHM]
-- The new hyperparameter tuning job uses the same input data and
-- training image as the parent tuning jobs. You can change the
-- hyperparameter ranges to search and the maximum number of training
-- jobs that the hyperparameter tuning job launches. You cannot use a
-- new version of the training algorithm, unless the changes in the new
-- version do not affect the algorithm itself. For example, changes
-- that improve logging or adding support for a different data format
-- are allowed. You can also change hyperparameters from tunable to
-- static, and from static to tunable, but the total number of static
-- plus tunable hyperparameters must remain the same as it is in all
-- parent jobs. The objective metric for the new tuning job must be the
-- same as for all parent jobs.
--
-- [TRANSFER_LEARNING]
-- The new hyperparameter tuning job can include input data,
-- hyperparameter ranges, maximum number of concurrent training jobs,
-- and maximum number of training jobs that are different than those of
-- its parent hyperparameter tuning jobs. The training image can also
-- be a different version from the version used in the parent
-- hyperparameter tuning job. You can also change hyperparameters from
-- tunable to static, and from static to tunable, but the total number
-- of static plus tunable hyperparameters must remain the same as it is
-- in all parent jobs. The objective metric for the new tuning job must
-- be the same as for all parent jobs.
warmStartType :: HyperParameterTuningJobWarmStartType
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'HyperParameterTuningJobWarmStartConfig' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'parentHyperParameterTuningJobs', 'hyperParameterTuningJobWarmStartConfig_parentHyperParameterTuningJobs' - An array of hyperparameter tuning jobs that are used as the starting
-- point for the new hyperparameter tuning job. For more information about
-- warm starting a hyperparameter tuning job, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-warm-start.html Using a Previous Hyperparameter Tuning Job as a Starting Point>.
--
-- Hyperparameter tuning jobs created before October 1, 2018 cannot be used
-- as parent jobs for warm start tuning jobs.
--
-- 'warmStartType', 'hyperParameterTuningJobWarmStartConfig_warmStartType' - Specifies one of the following:
--
-- [IDENTICAL_DATA_AND_ALGORITHM]
-- The new hyperparameter tuning job uses the same input data and
-- training image as the parent tuning jobs. You can change the
-- hyperparameter ranges to search and the maximum number of training
-- jobs that the hyperparameter tuning job launches. You cannot use a
-- new version of the training algorithm, unless the changes in the new
-- version do not affect the algorithm itself. For example, changes
-- that improve logging or adding support for a different data format
-- are allowed. You can also change hyperparameters from tunable to
-- static, and from static to tunable, but the total number of static
-- plus tunable hyperparameters must remain the same as it is in all
-- parent jobs. The objective metric for the new tuning job must be the
-- same as for all parent jobs.
--
-- [TRANSFER_LEARNING]
-- The new hyperparameter tuning job can include input data,
-- hyperparameter ranges, maximum number of concurrent training jobs,
-- and maximum number of training jobs that are different than those of
-- its parent hyperparameter tuning jobs. The training image can also
-- be a different version from the version used in the parent
-- hyperparameter tuning job. You can also change hyperparameters from
-- tunable to static, and from static to tunable, but the total number
-- of static plus tunable hyperparameters must remain the same as it is
-- in all parent jobs. The objective metric for the new tuning job must
-- be the same as for all parent jobs.
newHyperParameterTuningJobWarmStartConfig ::
-- | 'parentHyperParameterTuningJobs'
Prelude.NonEmpty ParentHyperParameterTuningJob ->
-- | 'warmStartType'
HyperParameterTuningJobWarmStartType ->
HyperParameterTuningJobWarmStartConfig
newHyperParameterTuningJobWarmStartConfig
pParentHyperParameterTuningJobs_
pWarmStartType_ =
HyperParameterTuningJobWarmStartConfig'
{ parentHyperParameterTuningJobs =
Lens.coerced
Lens.# pParentHyperParameterTuningJobs_,
warmStartType = pWarmStartType_
}
-- | An array of hyperparameter tuning jobs that are used as the starting
-- point for the new hyperparameter tuning job. For more information about
-- warm starting a hyperparameter tuning job, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-warm-start.html Using a Previous Hyperparameter Tuning Job as a Starting Point>.
--
-- Hyperparameter tuning jobs created before October 1, 2018 cannot be used
-- as parent jobs for warm start tuning jobs.
hyperParameterTuningJobWarmStartConfig_parentHyperParameterTuningJobs :: Lens.Lens' HyperParameterTuningJobWarmStartConfig (Prelude.NonEmpty ParentHyperParameterTuningJob)
hyperParameterTuningJobWarmStartConfig_parentHyperParameterTuningJobs = Lens.lens (\HyperParameterTuningJobWarmStartConfig' {parentHyperParameterTuningJobs} -> parentHyperParameterTuningJobs) (\s@HyperParameterTuningJobWarmStartConfig' {} a -> s {parentHyperParameterTuningJobs = a} :: HyperParameterTuningJobWarmStartConfig) Prelude.. Lens.coerced
-- | Specifies one of the following:
--
-- [IDENTICAL_DATA_AND_ALGORITHM]
-- The new hyperparameter tuning job uses the same input data and
-- training image as the parent tuning jobs. You can change the
-- hyperparameter ranges to search and the maximum number of training
-- jobs that the hyperparameter tuning job launches. You cannot use a
-- new version of the training algorithm, unless the changes in the new
-- version do not affect the algorithm itself. For example, changes
-- that improve logging or adding support for a different data format
-- are allowed. You can also change hyperparameters from tunable to
-- static, and from static to tunable, but the total number of static
-- plus tunable hyperparameters must remain the same as it is in all
-- parent jobs. The objective metric for the new tuning job must be the
-- same as for all parent jobs.
--
-- [TRANSFER_LEARNING]
-- The new hyperparameter tuning job can include input data,
-- hyperparameter ranges, maximum number of concurrent training jobs,
-- and maximum number of training jobs that are different than those of
-- its parent hyperparameter tuning jobs. The training image can also
-- be a different version from the version used in the parent
-- hyperparameter tuning job. You can also change hyperparameters from
-- tunable to static, and from static to tunable, but the total number
-- of static plus tunable hyperparameters must remain the same as it is
-- in all parent jobs. The objective metric for the new tuning job must
-- be the same as for all parent jobs.
hyperParameterTuningJobWarmStartConfig_warmStartType :: Lens.Lens' HyperParameterTuningJobWarmStartConfig HyperParameterTuningJobWarmStartType
hyperParameterTuningJobWarmStartConfig_warmStartType = Lens.lens (\HyperParameterTuningJobWarmStartConfig' {warmStartType} -> warmStartType) (\s@HyperParameterTuningJobWarmStartConfig' {} a -> s {warmStartType = a} :: HyperParameterTuningJobWarmStartConfig)
instance
Data.FromJSON
HyperParameterTuningJobWarmStartConfig
where
parseJSON =
Data.withObject
"HyperParameterTuningJobWarmStartConfig"
( \x ->
HyperParameterTuningJobWarmStartConfig'
Prelude.<$> (x Data..: "ParentHyperParameterTuningJobs")
Prelude.<*> (x Data..: "WarmStartType")
)
instance
Prelude.Hashable
HyperParameterTuningJobWarmStartConfig
where
hashWithSalt
_salt
HyperParameterTuningJobWarmStartConfig' {..} =
_salt
`Prelude.hashWithSalt` parentHyperParameterTuningJobs
`Prelude.hashWithSalt` warmStartType
instance
Prelude.NFData
HyperParameterTuningJobWarmStartConfig
where
rnf HyperParameterTuningJobWarmStartConfig' {..} =
Prelude.rnf parentHyperParameterTuningJobs
`Prelude.seq` Prelude.rnf warmStartType
instance
Data.ToJSON
HyperParameterTuningJobWarmStartConfig
where
toJSON HyperParameterTuningJobWarmStartConfig' {..} =
Data.object
( Prelude.catMaybes
[ Prelude.Just
( "ParentHyperParameterTuningJobs"
Data..= parentHyperParameterTuningJobs
),
Prelude.Just
("WarmStartType" Data..= warmStartType)
]
)