+
    G-j
  ã                   óN   € ^ RI t ^ RI Ht ^RIHtHt ^RIHt   ! R R]4      tR# )é    N)Úonnx_pb)Úattribute_to_kwargÚ	ms_domain)ÚQuantOperatorBasec                   óD   a a€ ] tR t^t oV 3R ltR tV 3R ltRtVtV ;t	# )ÚAttentionQuantc                ó&   <€ \         SV `  W4       R # ©N)ÚsuperÚ__init__)ÚselfÚonnx_quantizerÚ	onnx_nodeÚ	__class__s   &&&€Ú}/Volumes/fast/ai/experiments/nudenet-smoke/.venv/lib/python3.14/site-packages/onnxruntime/quantization/operators/attention.pyr   ÚAttentionQuant.__init__   s   ø€ Ü‰Ñ˜Ö3ó    c                óL   € V P                   P                  V P                  4      # r
   )Ú	quantizerÚshould_quantize_nodeÚnode)r   s   &r   Úshould_quantizeÚAttentionQuant.should_quantize   s   € Ø�~‰~×2Ñ2°4·9±9Ó=Ð=r   c                ó  <€ V P                   pVP                  R8X  g   Q hVP                   F$  pVP                  R8X  g   K  \        SV `  4       u # 	  V P                  P                  V^ .4      w  ppppV P                  P                  V^.RRR7      w  ppp	p
VP                  V4       VP                  V4       VP                  V	4       VP                  V
4       Vf   \        SV `  4       # VP                  '       g   RMVP                  R,           p. pVP                  V4       VP                  VP                  ^,          .4       VP                  V4       TP                  \        VP                  4      ^8”  d   VP                  ^,          MR.4       VP                  V4       TP                  \        VP                  4      ^8”  d   VP                  ^,          MR.4       / pVP                   F  pVP                  \        V4      4       K  	  \        VR&   \        P                   P"                  ! R	WÁP$                  V3/ VB pVP'                  V4       V P                  ;P(                  V,          un        R# )
zÉ
parameter node: Attention node.
parameter new_nodes_list: List of new nodes created before processing this node.
return: a list of nodes in topological order that represents quantized Attention node.
Ú	AttentionÚqkv_hidden_sizesT)Úreduce_rangeÚop_level_per_channelNÚ Ú_quantÚdomainÚ
QAttention)r   Úop_typeÚ	attributeÚnamer   Úquantizer   Úquantize_activationÚquantize_weightÚextendÚinputÚlenÚupdater   r   ÚonnxÚhelperÚ	make_nodeÚoutputÚappendÚ	new_nodes)r   r   ÚattrÚquantized_input_namesÚzero_point_namesÚscale_namesÚnodesÚquantized_input_names_weightÚzero_point_names_weightÚscale_names_weightÚnodes_weightÚqattention_nameÚinputsÚkwargsr$   Úqattention_noder   s   &               €r   r&   ÚAttentionQuant.quantize   s  ø€ ð �y‰yˆØ�|‰|˜{Ô*Ð*Ð*ð
 —N”NˆDØ�y‰yÐ.Ö.Ü‘wÑ'Ó)Ò)ñ #ð �N‰N×.Ñ.¨t°a°SÓ9ñ	
Ø!ØØØð �N‰N×*Ñ*¨4°!°À4Ð^bÐ*Ócñ	
Ø(Ø#ØØà×$Ñ$Ð%AÔBØ×ÑÐ 7Ô8Ø×ÑÐ-Ô.Ø�‰�\Ô"à Ò(Ü‘7Ñ#Ó%Ð%à$(§I§I I™"°4·9±9¸xÕ3GˆàˆØ�‰Ð+Ô,Ø�‰�t—z‘z !•}�oÔ&Ø�‰�kÔ"Ø�‰¬¨D¯J©J«¸!Ô(;�t—z‘z !–}ÀÐDÔEØ�‰Ð&Ô'Ø�‰¬¨D¯J©J«¸!Ô(;�t—z‘z !–}ÀÐDÔEàˆØŸœˆIØ�M‰MÔ,¨YÓ7Ö8ñ (ä$ˆˆxÑÜŸ+™+×/Ò/°¸fÇkÁkÐSbÑmÐflÑmˆØ�‰�_Ô%à�‰× Ò  EÕ)× r   © )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r&   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r   Ú__classdict__s   @@r   r   r      s   ù‡ € õ4ò>÷6*õ 6*r   r   )	r-   r   Ú
onnx_protoÚquant_utilsr   r   Úbase_operatorr   r   rA   r   r   Ú<module>rM      s#   ðÛ Ý &ç 7Ý ,ðô
=*Ð&ö =*r   