





'''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_ (					)	->		Union[str, Any]:
						UpperCAmelCase_     : 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=SCREAMING_SNAKE_CASE__,     default=1,     help='''Number of TPU cores to use (1 or 8).'''				)

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

						return parser.parse_args()





def     lowerCamelCase_ (					)	->		Tuple:
						UpperCAmelCase_     : Dict         =					parse_args()

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

						# Patch sys.argv
						UpperCAmelCase_     : List[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'''







# Copyright 2023 The HuggingFace Team. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from typing import TYPE_CHECKING

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


snake_case_       :    List[Any]          =					{
    "configuration_tvlt": ["TVLT_PRETRAINED_CONFIG_ARCHIVE_MAP", "TvltConfig"],
    "feature_extraction_tvlt": ["TvltFeatureExtractor"],
    "processing_tvlt": ["TvltProcessor"],
}

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					snake_case_       :    Optional[int]          =					[
					    "TVLT_PRETRAINED_MODEL_ARCHIVE_LIST",
					    "TvltModel",
					    "TvltForPreTraining",
					    "TvltForAudioVisualClassification",
					    "TvltPreTrainedModel",
					]

try:
					if not is_vision_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					snake_case_       :    List[Any]          =					["TvltImageProcessor"]


if TYPE_CHECKING:
					from .configuration_tvlt import TVLT_PRETRAINED_CONFIG_ARCHIVE_MAP, TvltConfig
					from .processing_tvlt import TvltProcessor
					from .feature_extraction_tvlt import TvltFeatureExtractor

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_tvlt import (
										    TVLT_PRETRAINED_MODEL_ARCHIVE_LIST,
										    TvltForAudioVisualClassification,
										    TvltForPreTraining,
										    TvltModel,
										    TvltPreTrainedModel,
										)

					try:
										if not is_vision_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .image_processing_tvlt import TvltImageProcessor


else:
					import sys

					snake_case_       :    Any          =					_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)





