
    fPia                     \    d dl Z d dlZd dlmZ ddlmZmZ ddlmZ 	  G d de          Z	dS )	    N)onnx_pb   )attribute_to_kwarg	ms_domain   )QuantOperatorBasec                   .     e Zd Z fdZd Z fdZ xZS )EmbedLayerNormalizationQuantc                 L    t                                          ||           d S N)super__init__)selfonnx_quantizer	onnx_node	__class__s      /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/onnxruntime/quantization/operators/embed_layernorm.pyr   z%EmbedLayerNormalizationQuant.__init__   s#    33333    c                 @    | j                             | j                  S r   )	quantizershould_quantize_nodenode)r   s    r   should_quantizez,EmbedLayerNormalizationQuant.should_quantize   s    ~2249===r   c                    | j         }|j        dk    sJ t          |j                  dk    r=t	          j        d|j         d           t                                                      S 	 | j	        
                    |g d          \  }}}}| t                                                      S |j        sdn	|j        dz   }	 g }|                    |j        d         g           |                    |j        d	         g           |                    |d         g           |                    |d	         g           |                    |d         g           |                    |d
         g           |                    |d         g           |                    t          |j                  dk    r|j        d         ndg           |                    |d         g           |                    |d	         g           |                    |d         g           |                    |d
         g           |                    |d         g           |                    |d         g           |                    |d	         g           |                    |d         g           |                    |d
         g           |                    |d         g           i }|j        D ]$}	|                    t          |	                     %t           |d<   t#          j        j        d||j        |fi |}
|                    |
           | j	        xj        |z  c_        d S )NEmbedLayerNormalizationr   zQuantization is not applied to z since it has 3 outputs)r                _quantr   r   r   r      domainQEmbedLayerNormalization)r   op_typelenoutputlogginginfonamer   quantizer   quantize_activationextendinput	attributeupdater   r   onnxhelper	make_nodeappend	new_nodes)r   r   quantized_input_nameszero_point_namesscale_namesnodesqembed_layer_norm_nameinputskwargsr/   qembed_layer_norm_noder   s              r   r+   z%EmbedLayerNormalizationQuant.quantize   sm   y|88888t{aL]49]]]^^^77##%%%
	  N..t___EE	
! (77##%%%+/9!N$)h:N	* tz!}o&&&tz!}o&&&,Q/0111,Q/0111,Q/0111,Q/0111,Q/0111DJ!(;(;tz!}}DEEE 	{1~&'''{1~&'''{1~&'''{1~&'''{1~&''' 	'*+,,,'*+,,,'*+,,,'*+,,,'*+,,, 	9 	9IMM,Y778888$x!%!6&K"	"
 "

 "
 "
 	+,,,  E)    r   )__name__
__module____qualname__r   r   r+   __classcell__)r   s   @r   r
   r
      si        4 4 4 4 4> > >a* a* a* a* a* a* a* a* a*r   r
   )
r(   r1   r   
onnx_protoquant_utilsr   r   base_operatorr   r
    r   r   <module>rF      s      & & & & & & 7 7 7 7 7 7 7 7 , , , , , ,h* h* h* h* h*#4 h* h* h* h* h*r   