






'''simple docstring'''







from ..utils import DummyObject, requires_backends






class 					a__    (			metaclass=lowerCamelCase						):
     '''simple docstring'''







     _snake_case             =  ['torch', 'transformers', 'k_diffusion']






     def __init__(self    :	Optional[int]				,				*lowercase__    :	Dict				,				**lowercase__    :	Tuple					)  ->       Dict:
           requires_backends(self				,				["torch", "transformers", "k_diffusion"]					)






     @classmethod
     def     _UpperCamelCase   (cls    :	Dict				,				*lowercase__    :	Optional[int]				,				**lowercase__    :	Any					)  ->       Dict:
           requires_backends(cls				,				["torch", "transformers", "k_diffusion"]					)






     @classmethod
     def     _UpperCamelCase   (cls    :	Tuple				,				*lowercase__    :	Any				,				**lowercase__    :	Optional[Any]					)  ->       Optional[int]:
           requires_backends(cls				,				["torch", "transformers", "k_diffusion"]					)









'''simple docstring'''







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

import torch_xla.distributed.xla_multiprocessing as xmp


def 						_UpperCamelCase							(     ):
      __A		   =      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=snake_case__							,			default=1							,			help="Number of TPU cores to use (1 or 8)."							)

      # positional
      parser.add_argument(
          "training_script"							,			type=snake_case__							,			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=snake_case__							)

      return parser.parse_args()


def 						_UpperCamelCase							(     ):
      __A		   =      parse_args()

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

      # Patch sys.argv
      __A		   =      [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()


