class_docstr: The SageMaker Training Compiler configuration class.
docstr: Checks if SageMaker Training Compiler is configured correctly.
  
  Args:
      estimator (:class:`sagemaker.estimator.Estimator`): An estimator object.
          When SageMaker Training Compiler is enabled, it validates if
          the estimator is configured to be compatible with Training Compiler.
  
  
  Raises:
      ValueError: Raised if the requested configuration is not compatible
                  with SageMaker Training Compiler.
docstr_tok: ["Checks","if","SageMaker","Training","Compiler","is","configured","correctly",".","Args",":","estimator","(",":","class",":","`","sagemaker.estimator.Estimator","`",")",":","An","estimator","object",".","When","SageMaker","Training","Compiler","is","enabled",",","it","validates","if","the","estimator","is","configured","to","be","compatible","with","Training","Compiler",".","Raises",":","ValueError",":","Raised","if","the","requested","configuration","is","not","compatible","with","SageMaker","Training","Compiler","."]
code: def validate(cls, estimator):
      """Checks if SageMaker Training Compiler is configured correctly.
  
      Args:
          estimator (:class:`sagemaker.estimator.Estimator`): An estimator object.
              When SageMaker Training Compiler is enabled, it validates if
              the estimator is configured to be compatible with Training Compiler.
  
  
      Raises:
          ValueError: Raised if the requested configuration is not compatible
                      with SageMaker Training Compiler.
      """
      if is_pipeline_variable(estimator.instance_type):
          warn_msg = (
              "Estimator instance_type is a PipelineVariable (%s), "
              "which has to be interpreted as one of the "
              "%s classes in execution time."
          )
          logger.warning(
              warn_msg,
              type(estimator.instance_type),
              str(cls.SUPPORTED_INSTANCE_CLASS_PREFIXES).replace(
                  ",", ""
              ),
          )
      elif estimator.instance_type:
          if "local" not in estimator.instance_type:
              requested_instance_class = estimator.instance_type.split(
                  "."
              )[
                  1
              ]  # Expecting ml.class.size
              if not any(
                  [
                      requested_instance_class == i
                      for i in cls.SUPPORTED_INSTANCE_CLASS_PREFIXES
                  ]
              ):
                  error_helper_string = (
                      "Unsupported Instance class {}."
                      "SageMaker Training Compiler only supports {}"
                  )
                  error_helper_string = error_helper_string.format(
                      requested_instance_class,
                      cls.SUPPORTED_INSTANCE_CLASS_PREFIXES,
                  )
                  raise ValueError(error_helper_string)
          elif estimator.instance_type == "local":
              error_helper_string = (
                  "SageMaker Training Compiler doesn't support local mode."
                  "It only supports the following GPU instances: {}"
              )
              error_helper_string = error_helper_string.format(
                  cls.SUPPORTED_INSTANCE_CLASS_PREFIXES
              )
              raise ValueError(error_helper_string)
  
      if (
          estimator.distribution
          and "smdistributed" in estimator.distribution
      ):
          raise ValueError(
              "SageMaker distributed training configuration is currently not compatible with "
              "SageMaker Training Compiler."
          )
  
      if estimator.debugger_hook_config or (
          not estimator.disable_profiler
      ):
          helper_string = (
              "Using Debugger and/or Profiler with SageMaker Training Compiler "
              "might add recompilation overhead and degrade"
              "performance. Found debugger_hook_config={} "
              "disable_profiler={}. Please set "
              "debugger_hook_config=None and disable_profiler=True for optimal "
              "performance. For more information, see Training Compiler "
              "Performance Considerations "
              "(https://docs.aws.amazon.com/sagemaker/latest/dg/training-compiler-tips-pitfalls.html"
              "#training-compiler-tips-pitfalls-considerations)."
          )
          helper_string = helper_string.format(
              estimator.debugger_hook_config, estimator.disable_profiler
          )
          logger.warning(helper_string)
  
      if estimator.instance_groups:
          raise ValueError(
              "SageMaker Training Compiler currently only supports homogeneous clusters of "
              "the following GPU instance families: {}. Please use the 'instance_type' "
              "and 'instance_count' parameters instead of 'instance_groups'".format(
                  cls.SUPPORTED_INSTANCE_CLASS_PREFIXES
              )
          )
  
file_path: sagemaker-python-sdk/src/sagemaker/training_compiler/config.py
imports: from __future__ import absolute_import
  import logging
  from sagemaker.workflow import is_pipeline_variable
label_desc: Use image node_id 5 for calling the TrainingCompilerConfig obj's underlying member method code with example usage: obj.validate(cls, estimator) without return types