
    ha                     T    S SK r S SKrS SKJr  SSKJrJr  SSKJr    " S S\5      r	g)	    N)onnx_pb   )attribute_to_kwarg	ms_domain   )QuantOperatorBasec                   :   ^  \ rS rSrU 4S jrS rU 4S jrSrU =r$ )EmbedLayerNormalizationQuant   c                 $   > [         TU ]  X5        g N)super__init__)selfonnx_quantizer	onnx_node	__class__s      l/var/www/fran/franai/venv/lib/python3.13/site-packages/onnxruntime/quantization/operators/embed_layernorm.pyr   %EmbedLayerNormalizationQuant.__init__   s    3    c                 L    U R                   R                  U R                  5      $ r   )	quantizershould_quantize_nodenode)r   s    r   should_quantize,EmbedLayerNormalizationQuant.should_quantize   s    ~~22499==r   c                   > U R                   nUR                  S:X  d   e[        UR                  5      S:  a2  [        R
                  " SUR                   S35        [        TU ]!  5       $  U R                  R                  U/ SQ5      u  nnnnUc  [        TU ]!  5       $ UR                  (       d  SOUR                  S-   n / nUR                  UR                  S   /5        UR                  UR                  S	   /5        UR                  US   /5        UR                  US	   /5        UR                  US   /5        UR                  US
   /5        UR                  US   /5        UR                  [        UR                  5      S:  a  UR                  S   OS/5        UR                  US   /5        UR                  US	   /5        UR                  US   /5        UR                  US
   /5        UR                  US   /5        UR                  US   /5        UR                  US	   /5        UR                  US   /5        UR                  US
   /5        UR                  US   /5        0 nUR                   H  n	UR                  [        U	5      5        M     [         US'   ["        R$                  R&                  " SUUR                  U40 UD6n
UR)                  U
5        U R                  =R*                  U-  sl        g )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kwargsr2   qembed_layer_norm_noder   s              r   r.   %EmbedLayerNormalizationQuant.quantize   s   yy||8888t{{aLL:499+E\]^7#%%
	  NN..t_E	
! (7#%%+/99$))h:N	* tzz!}o&tzz!}o&,Q/01,Q/01,Q/01,Q/01,Q/01DJJ!(;tzz!}DE 	{1~&'{1~&'{1~&'{1~&'{1~&' 	'*+,'*+,'*+,'*+,'*+,IMM,Y78 ($x!%!6!6&KK"	"

 "
 	+,  E) r    )	__name__
__module____qualname____firstlineno__r   r   r.   __static_attributes____classcell__)r   s   @r   r
   r
      s    4>a* a*r   r
   )
r+   r4   r   
onnx_protoquant_utilsr   r   base_operatorr   r
   rB   r   r   <module>rL      s(      & 7 ,h*#4 h*r   