Ë
    S^(hŒI  ã                   óÔ   — d Z ddl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BART model configurationé    N)ÚOrderedDict)ÚAnyÚMappingÚOptionalé   )ÚPreTrainedTokenizer)ÚPretrainedConfig)Ú
OnnxConfigÚOnnxConfigWithPastÚOnnxSeq2SeqConfigWithPast)Ú compute_effective_axis_dimension)Ú
TensorTypeÚis_torch_availableÚloggingc                   ól   ‡ — e Zd ZdZdZdgZdddœZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd„	Zˆ xZS )	Ú
BartConfiga“  
    This is the configuration class to store the configuration of a [`BartModel`]. It is used to instantiate a BART
    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 BART
    [facebook/bart-large](https://huggingface.co/facebook/bart-large) 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 BART model. Defines the number of different tokens that can be represented by the
            `inputs_ids` passed when calling [`BartModel`] or [`TFBartModel`].
        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).
        num_labels (`int`, *optional*, defaults to 3):
            The number of labels to use in [`BartForSequenceClassification`].
        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 BartConfig, BartModel

    >>> # Initializing a BART facebook/bart-large style configuration
    >>> configuration = BartConfig()

    >>> # Initializing a model (with random weights) from the facebook/bart-large style configuration
    >>> model = BartModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```ÚbartÚpast_key_valuesÚencoder_attention_headsÚd_model)Únum_attention_headsÚhidden_sizec                 óô  •— || _         || _        || _        || _        || _        || _        || _        || _        || _        || _	        || _
        || _        || _        || _        |	| _        |
| _        || _        || _        || _        || _        t)        ‰| �T  d|||||||dœ|¤Ž | j,                  €H|j/                  dd«      r5| j0                  | _        t3        j4                  d| j0                  › d�«       y y y )N)Ú
num_labelsÚpad_token_idÚbos_token_idÚeos_token_idÚis_encoder_decoderÚdecoder_start_token_idÚforced_eos_token_idÚforce_bos_token_to_be_generatedFz:Please make sure the config includes `forced_bos_token_id=zT` in future versions. The config can simply be saved and uploaded again to be fixed.© )Ú
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__Úforced_bos_token_idÚgetr   ÚwarningsÚwarn)Úselfr#   r$   r&   r%   r   r(   r'   r)   r/   r0   r-   r   r*   r+   r,   r.   r1   r4   r2   r   r   r   r   r   r   r    ÚkwargsÚ	__class__s                               €úi/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/bart/configuration_bart.pyr6   zBartConfig.__init__o   s,  ø€ ð< %ˆŒØ'>ˆÔ$ØˆŒØ.ˆÔØ,ˆÔØ'>ˆÔ$Ø.ˆÔØ,ˆÔØ'>ˆÔ$ØˆŒØ!2ˆÔØ"4ˆÔØ#6ˆÔ Ø ˆŒØ!2ˆÔØ!2ˆÔØ"4ˆÔØ"ˆŒØ!/ˆÔØ.ˆÔä‰Ñð 		
Ø!Ø%Ø%Ø%Ø1Ø#9Ø 3ñ		
ð ò		
ð ×#Ñ#Ð+°·
±
Ð;\Ð^cÔ0dØ'+×'8Ñ'8ˆDÔ$Ü�M‰MØLÈT×M^ÑM^ÐL_ð `Qð Qõð 1eÐ+ó    )iYÄ  é   é   é   é   rA   rB   rC   ç        rD   Úgelur@   gš™™™™™¹?rD   rD   g{®Gáz”?rD   FTr   é   r   é   TrG   rG   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
model_typeÚkeys_to_ignore_at_inferenceÚattribute_mapr6   Ú__classcell__©r=   s   @r>   r   r      s�   ø„ ñIðV €JØ#4Ð"5ÐØ,EÐV_Ñ`€Mð Ø $ØØØ "ØØØ "ØØØ"ØØØØØØØØØØØØØØ Ø÷7Dñ Dr?   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 )ÚBartOnnxConfigÚ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   rF   Úattention_maskr   Údecoder_input_idsz past_decoder_sequence + sequenceÚdecoder_attention_maskÚdecoder_sequenceÚinputs)Ú	directionú	causal-lmúpast_sequence + sequence©r   rG   zpast_key_values.ú.keyú.value)Útaskr   Úuse_pastÚfill_with_past_key_values_Ú
num_layersÚrange)r;   Úcommon_inputsÚnum_encoder_layersÚ_Úis        r>   r^   zBartOnnxConfig.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ð Ðr?   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 )NrU   rX   ra   rb   zpresent.rc   rd   )re   r5   Úoutputsr   rf   rh   ri   )r;   Úcommon_outputsrk   rl   rm   r=   s        €r>   ro   zBartOnnxConfig.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ð Ðr?   Ú	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 )NrF   Údecoder_úACannot generate dummy past_keys inputs without PyTorch installed.r   rW   r[   r   r\   ©Údimr   ÚencoderÚdecoderr"   )ÚI_generate_dummy_inputs_for_sequence_classification_and_question_answeringrf   ÚitemsÚdictr   Ú
ValueErrorÚtorchÚshaper   Ú_configr   ÚcatÚonesrh   ÚminÚmaxri   ÚappendÚzeros)r;   rq   rr   rs   rt   ru   Úencoder_inputsÚdecoder_seq_lengthÚdecoder_inputsÚnameÚtensorrj   r�   rX   Úencoder_seq_lengthÚnum_encoder_attention_headsÚnum_decoder_attention_headsÚencoder_shapeÚdecoder_past_lengthÚdecoder_shaperk   Únum_decoder_layersÚmin_num_layersÚmax_num_layersÚremaining_side_namerl   r‚   s                              r>   Ú1_generate_dummy_inputs_for_default_and_seq2seq_lmz@BartOnnxConfig._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 )
Nrx   r   rW   rG   rZ   )ÚdtyperF   ry   r   )r}   rf   r   r€   r�   r‚   rh   r   rƒ   r   r›   r„   r…   ri   r‰   )r;   rq   rr   rs   rt   ru   rj   r�   rX   ÚseqlenÚpast_key_values_lengthrk   rl   r�   Ú
past_shapeÚ
mask_dtypes                   r>   Ú$_generate_dummy_inputs_for_causal_lmz3BartOnnxConfig._generate_dummy_inputs_for_causal_lm4  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_tokenr   )	r;   rq   rr   rs   rt   ru   Útoken_to_addÚdummy_inputrj   s	            r>   r}   zXBartOnnxConfig._generate_dummy_inputs_for_sequence_classification_and_question_answeringZ  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ˆØÐr?   c                 óÌ   — | j                   dv r| j                  |||||¬«      }|S | j                   dk(  r| j                  |||||¬«      }|S | j                  |||||¬«      }|S )NrU   )rr   rs   rt   ru   r`   )re   r™   r    r}   )r;   rq   rr   rs   rt   ru   rj   s          r>   Úgenerate_dummy_inputsz$BartOnnxConfig.generate_dummy_inputst  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ð Ðr?   c                 ót   •— | j                   dv rt        ‰| �	  ||||«      }y t        t        | �  ||||«      }y )NrU   )re   r5   Ú_flatten_past_key_values_r   )r;   Úflattened_outputr�   ÚidxÚtr=   s        €r>   r°   z(BartOnnxConfig._flatten_past_key_values_Œ  sF   ø€ Ø�9‰9Ð1Ñ1Ü$™wÑ@ÐAQÐSWÐY\Ð^_Ó`Ñä$Ô%>ÀÑ_Ø  $¨¨Qó Ñr?   )éÿÿÿÿr´   FN)rH   rI   rJ   Úpropertyr   ÚstrÚintr^   ro   r   Úboolr   r   r   r™   r    r}   r®   r°   rO   rP   s   @r>   rR   rR   ¶   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ð r?   rR   )rK   r9   Úcollectionsr   Útypingr   r   r   Ú r   Úconfiguration_utilsr	   Úonnxr
   r   r   Ú
onnx.utilsr   Úutilsr   r   r   Ú
get_loggerrH   Úloggerr   rR   Ú__all__r"   r?   r>   ú<module>rÃ      sl   ðñ ã Ý #ß )Ñ )å #Ý 3ß MÑ MÝ :ß <Ñ <ð 
ˆ×	Ñ	˜HÓ	%€ôTÐ!ô Tôn\Ð.ô \ð~ Ð)Ð
*�r?   