a
    d$                     @   sr   d Z ddlmZ ddlmZ ddlmZ ddlmZ e	e
Zddd	d
ddZG dd deZG dd deZdS )z T5 model configuration    )Mapping   )PretrainedConfig)OnnxSeq2SeqConfigWithPast)loggingz8https://huggingface.co/t5-small/resolve/main/config.jsonz7https://huggingface.co/t5-base/resolve/main/config.jsonz8https://huggingface.co/t5-large/resolve/main/config.jsonz5https://huggingface.co/t5-3b/resolve/main/config.jsonz6https://huggingface.co/t5-11b/resolve/main/config.json)zt5-smallzt5-basezt5-largezt5-3bzt5-11bc                       s8   e Zd ZdZdZdgZddddZd fdd	Z  ZS )T5ConfigaI  
    This is the configuration class to store the configuration of a [`T5Model`] or a [`TFT5Model`]. It is used to
    instantiate a T5 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 T5
    [t5-small](https://huggingface.co/t5-small) architecture.

    Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
    documentation from [`PretrainedConfig`] for more information.

    Arguments:
        vocab_size (`int`, *optional*, defaults to 32128):
            Vocabulary size of the T5 model. Defines the number of different tokens that can be represented by the
            `inputs_ids` passed when calling [`T5Model`] or [`TFT5Model`].
        d_model (`int`, *optional*, defaults to 512):
            Size of the encoder layers and the pooler layer.
        d_kv (`int`, *optional*, defaults to 64):
            Size of the key, query, value projections per attention head. The `inner_dim` of the projection layer will
            be defined as `num_heads * d_kv`.
        d_ff (`int`, *optional*, defaults to 2048):
            Size of the intermediate feed forward layer in each `T5Block`.
        num_layers (`int`, *optional*, defaults to 6):
            Number of hidden layers in the Transformer encoder.
        num_decoder_layers (`int`, *optional*):
            Number of hidden layers in the Transformer decoder. Will use the same value as `num_layers` if not set.
        num_heads (`int`, *optional*, defaults to 8):
            Number of attention heads for each attention layer in the Transformer encoder.
        relative_attention_num_buckets (`int`, *optional*, defaults to 32):
            The number of buckets to use for each attention layer.
        relative_attention_max_distance (`int`, *optional*, defaults to 128):
            The maximum distance of the longer sequences for the bucket separation.
        dropout_rate (`float`, *optional*, defaults to 0.1):
            The ratio for all dropout layers.
        layer_norm_eps (`float`, *optional*, defaults to 1e-6):
            The epsilon used by the layer normalization layers.
        initializer_factor (`float`, *optional*, defaults to 1):
            A factor for initializing all weight matrices (should be kept to 1, used internally for initialization
            testing).
        feed_forward_proj (`string`, *optional*, defaults to `"relu"`):
            Type of feed forward layer to be used. Should be one of `"relu"` or `"gated-gelu"`. T5v1.1 uses the
            `"gated-gelu"` feed forward projection. Original T5 uses `"relu"`.
        use_cache (`bool`, *optional*, defaults to `True`):
            Whether or not the model should return the last key/values attentions (not used by all models).
    Zt5Zpast_key_valuesd_model	num_heads
num_layers)Zhidden_sizeZnum_attention_headsZnum_hidden_layers}     @         N          皙?ư>      ?reluTr      c                    s   || _ || _|| _|| _|| _|d ur*|n| j| _|| _|| _|	| _|
| _	|| _
|| _|| _|| _| jd}|d | _|d dk| _t|dkr|d dkst|dkrtd| d|d	krd
| _t jf |||d| d S )N-r   Zgatedr      z`feed_forward_proj`: z is not a valid activation function of the dense layer.Please make sure `feed_forward_proj` is of the format `gated-{ACT_FN}` or `{ACT_FN}`, e.g. 'gated-gelu' or 'relu'z
gated-geluZgelu_new)pad_token_ideos_token_idis_encoder_decoder)
vocab_sizer   d_kvd_ffr
   num_decoder_layersr	   relative_attention_num_bucketsrelative_attention_max_distancedropout_ratelayer_norm_epsiloninitializer_factorfeed_forward_proj	use_cachesplitZdense_act_fnZis_gated_actlen
ValueErrorsuper__init__)selfr   r   r   r    r
   r!   r	   r"   r#   r$   r%   r&   r'   r   r(   r   r   kwargsZact_info	__class__ p/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/transformers/models/t5/configuration_t5.pyr-   R   s>    
$
zT5Config.__init__)r   r   r   r   r   Nr   r   r   r   r   r   r   TTr   r   )	__name__
__module____qualname____doc__Z
model_typeZkeys_to_ignore_at_inferenceZattribute_mapr-   __classcell__r2   r2   r0   r3   r   "   s,   +                 r   c                   @   s@   e Zd Zeeeeeef f dddZeedddZdS )T5OnnxConfig)returnc                 C   sx   ddddddd}| j rDd|d d< ddi|d	< dd
d|d< nddd|d	< ddd|d< | j rt| j|dd |S )NbatchZencoder_sequence)r   r   )Z	input_idsattention_maskz past_encoder_sequence + sequencer<   r   r   Zdecoder_input_idsz past_decoder_sequence + sequenceZdecoder_attention_maskZdecoder_sequenceinputs)	direction)Zuse_pastZfill_with_past_key_values_)r.   Zcommon_inputsr2   r2   r3   r=      s    zT5OnnxConfig.inputsc                 C   s   dS )N   r2   )r.   r2   r2   r3   default_onnx_opset   s    zT5OnnxConfig.default_onnx_opsetN)	r4   r5   r6   propertyr   strintr=   r@   r2   r2   r2   r3   r9      s    r9   N)r7   typingr   Zconfiguration_utilsr   Zonnxr   utilsr   Z
get_loggerr4   loggerZ T5_PRETRAINED_CONFIG_ARCHIVE_MAPr   r9   r2   r2   r2   r3   <module>   s   
	m