Ë
    S^(h}"  ã                   óÀ   — d Z ddlmZ ddlmZmZmZmZ ddlm	Z	m
Z
mZ ddlmZ ddlmZ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GPT-J model configurationé    )ÚOrderedDict)ÚAnyÚListÚMappingÚOptionalé   )ÚPreTrainedTokenizerÚ
TensorTypeÚis_torch_available)ÚPretrainedConfig)ÚOnnxConfigWithPastÚPatchingSpec)Úloggingc                   óX   ‡ — e Zd ZdZdZdddddœZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	ˆ fd„	Zˆ xZS )
Ú
GPTJConfiga=  
    This is the configuration class to store the configuration of a [`GPTJModel`]. It is used to instantiate a GPT-J
    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 GPT-J
    [EleutherAI/gpt-j-6B](https://huggingface.co/EleutherAI/gpt-j-6B) 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 50400):
            Vocabulary size of the GPT-J model. Defines the number of different tokens that can be represented by the
            `inputs_ids` passed when calling [`GPTJModel`].
        n_positions (`int`, *optional*, defaults to 2048):
            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).
        n_embd (`int`, *optional*, defaults to 4096):
            Dimensionality of the embeddings and hidden states.
        n_layer (`int`, *optional*, defaults to 28):
            Number of hidden layers in the Transformer encoder.
        n_head (`int`, *optional*, defaults to 16):
            Number of attention heads for each attention layer in the Transformer encoder.
        rotary_dim (`int`, *optional*, defaults to 64):
            Number of dimensions in the embedding that Rotary Position Embedding is applied to.
        n_inner (`int`, *optional*, defaults to None):
            Dimensionality of the inner feed-forward layers. `None` will set it to 4 times n_embd
        activation_function (`str`, *optional*, defaults to `"gelu_new"`):
            Activation function, to be selected in the list `["relu", "silu", "gelu", "tanh", "gelu_new"]`.
        resid_pdrop (`float`, *optional*, defaults to 0.1):
            The dropout probability for all fully connected layers in the embeddings, encoder, and pooler.
        embd_pdrop (`int`, *optional*, defaults to 0.1):
            The dropout ratio for the embeddings.
        attn_pdrop (`float`, *optional*, defaults to 0.1):
            The dropout ratio for the attention.
        layer_norm_epsilon (`float`, *optional*, defaults to 1e-5):
            The epsilon to use in the layer normalization layers.
        initializer_range (`float`, *optional*, defaults to 0.02):
            The standard deviation of the truncated_normal_initializer for initializing all weight matrices.
        use_cache (`bool`, *optional*, defaults to `True`):
            Whether or not the model should return the last key/values attentions (not used by all models).

    Example:

    ```python
    >>> from transformers import GPTJModel, GPTJConfig

    >>> # Initializing a GPT-J 6B configuration
    >>> configuration = GPTJConfig()

    >>> # Initializing a model from the configuration
    >>> model = GPTJModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```ÚgptjÚn_positionsÚn_embdÚn_headÚn_layer)Úmax_position_embeddingsÚhidden_sizeÚnum_attention_headsÚnum_hidden_layersc                 ó  •— || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        || _        || _        t!        ‰| �D  d|||dœ|¤Ž y )N)Úbos_token_idÚeos_token_idÚtie_word_embeddings© )Ú
vocab_sizer   r   r   r   Ún_innerÚ
rotary_dimÚactivation_functionÚresid_pdropÚ
embd_pdropÚ
attn_pdropÚlayer_norm_epsilonÚinitializer_rangeÚ	use_cacher   r   ÚsuperÚ__init__)Úselfr    r   r   r   r   r"   r!   r#   r$   r%   r&   r'   r(   r)   r   r   r   ÚkwargsÚ	__class__s                      €úi/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/gptj/configuration_gptj.pyr+   zGPTJConfig.__init__]   sž   ø€ ð* %ˆŒØ&ˆÔØˆŒØˆŒØˆŒØˆŒØ$ˆŒØ#6ˆÔ Ø&ˆÔØ$ˆŒØ$ˆŒØ"4ˆÔØ!2ˆÔØ"ˆŒà(ˆÔØ(ˆÔä‰Ñð 	
Ø%°LÐViñ	
Ømsó	
ó    )iàÄ  i   i   é   é   é@   NÚgelu_newç        r5   r5   gñhãˆµøä>g{®Gáz”?TéPÄ  r6   F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
model_typeÚattribute_mapr+   Ú__classcell__©r.   s   @r/   r   r      sb   ø„ ñ5ðn €Jà#0ØØ'Ø&ñ	€Mð ØØØØØØØ&ØØØØØØØØØ!÷%)
ñ )
r0   r   c                   óè   ‡ — e Zd Z	 	 	 ddededee   defˆ fd„Ze	de
ee
eef   f   fd„«       Ze	defd„«       Ze	defd	„«       Z	 	 	 	 dd
ededededee   de
eef   fˆ fd„Ze	defd„«       Zˆ xZS )ÚGPTJOnnxConfigÚconfigÚtaskÚpatching_specsÚuse_pastc                 ó~   •— t         ‰| �  ||||¬«       t        | j                  dd «      sd| j                  _        y y )N)rB   rC   rD   Úpad_token_idr   )r*   r+   ÚgetattrÚ_configrF   )r,   rA   rB   rC   rD   r.   s        €r/   r+   zGPTJOnnxConfig.__init__‹   s=   ø€ ô 	‰Ñ˜ d¸>ÐT\ÐÔ]Ü�t—|‘| ^°TÔ:à()ˆD�L‰LÕ%ð ;r0   Úreturnc                 óˆ   — t        ddddœi«      }| j                  r| j                  |d¬«       dddœ|d<   |S dddœ|d<   |S )	NÚ	input_idsÚbatchÚsequence)r   é   Úinputs)Ú	directionzpast_sequence + sequenceÚattention_mask)r   rD   Úfill_with_past_key_values_)r,   Úcommon_inputss     r/   rO   zGPTJOnnxConfig.inputs—   sa   € ä# [°gÀ*Ñ2MÐ$NÓOˆØ�=Š=Ø×+Ñ+¨MÀXÐ+ÔNØ29Ð>XÑ.YˆMÐ*Ñ+ð Ðð 3:¸jÑ.IˆMÐ*Ñ+àÐr0   c                 ó.   — | j                   j                  S ©N)rH   r   ©r,   s    r/   Ú
num_layerszGPTJOnnxConfig.num_layers¢   s   € à�|‰|×#Ñ#Ð#r0   c                 ó.   — | j                   j                  S rU   )rH   r   rV   s    r/   r   z"GPTJOnnxConfig.num_attention_heads¦   s   € à�|‰|×"Ñ"Ð"r0   Ú	tokenizerÚ
batch_sizeÚ
seq_lengthÚis_pairÚ	frameworkc                 óh  •— t         t        | �  |||||¬«      }t        d|d   i«      }| j                  r§t        «       st        d«      ‚dd l}|d   j                  \  }	}
|
dz   }|	| j                  || j                  j                  | j                  z  f}t        | j                  «      D �cg c]$  }|j                  |«      |j                  |«      f‘Œ& c}|d<   |d   |d<   | j                  r<|d   j                  }j!                  |d   |j#                  	|¬«      gd	¬
«      |d<   |S c c}w )N)rZ   r[   r\   r]   rK   zACannot generate dummy past_keys inputs without PyTorch installed.r   é   Úpast_key_valuesrQ   )ÚdtyperN   )Údim)r*   r   Úgenerate_dummy_inputsr   rD   r   Ú
ValueErrorÚtorchÚshaper   rH   r   ÚrangerW   Úzerosra   ÚcatÚones)r,   rY   rZ   r[   r\   r]   rS   Úordered_inputsre   rL   ÚseqlenÚpast_key_values_lengthÚ
past_shapeÚ_Ú
mask_dtyper.   s                  €r/   rc   z$GPTJOnnxConfig.generate_dummy_inputsª   s^  ø€ ô Ô0°$ÑMØ *¸ÈWÐ`ið Nó 
ˆô
 % k°=ÀÑ3MÐ%NÓOˆð �=Š=Ü%Ô'Ü Ð!dÓeÐeãà -¨kÑ :× @Ñ @‘��và)/°!©Ð&àØ×,Ñ,Ø*Ø—L‘L×,Ñ,°×0HÑ0HÑHð	�
ô QVÐVZ×VeÑVeÓPfö5ØKL�U—[‘[ Ó,¨e¯k©k¸*Ó.EÒFò5�Ð0Ñ1ð ,9Ð9IÑ+JˆÐ'Ñ(Ø�=Š=Ø'Ð(8Ñ9×?Ñ?ˆJØ/4¯y©yØÐ 0Ñ1°5·:±:¸eÐE[Ðcm°:Ó3nÐoÐuvð 09ó 0ˆNÐ+Ñ,ð Ðùò5s   Â.)D/c                  ó   — y)Né   r   rV   s    r/   Údefault_onnx_opsetz!GPTJOnnxConfig.default_onnx_opsetÖ   s   € àr0   )ÚdefaultNF)éÿÿÿÿru   FN)r7   r8   r9   r   Ústrr   r   Úboolr+   Úpropertyr   ÚintrO   rW   r   r	   r   r
   r   rc   rs   r=   r>   s   @r/   r@   r@   Š   s  ø„ ð Ø-1Øñ
*à ð
*ð ð
*ð ˜\Ñ*ð	
*ð
 õ
*ð ð˜  W¨S°#¨XÑ%6Ð 6Ñ7ò ó ðð ð$˜Cò $ó ð$ð ð# Sò #ó ð#ð ØØØ*.ñ*à&ð*ð ð*ð ð	*ð
 ð*ð ˜JÑ'ð*ð 
��c�Ñ	õ*ðX ð Cò ó ôr0   r@   N)r:   Úcollectionsr   Útypingr   r   r   r   Ú r	   r
   r   Úconfiguration_utilsr   Úonnxr   r   Úutilsr   Ú
get_loggerr7   Úloggerr   r@   Ú__all__r   r0   r/   ú<module>rƒ      sc   ðñ  å #ß /Ó /ç CÑ CÝ 3ß 4Ý ð 
ˆ×	Ñ	˜HÓ	%€ôi
Ð!ô i
ôZNÐ'ô Nðb Ð)Ð
*�r0   