Ë
    S^(hG%  ã                   óÀ   — 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CodeGen model configurationé    )ÚOrderedDict)ÚAnyÚListÚMappingÚOptionalé   )ÚPreTrainedTokenizerÚ
TensorTypeÚis_torch_available)ÚPretrainedConfig)ÚOnnxConfigWithPastÚPatchingSpec)Úloggingc                   óZ   ‡ — e Zd ZdZdZdddddœZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	ˆ fd„	Zˆ xZS )
ÚCodeGenConfiga²  
    This is the configuration class to store the configuration of a [`CodeGenModel`]. It is used to instantiate a
    CodeGen 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 CodeGen
    [Salesforce/codegen-2B-mono](https://huggingface.co/Salesforce/codegen-2B-mono) 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 CodeGen model. Defines the number of different tokens that can be represented by the
            `inputs_ids` passed when calling [`CodeGenModel`].
        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_ctx (`int`, *optional*, defaults to 2048):
            This attribute is used in `CodeGenModel.__init__` without any real effect.
        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*):
            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.0):
            The dropout probability for all fully connected layers in the embeddings, encoder, and pooler.
        embd_pdrop (`int`, *optional*, defaults to 0.0):
            The dropout ratio for the embeddings.
        attn_pdrop (`float`, *optional*, defaults to 0.0):
            The dropout ratio for the attention.
        layer_norm_epsilon (`float`, *optional*, defaults to 1e-05):
            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).
        bos_token_id (`int`, *optional*, defaults to 50256):
            Beginning of stream token id.
        eos_token_id (`int`, *optional*, defaults to 50256):
            End of stream token id.
        tie_word_embeddings (`bool`, *optional*, defaults to `False`):
            Whether the model's input and output word embeddings should be tied. Note that this is only relevant if the
            model has a output word embedding layer.

    Example:

    ```python
    >>> from transformers import CodeGenConfig, CodeGenModel

    >>> # Initializing a CodeGen 6B configuration
    >>> configuration = CodeGenConfig()

    >>> # Initializing a model (with random weights) from the configuration
    >>> model = CodeGenModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```ÚcodegenÚn_positionsÚn_embdÚn_headÚn_layer)Úmax_position_embeddingsÚhidden_sizeÚnum_attention_headsÚnum_hidden_layersc                 ó  •— || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        || _        || _        || _        t#        ‰| �H  d|||dœ|¤Ž y )N)Úbos_token_idÚeos_token_idÚtie_word_embeddings© )Ú
vocab_sizeÚn_ctxr   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   r   ÚkwargsÚ	__class__s                       €úo/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/codegen/configuration_codegen.pyr,   zCodeGenConfig.__init__f   s¥   ø€ ð, %ˆŒØˆŒ
Ø&ˆÔØˆŒØˆŒØˆŒØˆŒØ$ˆŒØ#6ˆÔ Ø&ˆÔØ$ˆŒØ$ˆŒØ"4ˆÔØ!2ˆÔØ"ˆŒà(ˆÔØ(ˆÔä‰Ñð 	
Ø%°LÐViñ	
Ømsó	
ó    )iàÄ  é   r2   i   é   é   é@   NÚgelu_newç        r7   r7   gñhãˆµøä>g{®Gáz”?TéPÄ  r8   F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
model_typeÚattribute_mapr,   Ú__classcell__©r/   s   @r0   r   r      se   ø„ ñ>ð@ €Jà#0ØØ'Ø&ñ	€Mð ØØØØØØØØ&ØØØØØØØØØ!÷'+
ñ +
r1   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 )ÚCodeGenOnnxConfigÚconfigÚtaskÚpatching_specsÚuse_pastc                 ó~   •— t         ‰| �  ||||¬«       t        | j                  dd «      sd| j                  _        y y )N)rD   rE   rF   Úpad_token_idr   )r+   r,   ÚgetattrÚ_configrH   )r-   rC   rD   rE   rF   r/   s        €r0   r,   zCodeGenOnnxConfig.__init__–   s=   ø€ ô 	‰Ñ˜ d¸>ÐT\ÐÔ]Ü�t—|‘| ^°TÔ:à()ˆD�L‰LÕ%ð ;r1   Ú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   rF   Úfill_with_past_key_values_)r-   Úcommon_inputss     r0   rQ   zCodeGenOnnxConfig.inputs¢   sa   € ä# [°gÀ*Ñ2MÐ$NÓOˆØ�=Š=Ø×+Ñ+¨MÀXÐ+ÔNØ29Ð>XÑ.YˆMÐ*Ñ+ð Ðð 3:¸jÑ.IˆMÐ*Ñ+àÐr1   c                 ó.   — | j                   j                  S ©N)rJ   r   ©r-   s    r0   Ú
num_layerszCodeGenOnnxConfig.num_layers­   s   € à�|‰|×#Ñ#Ð#r1   c                 ó.   — | j                   j                  S rW   )rJ   r   rX   s    r0   r   z%CodeGenOnnxConfig.num_attention_heads±   s   € à�|‰|×"Ñ"Ð"r1   Ú	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)r\   r]   r^   r_   rM   zACannot generate dummy past_keys inputs without PyTorch installed.r   é   Úpast_key_valuesrS   )ÚdtyperP   )Údim)r+   r   Úgenerate_dummy_inputsr   rF   r   Ú
ValueErrorÚtorchÚshaper   rJ   r   ÚrangerY   Úzerosrc   ÚcatÚones)r-   r[   r\   r]   r^   r_   rU   Úordered_inputsrg   rN   ÚseqlenÚpast_key_values_lengthÚ
past_shapeÚ_Ú
mask_dtyper/   s                  €r0   re   z'CodeGenOnnxConfig.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   rX   s    r0   Údefault_onnx_opsetz$CodeGenOnnxConfig.default_onnx_opsetá   s   € àr1   )ÚdefaultNF)éÿÿÿÿrw   FN)r9   r:   r;   r   Ústrr   r   Úboolr,   Úpropertyr   ÚintrQ   rY   r   r	   r   r
   r   re   ru   r?   r@   s   @r0   rB   rB   •   s  ø„ ð Ø-1Øñ
*à ð
*ð ð
*ð ˜\Ñ*ð	
*ð
 õ
*ð ð˜  W¨S°#¨XÑ%6Ð 6Ñ7ò ó ðð ð$˜Cò $ó ð$ð ð# Sò #ó ð#ð ØØØ*.ñ*à&ð*ð ð*ð ð	*ð
 ð*ð ˜JÑ'ð*ð 
��c�Ñ	õ*ðX ð Cò ó ôr1   rB   N)r<   Úcollectionsr   Útypingr   r   r   r   Ú r	   r
   r   Úconfiguration_utilsr   Úonnxr   r   Úutilsr   Ú
get_loggerr9   Úloggerr   rB   Ú__all__r   r1   r0   ú<module>r…      sc   ðñ "å #ß /Ó /ç CÑ CÝ 3ß 4Ý ð 
ˆ×	Ñ	˜HÓ	%€ôt
Ð$ô t
ôpNÐ*ô Nðb Ð/Ð
0�r1   