



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


a_    :  str						  =		logging.get_logger(__name__)

a_    :  int						  =		{
    "facebook/s2t-small-librispeech-asr": (
        "https://huggingface.co/facebook/s2t-small-librispeech-asr/resolve/main/config.json"
    ),
    # See all Speech2Text models at https://huggingface.co/models?filter=speech_to_text
}





class  lowerCamelCase__	(    __a):
     """simple docstring"""



     _A      =      '''speech_to_text'''
     _A      =      ['''past_key_values''']
     _A      =      {'''num_attention_heads''': '''encoder_attention_heads''', '''hidden_size''': '''d_model'''}







     def __init__(self					,      __a=1_00_00					,      __a=12					,      __a=20_48					,      __a=4					,      __a=6					,      __a=20_48					,      __a=4					,      __a=0.0					,      __a=0.0					,      __a=True					,      __a=True					,      __a="relu"					,      __a=2_56					,      __a=0.1					,      __a=0.0					,      __a=0.0					,      __a=0.02					,      __a=2					,      __a=True					,      __a=1					,      __a=0					,      __a=2					,      __a=60_00					,      __a=10_24					,      __a=2					,      __a=(5, 5)					,      __a=10_24					,      __a=80					,      __a=1					,      **__a					,      ):






           '''simple docstring'''



           lowerCamelCase             =		vocab_size
           lowerCamelCase             =		d_model
           lowerCamelCase             =		encoder_ffn_dim
           lowerCamelCase             =		encoder_layers
           lowerCamelCase             =		encoder_attention_heads
           lowerCamelCase             =		decoder_ffn_dim
           lowerCamelCase             =		decoder_layers
           lowerCamelCase             =		decoder_attention_heads
           lowerCamelCase             =		dropout
           lowerCamelCase             =		attention_dropout
           lowerCamelCase             =		activation_dropout
           lowerCamelCase             =		activation_function
           lowerCamelCase             =		init_std
           lowerCamelCase             =		encoder_layerdrop
           lowerCamelCase             =		decoder_layerdrop
           lowerCamelCase             =		use_cache
           lowerCamelCase             =		encoder_layers
           lowerCamelCase             =		scale_embedding  # scale factor will be sqrt(d_model) if True
           lowerCamelCase             =		max_source_positions
           lowerCamelCase             =		max_target_positions
           lowerCamelCase             =		num_conv_layers
           lowerCamelCase             =		list(lowerCAmelCase__     )
           lowerCamelCase             =		conv_channels
           lowerCamelCase             =		input_feat_per_channel
           lowerCamelCase             =		input_channels

           if len(self.conv_kernel_sizes     ) != self.num_conv_layers:
                 raise ValueError(
                     "Configuration for convolutional module is incorrect. "
                     "It is required that `len(config.conv_kernel_sizes)` == `config.num_conv_layers` "
                     F"""but is `len(config.conv_kernel_sizes) = {len(self.conv_kernel_sizes     )}`, """
                     F"""`config.num_conv_layers = {self.num_conv_layers}`."""     )

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

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


_snake_case      :							List[str]     	=    logging.get_logger(__name__)

_snake_case      :							int     	=    {
    "google/switch-base-8": "https://huggingface.co/google/switch-base-8/blob/main/config.json",
}





class   UpperCamelCase_      (      __a		):







						'''simple docstring'''



						UpperCamelCase      :  List[str]				   =					'''switch_transformers'''
						UpperCamelCase      :  Dict				   =					['''past_key_values''']
						UpperCamelCase      :  Union[str, Any]				   =					{'''hidden_size''': '''d_model''', '''num_attention_heads''': '''num_heads''', '''num_hidden_layers''': '''num_layers'''}





						def __init__(			self							:int		,    lowerCAmelCase__							:str=32128		,    lowerCAmelCase__							:Union[str, Any]=768		,    lowerCAmelCase__							:Tuple=64		,    lowerCAmelCase__							:Any=2048		,    lowerCAmelCase__							:Optional[int]=64		,    lowerCAmelCase__							:Any=12		,    lowerCAmelCase__							:Any=3		,    lowerCAmelCase__							:Union[str, Any]=12		,    lowerCAmelCase__							:Tuple=3		,    lowerCAmelCase__							:str=12		,    lowerCAmelCase__							:Dict=8		,    lowerCAmelCase__							:Union[str, Any]=False		,    lowerCAmelCase__							:List[str]=0.01		,    lowerCAmelCase__							:Union[str, Any]="float32"		,    lowerCAmelCase__							:Optional[int]=False		,    lowerCAmelCase__							:Optional[Any]=32		,    lowerCAmelCase__							:int=128		,    lowerCAmelCase__							:Optional[Any]=0.1		,    lowerCAmelCase__							:Optional[Any]=1E-6		,    lowerCAmelCase__							:Any=0.0_01		,    lowerCAmelCase__							:Union[str, Any]=0.0_01		,    lowerCAmelCase__							:List[Any]=1.0		,    lowerCAmelCase__							:Optional[Any]="relu"		,    lowerCAmelCase__							:Optional[int]=True		,    lowerCAmelCase__							:List[Any]=False		,    lowerCAmelCase__							:int=True		,    lowerCAmelCase__							:int=0		,    lowerCAmelCase__							:Optional[Any]=1		,    **lowerCAmelCase__							:List[Any]		,    )  ->Dict:
										lowercase         =      vocab_size
										lowercase         =      d_model
										lowercase         =      d_kv
										lowercase         =      d_ff

										lowercase         =      num_sparse_encoder_layers

										lowercase         =      num_layers
										lowercase         =      (
										    num_decoder_layers if num_decoder_layers is not None else self.num_layers
										)  # default = symmetry
										lowercase         =      num_sparse_decoder_layers

										# This tells us, each how many encoder layer we'll have to set a sparse layer.
										if self.num_sparse_encoder_layers > 0:
														lowercase         =      self.num_layers // self.num_sparse_encoder_layers
										else:
														lowercase         =      self.num_layers  # HACK: this will create 0 sparse layers

										# This tells us, each how many encoder layer we'll have to set a sparse layer.
										if self.num_sparse_decoder_layers > 0:
														lowercase         =      self.num_decoder_layers // self.num_sparse_decoder_layers
										else:
														lowercase         =      self.num_decoder_layers  # HACK: this will create 0 sparse layers

										lowercase         =      num_heads
										lowercase         =      num_experts
										lowercase         =      expert_capacity
										lowercase         =      router_bias
										lowercase         =      router_jitter_noise
										if router_dtype not in ["float32", "float16", "bfloat16"]:
														raise ValueError(F'''`router_dtype` must be one of \'float32\', \'float16\' or \'bfloat16\', got {router_dtype}'''     )
										lowercase         =      router_dtype

										lowercase         =      router_ignore_padding_tokens
										lowercase         =      relative_attention_num_buckets
										lowercase         =      relative_attention_max_distance

										lowercase         =      dropout_rate
										lowercase         =      layer_norm_epsilon
										lowercase         =      initializer_factor
										lowercase         =      feed_forward_proj
										lowercase         =      use_cache
										lowercase         =      add_router_probs

										lowercase         =      router_z_loss_coef
										lowercase         =      router_aux_loss_coef

										lowercase         =      self.feed_forward_proj.split("-"     )
										lowercase         =      act_info[-1]
										lowercase         =      act_info[0] == "gated"

										if len(lowerCAmelCase__     ) > 1 and act_info[0] != "gated" or len(lowerCAmelCase__     ) > 2:
														raise ValueError(
														    F'''`feed_forward_proj`: {feed_forward_proj} is not a valid activation function of the dense layer.'''
														    "Please make sure `feed_forward_proj` is of the format `gated-{ACT_FN}` or `{ACT_FN}`, e.g. "
														    "'gated-gelu' or 'relu'"     )

										# for backwards compatibility
										if feed_forward_proj == "gated-gelu":
														lowercase         =      "gelu_new"

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