Ë
    T^(h!G  ã                   óÌ   — d Z ddlmZ ddlmZmZmZ ddlmZ ddl	m
Z
 ddlmZmZmZ ddlmZ dd	lmZmZmZ  ej*                  e«      Z G d
„ de
«      Z G d„ de«      ZddgZy)zMBART model configurationé    )ÚOrderedDict)ÚAnyÚMappingÚOptionalé   )ÚPreTrainedTokenizer)ÚPretrainedConfig)Ú
OnnxConfigÚOnnxConfigWithPastÚOnnxSeq2SeqConfigWithPast)Ú compute_effective_axis_dimension)Ú
TensorTypeÚis_torch_availableÚloggingc                   óh   ‡ — e Zd ZdZdZdgZdddœZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd„	Zˆ xZS )	ÚMBartConfiga1  
    This is the configuration class to store the configuration of a [`MBartModel`]. It is used to instantiate an MBART
    model according to the specified arguments, defining the model architecture. Instantiating a configuration with the
    defaults will yield a similar configuration to that of the MBART
    [facebook/mbart-large-cc25](https://huggingface.co/facebook/mbart-large-cc25) architecture.

    Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
    documentation from [`PretrainedConfig`] for more information.


    Args:
        vocab_size (`int`, *optional*, defaults to 50265):
            Vocabulary size of the MBART model. Defines the number of different tokens that can be represented by the
            `inputs_ids` passed when calling [`MBartModel`] or [`TFMBartModel`].
        d_model (`int`, *optional*, defaults to 1024):
            Dimensionality of the layers and the pooler layer.
        encoder_layers (`int`, *optional*, defaults to 12):
            Number of encoder layers.
        decoder_layers (`int`, *optional*, defaults to 12):
            Number of decoder layers.
        encoder_attention_heads (`int`, *optional*, defaults to 16):
            Number of attention heads for each attention layer in the Transformer encoder.
        decoder_attention_heads (`int`, *optional*, defaults to 16):
            Number of attention heads for each attention layer in the Transformer decoder.
        decoder_ffn_dim (`int`, *optional*, defaults to 4096):
            Dimensionality of the "intermediate" (often named feed-forward) layer in decoder.
        encoder_ffn_dim (`int`, *optional*, defaults to 4096):
            Dimensionality of the "intermediate" (often named feed-forward) layer in decoder.
        activation_function (`str` or `function`, *optional*, defaults to `"gelu"`):
            The non-linear activation function (function or string) in the encoder and pooler. If string, `"gelu"`,
            `"relu"`, `"silu"` and `"gelu_new"` are supported.
        dropout (`float`, *optional*, defaults to 0.1):
            The dropout probability for all fully connected layers in the embeddings, encoder, and pooler.
        attention_dropout (`float`, *optional*, defaults to 0.0):
            The dropout ratio for the attention probabilities.
        activation_dropout (`float`, *optional*, defaults to 0.0):
            The dropout ratio for activations inside the fully connected layer.
        classifier_dropout (`float`, *optional*, defaults to 0.0):
            The dropout ratio for classifier.
        max_position_embeddings (`int`, *optional*, defaults to 1024):
            The maximum sequence length that this model might ever be used with. Typically set this to something large
            just in case (e.g., 512 or 1024 or 2048).
        init_std (`float`, *optional*, defaults to 0.02):
            The standard deviation of the truncated_normal_initializer for initializing all weight matrices.
        encoder_layerdrop (`float`, *optional*, defaults to 0.0):
            The LayerDrop probability for the encoder. See the [LayerDrop paper](see https://arxiv.org/abs/1909.11556)
            for more details.
        decoder_layerdrop (`float`, *optional*, defaults to 0.0):
            The LayerDrop probability for the decoder. See the [LayerDrop paper](see https://arxiv.org/abs/1909.11556)
            for more details.
        scale_embedding (`bool`, *optional*, defaults to `False`):
            Scale embeddings by diving by sqrt(d_model).
        use_cache (`bool`, *optional*, defaults to `True`):
            Whether or not the model should return the last key/values attentions (not used by all models)
        forced_eos_token_id (`int`, *optional*, defaults to 2):
            The id of the token to force as the last generated token when `max_length` is reached. Usually set to
            `eos_token_id`.

    Example:

    ```python
    >>> from transformers import MBartConfig, MBartModel

    >>> # Initializing a MBART facebook/mbart-large-cc25 style configuration
    >>> configuration = MBartConfig()

    >>> # Initializing a model (with random weights) from the facebook/mbart-large-cc25 style configuration
    >>> model = MBartModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```ÚmbartÚpast_key_valuesÚencoder_attention_headsÚd_model)Únum_attention_headsÚhidden_sizec           	      óH  •— || _         || _        || _        || _        || _        || _        || _        || _        || _        || _	        || _
        || _        || _        || _        |	| _        |
| _        || _        || _        || _        || _        t)        ‰| �T  d|||||dœ|¤Ž y )N)Úpad_token_idÚbos_token_idÚeos_token_idÚis_encoder_decoderÚforced_eos_token_id© )Ú
vocab_sizeÚmax_position_embeddingsr   Úencoder_ffn_dimÚencoder_layersr   Údecoder_ffn_dimÚdecoder_layersÚdecoder_attention_headsÚdropoutÚattention_dropoutÚactivation_dropoutÚactivation_functionÚinit_stdÚencoder_layerdropÚdecoder_layerdropÚclassifier_dropoutÚ	use_cacheÚnum_hidden_layersÚscale_embeddingÚsuperÚ__init__)Úselfr    r!   r#   r"   r   r%   r$   r&   r,   r-   r/   r   r*   r   r'   r(   r)   r+   r.   r1   r   r   r   r   ÚkwargsÚ	__class__s                             €úk/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/mbart/configuration_mbart.pyr3   zMBartConfig.__init__l   sË   ø€ ð8 %ˆŒØ'>ˆÔ$ØˆŒØ.ˆÔØ,ˆÔØ'>ˆÔ$Ø.ˆÔØ,ˆÔØ'>ˆÔ$ØˆŒØ!2ˆÔØ"4ˆÔØ#6ˆÔ Ø ˆŒØ!2ˆÔØ!2ˆÔØ"4ˆÔØ"ˆŒØ!/ˆÔØ.ˆÔÜ‰Ñð 	
Ø%Ø%Ø%Ø1Ø 3ñ	
ð ó	
ó    )iYÄ  é   é   é   é   r:   r;   r<   ç        r=   TTÚgelur9   gš™™™™™¹?r=   r=   g{®Gáz”?r=   Fé   r   é   r@   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
model_typeÚkeys_to_ignore_at_inferenceÚattribute_mapr3   Ú__classcell__©r6   s   @r7   r   r      sy   ø„ ñGðR €JØ#4Ð"5ÐØ,EÐV_Ñ`€Mð Ø $ØØØ "ØØØ "ØØØØØ"ØØØØØØØØØØØ÷37
ñ 7
r8   r   c                   ó^  ‡ — e Zd Zedeeeeef   f   fd„«       Zedeeeeef   f   fˆ fd„«       Z	 	 	 	 dde	dedede
dee   deeef   fd	„Z	 	 	 	 dde	dedede
dee   deeef   fd
„Z	 	 	 	 dde	dedede
dee   deeef   fd„Z	 	 	 	 dde	dedede
dee   deeef   fd„Zˆ fd„Zˆ xZS )ÚMBartOnnxConfigÚreturnc           	      ó  — | j                   dv rdt        ddddœfddddœfg«      }| j                  rddi|d<   dd	dœ|d
<   ndddœ|d<   dddœ|d
<   | j                  r| j                  |d¬«       |S | j                   dk(  r\t        ddddœfddddœfg«      }| j                  r7| j                  \  }}t        |«      D ]  }dddœ|d|› d�<   dddœ|d|› d�<   Œ |S t        ddddœfddddœfddddœfd
dddœfg«      }|S )N©Údefaultz
seq2seq-lmÚ	input_idsÚbatchÚencoder_sequence)r   r?   Úattention_maskr   Údecoder_input_idsz past_decoder_sequence + sequenceÚdecoder_attention_maskÚdecoder_sequenceÚinputs)Ú	directionú	causal-lmúpast_sequence + sequence©r   r@   zpast_key_values.ú.keyú.value)Útaskr   Úuse_pastÚfill_with_past_key_values_Ú
num_layersÚrange)r4   Úcommon_inputsÚnum_encoder_layersÚ_Úis        r7   rW   zMBartOnnxConfig.inputs¨   sœ  € à�9‰9Ð1Ñ1Ü'à  gÐ2DÑ"EÐFØ%¨7Ð7IÑ'JÐKðóˆMð �}Š}Ø67¸°\�Ð1Ñ2Ø>EÐJlÑ:m�Ð6Ò7à9@ÐEWÑ5X�Ð1Ñ2Ø>EÐJ\Ñ:]�Ð6Ñ7à�}Š}Ø×/Ñ/°ÈÐ/ÔRð0 Ðð/ �Y‰Y˜+Ò%ä'à  gÐ2DÑ"EÐFØ%¨7Ð7IÑ'JÐKðóˆMð �}Š}Ø(,¯©Ñ%Ð" AÜÐ1Ó2ò n�AØDKÐPjÑ@k�MÐ$4°Q°C°tÐ"<Ñ=ØFMÐRlÑBm�MÐ$4°Q°C°vÐ">Ò?ðnð Ðô (à  gÐ2DÑ"EÐFØ%¨7Ð7IÑ'JÐKØ(¨gÐ:LÑ*MÐNØ-°7Ð?QÑ/RÐSð	óˆMð Ðr8   c                 óÞ   •— | j                   dv rt        ‰| �  }|S t        t        | �
  }| j                  r7| j
                  \  }}t        |«      D ]  }dddœ|d|› d�<   dddœ|d|› d�<   Œ |S )NrN   rQ   rZ   r[   zpresent.r\   r]   )r^   r2   Úoutputsr   r_   ra   rb   )r4   Úcommon_outputsrd   re   rf   r6   s        €r7   rh   zMBartOnnxConfig.outputsÔ   s—   ø€ à�9‰9Ð1Ñ1Ü"™W™_ˆNð Ðô #Ô#5°tÑDˆNØ�}Š}Ø(,¯©Ñ%Ð" AÜÐ1Ó2ò g�AØ=DÐIcÑ9d�N X¨a¨S°Ð#5Ñ6Ø?FÐKeÑ;f�N X¨a¨S°Ð#7Ò8ðgð Ðr8   Ú	tokenizerÚ
batch_sizeÚ
seq_lengthÚis_pairÚ	frameworkc           	      óF  — | j                  |||||«      }| j                  s|nd}| j                  |||||«      }|j                  «       D �	�
ci c]  \  }	}
d|	› �|
“Œ }}	}
t        di |¤|¤Ž}| j                  �r t	        «       st        d«      ‚dd l}|d   j                  \  }}|d   j                  d   }| j                  \  }}|||| j                  j                  |z  f}|dz   }|||| j                  j                  |z  f}|j                  |d   |j                  ||«      gd¬	«      |d<   g |d
<   | j                  \  }}t        ||«      }t        ||«      |z
  }||kD  rdnd}t!        |«      D ]V  }|d
   j#                  |j%                  |«      |j%                  |«      |j%                  |«      |j%                  |«      f«       ŒX |dk(  r|n|}t!        ||«      D ]6  }|d
   j#                  |j%                  |«      |j%                  |«      f«       Œ8 |S c c}
}	w )Nr?   Údecoder_úACannot generate dummy past_keys inputs without PyTorch installed.r   rP   rT   r   rU   ©Údimr   ÚencoderÚdecoderr   )ÚI_generate_dummy_inputs_for_sequence_classification_and_question_answeringr_   ÚitemsÚdictr   Ú
ValueErrorÚtorchÚshaper   Ú_configr   ÚcatÚonesra   ÚminÚmaxrb   ÚappendÚzeros)r4   rj   rk   rl   rm   rn   Úencoder_inputsÚdecoder_seq_lengthÚdecoder_inputsÚnameÚtensorrc   rz   rQ   Úencoder_seq_lengthÚnum_encoder_attention_headsÚnum_decoder_attention_headsÚencoder_shapeÚdecoder_past_lengthÚdecoder_shaperd   Únum_decoder_layersÚmin_num_layersÚmax_num_layersÚremaining_side_namere   r{   s                              r7   Ú1_generate_dummy_inputs_for_default_and_seq2seq_lmzAMBartOnnxConfig._generate_dummy_inputs_for_default_and_seq2seq_lmá   s�  € ð ×gÑgØ�z :¨w¸	ó
ˆð
 04¯}ª}™ZÀ!ÐØ×gÑgØ�zÐ#5°wÀ	ó
ˆð IW×H\ÑH\ÓH^×_¹¸¸f˜H T FÐ+¨VÑ3Ð_ˆÑ_ÜÑ@˜~Ð@°Ñ@ˆà�=‹=Ü%Ô'Ü Ð!dÓeÐeãØ(5°kÑ(B×(HÑ(HÑ%ˆEÐ%Ø!.Ð/BÑ!C×!IÑ!IÈ!Ñ!LÐØGK×G_ÑG_ÑDÐ'Ð)DàØ+Ø"Ø—‘×(Ñ(Ð,GÑGð	ˆMð #5°qÑ"8ÐàØ+Ø#Ø—‘×(Ñ(Ð,GÑGð	ˆMð 7<·i±iØÐ7Ñ8¸%¿*¹*ÀUÐL_Ó:`ÐaÐghð 7@ó 7ˆMÐ2Ñ3ð 02ˆMÐ+Ñ,à59·_±_Ñ2ÐÐ 2Ü Ð!3Ð5GÓHˆNÜ Ð!3Ð5GÓHÈ>ÑYˆNØ/AÐDVÒ/V¡)Ð\eÐä˜>Ó*ò �ØÐ/Ñ0×7Ñ7àŸ™ MÓ2ØŸ™ MÓ2ØŸ™ MÓ2ØŸ™ MÓ2ð	õðð &9¸IÒ%E‘MÈ=ˆEÜ˜>¨>Ó:ò b�ØÐ/Ñ0×7Ñ7¸¿¹ÀUÓ9KÈUÏ[É[ÐY^ÓM_Ð8`ÕaðbàÐùóc `s   ÁHc                 ó  — | j                  |||||«      }| j                  rãt        «       st        d«      ‚dd l}|d   j
                  \  }}	|	dz   }
| j                  \  }}| j                  \  }}|||
| j                  j                  |z  f}|d   j                  }|j                  |d   |j                  ||
|¬«      gd¬«      |d<   t        |«      D �cg c]$  }|j                  |«      |j                  |«      f‘Œ& c}|d	<   |S c c}w )
Nrq   r   rP   r@   rS   )Údtyper?   rr   r   )rv   r_   r   ry   rz   r{   ra   r   r|   r   r”   r}   r~   rb   r‚   )r4   rj   rk   rl   rm   rn   rc   rz   rQ   ÚseqlenÚpast_key_values_lengthrd   re   r‰   Ú
past_shapeÚ
mask_dtypes                   r7   Ú$_generate_dummy_inputs_for_causal_lmz4MBartOnnxConfig._generate_dummy_inputs_for_causal_lm%  s5  € ð ×fÑfØ�z :¨w¸	ó
ˆð �=Š=Ü%Ô'Ü Ð!dÓeÐeãØ)¨+Ñ6×<Ñ<‰MˆE�6à%+¨a¡ZÐ"Ø$(§O¡OÑ!Ð Ø-1×-EÑ-EÑ*Ð'¨àØ+Ø&Ø—‘×(Ñ(Ð,GÑGð	ˆJð 'Ð'7Ñ8×>Ñ>ˆJØ.3¯i©iØÐ/Ñ0°%·*±*¸UÐDZÐbl°*Ó2mÐnÐtuð /8ó /ˆMÐ*Ñ+ô MRÐRdÓLeö0ØGH�—‘˜ZÓ(¨%¯+©+°jÓ*AÒBò0ˆMÐ+Ñ,ð Ðùò0s   Ã)Dc                 ó  — t        |t        j                  d¬«      }|j                  |«      }t        |t        j                  |¬«      }dj                  |j                  g«      |z  g|z  }t         |||¬«      «      }|S )Nr   )Úfixed_dimensionÚnum_token_to_addú )Úreturn_tensors)r   r
   Údefault_fixed_batchÚnum_special_tokens_to_addÚdefault_fixed_sequenceÚjoinÚ	unk_tokenrx   )	r4   rj   rk   rl   rm   rn   Útoken_to_addÚdummy_inputrc   s	            r7   rv   zYMBartOnnxConfig._generate_dummy_inputs_for_sequence_classification_and_question_answeringK  sƒ   € ô 6Ø¬
×(FÑ(FÐYZô
ˆ
ð
 !×:Ñ:¸7ÓCˆÜ5Ø¬
×(IÑ(IÐ\hô
ˆ
ð
 —x‘x ×!4Ñ!4Ð 5Ó6¸ÑCÐDÀzÑQˆÜ™Y {À9ÔMÓNˆØÐr8   c                 óÌ   — | j                   dv r| j                  |||||¬«      }|S | j                   dk(  r| j                  |||||¬«      }|S | j                  |||||¬«      }|S )NrN   )rk   rl   rm   rn   rY   )r^   r’   r™   rv   )r4   rj   rk   rl   rm   rn   rc   s          r7   Úgenerate_dummy_inputsz%MBartOnnxConfig.generate_dummy_inputse  s¢   € ð �9‰9Ð1Ñ1Ø ×RÑRØ j¸ZÐQXÐdmð Só ˆMð Ðð �Y‰Y˜+Ò%Ø ×EÑEØ j¸ZÐQXÐdmð Fó ˆMð Ðð	 !×jÑjØ j¸ZÐQXÐdmð kó ˆMð Ðr8   c                 ót   •— | j                   dv rt        ‰| �	  ||||«      }y t        t        | �  ||||«      }y )NrN   )r^   r2   Ú_flatten_past_key_values_r   )r4   Úflattened_outputr†   ÚidxÚtr6   s        €r7   r©   z)MBartOnnxConfig._flatten_past_key_values_}  sF   ø€ Ø�9‰9Ð1Ñ1Ü$™wÑ@ÐAQÐSWÐY\Ð^_Ó`Ñä$Ô%>ÀÑ_Ø  $¨¨Qó Ñr8   )éÿÿÿÿr­   FN)rA   rB   rC   Úpropertyr   ÚstrÚintrW   rh   r   Úboolr   r   r   r’   r™   rv   r§   r©   rH   rI   s   @r7   rK   rK   §   sÝ  ø„ Øð)˜  W¨S°#¨XÑ%6Ð 6Ñ7ò )ó ð)ðV ð
˜  g¨c°3¨hÑ&7Ð!7Ñ8ô 
ó ð
ð ØØØ*.ñBà&ðBð ðBð ð	Bð
 ðBð ˜JÑ'ðBð 
��c�Ñ	óBðN ØØØ*.ñ$à&ð$ð ð$ð ð	$ð
 ð$ð ˜JÑ'ð$ð 
��c�Ñ	ó$ðR ØØØ*.ñà&ðð ðð ð	ð
 ðð ˜JÑ'ðð 
��c�Ñ	óð: ØØØ*.ñà&ðð ðð ð	ð
 ðð ˜JÑ'ðð 
��c�Ñ	ó÷0ð r8   rK   N)rD   Úcollectionsr   Útypingr   r   r   Ú r   Úconfiguration_utilsr	   Úonnxr
   r   r   Ú
onnx.utilsr   Úutilsr   r   r   Ú
get_loggerrA   Úloggerr   rK   Ú__all__r   r8   r7   ú<module>r¼      si   ðñ  å #ß )Ñ )å #Ý 3ß MÑ MÝ :ß <Ñ <ð 
ˆ×	Ñ	˜HÓ	%€ôE
Ð"ô E
ôR\Ð/ô \ð~ Ð+Ð
,�r8   