§
    kŠtjï  ã                   ój   — d dl mZmZmZ ddlmZ ddlmZ  G d„ de¦  «        Z G d„ de¦  «        Z	d	S )
é   )ÚTENSOR_NAME_QUANT_SUFFIXÚQuantizedValueÚQuantizedValueTypeé   )ÚQuantOperatorBase)ÚQDQOperatorBasec                   ó(   ‡ — e Zd Zˆ fd„Zˆ fd„Zˆ xZS )ÚDirect8BitOpc                 óL   •— t          ¦   «                              ||¦  «         d S ©N©ÚsuperÚ__init__©ÚselfÚonnx_quantizerÚ	onnx_nodeÚ	__class__s      €új/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/quantization/operators/direct_q8.pyr   zDirect8BitOp.__init__	   ó#   ø€ Ý‰Œ×Ò˜¨Ñ3Ô3Ð3Ð3Ð3ó    c                 ó4  •— | j         }| j        j        sÏ| j                             |j        d         ¦  «        }|€| j        xj        |gz  c_        d S t          |j        d         |j        d         t          z   |j	        |j
        |j        ¦  «        }|| j        j        |j        d         <   |j        |j        d<   |j        |j        d<   | j        xj        |gz  c_        d S | j                             |j        d         ¦  «        s"t          ¦   «                              ¦   «          d S | j                             |dg¦  «        \  }}}}|€ t          ¦   «                              ¦   «         S t          |j        d         |j        d         t          z   |d         |d         t$          j        ¦  «        }|| j        j        |j        d         <   |d         |j        d<   |j        |j        d<   |                     |¦  «         | j        xj        |z  c_        d S ©Né    )ÚnodeÚ	quantizerÚforce_quantize_no_input_checkÚfind_quantized_valueÚinputÚ	new_nodesr   Úoutputr   Ú
scale_nameÚzp_nameÚ
value_typeÚquantized_value_mapÚq_nameÚis_valid_quantize_weightr   ÚquantizeÚquantize_activationr   ÚInputÚappend)	r   r   Úquantized_input_valueÚquantized_output_valueÚquantized_input_namesÚzero_point_namesÚscale_namesÚnodesr   s	           €r   r(   zDirect8BitOp.quantize   s  ø€ ØŒyˆàŒ~Ô;ð 2	.ð %)¤N×$GÒ$GÈÌ
ÐSTÌÑ$VÔ$VÐ!Ø$Ð,Ø”Ð(Ô(¨T¨FÑ2Ð(Ô(Ø�å%3Ø”˜A”Ø”˜A”Õ!9Ñ9Ø%Ô0Ø%Ô-Ø%Ô0ñ&ô &Ð"ð BXˆDŒNÔ.¨t¬{¸1¬~Ñ>à1Ô8ˆDŒJ�q‰MØ3Ô:ˆDŒK˜‰NØŒNÐ$Ô$¨¨Ñ.Ð$Ô$Ð$Ð$ð ”>×:Ò:¸4¼:Àa¼=ÑIÔIð Ý‘”× Ò Ñ"Ô"Ð"Ø�ð ”×2Ò2°4¸!¸Ñ=Ô=ñØ%Ø ØØà$Ð,Ý‘w”w×'Ò'Ñ)Ô)Ð)õ &4Ø”˜A”Ø”˜A”Õ!9Ñ9Ø˜A”Ø  Ô#Ý"Ô(ñ&ô &Ð"ð BXˆDŒNÔ.¨t¬{¸1¬~Ñ>à1°!Ô4ˆDŒJ�q‰MØ3Ô:ˆDŒK˜‰NØ�LŠL˜ÑÔÐàŒNÐ$Ô$¨Ñ-Ð$Ô$Ð$Ð$r   ©Ú__name__Ú
__module__Ú__qualname__r   r(   Ú__classcell__©r   s   @r   r
   r
      sQ   ø€ € € € € ð4ð 4ð 4ð 4ð 4ð5.ð 5.ð 5.ð 5.ð 5.ð 5.ð 5.ð 5.ð 5.r   r
   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚQDQDirect8BitOpc                 óL   •— t          ¦   «                              ||¦  «         d S r   r   r   s      €r   r   zQDQDirect8BitOp.__init__E   r   r   c                 ó
  — | j         j        r{| j                              | j        j        d         ¦  «         | j        sH| j                              | j        j        d         | j        j        d         | j        j        ¦  «         d S d S | j          	                    | j        j        d         ¦  «        rO| j        sJ| j                              | j        j        d         | j        j        d         | j        j        ¦  «         d S d S d S r   )
r   r   Úquantize_activation_tensorr   r   Údisable_qdq_for_node_outputÚquantize_output_same_as_inputr!   ÚnameÚis_tensor_quantized)r   s    r   r(   zQDQDirect8BitOp.quantizeH   s  € ØŒ>Ô7ð 	rØŒN×5Ò5°d´i´oÀaÔ6HÑIÔIÐIØÔ3ð vØ”×<Ò<¸T¼YÔ=MÈaÔ=PÐRVÔR[ÔRaÐbcÔRdÐfjÔfoÔftÑuÔuÐuÐuÐuðvð vàŒ^×/Ò/°´	´ÀÔ0BÑCÔCð 	rÈDÔLlð 	rØŒN×8Ò8¸¼Ô9IÈ!Ô9LÈdÌiÌoÐ^_ÔN`ÐbfÔbkÔbpÑqÔqÐqÐqÐqð	rð 	rð 	rð 	rr   r2   r7   s   @r   r9   r9   D   sN   ø€ € € € € ð4ð 4ð 4ð 4ð 4ðrð rð rð rð rð rð rr   r9   N)
Úquant_utilsr   r   r   Úbase_operatorr   Úqdq_base_operatorr   r
   r9   © r   r   ú<module>rE      s±   ðØ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VÐ VØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .ð
9.ð 9.ð 9.ð 9.ð 9.Ð$ñ 9.ô 9.ð 9.ðx
rð 
rð 
rð 
rð 
r�oñ 
rô 
rð 
rð 
rð 
rr   