Ë
    g^(hW  ã                   óÀ   — d dl Z d dlZd dlZd dlZd dlmZ dgZ G d„ dej                  j                  e j                  ¬«      Z
d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Z ed«      Zy)é    N)Ú
_addindentÚWeightedQuantizedModulec                   ó>   — e Zd ZdZeej                  d„ «       «       Zy)r   zIWrapper for quantized modules than can be lowered from reference modules.c                 ó   — t         ‚)N)ÚNotImplementedError)ÚclsÚ
ref_moduleÚoutput_scaleÚoutput_zero_points       úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/ao/nn/quantized/modules/utils.pyÚfrom_referencez&WeightedQuantizedModule.from_reference   s
   € ô "Ð!ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚclassmethodÚabcÚabstractmethodr   © r   r   r   r      s%   „ ÙSàØ×Ññ"ó ó ñ"r   )Ú	metaclassc                 ó6   — t        | d«      r| j                  } | S )NÚactivation_post_process)Úhasattrr   )Úobservers    r   Ú_get_weight_observerr      s   € äˆxÐ2Ô3Ø×3Ñ3ˆà€Or   c                 ó  — t        | «      } |t        j                  t        j                  t        j                  fv rIt        j
                  |«      }| j                  |j                  kD  xs | j                  |j                  k  S y)NF)
r   ÚtorchÚqint8Úquint8Úqint32ÚiinfoÚ	quant_minÚminÚ	quant_maxÚmax)r   ÚdtypeÚinfos      r   Ú_needs_weight_clampingr)       sa   € Ü# HÓ-€HØ”—‘œeŸl™l¬E¯L©LÐ9Ñ9Ü�{‰{˜5Ó!ˆØ×!Ñ! D§H¡HÑ,ÒM°×0BÑ0BÀTÇXÁXÑ0MÐMØr   c                 ób  — t        || j                  «      s| S t        |«      }|j                  |j                  }}t        j                  | j                  «       «      j                  |«      }t        j                  | j                  «       «      j                  |«      }t        j                  t        j                  | j                  «       |«      |«      }|j                  t
        j                  t
        j                  fv r5t        j                  ||j                  «       |j                  «       «      } | S |j                  t
        j                   t
        j"                  t
        j$                  fv r%t        j&                  ||||j(                  ¬«      } | S t+        d|j                  z   «      ‚)N)ÚaxisúUnexpected qscheme )r)   r'   r   r#   r%   r   ÚcloneÚint_reprÚfill_ÚminimumÚmaximumÚqschemeÚper_tensor_symmetricÚper_tensor_affineÚ!_make_per_tensor_quantized_tensorÚitemÚper_channel_symmetricÚper_channel_affineÚ per_channel_affine_float_qparamsÚ"_make_per_channel_quantized_tensorÚch_axisÚ
ValueError)	Úqweightr   ÚscaleÚzpÚmin_Úmax_Ú
qw_int_maxÚ
qw_int_minÚqw_ints	            r   Ú_clamp_weightsrE   (   sX  € Ü! (¨G¯M©MÔ:Øˆä# HÓ-€HØ×#Ñ# X×%7Ñ%7ˆ$€Dô —‘˜W×-Ñ-Ó/Ó0×6Ñ6°tÓ<€JÜ—‘˜W×-Ñ-Ó/Ó0×6Ñ6°tÓ<€JÜ�]‰]œ5Ÿ=™=¨×)9Ñ)9Ó);¸ZÓHÈ*ÓU€Fà×ÑœE×6Ñ6¼×8OÑ8OÐPÑPÜ×9Ñ9Ø�E—J‘J“L "§'¡'£)ó
ˆð €Nð 
×	Ñ	Ü×#Ñ#Ü× Ñ Ü×.Ñ.ðñ 
ô
 ×:Ñ:Ø�E˜2 H×$4Ñ$4ô
ˆð
 €Nô Ð.°×1AÑ1AÑAÓBÐBr   c                 óº  — |j                  «       \  }}|j                  t        j                  t        j                  fv rHt        j
                  | t        |«      t        |«      t        j                  «      }t        ||||«      }|S |j                  t        j                  t        j                  fv r}|j                  }t        j                  | |j                  t        j                  «      |j                  t        j                   «      |t        j                  «      }t        ||||«      }|S |j                  t        j"                  fv rwt        j                  | |j                  t        j                  «      |j                  t        j                  «      |j                  |j$                  «      }t        ||||«      }|S t'        d|j                  z   «      ‚)Nr,   )Úcalculate_qparamsr2   r   r3   r4   Úquantize_per_tensorÚfloatÚintr   rE   r7   r8   r;   Úquantize_per_channelÚtoÚdoubleÚint64r9   r'   r<   )Úfloat_wtr   Úwt_scaleÚwt_zpr=   Úwt_axiss         r   Ú_quantize_weightrS   E   s�  € Ø×0Ñ0Ó2�O€HˆeØ×ÑœE×6Ñ6¼×8OÑ8OÐPÑPÜ×+Ñ+Ø”e˜H“o¤s¨5£z´5·;±;ó
ˆô ! ¨(°H¸eÓDˆð, €Nð+ 
×	Ñ	œe×9Ñ9¼5×;SÑ;SÐTÑ	TØ×"Ñ"ˆÜ×,Ñ,ØØ�K‰KœŸ™Ó%Ø�H‰H”U—[‘[Ó!ØÜ�K‰Kó
ˆô ! ¨(°H¸eÓDˆð €Nð 
×	Ñ	œe×DÑDÐEÑ	EÜ×,Ñ,ØØ�K‰KœŸ™Ó$Ø�H‰H”U—[‘[Ó!Ø×ÑØ�N‰Nó
ˆô ! ¨(°H¸eÓDˆð €Nô Ð.°×1AÑ1AÑAÓBÐBr   c                 ó   ‡ — ˆ fd„}|S )zOConverts the argument to a tuple of size n
    with the first element repeated.c                 óü   •— t        | t        j                  j                  «      r9t	        | «      ‰k(  rn*| d   } t        | t        j                  j                  «      rŒ9t        t        j                  | ‰«      «      S )Nr   )Ú
isinstanceÚcollectionsr   ÚSequenceÚlenÚtupleÚ	itertoolsÚrepeat)ÚxÚns    €r   Úparsez!_ntuple_from_first.<locals>.parseh   s^   ø€ Ü˜œKŸO™O×4Ñ4Ô5Ü�1‹v˜Š{ØØ�!‘ˆAô ˜œKŸO™O×4Ñ4Õ5ô ”Y×%Ñ% a¨Ó+Ó,Ð,r   r   )r^   r_   s   ` r   Ú_ntuple_from_firstr`   d   s   ø€ ô-ð €Lr   c                 ó¸  — g }| j                  «       }|r|j                  d«      }g }| j                  j                  «       D ]C  \  }}t	        ||«      rŒt        |«      }t        |d«      }|j                  d|z   dz   |z   «       ŒE ||z   }| j                  «       dz   }	|r3t        |«      dk(  r|s	|	|d   z  }	n|	ddj                  |«      z   dz   z  }	|	dz  }	|	S )	Nú
é   ú(z): é   r   z
  ú))Ú
extra_reprÚsplitÚ_modulesÚitemsrV   Úreprr   ÚappendÚ	_get_namerY   Újoin)
ÚselfÚparamsÚextra_linesrg   Úchild_linesÚkeyÚmoduleÚmod_strÚlinesÚmain_strs
             r   Ú_hide_packed_params_reprrx   r   só   € ð €KØ—‘Ó"€JáØ ×&Ñ& tÓ,ˆØ€KØ—}‘}×*Ñ*Ó,ò 8‰ˆˆVÜ�f˜fÔ%ØÜ�v“,ˆÜ˜W aÓ(ˆØ×Ñ˜3 ™9 uÑ,¨wÑ6Õ7ð8ð ˜+Ñ%€Eà�~‰~Ó #Ñ%€HÙäˆ{Ó˜qÒ ©Ø˜ A™Ñ&‰Hà˜ §¡¨UÓ!3Ñ3°dÑ:Ñ:ˆHà��O€HØ€Or   rc   )r   rW   r[   r   Útorch.nn.modules.moduler   Ú__all__ÚnnÚModuleÚABCMetar   r   r)   rE   rS   r`   rx   Ú_pair_from_firstr   r   r   ú<module>r      se   ðã 
Û Û ã Ý .ð ð€ô
"˜eŸh™hŸo™o¸¿¹õ "òòòò:ò>òñ< & aÓ(Ñ r   