




'''simple docstring'''


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

import torch_xla.distributed.xla_multiprocessing as xmp



def  _SCREAMING_SNAKE_CASE     (      ):




     """simple docstring"""


     a_     :							List[Any]     						=  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=UpperCamelCase__ ,    default=1 ,    help="""Number of TPU cores to use (1 or 8)."""				)

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

     return parser.parse_args()



def  _SCREAMING_SNAKE_CASE     (      ):




     """simple docstring"""


     a_     :							Dict     						=  parse_args()

     # Import training_script as a module.
     a_     :							Any     						=  Path(args.training_script				)
     sys.path.append(str(script_fpath.parent.resolve()				)				)
     a_     :							List[Any]     						=  script_fpath.stem
     a_     :							Union[str, Any]     						=  importlib.import_module(UpperCamelCase__				)

     # Patch sys.argv
     a_     :							Optional[Any]     						=  [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()






'''simple docstring'''


from ..utils import DummyObject, requires_backends







class      SCREAMING_SNAKE_CASE    (						metaclass=snake_case_				):
      __magic_name__  :       Dict   							=					['''transformers''', '''torch''', '''note_seq''']






      def __init__( self   :  List[str]						,						*lowercase__   :  Dict						,						**lowercase__   :  int       ):


           '''simple docstring'''

           requires_backends(self						,						["""transformers""", """torch""", """note_seq"""]       )






      @classmethod
      def 							lowercase_						( cls   :  Dict						,						*lowercase__   :  List[str]						,						**lowercase__   :  str       ):


           '''simple docstring'''

           requires_backends(cls						,						["""transformers""", """torch""", """note_seq"""]       )






      @classmethod
      def 							lowercase_						( cls   :  str						,						*lowercase__   :  Optional[int]						,						**lowercase__   :  Any       ):


           '''simple docstring'''

           requires_backends(cls						,						["""transformers""", """torch""", """note_seq"""]       )
