





from dataclasses import dataclass, field
from typing import Tuple

from ..utils import cached_property, is_tf_available, logging, requires_backends
from .benchmark_args_utils import BenchmarkArguments


if is_tf_available():
     import tensorflow as tf


UpperCAmelCase     :     str							=	logging.get_logger(__name__)







@dataclass
class     __lowerCAmelCase	(   UpperCamelCase__):
      _lowercase    : Dict            =      [
          """no_inference""",
          """no_cuda""",
          """no_tpu""",
          """no_speed""",
          """no_memory""",
          """no_env_print""",
          """no_multi_process""",
      ]







      def __init__(   self		,				**lowerCAmelCase__							)       ->						Optional[Any]:



        '''simple docstring'''




        for deprecated_arg in self.deprecated_args:
          if deprecated_arg in kwargs:
            a__     : List[str]  =deprecated_arg[3:]
            a__     : Tuple  =not kwargs.pop(lowerCAmelCase__							)
            logger.warning(
                F'''{deprecated_arg} is depreciated. Please use --no-{positive_arg} or'''
                F''' {positive_arg}={kwargs[positive_arg]}'''							)
        a__     : str  =kwargs.pop("tpu_name"		,				self.tpu_name							)
        a__     : Any  =kwargs.pop("device_idx"		,				self.device_idx							)
        a__     : Tuple  =kwargs.pop("eager_mode"		,				self.eager_mode							)
        a__     : List[Any]  =kwargs.pop("use_xla"		,				self.use_xla							)
        super().__init__(**lowerCAmelCase__							)

      _lowercase    : str            =      field(
          default=UpperCamelCase__						,    metadata={"""help""": """Name of TPU"""}						,    )
      _lowercase    : int            =      field(
          default=0						,    metadata={"""help""": """CPU / GPU device index. Defaults to 0."""}						,    )
      _lowercase    : bool            =      field(default=UpperCamelCase__						,    metadata={"""help""": """Benchmark models in eager model."""})
      _lowercase    : bool            =      field(
          default=UpperCamelCase__						,    metadata={
              """help""": """Benchmark models using XLA JIT compilation. Note that `eager_model` has to be set to `False`."""
          }						,    )







      @cached_property
      def        _lowercase  (   self							)       ->						Tuple["tf.distribute.cluster_resolver.TPUClusterResolver"]:



        '''simple docstring'''




        requires_backends(self		,				["tf"]							)
        a__     : Optional[int]  =None
        if self.tpu:
          try:
            if self.tpu_name:
              a__     : List[Any]  =tf.distribute.cluster_resolver.TPUClusterResolver(self.tpu_name							)
            else:
              a__     : Dict  =tf.distribute.cluster_resolver.TPUClusterResolver()
          except ValueError:
            a__     : Optional[int]  =None
        return tpu







      @cached_property
      def        _lowercase  (   self							)       ->						Tuple["tf.distribute.Strategy", "tf.distribute.cluster_resolver.TPUClusterResolver"]:



        '''simple docstring'''




        requires_backends(self		,				["tf"]							)
        if self.is_tpu:
          tf.config.experimental_connect_to_cluster(self._setup_tpu							)
          tf.tpu.experimental.initialize_tpu_system(self._setup_tpu							)

          a__     : Any  =tf.distribute.TPUStrategy(self._setup_tpu							)
        else:
          # currently no multi gpu is allowed
          if self.is_gpu:
            # TODO: Currently only single GPU is supported
            tf.config.set_visible_devices(self.gpu_list[self.device_idx]		,				"GPU"							)
            a__     : Dict  =tf.distribute.OneDeviceStrategy(device=F'''/gpu:{self.device_idx}'''							)
          else:
            tf.config.set_visible_devices([]		,				"GPU"							)  # disable GPU
            a__     : List[str]  =tf.distribute.OneDeviceStrategy(device=F'''/cpu:{self.device_idx}'''							)

        return strategy







      @property
      def        _lowercase  (   self							)       ->						bool:



        '''simple docstring'''




        requires_backends(self		,				["tf"]							)
        return self._setup_tpu is not None







      @property
      def        _lowercase  (   self							)       ->						"tf.distribute.Strategy":



        '''simple docstring'''




        requires_backends(self		,				["tf"]							)
        return self._setup_strategy







      @property
      def        _lowercase  (   self							)       ->						str:



        '''simple docstring'''




        requires_backends(self		,				["tf"]							)
        return tf.config.list_physical_devices("GPU"							)







      @property
      def        _lowercase  (   self							)       ->						int:



        '''simple docstring'''




        requires_backends(self		,				["tf"]							)
        if self.cuda:
          return len(self.gpu_list							)
        return 0







      @property
      def        _lowercase  (   self							)       ->						bool:



        '''simple docstring'''




        return self.n_gpu > 0













import warnings

from ...configuration_utils import PretrainedConfig
from ...utils import logging


UpperCAmelCase     :     Dict							=	logging.get_logger(__name__)

UpperCAmelCase     :     Dict							=	{
    """RUCAIBox/mvp""": """https://huggingface.co/RUCAIBox/mvp/resolve/main/config.json""",
}







class     __lowerCAmelCase	(   UpperCamelCase__):
      _lowercase    : List[Any]            =      """mvp"""
      _lowercase    : Tuple            =      ["""past_key_values"""]
      _lowercase    : Dict            =      {"""num_attention_heads""": """encoder_attention_heads""", """hidden_size""": """d_model"""}







      def __init__(   self		,				lowerCAmelCase__=5_0_2_6_7		,				lowerCAmelCase__=1_0_2_4		,				lowerCAmelCase__=1_2		,				lowerCAmelCase__=4_0_9_6		,				lowerCAmelCase__=1_6		,				lowerCAmelCase__=1_2		,				lowerCAmelCase__=4_0_9_6		,				lowerCAmelCase__=1_6		,				lowerCAmelCase__=0.0		,				lowerCAmelCase__=0.0		,				lowerCAmelCase__="gelu"		,				lowerCAmelCase__=1_0_2_4		,				lowerCAmelCase__=0.1		,				lowerCAmelCase__=0.0		,				lowerCAmelCase__=0.0		,				lowerCAmelCase__=0.02		,				lowerCAmelCase__=0.0		,				lowerCAmelCase__=False		,				lowerCAmelCase__=True		,				lowerCAmelCase__=1		,				lowerCAmelCase__=0		,				lowerCAmelCase__=2		,				lowerCAmelCase__=True		,				lowerCAmelCase__=2		,				lowerCAmelCase__=2		,				lowerCAmelCase__=False		,				lowerCAmelCase__=1_0_0		,				lowerCAmelCase__=8_0_0		,				**lowerCAmelCase__		,				)       ->						str:



        '''simple docstring'''




        a__     : Dict  =vocab_size
        a__     : List[str]  =max_position_embeddings
        a__     : List[str]  =d_model
        a__     : Optional[Any]  =encoder_ffn_dim
        a__     : Dict  =encoder_layers
        a__     : List[str]  =encoder_attention_heads
        a__     : List[str]  =decoder_ffn_dim
        a__     : Tuple  =decoder_layers
        a__     : Tuple  =decoder_attention_heads
        a__     : Any  =dropout
        a__     : str  =attention_dropout
        a__     : str  =activation_dropout
        a__     : Optional[int]  =activation_function
        a__     : Union[str, Any]  =init_std
        a__     : Dict  =encoder_layerdrop
        a__     : List[str]  =decoder_layerdrop
        a__     : Union[str, Any]  =classifier_dropout
        a__     : Union[str, Any]  =use_cache
        a__     : Optional[Any]  =encoder_layers
        a__     : List[str]  =scale_embedding  # scale factor will be sqrt(d_model) if True
        a__     : int  =use_prompt
        a__     : Union[str, Any]  =prompt_length
        a__     : Dict  =prompt_mid_dim

        super().__init__(
            pad_token_id=lowerCAmelCase__		,				bos_token_id=lowerCAmelCase__		,				eos_token_id=lowerCAmelCase__		,				is_encoder_decoder=lowerCAmelCase__		,				decoder_start_token_id=lowerCAmelCase__		,				forced_eos_token_id=lowerCAmelCase__		,				**lowerCAmelCase__		,				)

        if self.forced_bos_token_id is None and kwargs.get("force_bos_token_to_be_generated"		,				lowerCAmelCase__							):
          a__     : Tuple  =self.bos_token_id
          warnings.warn(
              F'''Please make sure the config includes `forced_bos_token_id={self.bos_token_id}` in future versions. '''
              "The config can simply be saved and uploaded again to be fixed."							)






