Ë
    ÄÓ^jv  ã                   óè   — d dl Z d dlmZ d dlmZ d dlZd dlmZ ddl­ ddlmZm	Z	 ddl
­ ddl­ ddl­ ddl­ ddl­ ddl­ ddl­ ddl­ ddl­  edeez  «      Zg d	¢Zd
„ Z G d„ de«      Zy)é    N)ÚCallable)ÚTypeAliasType)ÚTensoré   )Ú*)Úfuse_modulesÚfuse_modules_qatÚObserverOrFakeQuantize)€ÚDeQuantStubÚFakeQuantizeÚFakeQuantizeBaseÚFixedQParamsFakeQuantizeÚFixedQParamsObserverÚFusedMovingAvgObsFakeQuantizeÚHistogramObserverÚMatchAllNodeÚMinMaxObserverÚMovingAverageMinMaxObserverÚ%MovingAveragePerChannelMinMaxObserverÚNoopObserverÚObserverBaser
   ÚPatternÚPerChannelMinMaxObserverÚPlaceholderObserverÚQConfigÚ
QConfigAnyÚQConfigDynamicÚQConfigMappingÚ	QuantStubÚ	QuantTypeÚQuantWrapperÚRecordingObserverÚReuseInputObserverÚUniformQuantizationObserverBaseÚadd_quant_dequantÚconvertÚconvert_dynamic_jitÚconvert_jitÚ'default_affine_fixed_qparams_fake_quantÚ%default_affine_fixed_qparams_observerÚdefault_debug_observerÚdefault_dynamic_fake_quantÚdefault_dynamic_quant_observerÚdefault_embedding_fake_quantÚ!default_embedding_fake_quant_4bitÚdefault_eval_fnÚdefault_fake_quantÚ+default_fixed_qparams_range_0to1_fake_quantÚ)default_fixed_qparams_range_0to1_observerÚ.default_fixed_qparams_range_neg1to1_fake_quantÚ,default_fixed_qparams_range_neg1to1_observerÚdefault_float_qparams_observerÚ#default_float_qparams_observer_4bitÚdefault_fused_act_fake_quantÚ'default_fused_per_channel_wt_fake_quantÚdefault_fused_wt_fake_quantÚdefault_histogram_fake_quantÚdefault_histogram_observerÚdefault_observerÚ%default_per_channel_weight_fake_quantÚ#default_per_channel_weight_observerÚdefault_placeholder_observerÚdefault_reuse_input_observerÚ*default_symmetric_fixed_qparams_fake_quantÚ(default_symmetric_fixed_qparams_observerÚdefault_weight_fake_quantÚdefault_weight_observerÚdisable_fake_quantÚdisable_observerÚenable_fake_quantÚenable_observerÚfuse_conv_bnÚfuse_conv_bn_jitÚfuse_conv_bn_reluÚfuse_convtranspose_bnÚfuse_linear_bnr   r	   Ú4fused_per_channel_wt_fake_quant_range_neg_127_to_127Ú(fused_wt_fake_quant_range_neg_127_to_127Úget_combined_dictÚ&get_default_compare_output_module_listÚget_default_custom_config_dictÚ)get_default_dynamic_quant_module_mappingsÚ0get_default_dynamic_sparse_quant_module_mappingsÚ0get_default_float_to_quantized_operator_mappingsÚget_default_qat_module_mappingsÚget_default_qat_qconfigÚget_default_qat_qconfig_dictÚget_default_qat_qconfig_mappingÚget_default_qconfigÚget_default_qconfig_dictÚget_default_qconfig_mappingÚ$get_default_qconfig_propagation_listÚ(get_default_static_quant_module_mappingsÚ2get_default_static_quant_reference_module_mappingsÚ/get_default_static_sparse_quant_module_mappingsÚget_dynamic_quant_module_classÚ!get_embedding_qat_module_mappingsÚ*get_embedding_static_quant_module_mappingsÚget_fuser_methodÚget_fuser_method_newÚget_observer_state_dictÚget_quantized_operatorÚget_static_quant_module_classÚload_observer_state_dictÚno_observer_setÚ0per_channel_weight_observer_range_neg_127_to_127ÚprepareÚprepare_dynamic_jitÚprepare_jitÚprepare_qatÚpropagate_qconfig_Úqconfig_equalsÚquantizeÚquantize_dynamicÚquantize_dynamic_jitÚquantize_jitÚquantize_qatÚscript_qconfigÚscript_qconfig_dictÚswap_moduleÚ$weight_observer_range_neg_127_to_127ÚAffineQuantizedObserverBaseÚGranularityÚMappingTypeÚPerAxisÚPerBlockÚPerGroupÚPerRowÚ	PerTensorÚPerTokenÚTorchAODTypeÚZeroPointDomainÚget_block_sizec                 ó(   — |D ]  \  }} | |«       Œ y)z®Define the default evaluation function.

    Default evaluation function takes a torch.utils.data.Dataset or a list of
    input Tensors and run the model on the dataset
    N© )ÚmodelÚ
calib_dataÚdataÚ_targets       úi/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/ao/quantization/__init__.pyr0   r0   ¦   s   € ð $ò ‰ˆˆgÙˆd�ñó    c                   óÂ   ‡ — e Zd ZdZ	 	 	 	 ddej
                  dee   deee   ge	e
e
f   f   dedz  dedz  dej                  dz  d	edz  fˆ fd
„Zde
de
fd„Zd„ Zˆ xZS )Ú_DerivedObserverOrFakeQuantizezuThis observer is used to describe an observer whose quantization parameters
    are derived from other observers
    NÚdtypeÚ
obs_or_fqsÚderive_qparams_fnÚ	quant_minÚ	quant_maxÚqschemeÚch_axisc                 óØ   •— t         ‰	| �  |«       || _        || _        || _        || _        || _        || _        ddlm	}  || j                  «      r| j                  €t        d«      ‚y y )Nr   )Úis_per_channelz6Must provide a valid ch_axis if qscheme is per channel)ÚsuperÚ__init__r“   r”   r•   r–   r—   r˜   Úutilsrš   ÚAssertionError)
Úselfr’   r“   r”   r•   r–   r—   r˜   rš   Ú	__class__s
            €rŽ   rœ   z'_DerivedObserverOrFakeQuantize.__init__µ   sp   ø€ ô 	‰Ñ˜ÔØ$ˆŒØ!2ˆÔØ"ˆŒØ"ˆŒØˆŒØˆŒå)á˜$Ÿ,™,Ô'Ø�|‰|Ð#Ü$ØLóð ð $ð (r�   ÚxÚreturnc                 ó   — |S ©Nr‰   )rŸ   r¡   s     rŽ   Úforwardz&_DerivedObserverOrFakeQuantize.forwardÑ   s   € Øˆr�   c                 ó8   — | j                  | j                  «      S r¤   )r”   r“   )rŸ   s    rŽ   Úcalculate_qparamsz0_DerivedObserverOrFakeQuantize.calculate_qparamsÔ   s   € Ø×%Ñ% d§o¡oÓ6Ð6r�   )NNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Útorchr’   Úlistr
   r   Útupler   Úintr—   rœ   r¥   r§   Ú__classcell__)r    s   @rŽ   r‘   r‘   °   sµ   ø„ ñð !%Ø $Ø(,Ø"ñà�{‰{ðð Ð/Ñ0ðð $ØÐ(Ñ)Ð*¨E°&¸&°.Ñ,AÐAñ
ð	ð ˜‘:ðð ˜‘:ðð —‘ Ñ%ðð �t‘õð8˜ð  Fó ö7r�   r‘   )ÚsysÚcollections.abcr   Útyping_extensionsr   r¬   r   Úfake_quantizer   r	   Úfuser_method_mappingsÚobserverÚqconfigÚqconfig_mappingÚ
quant_typeÚquantization_mappingsrs   rv   Ústubsr   r   r
   Ú__all__r0   r‘   r‰   r�   rŽ   ú<module>r½      si   ðó Ý $Ý +ã Ý ä ß 8Ü $Ü Ü Ü Ü Ü $Ü Ü Ü ñ 'Ø˜lÐ-=Ñ=óÐ ò
F€òRô%7 \õ %7r�   