Ë
    cQêjÉ  ã                   ó¢   — d dl Z d dlZd dlZd dlmZmZ  e j                  e«      Z G d„ dej                  j                  «      Z G d„ d«      Zy)é    N)Ú	MT5ConfigÚT5Configc                   ó4   ‡ — e Zd ZdZdeez  fˆ fd„Zd„ Zˆ xZS )Ú	T5Encoderz-T5 encoder outputs only the last hidden stateÚconfigc                 ó>   •— t         ‰| �  «        || _        || _        y ©N)ÚsuperÚ__init__Úencoderr   )Úselfr   r   Ú	__class__s      €úr/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/onnxruntime/transformers/models/t5/t5_encoder.pyr   zT5Encoder.__init__   s   ø€ Ü‰ÑÔØˆŒØˆ�ó    c                 ó,   — | j                  ||«      d   S )Nr   )r   ©r   Ú	input_idsÚattention_masks      r   ÚforwardzT5Encoder.forward   s   € Ø�|‰|˜I ~Ó6°qÑ9Ð9r   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   Ú__classcell__)r   s   @r   r   r      s   ø„ Ù7ð¨°9Ñ(<õ ö
:r   r   c                   ó\   — e Zd Zd„ Ze	 ddedededej                  def
d„«       Z	de
fd	„Zy
)ÚT5EncoderInputsc                 ó    — || _         || _        y r	   ©r   r   r   s      r   r   zT5EncoderInputs.__init__   s   € Ø+4ˆŒØ0>ˆÕr   Ú
batch_sizeÚsequence_lengthÚ
vocab_sizeÚdeviceÚuse_int32_inputsc                 ó>  — |rt         j                  nt         j                  }t        j                  d|dz
  | |f||¬«      }t        j                  | |g||¬«      }|dk\  r2t        | «      D ]$  }t        j                  d|dz
  «      }	d||d|	…f<   Œ& t        ||«      S )aI  Create dummy inputs for T5 encoder.

        Args:
            batch_size (int): batch size
            sequence_length (int): sequence length
            vocab_size (int): vocabulary size
            device (torch.device): device of output tensors

        Returns:
            T5EncoderInputs: dummy inputs for encoder
        r   é   )ÚlowÚhighÚsizeÚdtyper"   )r)   r"   é   N)ÚtorchÚint32Úint64ÚrandintÚonesÚrangeÚrandomr   )
r   r    r!   r"   r#   r)   r   r   ÚiÚpadding_positions
             r   Úcreate_dummyzT5EncoderInputs.create_dummy    s¬   € ñ&  0”—’´U·[±[ˆä—M‘MØØ˜a‘Ø˜oÐ.ØØô
ˆ	ô Ÿ™ Z°Ð$AÈÐW]Ô^ˆØ˜aÒÜ˜:Ó&ò 9�Ü#)§>¡>°!°_ÀqÑ5HÓ#IÐ Ø78�˜qÐ"3Ð#3Ð"3Ð3Ò4ð9ô ˜y¨.Ó9Ð9r   Úreturnc                 ó`   — | j                   | j                  fD �cg c]  }|€Œ|‘Œ	 }}|S c c}w r	   r   )r   ÚvÚ
input_lists      r   Úto_listzT5EncoderInputs.to_listD   s4   € Ø"&§.¡.°$×2EÑ2EÐ!FÖX˜AÈ!É-’aÐXˆ
ÐXØÐùò Ys   ›+£+N)F)r   r   r   r   ÚstaticmethodÚintr+   r"   Úboolr4   Úlistr9   © r   r   r   r      s_   „ ò?ð ð "'ñ!:Øð!:àð!:ð ð!:ð —‘ð	!:ð
 ò!:ó ð!:ðF˜ô r   r   )Úloggingr1   r+   Útransformersr   r   Ú	getLoggerr   ÚloggerÚnnÚModuler   r   r>   r   r   ú<module>rE      sC   ðó Û ã ß ,à	ˆ×	Ñ	˜8Ó	$€ô	:�—‘—‘ô 	:÷+ò +r   