
    %Vjip                        d dl Z d dlmZmZmZ d dlZd dlmZ ddlT ddlmZm	Z	 ddl
T ddlT ddlmZmZmZmZmZmZ ddlmZmZmZ ddlT ddlT ddlT ddlT ddlT ddlT ddl T e j!        d	k     ree"e#f         Z$d
e$_%        nd dlm&Z&  e&dee"e#f                   Z$eeeefD ]	Z'd
e'_%        
g dZ(d Z) G d de"          Z*dS )    N)CallableOptionalUnion)Tensor   )*)fuse_modulesfuse_modules_qat)compare_results
CUSTOM_KEYextract_results_from_loggersgenerate_numeric_debug_handleNUMERIC_DEBUG_HANDLE_KEY"prepare_for_propagation_comparison) _allow_exported_model_train_eval_move_exported_model_to_eval_move_exported_model_to_train)      ztorch.ao.quantization)TypeAliasType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_mappings0get_default_dynamic_sparse_quant_module_mappings0get_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_mappings2get_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move_exported_model_to_evalmove_exported_model_to_trainallow_exported_model_train_evalno_observer_set0per_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_127r   r   r   r   r   r   AffineQuantizedObserverBaseGranularityMappingTypePerAxisPerBlockPerGroupPerRow	PerTensorPerTokenTorchAODTypeZeroPointDomainget_block_sizec                 ,    |D ]\  }} | |           dS )zDefine 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       X/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/ao/quantization/__init__.pyr=   r=      s0     $  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e         dee         deej                 d	ee         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        J d            d S d S )Nr   )is_per_channelz6Must provide a valid ch_axis if qscheme is per channel)
super__init__r   r   r   r   r   r   utilsr   )
selfr   r   r   r   r   r   r   r   	__class__s
            r   r   z'_DerivedObserverOrFakeQuantize.__init__   s     	$!2""))))))>$,'' 	<++H ,++	 	++r   xreturnc                     |S Nr   )r   r   s     r   forwardz&_DerivedObserverOrFakeQuantize.forward   s    r   c                 6    |                      | j                  S r   )r   r   )r   s    r   calculate_qparamsz0_DerivedObserverOrFakeQuantize.calculate_qparams   s    %%do666r   )NNNN)__name__
__module____qualname____doc__torchr   listr   r   tupler   r   intr   r   r   r   __classcell__)r   s   @r   r   r      s	         $(#'+/!% { /0 $()*E&&.,AA
	 C= C= %-( #     6 F    7 7 7 7 7 7 7r   r   )+systypingr   r   r   r   r   fake_quantizer	   r
   fuser_method_mappingsobserverpt2e._numeric_debuggerr   r   r   r   r   r   pt2e.export_utilsr   rz   r   rx   r   ry   qconfigqconfig_mapping
quant_typequantization_mappingsr   r   stubsversion_infor$   r   r   r   r   _f__all__r=   r   r   r   r   <module>r      s@   


 , , , , , , , , , ,            8 8 8 8 8 8 8 8 $ $ $ $                            
             $ $ $ $             g"<1A#AB(?%%$$$$$$*] %6F(F"G 
  !&	 , ,B ,BMML L L^  $7 $7 $7 $7 $7\ $7 $7 $7 $7 $7r   