+
    QV-jÓ  ã                   óŠ   € R t ^RIHtHtHt ]! 4       '       d   ^ RIt]P                  ! ]4      tR t	R t
R tRR ltR	R ltR# )
z2HQQ (Half-Quadratic Quantization) integration file)Úis_hqq_availableÚis_torch_availableÚloggingNc                 óD   € V P                  4        F  w  rWn        K  	  R # ©N)Únamed_modulesÚname)Úmodelr   Úmodules   &  Ún/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/transformers/integrations/hqq.pyÚautoname_modulesr      s   € Ø×+Ñ+Ö-‰ˆØŽó .ó    c                 ó¬   € R P                  V P                  R 4       Uu. uF%  qR9  g   K  VP                  4       '       d   K#  VNK'  	  up4      # u upi )Ú.)r	   Úlayers)ÚjoinÚsplitÚ	isnumeric)r   Úns   & r   Úname_to_linear_tagr       sA   € Ø�8‰8 §
¡
¨3¤Ól¡˜1Ð>QÑ5Q”QÐ\]×\gÑ\g×\i—Q�Q¡ÑlÓmÐmùÒls   ŸA¬AÁAc                 ó  € \        4       '       d   ^ RIHp \        4       pV P	                  4        FM  w  r4\        V\        P                  P                  X34      '       g   K3  VP                  \        V4      4       KO  	  \        V4      # )é    )Ú	HQQLinear)r   Úhqq.core.quantizer   Úsetr   Ú
isinstanceÚtorchÚnnÚLinearÚaddr   Úlist)r	   r   Úlinear_tagsr   r
   s   &    r   Úget_linear_tagsr"   %   sc   € Ü×ÒÝ/ä“%€KØ×+Ñ+Ö-‰ˆÜ�fœuŸx™xŸ™°	Ð:×;Ô;Ø�O‰OÔ.¨tÓ4Ö5ñ .ô �ÓÐr   c                 óŠ  € V P                  4        EF,  w  rEVf   . pVP                  V4       \        V\        P                  P
                  4      '       dž   \        VP                  4      pWa9   dl   W,          eb   W,          V P                  V,          n	        \        V4      V P                  V,          n        V P                  V,          P                  R4       RpR F  p\        WWR 4       K  	  \        \        VP!                  4       4      4      ^ 8”  d   \#        VVVR7      w  r‚VP%                  R4       EK/  	  W3# )NFT©Úpatch_paramsÚhas_been_replaced)ÚW_qÚmetaéÿÿÿÿ)Únamed_childrenÚappendr   r   r   r   r   r   Ú_modulesÚquant_configÚtypeÚ
source_clsÚrequires_grad_ÚsetattrÚlenr    ÚchildrenÚ_prepare_for_hqq_linearÚpop)	r	   r%   r&   Úcurrent_key_namer   r
   Ú
linear_tagÚattÚ_s	   &&&&     r   r4   r4   0   s  € Ø×,Ñ,×.‰ˆØÒ#Ø!ÐØ×Ñ Ô%ä�fœeŸh™hŸo™o×.Ò.ä+¨F¯K©KÓ8ˆJð Ô)ØÕ+Ò7Ø8DÕ8P�E—N‘N 4Õ(Ô5ä6:¸6³l�E—N‘N 4Õ(Ô3à—N‘N 4Õ(×7Ñ7¸Ô>à $Ðó '�Ü˜ TÖ*ñ 'ô Œt�F—O‘OÓ%Ó&Ó'¨!Ô+Ü#:ØØ)Ø"3ô$Ñ ˆAð 	×Ñ˜R× ñ? /ðB Ð#Ð#r   c                óp  a€ Vf   . MTp\        V 4       \        V 4      oVP                  pVP                  p\	        \        S4      \        V4      ,
          \        V4      ,
          4      o\        ;QJ d    V3R lV 4       F  '       g   K   RM	  RM! V3R lV 4       4      '       d(   \        P                  S4      pVP                  V4       M\        P                  SV4      p\        WVR7      w  rRVRVP                  RV/V P                  n        V'       g   \        P                  R4       V # )	a†  
Prepares nn.Linear layers for HQQ quantization.
Since each layer type can have separate quantization parameters, we need to do the following:
1- tag each module with its name via autoname_modules()
2- Extract linear_tags (e.g. ['self_attn.q_proj', ...])
3- Map quantization parameters as a dictionary linear_tag -> quant_params as HQQLinear expects it, this is referred to as patch_params
c              3   ó,   <"  € T F	  qS9   x € K  	  R # 5ir   © )Ú.0Úkeyr!   s   & €r   Ú	<genexpr>Ú)prepare_for_hqq_linear.<locals>.<genexpr>k   s   øé € Ð
6© #�+Ö«ùs   ƒTFr$   r-   Úquant_methodÚskip_modulesz<No linear modules were found in your model for quantization.)r   r"   rB   r-   r    r   ÚanyÚdictÚfromkeysÚupdater4   rA   ÚconfigÚquantization_configÚloggerÚwarning)r	   rH   Úmodules_to_not_convertr&   rB   r-   r%   r!   s   &&&&   @r   Úprepare_for_hqq_linearrL   U   s  ø€ ð $:Ò#A™RÐG]Ðô �UÔô " %Ó(€Kð '×3Ñ3€LØ&×3Ñ3€LÜ”s˜;Ó'¬#¨lÓ*;Õ;¼cÐBXÓ>YÕYÓZ€Kç
ƒsÔ
6©Ó
6‡s‡s‚sÔ
6©Ó
6×6Ò6ä—}‘} [Ó1ˆØ×Ñ˜LÕ)ô —}‘} [°,Ó?ˆä6ØÐ<Mô Ñ€Eð 	˜ØÐ+×8Ñ8Ø˜ð(€E‡L�LÔ$÷ Ü�‰ÐUÔVà€Lr   r   )NNF)Ú__doc__Úutilsr   r   r   r   Ú
get_loggerÚ__name__rI   r   r   r"   r4   rL   r<   r   r   Ú<module>rQ      sI   ðñ 5ç AÑ Añ ×ÒÛà	×	Ò	˜HÓ	%€òònò
ô"$öJ,r   