
'''simple docstring'''


import copy

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


__SCREAMING_SNAKE_CASE						=      logging.get_logger(__name__)

__SCREAMING_SNAKE_CASE						=      {}




class     __snake_case			(    _a	):
		a_          =					"fsmt_decoder"




		def __init__(  self					:Tuple			,    _SCREAMING_SNAKE_CASE					:Optional[Any]=0			,    _SCREAMING_SNAKE_CASE					:int=0)					->			int:






								'''simple docstring'''






								super().__init__()
								UpperCamelCase_     :	Tuple					     =     vocab_size
								UpperCamelCase_     :	int					     =     bos_token_id







class     __snake_case			(    _a	):
		a_          =					"fsmt"
		a_          =					{"num_attention_heads": "encoder_attention_heads", "hidden_size": "d_model"}




		def __init__(  self					:Optional[int]			,    _SCREAMING_SNAKE_CASE					:int=["en", "de"]			,    _SCREAMING_SNAKE_CASE					:Dict=4_2_0_2_4			,    _SCREAMING_SNAKE_CASE					:Optional[int]=4_2_0_2_4			,    _SCREAMING_SNAKE_CASE					:Tuple="relu"			,    _SCREAMING_SNAKE_CASE					:Union[str, Any]=1_0_2_4			,    _SCREAMING_SNAKE_CASE					:int=2_0_0			,    _SCREAMING_SNAKE_CASE					:List[Any]=1_0_2_4			,    _SCREAMING_SNAKE_CASE					:List[Any]=4_0_9_6			,    _SCREAMING_SNAKE_CASE					:Dict=1_2			,    _SCREAMING_SNAKE_CASE					:List[str]=1_6			,    _SCREAMING_SNAKE_CASE					:Dict=0.0			,    _SCREAMING_SNAKE_CASE					:Optional[int]=4_0_9_6			,    _SCREAMING_SNAKE_CASE					:List[Any]=1_2			,    _SCREAMING_SNAKE_CASE					:Tuple=1_6			,    _SCREAMING_SNAKE_CASE					:Optional[Any]=0.0			,    _SCREAMING_SNAKE_CASE					:Optional[Any]=0.0			,    _SCREAMING_SNAKE_CASE					:Tuple=0.1			,    _SCREAMING_SNAKE_CASE					:Optional[int]=0.0			,    _SCREAMING_SNAKE_CASE					:Optional[int]=0.02			,    _SCREAMING_SNAKE_CASE					:Optional[Any]=2			,    _SCREAMING_SNAKE_CASE					:Union[str, Any]=True			,    _SCREAMING_SNAKE_CASE					:Dict=True			,    _SCREAMING_SNAKE_CASE					:Dict=False			,    _SCREAMING_SNAKE_CASE					:Any=5			,    _SCREAMING_SNAKE_CASE					:int=1.0			,    _SCREAMING_SNAKE_CASE					:str=False			,    _SCREAMING_SNAKE_CASE					:Union[str, Any]=True			,    _SCREAMING_SNAKE_CASE					:List[Any]=1			,    _SCREAMING_SNAKE_CASE					:List[str]=0			,    _SCREAMING_SNAKE_CASE					:str=2			,    _SCREAMING_SNAKE_CASE					:Tuple=2			,    **_SCREAMING_SNAKE_CASE					:Tuple			,    )					->			str:






								'''simple docstring'''






								UpperCamelCase_     :	Tuple					     =     langs
								UpperCamelCase_     :	List[Any]					     =     src_vocab_size
								UpperCamelCase_     :	int					     =     tgt_vocab_size
								UpperCamelCase_     :	Union[str, Any]					     =     d_model  # encoder_embed_dim and decoder_embed_dim

								UpperCamelCase_     :	Optional[int]					     =     encoder_ffn_dim
								UpperCamelCase_     :	Optional[int]					     =     encoder_layers
								UpperCamelCase_     :	str					     =     encoder_attention_heads
								UpperCamelCase_     :	Tuple					     =     encoder_layerdrop
								UpperCamelCase_     :	Optional[Any]					     =     decoder_layerdrop
								UpperCamelCase_     :	Union[str, Any]					     =     decoder_ffn_dim
								UpperCamelCase_     :	List[str]					     =     decoder_layers
								UpperCamelCase_     :	Optional[Any]					     =     decoder_attention_heads
								UpperCamelCase_     :	Dict					     =     max_position_embeddings
								UpperCamelCase_     :	Any					     =     init_std  # Normal(0, this parameter)
								UpperCamelCase_     :	List[str]					     =     activation_function

								UpperCamelCase_     :	Any					     =     DecoderConfig(vocab_size=_A			,    bos_token_id=_A)
								if "decoder" in common_kwargs:
														del common_kwargs["decoder"]

								UpperCamelCase_     :	int					     =     scale_embedding  # scale factor will be sqrt(d_model) if True

								# 3 Types of Dropout
								UpperCamelCase_     :	str					     =     attention_dropout
								UpperCamelCase_     :	Union[str, Any]					     =     activation_dropout
								UpperCamelCase_     :	Tuple					     =     dropout

								UpperCamelCase_     :	Optional[Any]					     =     use_cache
								super().__init__(
								    pad_token_id=_A			,    bos_token_id=_A			,    eos_token_id=_A			,    decoder_start_token_id=_A			,    is_encoder_decoder=_A			,    tie_word_embeddings=_A			,    forced_eos_token_id=_A			,    max_length=_A			,    num_beams=_A			,    length_penalty=_A			,    early_stopping=_A			,    **_A			,    )





		def 	_snake_case	(  self					:str)					->			str:






								'''simple docstring'''






								UpperCamelCase_     :	List[Any]					     =     copy.deepcopy(self.__dict__)
								UpperCamelCase_     :	Optional[int]					     =     self.decoder.to_dict()
								UpperCamelCase_     :	Optional[int]					     =     self.__class__.model_type
								return output







from typing import Callable, Optional, Union

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


lowerCamelCase   					=  logging.get_logger(__name__)

lowerCamelCase   					=  {
    '''microsoft/prophetnet-large-uncased''': (
        '''https://huggingface.co/microsoft/prophetnet-large-uncased/resolve/main/config.json'''
    ),
}





class      snake_case_      (					_a				):


							"""simple docstring"""





							__UpperCAmelCase      ="""prophetnet"""
							__UpperCAmelCase      =["""past_key_values"""]
							__UpperCAmelCase      ={
							    """num_attention_heads""": """num_encoder_attention_heads""",
							}




							def __init__(			self       ,    _A = 0.1       ,    _A = "gelu"       ,    _A = 3_0_5_2_2       ,    _A = 1_0_2_4       ,    _A = 4_0_9_6       ,    _A = 1_2       ,    _A = 1_6       ,    _A = 4_0_9_6       ,    _A = 1_2       ,    _A = 1_6       ,    _A = 0.1       ,    _A = 0.1       ,    _A = 5_1_2       ,    _A = 0.02       ,    _A = True       ,    _A = True       ,    _A = 0       ,    _A = 2       ,    _A = 3_2       ,    _A = 1_2_8       ,    _A = False       ,    _A = 0.0       ,    _A = True       ,    _A = 0       ,    _A = 1       ,    _A = 2       ,    **_A       ,    ):
												__lowerCAmelCase       =				vocab_size
												__lowerCAmelCase       =				hidden_size
												__lowerCAmelCase       =				encoder_ffn_dim
												__lowerCAmelCase       =				num_encoder_layers
												__lowerCAmelCase       =				num_encoder_attention_heads
												__lowerCAmelCase       =				decoder_ffn_dim
												__lowerCAmelCase       =				num_decoder_layers
												__lowerCAmelCase       =				num_decoder_attention_heads
												__lowerCAmelCase       =				max_position_embeddings
												__lowerCAmelCase       =				init_std  # Normal(0, this parameter)
												__lowerCAmelCase       =				activation_function

												# parameters for prophetnet
												__lowerCAmelCase       =				ngram
												__lowerCAmelCase       =				num_buckets
												__lowerCAmelCase       =				relative_max_distance
												__lowerCAmelCase       =				disable_ngram_loss
												__lowerCAmelCase       =				eps

												# 3 Types of Dropout
												__lowerCAmelCase       =				attention_dropout
												__lowerCAmelCase       =				activation_dropout
												__lowerCAmelCase       =				dropout

												__lowerCAmelCase       =				use_cache

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




							@property
							def 							A__	(			self				):
												return self.num_encoder_layers + self.num_decoder_layers




							@num_hidden_layers.setter
							def 							A__	(			self       ,    _A				):
												raise NotImplementedError(
												    'This model does not support the setting of `num_hidden_layers`. Please set `num_encoder_layers` and'
												    ' `num_decoder_layers`.'				)






