o
    ̳iB                     @   sn   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e
de
de
de
d	e
d
e
de
de
dede
fddZdS )    )nn)	T5EncoderT5EncoderLayerT5EncoderSelfAttention)FeedForward)RMSNorm	embed_dimmlp_dim	num_headshead_dim
num_layersrel_pos_num_bucketsrel_pos_max_dist
vocab_sizenorm_epsmax_seq_lenc
                 C   s   t || }
t  }t|D ]V}t| ||t j| | ddt j| | ddt j| | ddt j| | ddd}tt j| |ddt j|| ddt j| |ddt  d}t||t	| |dt	| |dd}|
| qt	| |d}t|
||||||	dS )aM  
    Builder for the T5 encoder.

    T5 paper: https://arxiv.org/abs/1910.10683

    Args:
        embed_dim (int): The model dimension.
        mlp_dim (int): The inner dimension of the feed forward layers.
        num_heads (int): The number of attention heads.
        head_dim (int): The dimension of the attention heads (should equal `embed_dim // num_heads`)
        num_layers (int): Number of encoder layers.
        rel_pos_num_buckets (int): Number of discrete buckets to divide the relative positions into.
            See: :class:`~torchtune.models.t5._encoder.T5EncoderRelativePositionBias`
        rel_pos_max_dist (int): Maximum distance for relative positions.
            Distances beyond this are grouped into the last bucket.
            See: :class:`~torchtune.models.t5._encoder.T5EncoderRelativePositionBias`
        vocab_size (int): Vocab size of the model's tokenizer.
        norm_eps (float): Small value added to denominator for numerical stability.
        max_seq_len (int): The maximum sequence length (context length) of the model.

    Returns:
        T5Encoder
    F)bias)r   r
   r   q_projk_projv_projoutput_proj)	gate_proj	down_projup_proj
activation)eps)attnmlpsa_normmlp_norm)token_embeddinglayers
final_normr
   r   r   r   )r   	Embedding
ModuleListranger   Linearr   GELUr   r   appendr   )r   r	   r
   r   r   r   r   r   r   r   r    r!   _r   r   layerr"    r+   [/home/ubuntu/.local/lib/python3.10/site-packages/torchtune/models/t5/_component_builders.py
t5_encoder   sF   #


r-   N)torchr   torchtune.models.t5._encoderr   r   r   torchtune.modules.feed_forwardr   torchtune.modules.rms_normr   intfloatr-   r+   r+   r+   r,   <module>   s2   	
