





from typing import TYPE_CHECKING

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


UpperCAmelCase_							=				{
    """configuration_perceiver""": ["""PERCEIVER_PRETRAINED_CONFIG_ARCHIVE_MAP""", """PerceiverConfig""", """PerceiverOnnxConfig"""],
    """tokenization_perceiver""": ["""PerceiverTokenizer"""],
}

try:
							if not is_vision_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							UpperCAmelCase_							=				["""PerceiverFeatureExtractor"""]
							UpperCAmelCase_							=				["""PerceiverImageProcessor"""]

try:
							if not is_torch_available():
														raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
							pass
else:
							UpperCAmelCase_							=				[
							    """PERCEIVER_PRETRAINED_MODEL_ARCHIVE_LIST""",
							    """PerceiverForImageClassificationConvProcessing""",
							    """PerceiverForImageClassificationFourier""",
							    """PerceiverForImageClassificationLearned""",
							    """PerceiverForMaskedLM""",
							    """PerceiverForMultimodalAutoencoding""",
							    """PerceiverForOpticalFlow""",
							    """PerceiverForSequenceClassification""",
							    """PerceiverLayer""",
							    """PerceiverModel""",
							    """PerceiverPreTrainedModel""",
							]


if TYPE_CHECKING:
							from .configuration_perceiver import PERCEIVER_PRETRAINED_CONFIG_ARCHIVE_MAP, PerceiverConfig, PerceiverOnnxConfig
							from .tokenization_perceiver import PerceiverTokenizer

							try:
														if not is_vision_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .feature_extraction_perceiver import PerceiverFeatureExtractor
														from .image_processing_perceiver import PerceiverImageProcessor

							try:
														if not is_torch_available():
																					raise OptionalDependencyNotAvailable()
							except OptionalDependencyNotAvailable:
														pass
							else:
														from .modeling_perceiver import (
														    PERCEIVER_PRETRAINED_MODEL_ARCHIVE_LIST,
														    PerceiverForImageClassificationConvProcessing,
														    PerceiverForImageClassificationFourier,
														    PerceiverForImageClassificationLearned,
														    PerceiverForMaskedLM,
														    PerceiverForMultimodalAutoencoding,
														    PerceiverForOpticalFlow,
														    PerceiverForSequenceClassification,
														    PerceiverLayer,
														    PerceiverModel,
														    PerceiverPreTrainedModel,
														)

else:
							import sys

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






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

import torch_xla.distributed.xla_multiprocessing as xmp





def  __magic_name__  (				)				-> str:

							"""simple docstring"""



							lowercase_	:   Optional[int]  				=     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=lowercase				,       default=1				,       help="""Number of TPU cores to use (1 or 8)."""				)

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

							return parser.parse_args()





def  __magic_name__  (				)				-> List[Any]:

							"""simple docstring"""



							lowercase_	:   Union[str, Any]  				=     parse_args()

							# Import training_script as a module.
							lowercase_	:   List[Any]  				=     Path(args.training_script				)
							sys.path.append(str(script_fpath.parent.resolve()				)				)
							lowercase_	:   Tuple  				=     script_fpath.stem
							lowercase_	:   List[str]  				=     importlib.import_module(lowercase				)

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