Ë
    S^(h–I  ã                   óÔ   — 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 ddlmZmZmZ dd	lmZ dd
lmZ  ej,                  e«      Z G d„ de
«      Z G d„ de«      ZddgZy)zBlenderbot model configurationé    )ÚOrderedDict)ÚAnyÚMappingÚOptionalé   )ÚPreTrainedTokenizer)ÚPretrainedConfig)Ú
TensorTypeÚis_torch_available)Ú
OnnxConfigÚOnnxConfigWithPastÚOnnxSeq2SeqConfigWithPast)Ú compute_effective_axis_dimension)Úloggingc                   ój   ‡ — e Zd ZdZdZdgZdddœZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd„	Zˆ xZS )	ÚBlenderbotConfigaê  
    This is the configuration class to store the configuration of a [`BlenderbotModel`]. It is used to instantiate an
    Blenderbot 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 Blenderbot
    [facebook/blenderbot-3B](https://huggingface.co/facebook/blenderbot-3B) 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 Blenderbot model. Defines the number of different tokens that can be represented by
            the `inputs_ids` passed when calling [`BlenderbotModel`] or [`TFBlenderbotModel`].
        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.
        max_position_embeddings (`int`, *optional*, defaults to 128):
            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 BlenderbotConfig, BlenderbotModel

    >>> # Initializing a Blenderbot facebook/blenderbot-3B style configuration
    >>> configuration = BlenderbotConfig()

    >>> # Initializing a model (with random weights) from the facebook/blenderbot-3B style configuration
    >>> model = BlenderbotModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```Ú
blenderbotÚpast_key_valuesÚencoder_attention_headsÚd_model)Únum_attention_headsÚhidden_sizec                 ó>  •— || _         || _        || _        || _        || _        || _        || _        || _        || _        || _	        || _
        || _        || _        || _        |	| _        |
| _        || _        || _        || _        t'        ‰| �P  d|||||||dœ|¤Ž y )N)Úpad_token_idÚbos_token_idÚeos_token_idÚis_encoder_decoderÚdecoder_start_token_idÚencoder_no_repeat_ngram_sizeÚ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Ú	use_cacheÚnum_hidden_layersÚscale_embeddingÚsuperÚ__init__)Úselfr"   r#   r%   r$   r   r'   r&   r(   r.   r/   r0   r   r,   r   r)   r*   r+   r-   r   r2   r   r   r   r   r    ÚkwargsÚ	__class__s                              €úu/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/blenderbot/configuration_blenderbot.pyr4   zBlenderbotConfig.__init__k   sÉ   ø€ ð: %ˆŒØ'>ˆÔ$ØˆŒØ.ˆÔØ,ˆÔØ'>ˆÔ$Ø.ˆÔØ,ˆÔØ'>ˆÔ$ØˆŒØ!2ˆÔØ"4ˆÔØ#6ˆÔ Ø ˆŒØ!2ˆÔØ!2ˆÔØ"ˆŒØ!/ˆÔØ.ˆÔä‰Ñð 		
Ø%Ø%Ø%Ø1Ø#9Ø)EØ 3ñ		
ð ó		
ó    )iH  é€   é   é (  é    é   r<   r=   ç        r?   TTÚgelui 
  gš™™™™™¹?r?   r?   g{®Gáz”?é   Fr   rA   r;   r   r;   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
model_typeÚkeys_to_ignore_at_inferenceÚattribute_mapr4   Ú__classcell__©r7   s   @r8   r   r      s|   ø„ ñEðN €JØ#4Ð"5ÐØ,EÐV_Ñ`€Mð Ø #ØØØ "ØØØ "ØØØØØ"ØØØØØØ ØØØØØ%&Ø÷5:
ñ :
r9   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deeeeef   f   defd„Zˆ xZS )ÚBlenderbotOnnxConfigÚ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   rA   Úattention_maskr   Údecoder_input_idsú 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)r5   Úcommon_inputsÚ_Únum_decoder_layersÚis        r8   rY   zBlenderbotOnnxConfig.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ð. Ðð- �Y‰Y˜+Ò%Ü'à  gÐ2DÑ"EÐFØ%¨7Ð7IÑ'JÐKðóˆMð �}Š}Ø(,¯©Ñ%�Ð%ÜÐ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ð Ðr9   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 )NrO   rR   r\   r]   zpresent.r^   r_   )r`   r3   Úoutputsr   ra   rc   rd   )r5   Úcommon_outputsÚnum_encoder_layersrf   rh   r7   s        €r8   rj   zBlenderbotOnnxConfig.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ð Ðr9   Ú	tokenizerÚ
batch_sizeÚ
seq_lengthÚis_pairÚ	frameworkc           	      ó\  — | 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}|}|||| j                  j                  |z  f}|j                  |d   |j                  ||«      gd¬«      |d<   g |d	<   | j                  \  }}t        |«      D ]V  }|d	   j                  |j!                  |«      |j!                  |«      |j!                  |«      |j!                  |«      f«       ŒX |S c c}
}	w )NrA   Údecoder_úACannot generate dummy past_keys inputs without PyTorch installed.r   rQ   rU   rW   ©Údimr   r!   )ÚI_generate_dummy_inputs_for_sequence_classification_and_question_answeringra   ÚitemsÚdictr   Ú
ValueErrorÚtorchÚshaper   Ú_configr   ÚcatÚonesrc   rd   ÚappendÚzeros)r5   rm   rn   ro   rp   rq   Úencoder_inputsÚdecoder_seq_lengthÚdecoder_inputsÚnameÚtensorre   r{   rR   Úencoder_seq_lengthÚnum_encoder_attention_headsÚnum_decoder_attention_headsÚencoder_shapeÚdecoder_past_lengthÚdecoder_shaperf   rg   s                         r8   Ú1_generate_dummy_inputs_for_default_and_seq2seq_lmzFBlenderbotOnnxConfig._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ÐàØ+Ø#Ø—‘×(Ñ(Ð,GÑGð	ˆMð 7<·i±iØÐ7Ñ8¸%¿*¹*ÀUÐL_Ó:`ÐaÐghð 7@ó 7ˆMÐ2Ñ3ð 02ˆMÐ+Ñ,Ø$(§O¡OÑ!ˆAÐ!äÐ-Ó.ò �ØÐ/Ñ0×7Ñ7àŸ™ MÓ2ØŸ™ MÓ2ØŸ™ MÓ2ØŸ™ MÓ2ð	õðð ÐùóO `s   ÁF(c                 ó  — | j                  |||||«      }| j                  ràt        «       st        d«      ‚dd l}|d   j
                  \  }}	|	}
| 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 )	Nrt   r   rQ   rT   )ÚdtyperA   ru   r   )rw   ra   r   rz   r{   r|   rc   r   r}   r   r�   r~   r   rd   r�   )r5   rm   rn   ro   rp   rq   re   r{   rR   ÚseqlenÚpast_key_values_lengthrf   rg   rˆ   Ú
past_shapeÚ
mask_dtypes                   r8   Ú$_generate_dummy_inputs_for_causal_lmz9BlenderbotOnnxConfig._generate_dummy_inputs_for_causal_lm  s1  € ð ×fÑfØ�z :¨w¸	ó
ˆð �=Š=Ü%Ô'Ü Ð!dÓeÐeãØ)¨+Ñ6×<Ñ<‰MˆE�6Ø%+Ð"Ø$(§O¡OÑ!ˆAÐ!Ø-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_tokenry   )	r5   rm   rn   ro   rp   rq   Útoken_to_addÚdummy_inputre   s	            r8   rw   z^BlenderbotOnnxConfig._generate_dummy_inputs_for_sequence_classification_and_question_answering>  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ˆØÐr9   c                 óÌ   — | j                   dv r| j                  |||||¬«      }|S | j                   dk(  r| j                  |||||¬«      }|S | j                  |||||¬«      }|S )NrO   )rn   ro   rp   rq   r[   )r`   r�   r”   rw   )r5   rm   rn   ro   rp   rq   re   s          r8   Úgenerate_dummy_inputsz*BlenderbotOnnxConfig.generate_dummy_inputsY  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ð Ðr9   c                 ót   •— | j                   dv rt        ‰| �	  ||||«      }y t        t        | �  ||||«      }y )NrO   )r`   r3   Ú_flatten_past_key_values_r   )r5   Úflattened_outputr…   ÚidxÚtr7   s        €r8   r¤   z.BlenderbotOnnxConfig._flatten_past_key_values_r  sF   ø€ Ø�9‰9Ð1Ñ1Ü$™wÑ@ÐAQÐSWÐY\Ð^_Ó`Ñä$Ô%>ÀÑ_Ø  $¨¨Qó Ñr9   Úinputs_or_outputsrZ   c                 ó   — |dvrt        d|› d�«      ‚|dk(  rdnd}| j                  \  }}d}|dk(  rdnd	}t        |«      D ]:  }d
|dœ||› d|› d�<   d
|dœ||› d|› d�<   d
|dœ||› d|› d�<   d
|dœ||› d|› d�<   Œ< y )N)rY   rj   z4direction must either be "inputs" or "outputs", but z
 was givenrY   r   ÚpresentÚpast_encoder_sequenceÚpast_decoder_sequencerV   rR   r]   ú.z.decoder.keyz.decoder.valuez.encoder.keyz.encoder.value)rz   rc   rd   )	r5   r¨   rZ   r…   rf   rg   rS   rX   rh   s	            r8   rb   z/BlenderbotOnnxConfig.fill_with_past_key_values_z  sç   € ØÐ1Ñ1ÜÐSÐT]ÐS^Ð^hÐiÓjÐjà$-°Ò$9Ñ ¸yˆØ $§¡ÑˆÐà2ÐØ6?À8Ò6KÑ2ÐQsÐäÐ)Ó*ò 	_ˆAØ?FÐK[Ñ;\Ð   a¨ s¨,Ð7Ñ8ØAHÐM]Ñ=^Ð   a¨ s¨.Ð9Ñ:Ø?FÐK[Ñ;\Ð   a¨ s¨,Ð7Ñ8ØAHÐM]Ñ=^Ð   a¨ s¨.Ð9Ò:ñ		_r9   )éÿÿÿÿr®   FN)rB   rC   rD   Úpropertyr   ÚstrÚintrY   rj   r   Úboolr   r
   r   r�   r”   rw   r¢   r¤   rb   rI   rJ   s   @r8   rL   rL   ¨   sþ  ø„ Øð&˜  W¨S°#¨XÑ%6Ð 6Ñ7ò &ó ð&ðP ð
˜  g¨c°3¨hÑ&7Ð!7Ñ8ô 
ó ð
ð ØØØ*.ñ7à&ð7ð ð7ð ð	7ð
 ð7ð ˜JÑ'ð7ð 
��c�Ñ	ó7ðx ØØØ*.ñ"à&ð"ð ð"ð ð	"ð
 ð"ð ˜JÑ'ð"ð 
��c�Ñ	ó"ðP ØØØ*.ñà&ðð ðð ð	ð
 ðð ˜JÑ'ðð 
��c�Ñ	óð< ØØØ*.ñà&ðð ðð ð	ð
 ðð ˜JÑ'ðð 
��c�Ñ	óô2ð_¸GÀCÈÐQTÐVYÐQYÑIZÐDZÑ<[ð _Ðhk÷ _r9   rL   N)rE   Úcollectionsr   Útypingr   r   r   Ú r   Úconfiguration_utilsr	   Ú
file_utilsr
   r   Úonnxr   r   r   Ú
onnx.utilsr   Úutilsr   Ú
get_loggerrB   Úloggerr   rL   Ú__all__r!   r9   r8   ú<module>r¾      sk   ðñ %å #ß )Ñ )å #Ý 3ß 8ß MÑ MÝ :Ý ð 
ˆ×	Ñ	˜HÓ	%€ôF
Ð'ô F
ôR`_Ð4ô `_ðF Ð5Ð
6�r9   