Ë
    cQêja  ã                   óT   — 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	y)	é    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                 ó&   •— t         ‰| �  ||«       y ©N)ÚsuperÚ__init__)ÚselfÚonnx_quantizerÚ	onnx_nodeÚ	__class__s      €úw/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/onnxruntime/quantization/operators/embed_layernorm.pyr   z%EmbedLayerNormalizationQuant.__init__   s   ø€ Ü‰Ñ˜¨Õ3ó    c                 óL   — | j                   j                  | j                  «      S r   )Ú	quantizerÚshould_quantize_nodeÚnode)r   s    r   Úshould_quantizez,EmbedLayerNormalizationQuant.should_quantize   s   € Ø�~‰~×2Ñ2°4·9±9Ó=Ð=r   c                 ó  •— | j                   }|j                  dk(  sJ ‚t        |j                  «      dkD  r1t	        j
                  d|j                  › d�«       t        ‰| �!  «       S 	 | j                  j                  |g d¢«      \  }}}}|€t        ‰| �!  «       S |j                  sdn|j                  dz   }	 g }|j                  |j                  d   g«       |j                  |j                  d	   g«       |j                  |d   g«       |j                  |d	   g«       |j                  |d   g«       |j                  |d
   g«       |j                  |d   g«       |j                  t        |j                  «      dkD  r|j                  d   ndg«       |j                  |d   g«       |j                  |d	   g«       |j                  |d   g«       |j                  |d
   g«       |j                  |d   g«       |j                  |d   g«       |j                  |d	   g«       |j                  |d   g«       |j                  |d
   g«       |j                  |d   g«       i }|j                  D ]  }	|j                  t        |	«      «       Œ t         |d<   t#        j$                  j&                  d||j                  |fi |¤Ž}
|j)                  |
«       | j                  xj*                  |z  c_        y )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   sÌ  ø€ Ø�y‰yˆØ�|‰|Ð8Ò8Ð8Ð8äˆt�{‰{Ó˜aÒÜ�L‰LÐ:¸4¿9¹9¸+ÐE\Ð]Ô^Ü‘7Ñ#Ó%Ð%ð
	ð  �N‰N×.Ñ.¨t²_ÓEñ	
Ø!ØØØà Ð(Ü‘7Ñ#Ó%Ð%à+/¯9ª9¡¸$¿)¹)ÀhÑ:NÐð	ð* ˆà�‰�t—z‘z !‘}�oÔ&à�‰�t—z‘z !‘}�oÔ&à�‰Ð,¨QÑ/Ð0Ô1à�‰Ð,¨QÑ/Ð0Ô1à�‰Ð,¨QÑ/Ð0Ô1à�‰Ð,¨QÑ/Ð0Ô1à�‰Ð,¨QÑ/Ð0Ô1à�‰¬¨D¯J©J«¸!Ò(;�t—z‘z !’}ÀÐDÔEð 	�‰�{ 1‘~Ð&Ô'Ø�‰�{ 1‘~Ð&Ô'Ø�‰�{ 1‘~Ð&Ô'Ø�‰�{ 1‘~Ð&Ô'Ø�‰�{ 1‘~Ð&Ô'ð 	�‰Ð'¨Ñ*Ð+Ô,Ø�‰Ð'¨Ñ*Ð+Ô,Ø�‰Ð'¨Ñ*Ð+Ô,Ø�‰Ð'¨Ñ*Ð+Ô,Ø�‰Ð'¨Ñ*Ð+Ô,àˆØŸ™ò 	9ˆIØ�M‰MÔ,¨YÓ7Õ8ð	9ä$ˆˆxÑä!%§¡×!6Ñ!6Ø&ØØ�K‰KØ"ñ	"
ð
 ñ"
Ðð 	�‰Ð+Ô,à�‰× Ò  EÑ)Ö r   )Ú__name__Ú
__module__Ú__qualname__r   r   r+   Ú__classcell__)r   s   @r   r
   r
      s   ø„ ô4ò>÷a*ð a*r   r
   )
r(   r1   r   Ú
onnx_protoÚquant_utilsr   r   Úbase_operatorr   r
   © r   r   ú<module>rF      s(   ðÛ ã Ý &ç 7Ý ,ðôh*Ð#4õ h*r   