
    Bvh                         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      W/RAG/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~6q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[[MMao.
	 Z$AW]^a:&#)>>!_q5H#I 78q"3#3"334 ' 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   s7    "&..$2E2E!FX!FA!-a!F
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   