Ë
    g^(h—  ã                   ó8  — d dl mZmZ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mZmZmZmZmZmZ ddlmZ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­ ee e!f   Z"d	e"_#        eeeefD ]	  Z$d	e$_#        Œ g d
¢Z%d„ Z& G d„ de «      Z'y)é    )ÚCallableÚOptionalÚUnionN)Ú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_trainztorch.ao.quantization)‰ÚDeQuantStubÚFakeQuantizeÚFakeQuantizeBaseÚFixedQParamsFakeQuantizeÚFixedQParamsObserverÚFusedMovingAvgObsFakeQuantizeÚHistogramObserverÚMatchAllNodeÚMinMaxObserverÚMovingAverageMinMaxObserverÚ%MovingAveragePerChannelMinMaxObserverÚNoopObserverÚObserverBaseÚObserverOrFakeQuantizeÚ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Úmove_exported_model_to_evalÚmove_exported_model_to_trainÚallow_exported_model_train_evalÚ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_127r   r   r   r   r   r   Ú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       ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/ao/quantization/__init__.pyr:   r:   ¼   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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
    ÚdtypeÚ
obs_or_fqsÚderive_qparams_fnÚ	quant_minÚ	quant_maxÚqschemeÚch_axisc                 óÐ   •— t         ‰	| �  |«       || _        || _        || _        || _        || _        || _        ddlm	}  || j                  «      r| j                  €J 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§   )
ÚselfrŸ   r    r¡   r¢   r£   r¤   r¥   r§   Ú	__class__s
            €r›   r©   z'_DerivedObserverOrFakeQuantize.__init__Ë   sm   ø€ ô 	‰Ñ˜ÔØ$ˆŒØ!2ˆÔØ"ˆŒØ"ˆŒØˆŒØˆŒå)á˜$Ÿ,™,Ô'à—‘Ð(ðHàGóHÙ(ð (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   r   Úintr¤   r©   r±   r³   Ú__classcell__)r¬   s   @r›   rž   rž   Æ   s½   ø„ ñð $(Ø#'Ø+/Ø!%ñHà�{‰{ðHð Ð/Ñ0ðHð $ØÐ(Ñ)Ð*¨E°&¸&°.Ñ,AÐAñ
ð	Hð ˜C‘=ðHð ˜C‘=ðHð ˜%Ÿ-™-Ñ(ðHð ˜#‘õHð6˜ð  Fó ö7rœ   rž   )(Útypingr   r   r   r¸   r   Úfake_quantizer	   r
   Úfuser_method_mappingsÚobserverÚpt2e._numeric_debuggerr   r   r   r   r   r   Úpt2e.export_utilsr   rw   r   ru   r   rv   ÚqconfigÚqconfig_mappingÚ
quant_typeÚquantization_mappingsr€   rƒ   Ústubsr    r   r!   rµ   Ú_fÚ__all__r:   rž   r–   rœ   r›   ú<module>rÊ      s¦   ð÷ -Ñ ,ã Ý ä ß 8Ü $Ü ÷÷ ÷ñ ô
 Ü Ü Ü $Ü Ü Ü ð ˜|Ð-=Ð=Ñ>Ð Ø$;Ð Ô !àØ Ø!Ø&ð	ò ,€Bð ,€B…Mð,òL€ò^ô$7 \õ $7rœ   