Ë
    P/æj\  ã                   ó@  — d dl mZmZ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ÚListÚOptionalÚTupleÚ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   c                 ó(   — |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       úa/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/ao/quantization/__init__.pyr<   r<   ®   s   € ð #ò ‰ˆˆfÙˆ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•   r   r#   r   r   r   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   r®   r   Úfake_quantizer   r   Úfuser_method_mappingsÚobserverÚpt2e._numeric_debuggerr   r   r   r   r   r   Úpt2e.export_utilsr   ry   r   rw   r   rx   ÚqconfigÚqconfig_mappingÚ
quant_typeÚquantization_mappingsr‚   r…   Ústubsr"   r   r#   r«   Ú_fÚ__all__r<   r”   rŒ   r’   r‘   ú<module>r¾      s¦   ð÷ :Õ 9ã Ý ä ß 8Ü $Ü ÷÷ ÷ñ ô
 Ü Ü Ü $Ü Ü Ü ð ˜|Ð-=Ð=Ñ>Ð Ø$;Ð Ô !àØ Ø!Ø&ð	ò ,€Bð ,€B…Mð,ò~€òBô$7 \õ $7r’   