


'''simple docstring'''



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

import torch_xla.distributed.xla_multiprocessing as xmp


def 				lowerCamelCase__				(	):




						'''simple docstring'''






						UpperCAmelCase					    =     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=__a				,       default=1				,       help='''Number of TPU cores to use (1 or 8).'''					)

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

						return parser.parse_args()


def 				lowerCamelCase__				(	):




						'''simple docstring'''






						UpperCAmelCase					    =     parse_args()

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

						# Patch sys.argv
						UpperCAmelCase					    =     [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 typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available, is_vision_available


_lowercase      :      Union[str, Any]            =					{
    """configuration_poolformer""": [
        """POOLFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """PoolFormerConfig""",
        """PoolFormerOnnxConfig""",
    ]
}

try:
	if not is_vision_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	_lowercase      :      List[Any]            =					["""PoolFormerFeatureExtractor"""]
	_lowercase      :      Any            =					["""PoolFormerImageProcessor"""]

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	_lowercase      :      Tuple            =					[
	    """POOLFORMER_PRETRAINED_MODEL_ARCHIVE_LIST""",
	    """PoolFormerForImageClassification""",
	    """PoolFormerModel""",
	    """PoolFormerPreTrainedModel""",
	]


if TYPE_CHECKING:
	from .configuration_poolformer import (
	    POOLFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP,
	    PoolFormerConfig,
	    PoolFormerOnnxConfig,
	)

	try:
		if not is_vision_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .feature_extraction_poolformer import PoolFormerFeatureExtractor
		from .image_processing_poolformer import PoolFormerImageProcessor

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_poolformer import (
		    POOLFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
		    PoolFormerForImageClassification,
		    PoolFormerModel,
		    PoolFormerPreTrainedModel,
		)


else:
	import sys

	_lowercase      :      Dict            =					_LazyModule(__name__, globals()["""__file__"""], _import_structure)





