
    sh                        S SK Jr  S SKrS SKrS SKJs  Jr  S SKJ	r	  S SK
JrJrJr  S SKJrJrJr  SS/rS
S jr " S	 S\5      rg)    )annotationsN)PerChannelMinMaxObserver)QuantizationAnnotationQuantizationSpec	Quantizer)OperatorConfigOperatorPatternTypeQuantizationConfigget_embedding_operators_configEmbeddingQuantizerc            	     H   [        [        R                  [        R                  S[        R
                  " SS9S9n [        S S U S 5      n[        R                  R                  //nUR                  [        R                  /5        [        XS9n[        R                  " U5      $ )Nr   g      0?)eps)dtypeqschemech_axisobserver_or_fake_quant_ctr)config	operators)r   torchuint8 per_channel_affine_float_qparamsr   	with_argsr
   nn	EmbeddingappendF	embeddingr   copydeepcopy)weight_quantization_specquantization_configopssupported_config_and_operatorss       ڇ/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/torch/ao/quantization/quantizer/embedding_quantizer.pyr   r      s    /kk66#;#E#E&#Q	  -T49QSWX',xx'9'9&:%;CJJ}%3"&" ==788    c                     ^  \ rS rSrS
U 4S jjr\SS j5       r\    SS j5       rSS jrSS jr	SS jr
\SS j5       rS	rU =r$ )r   +   c                "   > [         TU ]  5         g N)super__init__)self	__class__s    r$   r+   EmbeddingQuantizer.__init__,   s    r%   c                l    U R                  5        VVs1 s H  u  pUiM	     nnn[        U5      $ s  snnf r)   )get_supported_operatorslist)clsspec_
op_configss       r$   "get_supported_quantization_configs5EmbeddingQuantizer.get_supported_quantization_configs/   s>     !$ ; ; =/
 =WTD = 	 /
 J/
s   0c                J    U R                  5        H  u  p#X!:X  d  M  Us  $    / $ r)   )r0   )r2   r!   r   r"   s       r$   .get_supported_operator_for_quantization_configAEmbeddingQuantizer.get_supported_operator_for_quantization_config6   s-     668KF ,
 9 	r%   c                <    U R                  UR                  5        U$ )z!just handling global spec for now)_annotate_embedding_opsgraphr,   models     r$   annotateEmbeddingQuantizer.annotateD   s    $$U[[1r%   c                   [        5       nUR                   H  nUR                  S:X  d  M  UR                  [        R
                  R                  R                  R                  :X  d  MS  UR                  R                  c  [        S5      e[        UR                  S   UR                  R                  0S9UR                  S'   M     g )Ncall_functionz<Embedding config must have a valid weight quantization spec.r   )input_qspec_mapquantization_annotation)r   nodesoptargetr   r"   atenr   defaultr   weight
ValueErrorr   argsmeta)r,   r=   embedding_confignodes       r$   r<   *EmbeddingQuantizer._annotate_embedding_opsI   s    +I+KKKD ?*KK599>>#;#;#C#CC#**119$V  8N		!&6&=&=&D&D%8		34  r%   c                    g r)    r>   s     r$   validateEmbeddingQuantizer.validate\   s    r%   c                    [        5       /$ r)   )r   )r2   s    r$   r0   *EmbeddingQuantizer.get_supported_operators_   s    .011r%   rS   )returnNone)rX   zlist[QuantizationConfig])r!   r
   rX   zlist[OperatorPatternType])r?   torch.fx.GraphModulerX   rZ   )r=   ztorch.fx.GraphrX   rY   )r?   rZ   rX   rY   )rX   zlist[OperatorConfig])__name__
__module____qualname____firstlineno__r+   classmethodr6   r9   r@   r<   rT   r0   __static_attributes____classcell__)r-   s   @r$   r   r   +   sc         "4	" 
& 2 2r%   )rX   r   )
__future__r   r   r   torch.nn.functionalr   
functionalr   torch.ao.quantization.observerr   )torch.ao.quantization.quantizer.quantizerr   r   r   7torch.ao.quantization.quantizer.xnnpack_quantizer_utilsr   r	   r
   __all__r   r   rS   r%   r$   <module>ri      sK    "     C 
  %9 62 62r%   