U
    Ö9%e<  ã                   @   sT   d Z ddlmZ ddlmZ e e¡Zdddddd	d
ddddœ
ZG dd„ deƒZ	dS )z RWKV configurationé   )ÚPretrainedConfig)ÚloggingzEhttps://huggingface.co/RWKV/rwkv-4-169m-pile/resolve/main/config.jsonzEhttps://huggingface.co/RWKV/rwkv-4-430m-pile/resolve/main/config.jsonzDhttps://huggingface.co/RWKV/rwkv-4-1b5-pile/resolve/main/config.jsonzChttps://huggingface.co/RWKV/rwkv-4-3b-pile/resolve/main/config.jsonzChttps://huggingface.co/RWKV/rwkv-4-7b-pile/resolve/main/config.jsonzDhttps://huggingface.co/RWKV/rwkv-4-14b-pile/resolve/main/config.jsonzChttps://huggingface.co/RWKV/rwkv-raven-1b5/resolve/main/config.jsonzBhttps://huggingface.co/RWKV/rwkv-raven-3b/resolve/main/config.jsonzBhttps://huggingface.co/RWKV/rwkv-raven-7b/resolve/main/config.jsonzChttps://huggingface.co/RWKV/rwkv-raven-14b/resolve/main/config.json)
zRWKV/rwkv-4-169m-pilezRWKV/rwkv-4-430m-pilezRWKV/rwkv-4-1b5-pilezRWKV/rwkv-4-3b-pilezRWKV/rwkv-4-7b-pilezRWKV/rwkv-4-14b-pilezRWKV/rwkv-raven-1b5zRWKV/rwkv-raven-3bzRWKV/rwkv-raven-7bzRWKV/rwkv-raven-14bc                       s.   e Zd ZdZdZddiZd‡ fdd„	Z‡  ZS )Ú
RwkvConfigaÚ  
    This is the configuration class to store the configuration of a [`RwkvModel`]. It is used to instantiate a RWKV
    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 RWVK-4
    [RWKV/rwkv-4-169m-pile](https://huggingface.co/RWKV/rwkv-4-169m-pile) 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 50277):
            Vocabulary size of the RWKV model. Defines the number of different tokens that can be represented by the
            `inputs_ids` passed when calling [`RwkvModel`].
        context_length (`int`, *optional*, defaults to 1024):
            The maximum sequence length that this model can be be used with in a single forward (using it in RNN mode
            lets use any sequence length).
        hidden_size (`int`, *optional*, defaults to 4096):
            Dimensionality of the embeddings and hidden states.
        num_hidden_layers (`int`, *optional*, defaults to 32):
            Number of hidden layers in the model.
        attention_hidden_size (`int`, *optional*):
            Dimensionality of the attention hidden states. Will default to `hidden_size` if unset.
        intermediate_size (`int`, *optional*):
            Dimensionality of the inner feed-forward layers. Will default to 4 times `hidden_size` if unset.
        layer_norm_eps (`float`, *optional*, defaults to 1e-5):
            The epsilon to use in the layer normalization layers.
        bos_token_id (`int`, *optional*, defaults to 0):
            The id of the beginning of sentence token in the vocabulary. Defaults to 0 as RWKV uses the same tokenizer
            as GPTNeoX.
        eos_token_id (`int`, *optional*, defaults to 0):
            The id of the end of sentence token in the vocabulary. Defaults to 0 as RWKV uses the same tokenizer as
            GPTNeoX.
        rescale_every (`int`, *optional*, default to 6):
            At inference, the hidden states (and weights of the correponding output layers) are divided by 2 every
            `rescale_every` layer. If set to 0 or a negative number, no rescale is done.
        tie_word_embeddings (`bool`, *optional*, defaults to `False`):
            Whether or not to tie the word embeddings with the input token embeddings.
        use_cache (`bool`, *optional*, defaults to `True`):
            Whether or not the model should return the last state.


    Example:

    ```python
    >>> from transformers import RwkvConfig, RwkvModel

    >>> # Initializing a Rwkv configuration
    >>> configuration = RwkvConfig()

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

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```ZrwkvZmax_position_embeddingsÚcontext_lengthéeÄ  é   é   é    Nçñhãˆµøä>é    é   FTc                    s|   || _ || _|| _|| _|d k	r$|n|| _|d k	r6|nd| | _|| _|
| _|| _|| _	|	| _
tƒ jf |||	dœ|—Ž d S )Né   )Útie_word_embeddingsÚbos_token_idÚeos_token_id)Ú
vocab_sizer   Úhidden_sizeÚnum_hidden_layersÚattention_hidden_sizeÚintermediate_sizeÚlayer_norm_epsilonÚrescale_everyÚ	use_cacher   r   ÚsuperÚ__init__)Úselfr   r   r   r   r   r   r   r   r   r   r   r   Úkwargs©Ú	__class__© új/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/transformers/models/rwkv/configuration_rwkv.pyr   c   s$      ÿÿzRwkvConfig.__init__)r   r   r   r	   NNr
   r   r   r   FT)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Z
model_typeZattribute_mapr   Ú__classcell__r   r   r   r    r   &   s    9            ór   N)
r$   Zconfiguration_utilsr   Úutilsr   Z
get_loggerr!   ÚloggerZ"RWKV_PRETRAINED_CONFIG_ARCHIVE_MAPr   r   r   r   r    Ú<module>   s   
ö