amazonka-sagemaker-2.0: gen/Amazonka/SageMaker/Types/HyperParameterTuningJobConfig.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.HyperParameterTuningJobConfig
-- 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.HyperParameterTuningJobConfig 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.HyperParameterTuningJobObjective
import Amazonka.SageMaker.Types.HyperParameterTuningJobStrategyConfig
import Amazonka.SageMaker.Types.HyperParameterTuningJobStrategyType
import Amazonka.SageMaker.Types.ParameterRanges
import Amazonka.SageMaker.Types.ResourceLimits
import Amazonka.SageMaker.Types.TrainingJobEarlyStoppingType
import Amazonka.SageMaker.Types.TuningJobCompletionCriteria
-- | Configures a hyperparameter tuning job.
--
-- /See:/ 'newHyperParameterTuningJobConfig' smart constructor.
data HyperParameterTuningJobConfig = HyperParameterTuningJobConfig'
{ -- | The HyperParameterTuningJobObjective specifies the objective metric used
-- to evaluate the performance of training jobs launched by this tuning
-- job.
hyperParameterTuningJobObjective :: Prelude.Maybe HyperParameterTuningJobObjective,
-- | The ParameterRanges object that specifies the ranges of hyperparameters
-- that this tuning job searches over to find the optimal configuration for
-- the highest model performance against your chosen objective metric.
parameterRanges :: Prelude.Maybe ParameterRanges,
-- | A value used to initialize a pseudo-random number generator. Setting a
-- random seed and using the same seed later for the same tuning job will
-- allow hyperparameter optimization to find more a consistent
-- hyperparameter configuration between the two runs.
randomSeed :: Prelude.Maybe Prelude.Natural,
-- | The configuration for the @Hyperband@ optimization strategy. This
-- parameter should be provided only if @Hyperband@ is selected as the
-- strategy for @HyperParameterTuningJobConfig@.
strategyConfig :: Prelude.Maybe HyperParameterTuningJobStrategyConfig,
-- | Specifies whether to use early stopping for training jobs launched by
-- the hyperparameter tuning job. Because the @Hyperband@ strategy has its
-- own advanced internal early stopping mechanism,
-- @TrainingJobEarlyStoppingType@ must be @OFF@ to use @Hyperband@. This
-- parameter can take on one of the following values (the default value is
-- @OFF@):
--
-- [OFF]
-- Training jobs launched by the hyperparameter tuning job do not use
-- early stopping.
--
-- [AUTO]
-- SageMaker stops training jobs launched by the hyperparameter tuning
-- job when they are unlikely to perform better than previously
-- completed training jobs. For more information, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-early-stopping.html Stop Training Jobs Early>.
trainingJobEarlyStoppingType :: Prelude.Maybe TrainingJobEarlyStoppingType,
-- | The tuning job\'s completion criteria.
tuningJobCompletionCriteria :: Prelude.Maybe TuningJobCompletionCriteria,
-- | Specifies how hyperparameter tuning chooses the combinations of
-- hyperparameter values to use for the training job it launches. For
-- information about search strategies, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html How Hyperparameter Tuning Works>.
strategy :: HyperParameterTuningJobStrategyType,
-- | The ResourceLimits object that specifies the maximum number of training
-- and parallel training jobs that can be used for this hyperparameter
-- tuning job.
resourceLimits :: ResourceLimits
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'HyperParameterTuningJobConfig' 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:
--
-- 'hyperParameterTuningJobObjective', 'hyperParameterTuningJobConfig_hyperParameterTuningJobObjective' - The HyperParameterTuningJobObjective specifies the objective metric used
-- to evaluate the performance of training jobs launched by this tuning
-- job.
--
-- 'parameterRanges', 'hyperParameterTuningJobConfig_parameterRanges' - The ParameterRanges object that specifies the ranges of hyperparameters
-- that this tuning job searches over to find the optimal configuration for
-- the highest model performance against your chosen objective metric.
--
-- 'randomSeed', 'hyperParameterTuningJobConfig_randomSeed' - A value used to initialize a pseudo-random number generator. Setting a
-- random seed and using the same seed later for the same tuning job will
-- allow hyperparameter optimization to find more a consistent
-- hyperparameter configuration between the two runs.
--
-- 'strategyConfig', 'hyperParameterTuningJobConfig_strategyConfig' - The configuration for the @Hyperband@ optimization strategy. This
-- parameter should be provided only if @Hyperband@ is selected as the
-- strategy for @HyperParameterTuningJobConfig@.
--
-- 'trainingJobEarlyStoppingType', 'hyperParameterTuningJobConfig_trainingJobEarlyStoppingType' - Specifies whether to use early stopping for training jobs launched by
-- the hyperparameter tuning job. Because the @Hyperband@ strategy has its
-- own advanced internal early stopping mechanism,
-- @TrainingJobEarlyStoppingType@ must be @OFF@ to use @Hyperband@. This
-- parameter can take on one of the following values (the default value is
-- @OFF@):
--
-- [OFF]
-- Training jobs launched by the hyperparameter tuning job do not use
-- early stopping.
--
-- [AUTO]
-- SageMaker stops training jobs launched by the hyperparameter tuning
-- job when they are unlikely to perform better than previously
-- completed training jobs. For more information, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-early-stopping.html Stop Training Jobs Early>.
--
-- 'tuningJobCompletionCriteria', 'hyperParameterTuningJobConfig_tuningJobCompletionCriteria' - The tuning job\'s completion criteria.
--
-- 'strategy', 'hyperParameterTuningJobConfig_strategy' - Specifies how hyperparameter tuning chooses the combinations of
-- hyperparameter values to use for the training job it launches. For
-- information about search strategies, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html How Hyperparameter Tuning Works>.
--
-- 'resourceLimits', 'hyperParameterTuningJobConfig_resourceLimits' - The ResourceLimits object that specifies the maximum number of training
-- and parallel training jobs that can be used for this hyperparameter
-- tuning job.
newHyperParameterTuningJobConfig ::
-- | 'strategy'
HyperParameterTuningJobStrategyType ->
-- | 'resourceLimits'
ResourceLimits ->
HyperParameterTuningJobConfig
newHyperParameterTuningJobConfig
pStrategy_
pResourceLimits_ =
HyperParameterTuningJobConfig'
{ hyperParameterTuningJobObjective =
Prelude.Nothing,
parameterRanges = Prelude.Nothing,
randomSeed = Prelude.Nothing,
strategyConfig = Prelude.Nothing,
trainingJobEarlyStoppingType =
Prelude.Nothing,
tuningJobCompletionCriteria =
Prelude.Nothing,
strategy = pStrategy_,
resourceLimits = pResourceLimits_
}
-- | The HyperParameterTuningJobObjective specifies the objective metric used
-- to evaluate the performance of training jobs launched by this tuning
-- job.
hyperParameterTuningJobConfig_hyperParameterTuningJobObjective :: Lens.Lens' HyperParameterTuningJobConfig (Prelude.Maybe HyperParameterTuningJobObjective)
hyperParameterTuningJobConfig_hyperParameterTuningJobObjective = Lens.lens (\HyperParameterTuningJobConfig' {hyperParameterTuningJobObjective} -> hyperParameterTuningJobObjective) (\s@HyperParameterTuningJobConfig' {} a -> s {hyperParameterTuningJobObjective = a} :: HyperParameterTuningJobConfig)
-- | The ParameterRanges object that specifies the ranges of hyperparameters
-- that this tuning job searches over to find the optimal configuration for
-- the highest model performance against your chosen objective metric.
hyperParameterTuningJobConfig_parameterRanges :: Lens.Lens' HyperParameterTuningJobConfig (Prelude.Maybe ParameterRanges)
hyperParameterTuningJobConfig_parameterRanges = Lens.lens (\HyperParameterTuningJobConfig' {parameterRanges} -> parameterRanges) (\s@HyperParameterTuningJobConfig' {} a -> s {parameterRanges = a} :: HyperParameterTuningJobConfig)
-- | A value used to initialize a pseudo-random number generator. Setting a
-- random seed and using the same seed later for the same tuning job will
-- allow hyperparameter optimization to find more a consistent
-- hyperparameter configuration between the two runs.
hyperParameterTuningJobConfig_randomSeed :: Lens.Lens' HyperParameterTuningJobConfig (Prelude.Maybe Prelude.Natural)
hyperParameterTuningJobConfig_randomSeed = Lens.lens (\HyperParameterTuningJobConfig' {randomSeed} -> randomSeed) (\s@HyperParameterTuningJobConfig' {} a -> s {randomSeed = a} :: HyperParameterTuningJobConfig)
-- | The configuration for the @Hyperband@ optimization strategy. This
-- parameter should be provided only if @Hyperband@ is selected as the
-- strategy for @HyperParameterTuningJobConfig@.
hyperParameterTuningJobConfig_strategyConfig :: Lens.Lens' HyperParameterTuningJobConfig (Prelude.Maybe HyperParameterTuningJobStrategyConfig)
hyperParameterTuningJobConfig_strategyConfig = Lens.lens (\HyperParameterTuningJobConfig' {strategyConfig} -> strategyConfig) (\s@HyperParameterTuningJobConfig' {} a -> s {strategyConfig = a} :: HyperParameterTuningJobConfig)
-- | Specifies whether to use early stopping for training jobs launched by
-- the hyperparameter tuning job. Because the @Hyperband@ strategy has its
-- own advanced internal early stopping mechanism,
-- @TrainingJobEarlyStoppingType@ must be @OFF@ to use @Hyperband@. This
-- parameter can take on one of the following values (the default value is
-- @OFF@):
--
-- [OFF]
-- Training jobs launched by the hyperparameter tuning job do not use
-- early stopping.
--
-- [AUTO]
-- SageMaker stops training jobs launched by the hyperparameter tuning
-- job when they are unlikely to perform better than previously
-- completed training jobs. For more information, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-early-stopping.html Stop Training Jobs Early>.
hyperParameterTuningJobConfig_trainingJobEarlyStoppingType :: Lens.Lens' HyperParameterTuningJobConfig (Prelude.Maybe TrainingJobEarlyStoppingType)
hyperParameterTuningJobConfig_trainingJobEarlyStoppingType = Lens.lens (\HyperParameterTuningJobConfig' {trainingJobEarlyStoppingType} -> trainingJobEarlyStoppingType) (\s@HyperParameterTuningJobConfig' {} a -> s {trainingJobEarlyStoppingType = a} :: HyperParameterTuningJobConfig)
-- | The tuning job\'s completion criteria.
hyperParameterTuningJobConfig_tuningJobCompletionCriteria :: Lens.Lens' HyperParameterTuningJobConfig (Prelude.Maybe TuningJobCompletionCriteria)
hyperParameterTuningJobConfig_tuningJobCompletionCriteria = Lens.lens (\HyperParameterTuningJobConfig' {tuningJobCompletionCriteria} -> tuningJobCompletionCriteria) (\s@HyperParameterTuningJobConfig' {} a -> s {tuningJobCompletionCriteria = a} :: HyperParameterTuningJobConfig)
-- | Specifies how hyperparameter tuning chooses the combinations of
-- hyperparameter values to use for the training job it launches. For
-- information about search strategies, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/automatic-model-tuning-how-it-works.html How Hyperparameter Tuning Works>.
hyperParameterTuningJobConfig_strategy :: Lens.Lens' HyperParameterTuningJobConfig HyperParameterTuningJobStrategyType
hyperParameterTuningJobConfig_strategy = Lens.lens (\HyperParameterTuningJobConfig' {strategy} -> strategy) (\s@HyperParameterTuningJobConfig' {} a -> s {strategy = a} :: HyperParameterTuningJobConfig)
-- | The ResourceLimits object that specifies the maximum number of training
-- and parallel training jobs that can be used for this hyperparameter
-- tuning job.
hyperParameterTuningJobConfig_resourceLimits :: Lens.Lens' HyperParameterTuningJobConfig ResourceLimits
hyperParameterTuningJobConfig_resourceLimits = Lens.lens (\HyperParameterTuningJobConfig' {resourceLimits} -> resourceLimits) (\s@HyperParameterTuningJobConfig' {} a -> s {resourceLimits = a} :: HyperParameterTuningJobConfig)
instance Data.FromJSON HyperParameterTuningJobConfig where
parseJSON =
Data.withObject
"HyperParameterTuningJobConfig"
( \x ->
HyperParameterTuningJobConfig'
Prelude.<$> (x Data..:? "HyperParameterTuningJobObjective")
Prelude.<*> (x Data..:? "ParameterRanges")
Prelude.<*> (x Data..:? "RandomSeed")
Prelude.<*> (x Data..:? "StrategyConfig")
Prelude.<*> (x Data..:? "TrainingJobEarlyStoppingType")
Prelude.<*> (x Data..:? "TuningJobCompletionCriteria")
Prelude.<*> (x Data..: "Strategy")
Prelude.<*> (x Data..: "ResourceLimits")
)
instance
Prelude.Hashable
HyperParameterTuningJobConfig
where
hashWithSalt _salt HyperParameterTuningJobConfig' {..} =
_salt
`Prelude.hashWithSalt` hyperParameterTuningJobObjective
`Prelude.hashWithSalt` parameterRanges
`Prelude.hashWithSalt` randomSeed
`Prelude.hashWithSalt` strategyConfig
`Prelude.hashWithSalt` trainingJobEarlyStoppingType
`Prelude.hashWithSalt` tuningJobCompletionCriteria
`Prelude.hashWithSalt` strategy
`Prelude.hashWithSalt` resourceLimits
instance Prelude.NFData HyperParameterTuningJobConfig where
rnf HyperParameterTuningJobConfig' {..} =
Prelude.rnf hyperParameterTuningJobObjective
`Prelude.seq` Prelude.rnf parameterRanges
`Prelude.seq` Prelude.rnf randomSeed
`Prelude.seq` Prelude.rnf strategyConfig
`Prelude.seq` Prelude.rnf trainingJobEarlyStoppingType
`Prelude.seq` Prelude.rnf tuningJobCompletionCriteria
`Prelude.seq` Prelude.rnf strategy
`Prelude.seq` Prelude.rnf resourceLimits
instance Data.ToJSON HyperParameterTuningJobConfig where
toJSON HyperParameterTuningJobConfig' {..} =
Data.object
( Prelude.catMaybes
[ ("HyperParameterTuningJobObjective" Data..=)
Prelude.<$> hyperParameterTuningJobObjective,
("ParameterRanges" Data..=)
Prelude.<$> parameterRanges,
("RandomSeed" Data..=) Prelude.<$> randomSeed,
("StrategyConfig" Data..=)
Prelude.<$> strategyConfig,
("TrainingJobEarlyStoppingType" Data..=)
Prelude.<$> trainingJobEarlyStoppingType,
("TuningJobCompletionCriteria" Data..=)
Prelude.<$> tuningJobCompletionCriteria,
Prelude.Just ("Strategy" Data..= strategy),
Prelude.Just
("ResourceLimits" Data..= resourceLimits)
]
)