
    fPi                         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dS )    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                 d    t                                                       || _        || _        d S N)super__init__encoderr   )selfr   r   	__class__s      /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/onnxruntime/transformers/models/t5/t5_encoder.pyr   zT5Encoder.__init__   s+        c                 :    |                      ||          d         S )Nr   )r   r   	input_idsattention_masks      r   forwardzT5Encoder.forward   s    ||I~66q99r   )	__name__
__module____qualname____doc__r   r   r   r   __classcell__)r   s   @r   r   r      s^        779(<      
: : : : : : :r   r   c                   Z    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dS )T5EncoderInputsc                 "    || _         || _        d S r	   r   r   r   s      r   r   zT5EncoderInputs.__init__   s    +40>r   F
batch_sizesequence_length
vocab_sizedeviceuse_int32_inputsc                 6   |rt           j        nt           j        }t          j        d|dz
  | |f||          }t          j        | |g||          }|dk    r3t          |           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ao.
 
 
	 Z$AW]^^^a:&& 9 9#)>!_q5H#I#I 78q"3#3"3344y.999r   returnc                 6    d | j         | j        fD             }|S )Nc                     g | ]}||S r	    ).0vs     r   
<listcomp>z+T5EncoderInputs.to_list.<locals>.<listcomp>E   s    XXXA!-a---r   r   )r   
input_lists     r   to_listzT5EncoderInputs.to_listD   s%    XX$.$2E!FXXX
r   N)F)r   r   r   r   staticmethodintr+   r"   boolr4   listr=   r8   r   r   r   r      s        ? ? ?  "'!: !:!:!: !: 	!:
 !: !: !: \!:F      r   r   )loggingr1   r+   transformersr   r   	getLoggerr   loggernnModuler   r   r8   r   r   <module>rH      s       , , , , , , , ,		8	$	$	: 	: 	: 	: 	: 	: 	: 	:+ + + + + + + + + +r   