





'''simple docstring'''



from dataclasses import dataclass, field
from typing import Tuple

from ..utils import cached_property, is_torch_available, is_torch_tpu_available, logging, requires_backends
from .benchmark_args_utils import BenchmarkArguments


if is_torch_available():
	import torch

if is_torch_tpu_available(check_device=False):
	import torch_xla.core.xla_model as xm


_SCREAMING_SNAKE_CASE   =      logging.get_logger(__name__)






@dataclass
class 							__lowercase    ( lowerCamelCase_  ):
	a      :			List[Any]     =    [
	    '''no_inference''',
	    '''no_cuda''',
	    '''no_tpu''',
	    '''no_speed''',
	    '''no_memory''',
	    '''no_env_print''',
	    '''no_multi_process''',
	]


	def __init__(self       ,**_lowerCamelCase	)							->							Tuple:







				'''simple docstring'''





				for deprecated_arg in self.deprecated_args:
							if deprecated_arg in kwargs:
										__lowercase			  =							deprecated_arg[3:]
										setattr(self       ,__snake_case       ,not kwargs.pop(__snake_case	)	)
										logger.warning(
										    f"{deprecated_arg} is depreciated. Please use --no_{positive_arg} or"
										    f" {positive_arg}={kwargs[positive_arg]}"	)

				__lowercase			  =							kwargs.pop('''torchscript'''       ,self.torchscript	)
				__lowercase			  =							kwargs.pop('''torch_xla_tpu_print_metrics'''       ,self.torch_xla_tpu_print_metrics	)
				__lowercase			  =							kwargs.pop('''fp16_opt_level'''       ,self.fpaa_opt_level	)
				super().__init__(**__snake_case	)

	a      :			bool     =    field(default=lowerCamelCase_	, metadata={"help": "Trace the models using torchscript"}  )
	a      :			bool     =    field(default=lowerCamelCase_	, metadata={"help": "Print Xla/PyTorch tpu metrics"}  )
	a      :			str     =    field(
	    default="O1"	, metadata={
	        "help": (
	            "For fp16: Apex AMP optimization level selected in [\'O0\', \'O1\', \'O2\', and \'O3\']. "
	            "See details at https://nvidia.github.io/apex/amp.html"
	        )
	    }	, )


	@cached_property
	def   _UpperCAmelCase       (self	)							->							Tuple["torch.device", int]:







				'''simple docstring'''





				requires_backends(self       ,['''torch''']	)
				logger.info('''PyTorch: setting up devices'''	)
				if not self.cuda:
							__lowercase			  =							torch.device('''cpu'''	)
							__lowercase			  =							0
				elif is_torch_tpu_available():
							__lowercase			  =							xm.xla_device()
							__lowercase			  =							0
				else:
							__lowercase			  =							torch.device('''cuda''' if torch.cuda.is_available() else '''cpu'''	)
							__lowercase			  =							torch.cuda.device_count()
				return device, n_gpu


	@property
	def   _UpperCAmelCase       (self	)							->							Union[str, Any]:







				'''simple docstring'''





				return is_torch_tpu_available() and self.tpu


	@property
	def   _UpperCAmelCase       (self	)							->							int:







				'''simple docstring'''





				requires_backends(self       ,['''torch''']	)
				# TODO(PVP): currently only single GPU is supported
				return torch.cuda.current_device()


	@property
	def   _UpperCAmelCase       (self	)							->							"torch.device":







				'''simple docstring'''





				requires_backends(self       ,['''torch''']	)
				return self._setup_devices[0]


	@property
	def   _UpperCAmelCase       (self	)							->							List[str]:







				'''simple docstring'''





				requires_backends(self       ,['''torch''']	)
				return self._setup_devices[1]


	@property
	def   _UpperCAmelCase       (self	)							->							Optional[int]:







				'''simple docstring'''





				return self.n_gpu > 0












'''simple docstring'''



from typing import TYPE_CHECKING

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


_SCREAMING_SNAKE_CASE   =      {
    '''configuration_mvp''': ['''MVP_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''MvpConfig''', '''MvpOnnxConfig'''],
    '''tokenization_mvp''': ['''MvpTokenizer'''],
}

try:
	if not is_tokenizers_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	_SCREAMING_SNAKE_CASE   =      ['''MvpTokenizerFast''']

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	_SCREAMING_SNAKE_CASE   =      [
	    '''MVP_PRETRAINED_MODEL_ARCHIVE_LIST''',
	    '''MvpForCausalLM''',
	    '''MvpForConditionalGeneration''',
	    '''MvpForQuestionAnswering''',
	    '''MvpForSequenceClassification''',
	    '''MvpModel''',
	    '''MvpPreTrainedModel''',
	]

if TYPE_CHECKING:
	from .configuration_mvp import MVP_PRETRAINED_CONFIG_ARCHIVE_MAP, MvpConfig, MvpOnnxConfig
	from .tokenization_mvp import MvpTokenizer

	try:
		if not is_tokenizers_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .tokenization_mvp_fast import MvpTokenizerFast

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_mvp import (
		    MVP_PRETRAINED_MODEL_ARCHIVE_LIST,
		    MvpForCausalLM,
		    MvpForConditionalGeneration,
		    MvpForQuestionAnswering,
		    MvpForSequenceClassification,
		    MvpModel,
		    MvpPreTrainedModel,
		)

else:
	import sys

	_SCREAMING_SNAKE_CASE   =      _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)





