§
    kŠtj¥d  ã                   óð   — d dl Z d dlmZ d dlZd dlZd dlZ	 d dlmZ n# e	$ r dZY nw xY wddl
mZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ  G d	„ d
¦  «        Z G d„ d¦  «        ZdS )é    N)ÚAny)Úto_array_extendedé   )Ú
TensorData)Ú	ONNXModel)ÚDEQUANT_OP_NAMEÚONNX_TYPE_TO_NP_TYPEÚQUANT_OP_NAMEÚTENSOR_NAME_QUANT_SUFFIXÚfind_by_nameÚget_opset_versionÚmodel_has_infer_metadataÚnormalize_axisÚpack_bytes_to_4bitÚquantize_dataÚquantize_nparrayÚ&save_and_reload_model_with_shape_inferÚtensor_proto_to_array)ÚTensorQuantOverridesHelperc                   óJ   — e Zd Zdeeef         fd„Zd	d„Zd„ Zd„ Z	d„ Z
d„ ZdS )
ÚQuantizationParamsÚdatac                 ót  — i | _         |                     ¦   «         D �]\  }}t          |t          ¦  «        s#t	          dt          |¦  «        › d|›d�¦  «        ‚|dk    rPt          |t          t          t          j        t          f¦  «        s#t	          dt          |¦  «        › d|›d�¦  «        ‚|dk    r7t          |t          ¦  «        s"|� t	          dt          |¦  «        › d�¦  «        ‚|dk    r9|j
        t          j        t          j        fvrt          d|j
        › d|›�¦  «        ‚|| j         |<   �Œd S )	NzKeys must be strings not z for k=ú.Úaxisz1Values must be numpy arrays, int, float, str not z'Axis value must be an int or None, not Úscalez5scale must a float32 or float16 numpy element but is )r   ÚitemsÚ
isinstanceÚstrÚ	TypeErrorÚtypeÚintÚnpÚndarrayÚfloatÚdtypeÚfloat32Úfloat16Ú
ValueError)Úselfr   ÚkÚvs       úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/quantization/base_quantizer.pyÚ__init__zQuantizationParams.__init__(   sB  € ØˆŒ	Ø—J’J‘L”Lð 		ñ 		‰DˆAˆqÝ˜a¥Ñ%Ô%ð TÝÐ R½DÀ¹G¼GÐ RÐ RÈAÐ RÐ RÐ RÑSÔSÐSØ�FŠ{ˆ{¥:¨aµ#µs½B¼JÍÐ1NÑ#OÔ#Oˆ{ÝÐ jÕTXÐYZÑT[ÔT[Ð jÐ jÐdeÐ jÐ jÐ jÑkÔkÐkØ�FŠ{ˆ{¥:¨aµÑ#5Ô#5ˆ{¸!¸-ÝÐ TÍ$ÈqÉ'Ì'Ð TÐ TÐ TÑUÔUÐUØ�GŠ|ˆ| ¤µ´
½B¼JÐ/GÐ GÐ GÝ Ð!nÐYZÔY`Ð!nÐ!nÐijÐ!nÐ!nÑoÔoÐoØˆDŒI�a‰L‰Lð		ð 		ó    Nc                 ó8   — | j                              ||¦  «        S ©N)r   Úget)r*   ÚkeyÚdefault_values      r-   r2   zQuantizationParams.get5   s   € ØŒy�}Š}˜S -Ñ0Ô0Ð0r/   c              #   ó$   K  — | j         E d {V —† d S r1   ©r   ©r*   s    r-   Ú__iter__zQuantizationParams.__iter__8   s&   è è € Ø”9ÐÐÐÐÐÐÐÐÐr/   c                 ó   — | j         |         S r1   r6   )r*   r3   s     r-   Ú__getitem__zQuantizationParams.__getitem__;   s   € ØŒy˜Œ~Ðr/   c                 ó   — || j         |<   d S r1   r6   )r*   r3   Úvalues      r-   Ú__setitem__zQuantizationParams.__setitem__>   s   € ØˆŒ	�#‰ˆˆr/   c                 ó*   — t          | j        ¦  «        S r1   )Úlenr   r7   s    r-   Ú__len__zQuantizationParams.__len__A   s   € Ý�4”9‰~Œ~Ðr/   r1   )Ú__name__Ú
__module__Ú__qualname__Údictr   r   r.   r2   r8   r:   r=   r@   © r/   r-   r   r   '   s‡   € € € € € ð˜t C¨ Hœ~ð ð ð ð ð1ð 1ð 1ð 1ðð ð ðð ð ðð ð ðð ð ð ð r/   r   c                   ó|   — e Zd Z	 dd„Zdej        j        defd„Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zdd„Zdd„Z	 	 dd„Zd„ ZdS )ÚBaseQuantizerNc                 óò  — t          |¦  «        st          |¦  «        }d„ |j        j        D ¦   «         | _        | j                             d„ |j        j        D ¦   «         ¦  «         | j                             d„ |j        j        D ¦   «         ¦  «         t          |¦  «        | _	        t          |¦  «        | _        || _        || _        |
r|
ni | _        d| j        v o| j        d         | _        d | _        d| j        v o| j        d         | _        | j                             dd ¦  «        | _        | j                             dd¦  «        | _        | j                             d	d¦  «        | _        | j                             d
¦  «        | _        t/          |d|¦  «        | _        t/          |d|¦  «        | _        	 |�Zt5          d„ |                     ¦   «         D ¦   «         ¦  «        r/t9          dd„ |                     ¦   «         D ¦   «         › d�¦  «        ‚|| _        || _        || _        |	| _         tC          | j                             di ¦  «        ¦  «        | _"        d„ | j	         #                    ¦   «         D ¦   «         | _$        | j"         %                    | j$        | j         &                    ¦   «         |¦  «        \  }}|stO          |¦  «        ‚| j"         (                    ¦   «         | _)        d S )Nc                 ó   — i | ]
}|j         |“ŒS rE   ©Úname)Ú.0Úvis     r-   ú
<dictcomp>z*BaseQuantizer.__init__.<locals>.<dictcomp>U   s   € ÐIÐIÐI¨B˜BœG RÐIÐIÐIr/   c                 ó   — i | ]
}|j         |“ŒS rE   rJ   )rL   Úots     r-   rN   z*BaseQuantizer.__init__.<locals>.<dictcomp>V   s   € Ð JÐ JÐ J° ¤¨"Ð JÐ JÐ Jr/   c                 ó   — i | ]
}|j         |“ŒS rE   rJ   )rL   Úits     r-   rN   z*BaseQuantizer.__init__.<locals>.<dictcomp>W   s   € Ð IÐ IÐ I° ¤¨"Ð IÐ IÐ Ir/   ÚEnableSubgraphÚForceQuantizeNoInputCheckÚWeightSymmetricÚActivationSymmetricFÚActivationRestrictedAsymmetricÚMinimumRealRangeÚtensor_typec              3   óB   K  — | ]}t          |t          ¦  «         V — Œd S r1   )r   r   )rL   Úts     r-   ú	<genexpr>z)BaseQuantizer.__init__.<locals>.<genexpr>|   s/   è è € Ð,kÐ,kÈqµ¸A½zÑ1JÔ1JÐ-JÐ,kÐ,kÐ,kÐ,kÐ,kÐ,kr/   z(tensors_range contains unexpected types c                 ó,   — h | ]}t          |¦  «        ’ŒS rE   )r!   )rL   r,   s     r-   ú	<setcomp>z)BaseQuantizer.__init__.<locals>.<setcomp>~   s   € Ð<eÐ<eÐ<eÈ½TÀ!¹W¼WÐ<eÐ<eÐ<er/   z, not TensorData.ÚTensorQuantOverridesc                 ó   — i | ]
}|j         |“ŒS rE   rJ   )rL   Úinitzers     r-   rN   z*BaseQuantizer.__init__.<locals>.<dictcomp>ˆ   s   € Ð[Ð[Ð[°w˜Wœ\¨7Ð[Ð[Ð[r/   )*r   r   ÚgraphÚ
value_infoÚvalue_infosÚupdateÚoutputÚinputr   Úmodelr   Úopset_versionÚper_channelÚreduce_rangeÚextra_optionsÚenable_subgraph_quantizationÚparentÚforce_quantize_no_input_checkr2   Ú_is_weight_symmetricÚis_activation_symmetricÚ#is_activation_restricted_asymmetricÚmin_real_rangeÚgetattrÚactivation_qTypeÚweight_qTypeÚanyÚvaluesr    Útensors_rangeÚnodes_to_quantizeÚnodes_to_excludeÚop_types_to_quantizer   Útensor_quant_overridesÚinitializerÚinitializersÚis_validÚkeysr)   Úget_quant_typesÚtensor_quant_override_qtypes)r*   rh   rj   rk   rv   ru   ry   rz   r{   r|   rl   Úoverrides_validÚoverrides_errs                r-   r.   zBaseQuantizer.__init__F   s  € õ (¨Ñ.Ô.ð 	BÝ:¸5ÑAÔAˆEØIÐI°%´+Ô2HÐIÑIÔIˆÔØÔ×ÒÐ JÐ J°u´{Ô7IÐ JÑ JÔ JÑKÔKÐKØÔ×ÒÐ IÐ I°u´{Ô7HÐ IÑ IÔ IÑJÔJÐJå˜uÑ%Ô%ˆŒ
Ý.¨uÑ5Ô5ˆÔØ&ˆÔØ(ˆÔà.;ÐC˜]˜]ÀˆÔà Ô 2Ð2Ð[°tÔ7IÐJZÔ7[ð 	Ô)ð ˆŒà'¨4Ô+=Ð=ÐqÀ$ÔBTÐUpÔBqð 	Ô*ð 26Ô1C×1GÒ1GÐHYÐ[_Ñ1`Ô1`ˆÔ!Ø'+Ô'9×'=Ò'=Ð>SÐUZÑ'[Ô'[ˆÔ$Ø37Ô3E×3IÒ3IÐJjÐlqÑ3rÔ3rˆÔ0Ø"Ô0×4Ò4Ð5GÑHÔHˆÔå 'Ð(8¸-ÐIYÑ ZÔ ZˆÔÝ# L°-ÀÑNÔNˆÔð
	ð Ð$­Ð,kÐ,kÐTa×ThÒThÑTjÔTjÐ,kÑ,kÔ,kÑ)kÔ)kÐ$ÝØyÐ<eÐ<eÈm×NbÒNbÑNdÔNdÐ<eÑ<eÔ<eÐyÐyÐyñô ð ð +ˆÔØ!2ˆÔØ 0ˆÔØ$8ˆÔ!õ 'AÀÔAS×AWÒAWÐXnÐprÑAsÔAsÑ&tÔ&tˆÔ#à[Ð[À$Ä*×BXÒBXÑBZÔBZÐ[Ñ[Ô[ˆÔØ)-Ô)D×)MÒ)MØÔ˜tÔ/×4Ò4Ñ6Ô6Ð8Hñ*
ô *
Ñ&ˆ˜ð ð 	,Ý˜]Ñ+Ô+Ð+à,0Ô,G×,WÒ,WÑ,YÔ,YˆÔ)Ð)Ð)r/   Úweight_quant_typeÚreturnc                 ó¦   — | j         �| j         S |t          j        j        t          j        j        t          j        j        t          j        j        fv S r1   )rp   ÚonnxÚTensorProtoÚINT4ÚINT8ÚINT16ÚFLOAT8E4M3FN)r*   r†   s     r-   Úis_weight_symmetricz!BaseQuantizer.is_weight_symmetric‘   sJ   € ØÔ$Ð0ØÔ,Ð,Ø ÝÔÔ!ÝÔÔ!ÝÔÔ"ÝÔÔ)ð	%
ð 
ð 	
r/   c                 ó   — t           ‚r1   )ÚNotImplementedErrorr7   s    r-   Úquantize_modelzBaseQuantizer.quantize_model›   s   € Ý!Ð!r/   c                 óX   — t          || j                             ¦   «         ¦  «        }|d uS r1   )r   rh   r~   )r*   Ú
input_namer~   s      r-   Úis_input_a_initializerz$BaseQuantizer.is_input_a_initializerž   s*   € Ý" :¨t¬z×/EÒ/EÑ/GÔ/GÑHÔHˆØ $Ð&Ð&r/   c                 ó   — | j         S r1   )rj   r7   s    r-   Úis_per_channelzBaseQuantizer.is_per_channel¢   s   € ØÔÐr/   c                 óú   — t          || j                             ¦   «         ¦  «        }|�)|j        t          j        j        t          j        j        fv S | j        r| j	        €dS | j	         
                    |¦  «        S )NF)r   rh   r~   Ú	data_typer‰   rŠ   ÚFLOATÚFLOAT16rm   rn   Úis_valid_quantize_weight)r*   Úweight_nameÚweights      r-   rœ   z&BaseQuantizer.is_valid_quantize_weight¥   sq   € Ý˜k¨4¬:×+AÒ+AÑ+CÔ+CÑDÔDˆØÐØÔ#­Ô(8Ô(>ÅÔ@PÔ@XÐ'YÐYÐYØÔ1ð 	°t´{Ð7JØ�5ØŒ{×3Ò3°KÑ@Ô@Ð@r/   c                 óà   — | j         �(t          | j         ¦  «        dk    r|j        | j         vrdS |j        | j        vrdS |j        t
          t          fv rdS | j        �|j        | j        v rdS dS )Nr   FT)rz   r?   rK   Úop_typer|   r   r
   r{   )r*   Únodes     r-   Úshould_quantize_nodez"BaseQuantizer.should_quantize_node­   s„   € àÔ"Ð.Ý�DÔ*Ñ+Ô+¨qÒ0Ð0Ø”	 Ô!7Ð7Ð7à�5àŒ<˜tÔ8Ð8Ð8Ø�5àŒ<�O­]Ð;Ð;Ð;Ø�5àÔ Ð,°´¸dÔ>SÐ1SÐ1SØ�5àˆtr/   ç      ð?c                 ón	  — t          || j                             ¦   «         ¦  «        }t          |¦  «        }|t          z   }| j        t          j        j        k    �r	t          j
        |¦  «        }|j        t          j        k    rt          j        j        }	n?|j        t          j        k    rt          j        j        }	nt!          d|j        › d�¦  «        ‚|                     t          j        ¦  «        }
t          j        dg|
j        ¬¦  «        }|                     d¦  «        }t          j                             |
|¦  «        }| j                             |g¦  «         d}�nì||z  |z  }t          j
        |t          j        ¬¦  «        t          j
        |t          j        ¬¦  «        z  }
|
                     ¦   «         }
t          j        t          j        t          j        ¦  «        j        ¦  «        }t          j        t          j        t          j        ¦  «        j        ¦  «        }t          j        |
|k     ¦  «        st          j        |
|k    ¦  «        rt=          j        d|› d�¦  «         t          j         |
||¦  «                             t          j        ¦  «        }
t          j
        |
t          j        ¬¦  «                             |j!        ¦  «        }t          j                             ||¦  «        }| j                             |g¦  «         t          j
        ||j        ¬¦  «                             d¦  «        }d	}| j        }	|d
z   }t          j                             ||¦  «        }| j                             |g¦  «         | j        t          j        j        k    r| j        }nt          j        j"        }|dz   }| j        t          j        j        k    r*t          j#         $                    || j        dgdg¦  «        }n‡|j%        dk    rYt          j&        |j'        t          j        ¬¦  «                             d¦  «        }t          j                             ||¦  «        }n#t          j#         $                    ||g dg¦  «        }| j                             |g¦  «         ||||||	fS )z]
        Quantized the bias. Zero Point == 0 and Scale == Input_Scale * Weight_Scale
        zEOnly float16 or float32 are supported with float 8 but bias dtype is r   r   ©r&   éÿÿÿÿÚCastzQuantized bias `z<` exceeds the range of a int32. The bias scale is too small.ÚDequantizeLinearÚ_scaleÚ_zero_pointç        r   )(r   rh   r~   r   r   rv   r‰   rŠ   rŽ   r#   Úasarrayr&   r(   r›   r'   rš   r    ÚastypeÚarrayÚreshapeÚnumpy_helperÚ
from_arrayÚinitializer_extendÚfloat64ÚroundÚiinfoÚint32ÚminÚmaxrw   ÚloggingÚwarningÚclipÚdimsÚINT32ÚhelperÚmake_tensorÚsizeÚzerosÚshape)r*   Ú	bias_nameÚinput_scaleÚweight_scaleÚbetaÚbias_initializerÚ	bias_dataÚquantized_bias_namer   Ú
node_qtypeÚquantized_dataÚ
bias_scaleÚbias_scale_dataÚpacked_bias_initializerÚ	node_typeÚ	int32_minÚ	int32_maxÚbias_np_dataÚquantized_bias_scale_nameÚpacked_bias_scale_initializerrY   Úquantized_bias_zp_nameÚpacked_bias_zp_initializerÚbias_zp_datas                           r-   Úquantize_bias_static_implz'BaseQuantizer.quantize_bias_static_implÀ   s-  € õ (¨	°4´:×3IÒ3IÑ3KÔ3KÑLÔLÐÝ)Ð*:Ñ;Ô;ˆ	Ø'Õ*BÑBÐð Ô¥Ô 0Ô =Ò=Ñ=Ý”:˜iÑ(Ô(ˆDØŒz�RœZÒ'Ð'Ý!Ô-Ô5�
�
Ø”�rœzÒ)Ð)Ý!Ô-Ô3�
�
åÐ uÐhlÔhrÐ uÐ uÐ uÑvÔvÐvØ!Ÿ[š[­¬Ñ4Ô4ˆNÝœ 1 #¨^Ô-AÐBÑBÔBˆJØ(×0Ò0°Ñ4Ô4ˆOÝ&*Ô&7×&BÒ&BÀ>ÐSfÑ&gÔ&gÐ#ØŒJ×)Ò)Ð+BÐ*CÑDÔDÐDØˆI‰Ið % |Ñ3°dÑ:ˆJõ  œZ¨	½¼ÐDÑDÔDÅrÄzÐR\ÕdfÔdnÐGoÑGoÔGoÑoˆNØ+×1Ò1Ñ3Ô3ˆNõ œ
¥2¤8­B¬HÑ#5Ô#5Ô#9Ñ:Ô:ˆIÝœ
¥2¤8­B¬HÑ#5Ô#5Ô#9Ñ:Ô:ˆIÝŒv�n yÒ0Ñ1Ô1ð µR´V¸NÈYÒ<VÑ5WÔ5Wð Ý”Øn yÐnÐnÐnñô ð õ  œW ^°YÀ	ÑJÔJ×QÒQÕRTÔRZÑ[Ô[ˆNõ œ: n½B¼HÐEÑEÔE×MÒMÐN^ÔNcÑdÔdˆLÝ&*Ô&7×&BÒ&BÀ<ÐQdÑ&eÔ&eÐ#ØŒJ×)Ò)Ð+BÐ*CÑDÔDÐDõ !œj¨¸9¼?ÐKÑKÔK×SÒSÐTVÑWÔWˆOØ*ˆIØÔ*ˆJð %8¸(Ñ$BÐ!Ý(,Ô(9×(DÒ(DÀ_ÐVoÑ(pÔ(pÐ%ØŒ
×%Ò%Ð'DÐ&EÑFÔFÐFð Ô¥Ô 0Ô =Ò=Ð=ØÔ+ˆKˆKåÔ*Ô0ˆKà!4°}Ñ!DÐØÔ¥Ô 0Ô =Ò=Ð=Ý)-¬×)@Ò)@ÐAWÐY]ÔYjÐmnÐloÐruÐqvÑ)wÔ)wÐ&Ð&ØŒ_˜qÒ Ð Ýœ8 JÔ$4½B¼HÐEÑEÔE×MÒMÈbÑQÔQˆLÝ)-Ô):×)EÒ)EÀlÐTjÑ)kÔ)kÐ&Ð&å)-¬×)@Ò)@ÐAWÐYdÐfhÐklÐjmÑ)nÔ)nÐ&ØŒ
×%Ò%Ð'AÐ&BÑCÔCÐCð  Ø%Ø"ØØØð
ð 	
r/   Fc                 ó2  — |j         t          z   }|j         dz   }|j         dz   }t          |¦  «        }| j                             |j         i ¬¦  «        }	d|	v r|	d         j        }d|	v �rd|	v �rt          j        |	d         t          |         ¬¦  «        }
t          j        |	d         ¦  «        }t          || 
                    ¦   «         ||
¦  «        }t          |
t          j        ¦  «        sJ dt          |
¦  «        › �¦   «         ‚|
j        t          j        k    r|
j        t          j        k    sJ d	|
j        › �¦   «         ‚t          |t          j        ¦  «        sJ dt          |¦  «        › �¦   «         ‚�nQ|| j        k    r|                      |¦  «        n| j        }t)          | 
                    ¦   «         ||	                     d
|¦  «        |	                     d| j        o|¦  «        | j        |	                     d¦  «        |	                     d¦  «        ¬¦  «        \  }
}}t          |
t          j        ¦  «        sJ dt          |
¦  «        › �¦   «         ‚|
j        t          j        k    r|
j        t          j        k    sJ d	|
j        › �¦   «         ‚t          |t          j        ¦  «        sJ dt          |¦  «        › �¦   «         ‚|j        }t2          j                             ||g |                     d¦  «                             ¦   «         ¦  «        }t2          j                             ||g |
                     d¦  «                             ¦   «         ¦  «        }| j                             ||g¦  «         |�s•| j        t2          j         j!        k    �rFt3          j         ¦   «         }| j        |_        |j"         #                    |j"        ¦  «         ||_         | 
                    ¦   «          $                    ¦   «          %                    ¦   «         |_&        tN          �»tO          |¦  «        }|j(        |j(        k    s*| %                    ¦   «         | %                    ¦   «         k    rrtS          d|j(        › d| %                    ¦   «         dd…         › d| %                    ¦   «         dd…         › d|j(        › dtU          |¦  «        dd…         › d�¦  «        ‚�n|t2          j         j+        t2          j         j,        fv rŠ|j        t          j-        t          j.        fvrtS          d|› d�¦  «        ‚t_          ta          | %                    ¦   «         ¦  «        ¦  «        }t2          j                             |||j"        |d¬¦  «        }nkt          j1        |t2          j         2                    |¦  «        ¬¦  «                             |j"        ¦  «        }t2          j3         4                    ||¦  «        }| j                             |g¦  «         |||fS )aš  
        :param weight: TensorProto initializer
        :param qType: type to quantize to
        :param keep_float_weight: Whether to quantize the weight. In some cases, we only want to qunatize scale and zero point.
                                  If keep_float_weight is False, quantize the weight, or don't quantize the weight.
        :return: quantized weight name, zero point name, scale name
        rª   r©   ©Údefault_valÚ
quant_typer   Ú
zero_pointr¥   úUnexpected type úUnexpected dtype Ú	symmetricrk   ÚrminÚrmax©rk   rs   Úrmin_overrideÚrmax_override)r¦   NzThe initializer of shape z! could not be created, expecting é
   z, got z and shape=z
raw=éÈ   r   úQuantized weights for ú. must be 8-bit before packing as 4-bit values.T©Úraw)5rK   r   r   r}   Úget_per_tensor_overridesrY   r#   r®   r	   r   Úflattenr   r$   r!   r&   r'   r(   rv   r�   rq   r   r2   rk   rs   r™   r‰   r¾   r¿   r¯   Útolistrh   r²   rŠ   rŽ   r¼   ÚextendÚcopyÚtobytesÚraw_datar   rÂ   ÚRuntimeErrorr   r‹   ÚUINT4Úint8Úuint8Úbytesr   r¬   Útensor_dtype_to_np_dtyper°   r±   )r*   rž   ÚqTyperk   Úkeep_float_weightÚq_weight_nameÚzp_nameÚ
scale_nameÚweight_dataÚquant_overridesrÝ   r   Úq_weight_datarà   Úscale_dtypeÚscale_initializerÚzero_initializerÚq_weight_initializerÚcheckÚpacked_datas                       r-   Úquantize_initializer_implz'BaseQuantizer.quantize_initializer_impl  só  € ð œÕ&>Ñ>ˆØ”+ Ñ-ˆØ”[ 8Ñ+ˆ
õ ,¨FÑ3Ô3ˆØÔ5×NÒNÈvÌ{ÐhjÐNÑkÔkˆØ˜?Ð*Ð*Ø# LÔ1Ô=ˆEà�oÐ%Ñ%¨,¸/Ð*IÑ*IÝœ /°,Ô"?ÕG[Ð\aÔGbÐcÑcÔcˆJÝ”H˜_¨WÔ5Ñ6Ô6ˆEÝ,¨U°K×4GÒ4GÑ4IÔ4IÈ5ÐR\Ñ]Ô]ˆMÝ˜j­"¬*Ñ5Ô5Ð\Ð\Ð7\Í$ÈzÑJZÔJZÐ7\Ð7\Ñ\Ô\Ð5ØÔ#¥r¤zÒ1Ð1°jÔ6FÍ"Ì*Ò6TÐ6TÐ6TØ6 JÔ$4Ð6Ð6ñ 7UÔ6TÐTõ ˜e¥R¤ZÑ0Ô0ÐRÐRÐ2RÅTÈ%Á[Ä[Ð2RÐ2RÑRÔRÐ0ÑRð <AÀDÔDUÒ;UÐ;U˜×0Ò0°Ñ7Ô7Ð7Ð[_Ô[wˆIÝ/<Ø×#Ò#Ñ%Ô%ØØ×#Ò# K°Ñ;Ô;Ø,×0Ò0°ÀÔARÐAcÐWcÑdÔdØ#Ô2Ø-×1Ò1°&Ñ9Ô9Ø-×1Ò1°&Ñ9Ô9ð0ñ 0ô 0Ñ,ˆJ˜˜}õ ˜j­"¬*Ñ5Ô5Ð\Ð\Ð7\Í$ÈzÑJZÔJZÐ7\Ð7\Ñ\Ô\Ð5ØÔ#¥r¤zÒ1Ð1°jÔ6FÍ"Ì*Ò6TÐ6TÐ6TØ6 JÔ$4Ð6Ð6ñ 7UÔ6TÐTõ ˜e¥R¤ZÑ0Ô0ÐRÐRÐ2RÅTÈ%Á[Ä[Ð2RÐ2RÑRÔRÐ0àÔ&ˆÝ œK×3Ò3°JÀÈRÐQV×Q^ÒQ^Ð_dÑQeÔQe×QlÒQlÑQnÔQnÑoÔoÐÝœ;×2Ò2°7¸EÀ2Àz×GYÒGYÐZ_ÑG`ÔG`×GgÒGgÑGiÔGiÑjÔjÐØŒ
×%Ò%Ð'8Ð:JÐ&KÑLÔLÐLà ñ #	BØÔ ¥DÔ$4Ô$AÒAÑAÝ'+Ô'7Ñ'9Ô'9Ð$Ø15Ô1BÐ$Ô.Ø$Ô)×0Ò0°´Ñ=Ô=Ð=Ø,9Ð$Ô)à0=×0EÒ0EÑ0GÔ0G×0LÒ0LÑ0NÔ0N×0VÒ0VÑ0XÔ0XÐ$Ô-Ý$Ð0õ .Ð.BÑCÔC�EØ”{ kÔ&7Ò7Ð7¸5¿=º=¹?¼?Èm×NcÒNcÑNeÔNeÒ;eÐ;eÝ*ðH¸Ô8Ið Hð HØ,×4Ò4Ñ6Ô6°s¸°sÔ;ðHð HØCHÇ=Â=Á?Ä?ÐSVÐTVÐSVÔCWðHð HØdjÔdpðHð Hå%(Ð)=Ñ%>Ô%>¸tÀ¸tÔ%DðHð Hð Hñô ð ùð
 �4Ô+Ô0µ$Ô2BÔ2HÐIÐIÐIØ Ô&­r¬w½¼Ð.AÐAÐAÝ&Øn°ÐnÐnÐnñô ð õ $Õ$6°}×7LÒ7LÑ7NÔ7NÑ$OÔ$OÑPÔP�õ (,¤{×'>Ò'>¸}ÈeÐU[ÔU`ÐbmÐswÐ'>Ñ'xÔ'xÐ$Ð$å "¤
¨=ÅÄ×@dÒ@dÐejÑ@kÔ@kÐ lÑ lÔ l× tÒ tØ”Kñ!ô !�õ (,Ô'8×'CÒ'CÀMÐS`Ñ'aÔ'aÐ$ØŒJ×)Ò)Ð+?Ð*@ÑAÔAÐAà˜g zÐ1Ð1r/   Tc                 ó@  — t          || j                             ¦   «         ¦  «        }|€t          d|¦  «        ‚t	          |¦  «        }t          |j        ¦  «        }t          ||¦  «        \  }	}
|	st          d|› d|› d|› �¦  «        ‚|
}|j        |         }| j         	                    |d|ig¬¦  «        }t          |¦  «        }|dk    r||k    rt          d|› d	|› d
�¦  «        ‚t          |d         d         |¦  «        \  }}|r||k    r%t          d|› d|› d|d         d         › d�¦  «        ‚d|d         v r|d         d         j
        }|d                              d|                      |¦  «        ¦  «        }|d                              d| j        o|¦  «        }g }g }g }t          |j        ¦  «        }t          |¦  «        }d||<   t          |¦  «        D �]}|                     ||¦  «        }||k     r|nd}||         }d|v �rDd|v �r?t#          j        |d         t&          |         ¬¦  «        }t#          j        |d         ¦  «        }t)          ||                     ¦   «         ||¦  «        }t-          |t"          j        ¦  «        sJ dt1          |¦  «        › �¦   «         ‚|j        t"          j        k    r|j        t"          j        k    sJ d|j        › �¦   «         ‚t-          |t"          j        ¦  «        sJ dt1          |¦  «        › �¦   «         ‚t-          |t"          j        ¦  «        sJ dt1          |¦  «        › �¦   «         ‚�n/t9          |                     ¦   «         |||| j        |                     d¦  «        |                     d¦  «        ¬¦  «        \  }}}t-          |t"          j        ¦  «        sJ dt1          |¦  «        › �¦   «         ‚|j        t"          j        k    r|j        t"          j        k    sJ d|j        › �¦   «         ‚t-          |t"          j        ¦  «        sJ dt1          |¦  «        › �¦   «         ‚t-          |t"          j        ¦  «        sJ dt1          |¦  «        › �¦   «         ‚|                     |¦  «         |                     |¦  «         |                     t#          j        |¦  «                              |¦  «        ¦  «         �Œ	t#          j!        ||¦  «        }|tD          z   }|dz   }|dz   } |j#        |         g}!tH          j%         &                    | |j'        |!t#          j(        |¦  «         )                    ¦   «         ¦  «        }"tH          j%         &                    |||!t#          j(        |¦  «         )                    ¦   «         ¦  «        }#| j         *                    |"|#g¦  «         |�sJ|tH          j+        j,        tH          j+        j-        fv r |j        t"          j.        t"          j/        fvrta          d|› d�¦  «        ‚tc          te          | 3                    ¦   «         ¦  «        ¦  «        }$tH          j%         &                    ||||$d¬ ¦  «        }%| j         *                    |%g¦  «         n†t#          j        |tH          j%         4                    |¦  «        ¬¦  «                              |j#        ¦  «        }tH          j5         6                    ||¦  «        }%| j         *                    |%g¦  «         ||| fS )!Nz{} is not an initializerzWeight z# has a per-channel axis with value z  that is out-of-bounds for rank r   rÚ   r   z.Per-channel tensor quantization overrides for z must have either 1 or z& elements in the list of dictionaries.r   z"Tensor quantization overrides for z& specify an unexpected axis. Expected z
, but got r   rÜ   rà   rk   r   rÝ   r¥   rÞ   rß   rá   râ   rã   rª   r©   rè   ré   Trê   )7r   rh   r~   r)   r   r?   rÂ   r   r}   Úget_per_channel_overridesrY   r2   r�   rk   ÚlistÚrangeÚtaker#   r®   r	   r   rí   r   r$   r!   r&   r'   r(   r   rs   Úappendr¬   r¯   Úconcatenater   r¼   r‰   r¾   r¿   r™   Úhstackrî   r²   rŠ   r‹   rô   rõ   rö   ró   r÷   r   rñ   rø   r°   r±   )&r*   r�   rv   Úchannel_axisrk   rú   r~   ÚweightsÚweights_rankÚis_axis_validÚ	axis_normÚchannel_countÚquant_overrides_for_channelsÚnum_channel_overridesÚis_axis_override_validÚaxis_overriderà   Úzero_point_listÚ
scale_listÚquantized_per_channel_data_listÚweights_shapeÚreshape_dimsÚiÚper_channel_dataÚchannel_override_indexÚchannel_quant_overridesrÝ   r   Úquantized_per_channel_dataÚquantized_weightsrû   rü   rý   Úzero_scale_shaper  r  r  r  s&                                         r-   Ú quantize_weight_per_channel_implz.BaseQuantizer.quantize_weight_per_channel_implo  sè  € õ # ;°´
×0FÒ0FÑ0HÔ0HÑIÔIˆØÐÝÐ7¸ÑEÔEÐEå'¨Ñ4Ô4ˆÝ˜7œ=Ñ)Ô)ˆÝ#1°,ÀÑ#MÔ#MÑ ˆ�yØð 	Ýð9˜+ð 9ð 9È,ð 9ð 9Ø*6ð9ð 9ñô ð ð
 !ˆØœ lÔ3ˆØ'+Ô'B×'\Ò'\Ø v¨|Ð&<Ð%=ð (]ñ (
ô (
Ð$õ !$Ð$@Ñ AÔ AÐØ  AÒ%Ð%Ð*?À=Ò*PÐ*PÝðUÀð Uð UØ,ðUð Uð Uñô ð õ
 1?Ð?[Ð\]Ô?^Ð_eÔ?fÐhtÑ0uÔ0uÑ-Ð Ø%ð 	¨¸,Ò)FÐ)FÝð_°[ð _ð _Ø(ð_ð _Ø4PÐQRÔ4SÐTZÔ4[ð_ð _ð _ñô ð ð Ð7¸Ô:Ð:Ð:Ø7¸Ô:¸<ÔHÔTˆLà0°Ô3×7Ò7¸ÀT×E]ÒE]Ð^jÑEkÔEkÑlÔlˆ	Ø3°AÔ6×:Ò:¸>È4ÔK\ÐKmÐamÑnÔnˆØˆØˆ
Ø*,Ð'Ý˜Wœ]Ñ+Ô+ˆÝ˜MÑ*Ô*ˆØ%&ˆ�\Ñ"Ý�}Ñ%Ô%ð *	qñ *	qˆAØ&Ÿ|š|¨A¨|Ñ<Ô<ÐØ*+Ð.CÒ*CÐ*C Q QÈÐ"Ø&BÐCYÔ&ZÐ#àÐ1Ð1Ñ1°lÐF]Ð6]Ñ6]ÝœXÐ&=¸lÔ&KÕSgÐhtÔSuÐvÑvÔv�
ÝœÐ!8¸Ô!AÑBÔB�Ý-=Ø Ð"2×":Ò":Ñ"<Ô"<¸eÀZñ.ô .Ð*õ " *­b¬jÑ9Ô9Ð`Ð`Ð;`ÍdÐS]ÑN^ÔN^Ð;`Ð;`Ñ`Ô`Ð9Ø!Ô'­2¬:Ò5Ð5¸*Ô:JÍbÌjÒ:XÐ:XÐ:XØ:¨
Ô(8Ð:Ð:ñ ;YÔ:XÐXõ " %­¬Ñ4Ô4ÐVÐVÐ6VÍÈeÉÌÐ6VÐ6VÑVÔVÐ4Ý!Ð"<½b¼jÑIÔIð ð ØI¥tÐ,FÑ'GÔ'GÐIÐIñô ÐIñ õ
 ANØ$×,Ò,Ñ.Ô.Ø ØØ!-Ø#'Ô#6Ø"9×"=Ò"=¸fÑ"EÔ"EØ"9×"=Ò"=¸fÑ"EÔ"EðAñ Aô AÑ=�
˜EÐ#=õ " *­b¬jÑ9Ô9Ð`Ð`Ð;`ÍdÐS]ÑN^ÔN^Ð;`Ð;`Ñ`Ô`Ð9Ø!Ô'­2¬:Ò5Ð5¸*Ô:JÍbÌjÒ:XÐ:XÐ:XØ:¨
Ô(8Ð:Ð:ñ ;YÔ:XÐXõ " %­¬Ñ4Ô4ÐVÐVÐ6VÍÈeÉÌÐ6VÐ6VÑVÔVÐ4Ý!Ð"<½b¼jÑIÔIð ð ØI¥tÐ,FÑ'GÔ'GÐIÐIñô ÐIð ×"Ò" :Ñ.Ô.Ð.Ø×Ò˜eÑ$Ô$Ð$Ø+×2Ò2µ2´:Ð>XÑ3YÔ3Y×3aÒ3aÐbnÑ3oÔ3oÑpÔpÐpÑpõ œNÐ+JÈLÑYÔYÐØ#Õ&>Ñ>ˆØ Ñ-ˆØ  8Ñ+ˆ
ð (Ô,¨\Ô:Ð;ÐÝ œK×3Ò3Ø˜Ô-Ð/?ÅÄÈ:ÑAVÔAV×A]ÒA]ÑA_ÔA_ñ
ô 
Ðõ  œ;×2Ò2Ø�\Ð#3µR´Y¸Ñ5OÔ5O×5VÒ5VÑ5XÔ5Xñ
ô 
Ðð 	Œ
×%Ò%Ð'8Ð:JÐ&KÑLÔLÐLà ñ 	FØ¥Ô 0Ô 5µtÔ7GÔ7MÐNÐNÐNØ$Ô*µ2´7½B¼HÐ2EÐEÐEÝ&Øn°ÐnÐnÐnñô ð õ $Õ$6Ð7H×7PÒ7PÑ7RÔ7RÑ$SÔ$SÑTÔT�õ (,¤{×'>Ò'>Ø! <°ÀÐQUð (?ñ (ô (Ð$ð ”
×-Ò-Ð/CÐ.DÑEÔEÐEÐEå$&¤JØ%Ýœ+×>Ò>¸|ÑLÔLð%ñ %ô %÷ ’'˜+Ô*Ñ+Ô+ð "õ (,Ô'8×'CÒ'CÐDUÐWdÑ'eÔ'eÐ$Ø”
×-Ò-Ð/CÐ.DÑEÔEÐEà˜g zÐ1Ð1r/   c                 ó  — | j         €d S | j                             ¦   «         D �]b}|j        dv rì|                      |¦  «        sŒ"t          | j                             ¦   «         |j        d                  ¦  «        dk    rŒ^|j        d         | j         vs|j        d         | j         vrŒ‡| j         |j        d                  }t          |t          ¦  «        s.t          dt          |¦  «        › d|j        d         ›d�¦  «        ‚|| j         |j        d         <   Œø|j        dk    r_|                      |¦  «        s�Œt          t          j        d¦  «        t          j        d	¦  «        ¬
¦  «        | j         |j        d         <   �Œdd S )N)ÚClipÚRelur   r   rÞ   z for r   ÚSoftmaxr«   r£   )ÚlowestÚhighest)ry   rh   Únodesr    r¢   r?   Úinput_name_to_nodesrg   rf   r   r   r    r!   r#   r'   )r*   r¡   Útds      r-   Úadjust_tensor_rangesz"BaseQuantizer.adjust_tensor_rangesý  s„  € ØÔÐ%ØˆFà”J×$Ò$Ñ&Ô&ð 	qñ 	qˆDàŒ|Ð/Ð/Ð/Ø×0Ò0°Ñ6Ô6ð ØÝ�t”z×5Ò5Ñ7Ô7¸¼
À1¼ÔFÑGÔGÈ1ÒLÐLØØ”:˜a”=¨Ô(:Ð:Ð:¸d¼kÈ!¼nÐTXÔTfÐ>fÐ>fØØÔ'¨¬°A¬Ô7�Ý! "¥jÑ1Ô1ð [Ý#Ð$Yµt¸B±x´xÐ$YÐ$YÀdÄkÐRSÄnÐ$YÐ$YÐ$YÑZÔZÐZØ46�Ô" 4¤:¨a¤=Ñ1Ð1à” Ò*Ð*Ø×0Ò0°Ñ6Ô6ð ÙÝ5?ÅrÄzÐRUÁÄÕ`bÔ`jÐknÑ`oÔ`oÐ5pÑ5pÔ5p�Ô" 4¤;¨q¤>Ñ2ùð#	qð 	qr/   r1   )r£   )FF)TF)rA   rB   rC   r.   r‰   rŠ   ÚDataTypeÚboolr�   r’   r•   r—   rœ   r¢   rØ   r  r&  r0  rE   r/   r-   rG   rG   E   s  € € € € € ð ðIZð IZð IZð IZðV
°TÔ5EÔ5Nð 
ÐSWð 
ð 
ð 
ð 
ð"ð "ð "ð'ð 'ð 'ð ð  ð  ðAð Að Aðð ð ð&R
ð R
ð R
ð R
ðhY2ð Y2ð Y2ð Y2ð@ ØðL2ð L2ð L2ð L2ð\qð qð qð qð qr/   rG   ) r¹   Útypingr   Únumpyr#   r‰   Úonnx.numpy_helperÚonnx.reference.op_runr   ÚImportErrorÚ	calibrater   Ú
onnx_modelr   Úquant_utilsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r}   r   r   rG   rE   r/   r-   ú<module>r;     sÂ  ðð €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€Ø Ð Ð Ð ðØ7Ð7Ð7Ð7Ð7Ð7Ð7øØð ð ð àÐÐÐðøøøð "Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ?Ð >Ð >Ð >Ð >Ð >ðð ð ð ð ñ ô ð ð<Mqð Mqð Mqð Mqð Mqñ Mqô Mqð Mqð Mqð Mqs   ˜ Ÿ)¨)