





import importlib
import sys
from argparse import REMAINDER, ArgumentParser
from pathlib import Path

import torch_xla.distributed.xla_multiprocessing as xmp




def 					__UpperCamelCase  ()    ->       int:
  lowercase__           =  ArgumentParser(
      description=(
          'PyTorch TPU distributed training launch helper utility that will spawn up multiple distributed processes'
      )		)

  # Optional arguments for the launch helper
  parser.add_argument('--num_cores'		,						type=_lowerCAmelCase		,						default=1		,						help='Number of TPU cores to use (1 or 8).'		)

  # positional
  parser.add_argument(
      'training_script'		,						type=_lowerCAmelCase		,						help=(
          'The full path to the single TPU training '
          'program/script to be launched in parallel, '
          'followed by all the arguments for the '
          'training script'
      )		,						)

  # rest from the training program
  parser.add_argument('training_script_args'		,						nargs=_lowerCAmelCase		)

  return parser.parse_args()




def 					__UpperCamelCase  ()    ->       Optional[Any]:
  lowercase__           =  parse_args()

  # Import training_script as a module.
  lowercase__           =  Path(args.training_script		)
  sys.path.append(str(script_fpath.parent.resolve()		)		)
  lowercase__           =  script_fpath.stem
  lowercase__           =  importlib.import_module(_lowerCAmelCase		)

  # Patch sys.argv
  lowercase__           =  [args.training_script] + args.training_script_args + ["""--tpu_num_cores""", str(args.num_cores		)]

  xmp.spawn(mod._mp_fn		,						args=()		,						nprocs=args.num_cores		)


if __name__ == "__main__":
      main()









from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_tf_available,
    is_torch_available,
    is_vision_available,
)


lowercase_          =		{
    """configuration_efficientformer""": [
        """EFFICIENTFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """EfficientFormerConfig""",
    ]
}

try:
      if not is_vision_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      lowercase_          =		["""EfficientFormerImageProcessor"""]

try:
      if not is_torch_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      lowercase_          =		[
          """EFFICIENTFORMER_PRETRAINED_MODEL_ARCHIVE_LIST""",
          """EfficientFormerForImageClassification""",
          """EfficientFormerForImageClassificationWithTeacher""",
          """EfficientFormerModel""",
          """EfficientFormerPreTrainedModel""",
      ]

try:
      if not is_tf_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      lowercase_          =		[
          """TF_EFFICIENTFORMER_PRETRAINED_MODEL_ARCHIVE_LIST""",
          """TFEfficientFormerForImageClassification""",
          """TFEfficientFormerForImageClassificationWithTeacher""",
          """TFEfficientFormerModel""",
          """TFEfficientFormerPreTrainedModel""",
      ]

if TYPE_CHECKING:
      from .configuration_efficientformer import EFFICIENTFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP, EfficientFormerConfig

      try:
            if not is_vision_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .image_processing_efficientformer import EfficientFormerImageProcessor

      try:
            if not is_torch_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_efficientformer import (
                EFFICIENTFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
                EfficientFormerForImageClassification,
                EfficientFormerForImageClassificationWithTeacher,
                EfficientFormerModel,
                EfficientFormerPreTrainedModel,
            )
      try:
            if not is_tf_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_tf_efficientformer import (
                TF_EFFICIENTFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
                TFEfficientFormerForImageClassification,
                TFEfficientFormerForImageClassificationWithTeacher,
                TFEfficientFormerModel,
                TFEfficientFormerPreTrainedModel,
            )

else:
      import sys

      lowercase_          =		_LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)


