ó
    EñiU  ã                   óº   • S SK r S SKrS SKrS SKrS SKJr  S/r " S S\R                  R                  \ R                  S9r
S rS rS rS	 rS
 rS r\" S5      rg)é    N)Ú
_addindentÚWeightedQuantizedModulec                   óF   • \ rS rSrSr\\R                  S 5       5       rSr	g)r   é   zIWrapper for quantized modules than can be lowered from reference modules.c                 ó   • [         e)N)ÚNotImplementedError)ÚclsÚ
ref_moduleÚoutput_scaleÚoutput_zero_points       Ú`/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/ao/nn/quantized/modules/utils.pyÚfrom_referenceÚ&WeightedQuantizedModule.from_reference   s
   € ô "Ð!ó    © N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚclassmethodÚabcÚabstractmethodr   Ú__static_attributes__r   r   r   r   r      s%   † ÙSàØ×Ññ"ó ó ó"r   )Ú	metaclassc                 ó@   • [        U S5      (       a  U R                  n U $ )NÚactivation_post_process)Úhasattrr   )Úobservers    r   Ú_get_weight_observerr       s    € äˆxÐ2×3Ñ3Ø×3Ñ3ˆà€Or   c                 ó  • [        U 5      n U[        R                  [        R                  [        R                  4;   aO  [        R
                  " U5      nU R                  UR                  :„  =(       d    U R                  UR                  :  $ g)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                 óp  • [        XR                  5      (       d  U $ [        U5      nUR                  UR                  pT[
        R                  " U R                  5       5      R                  U5      n[
        R                  " U R                  5       5      R                  U5      n[
        R                  " [
        R                  " U R                  5       U5      U5      nUR                  [
        R                  [
        R                  4;   a5  [
        R                  " X‚R                  5       UR                  5       5      n U $ UR                  [
        R                   [
        R"                  [
        R$                  4;   a!  [
        R&                  " X‚X1R(                  S9n U $ [+        SUR                  -   5      e)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_weightsrI   (   sQ  € Ü! (¯M©M×:Ñ:Øˆä# HÓ-€HØ×#Ñ# X×%7Ñ%7ˆ$ô —’˜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Ø—J‘J“L "§'¡'£)ó
ˆð €Nð 
×	Ñ	Ü×#Ñ#Ü× Ñ Ü×.Ñ.ðó 
ô
 ×:Ò:Ø˜2×$4Ñ$4ñ
ˆð
 €Nô Ð.°×1AÑ1AÑAÓBÐBr   c                 ó¼  • UR                  5       u  p#UR                  [        R                  [        R                  4;   aG  [        R
                  " U [        U5      [        U5      [        R                  5      n[        XAX#5      nU$ UR                  [        R                  [        R                  4;   a|  UR                  n[        R                  " U UR                  [        R                  5      UR                  [        R                   5      U[        R                  5      n[        XAX#5      nU$ UR                  [        R"                  :X  av  [        R                  " U UR                  [        R                  5      UR                  [        R                  5      UR                  UR$                  5      n[        XAX#5      nU$ ['        SUR                  -   5      e)Nr0   )Úcalculate_qparamsr6   r"   r7   r8   Úquantize_per_tensorÚfloatÚintr#   rI   r;   r<   r?   Úquantize_per_channelÚtoÚdoubleÚint64r=   r+   r@   )Úfloat_wtr   Úwt_scaleÚwt_zprA   Úwt_axiss         r   Ú_quantize_weightrW   E   sp  € Ø×0Ñ0Ó2�O€HØ×ÑœE×6Ñ6¼×8OÑ8OÐPÓPÜ×+Ò+Ø”e˜H“o¤s¨5£z´5·;±;ó
ˆô ! °HÓDˆð, €Nð+ 
×	Ñ	œe×9Ñ9¼5×;SÑ;SÐTÓ	TØ×"Ñ"ˆÜ×,Ò,ØØ�K‰KœŸ™Ó%Ø�H‰H”U—[‘[Ó!ØÜ�K‰Kó
ˆô ! °HÓDˆð €Nð 
×	Ñ	œU×CÑCÓ	CÜ×,Ò,ØØ�K‰KœŸ™Ó$Ø�H‰H”U—[‘[Ó!Ø×ÑØ�N‰Nó
ˆô ! °HÓDˆð €Nô Ð.°×1AÑ1AÑAÓBÐBr   c                 ó   ^ • U 4S jnU$ )zKConverts the argument to a tuple of size n
with the first element repeated.c                 ó  >• [        U [        R                  R                  5      (       a@  [	        U 5      T:X  a  O0U S   n [        U [        R                  R                  5      (       a  M@  [        [        R                  " U T5      5      $ )Nr   )Ú
isinstanceÚcollectionsr   ÚSequenceÚlenÚtupleÚ	itertoolsÚrepeat)ÚxÚns    €r   ÚparseÚ!_ntuple_from_first.<locals>.parseh   sd   ø€ Ü˜œKŸO™O×4Ñ4×5Ñ5Ü�1‹v˜‹{ØØ�!‘ˆAô ˜œKŸO™O×4Ñ4×5Ó5ô ”Y×%Ò% a¨Ó+Ó,Ð,r   r   )rb   rc   s   ` r   Ú_ntuple_from_firstre   d   s   ø€ õ-ð €Lr   c                 óà  • / nU R                  5       nU(       a  UR                  S5      n/ nU R                  R                  5        HH  u  pV[	        Xa5      (       a  M  [        U5      n[        US5      nUR                  SU-   S-   U-   5        MJ     X$-   nU R                  5       S-   n	U(       a8  [        U5      S:X  a  U(       d  X’S   -  n	OU	SSR                  U5      -   S-   -  n	U	S-  n	U	$ )	NÚ
é   Ú(z): é   r   z
  Ú))Ú
extra_reprÚsplitÚ_modulesÚitemsrZ   Úreprr   ÚappendÚ	_get_namer]   Újoin)
ÚselfÚparamsÚextra_linesrl   Úchild_linesÚkeyÚmoduleÚmod_strÚlinesÚmain_strs
             r   Ú_hide_packed_params_reprr}   r   sé   € ð €KØ—‘Ó"€JæØ ×&Ñ& tÓ,ˆØ€KØ—}‘}×*Ñ*Ö,‰ˆÜ�f×%Ñ%ÙÜ�v“,ˆÜ˜W aÓ(ˆØ×Ñ˜3 ™9 uÑ,¨wÑ6Ö7ñ -ð Ñ%€Eà�~‰~Ó #Ñ%€HÞäˆ{Ó˜qÓ ®Ø A™Ñ&‰Hà˜ §¡¨UÓ!3Ñ3°dÑ:Ñ:ˆHà��O€HØ€Or   rh   )r   r[   r_   r"   Útorch.nn.modules.moduler   Ú__all__ÚnnÚModuleÚABCMetar   r    r-   rI   rW   re   r}   Ú_pair_from_firstr   r   r   Ú<module>r„      se   ðã 
Û Û ã Ý .ð ð€ô
"˜eŸh™hŸo™o¸¿¹ò "òòòò:ò>òñ< & aÓ(Ñ r   