+
    ÆÜ³j  ã                   ó  € ^ RI t ^ RIt^ RIt^ RIt^ RIt]P
                  ! ]4      tR t ! R R4      t	RR lt
R R ltRR ltR	 tR
 tR^ R^R^R^/t]P!                  4        U Uu/ uF  w  rWbK	  	  upp tR R ltR# u upp i )é    Nc           
      óò  € \        V \        P                  P                  4      '       g   Q h\        P                  4       pVP                  V P                  4      pW2P                  9  Edè   \        V P                  4      pVP                  P                  V4       VP                  P                  V4       \        VP                  4      ^8”  dŒ   VP                  R,          P                  4       ^ 8”  dD   VP                  R,          P                  4       V P                  P                   ^,          8  g   Q hVP                  R,          VP                  V&   R# V^ ,          P#                  RV^ ,          P                   R,          4      p\        V^^R7      p\        P$                  ! V^ ,          4      ^8„  P'                  \)        \+        \        V^ ,          P                   4      ^,
          4      4      R7      p\        P,                  ! V^ 8„  4      ^ ,          p\        P.                  ! WG.4      P1                  4       pWBP                  V&   R# VP2                   F  pVP5                  4        K  	  R# )é   )Úreduction_dimÚzscore)ÚdimNéÿÿÿÿ)Ú
isinstanceÚtorchÚnnÚLinearÚOutlierTracerÚget_instanceÚ
get_hvalueÚweightÚhvalue2outlier_idxÚfind_outlier_dimsÚoutliersÚappendÚhvaluesÚlenÚnumelÚmaxÚshapeÚviewÚabsÚsumÚlistÚrangeÚwhereÚcatÚuniqueÚhooksÚremove)	ÚmoduleÚinputÚtracerÚhvalueÚoutlier_idxÚmergedÚdimsÚoutlier_idx2Úhooks	   &&       ÚS/home/luca/screen-checking/.venv/lib/python3.14/site-packages/bitsandbytes/utils.pyÚoutlier_hookr.      s»  € Ü�fœeŸh™hŸo™o×.Ò.Ð.Ð.Ü×'Ñ'Ó)€FØ×Ñ˜vŸ}™}Ó-€FØ×.Ñ.Õ.Ü'¨¯©Ó6ˆØ�‰×Ñ˜{Ô+Ø�‰×Ñ˜fÔ%Üˆv�‰Ó !Ô#ð �‰˜rÕ"×(Ñ(Ó*¨QÔ.Ø—‘ rÕ*×.Ñ.Ó0°6·=±=×3FÑ3FÀqÕ3IÔIÐIÐIØ06·±ÀÕ0CˆF×%Ñ% fÓ-ð ˜1•X—]‘] 2 u¨Q¥x§~¡~°bÕ'9Ó:ˆFä+¨FÀ!ÈAÔNˆKä—I’I˜e A�hÓ'¨!Ñ+×0Ñ0´T¼%ÄÀEÈ!ÅHÇNÁNÓ@SÐVWÕ@WÓ:XÓ5YÐ0ÓZˆDÜ Ÿ;š; t¨a¡xÓ0°Õ3ˆLÜŸ)š) [Ð$?Ó@×GÑGÓIˆKØ0;×%Ñ% fÓ-à—L”LˆDØ�K‰KŽMó !ó    c                   óR   a € ] tR t^,t o RtR tR tR tR tR t	]
R 4       tRtV tR# )	r   Nc                ó   € \        R 4      h)zCall get_instance() instead)ÚRuntimeError©Úselfs   &r-   Ú__init__ÚOutlierTracer.__init__/   s   € ÜÐ8Ó9Ð9r/   c                óN  € R V n         R V n        . V n        . V n        / V n        RV n        . V n        VP                  4        F_  w  r#\        V\        P                  P                  4      '       g   K1  V P                  P                  VP                  \        4      4       Ka  	  R # )NT)Úlast_wÚcurrent_outlier_dimsr   r   r   Úinitializedr"   Únamed_modulesr	   r
   r   r   r   Úregister_forward_pre_hookr.   )r4   ÚmodelÚnÚms   &&  r-   Ú
initializeÚOutlierTracer.initialize2   s}   € ØˆŒØ$(ˆÔ!ØˆŒØˆŒØ"$ˆÔØˆÔØˆŒ
à×'Ñ'Ö)‰DˆAÜ˜!œUŸX™XŸ_™_×-Ô-Ø—
‘
×!Ñ! !×"=Ñ"=¼lÓ"KÖLó *r/   c                ó   € \        V R R4      # )r:   F)Úgetattrr3   s   &r-   Úis_initializedÚOutlierTracer.is_initialized?   s   € Ü�t˜]¨EÓ2Ð2r/   c                óR   € VP                   P                  4       P                  4       # ©N)ÚdataÚstorageÚdata_ptr)r4   r   s   &&r-   r   ÚOutlierTracer.get_hvalueB   s   € Ø�{‰{×"Ñ"Ó$×-Ñ-Ó/Ð/r/   c                óÈ   € V P                  4       '       g   \        P                  R 4       R# V P                  V4      pW P                  9   d   V P                  V,          # R# )z$Outlier tracer is not initialized...N)rD   ÚloggerÚwarningr   r   )r4   r   r'   s   && r-   Úget_outliersÚOutlierTracer.get_outliersE   sO   € Ø×"Ñ"×$Ò$Ü�N‰NÐAÔBÙØ—‘ Ó(ˆØ×,Ñ,Ô,Ø×*Ñ*¨6Õ2Ð2ár/   c                ób   € V P                   f   V P                  V 4      V n         V P                   # rG   )Ú	_instanceÚ__new__)Úclss   &r-   r   ÚOutlierTracer.get_instanceO   s&   € à�=‰=Ò ØŸK™K¨Ó,ˆCŒMØ�}‰}Ðr/   )r9   r"   r   r   r:   r8   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rR   r5   r@   rD   r   rO   Úclassmethodr   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r-   r   r   ,   s8   ø‡ € Ø€Iò:òMò3ò0òð ñó ör/   r   c                 óº  € V'       dE   \         P                  ! ^ V P                  ^,          V3V P                  R7      P	                  4       # V P                  V4      pVP                  4       pVP                  4       pWV,
          V,          pVe,   \         P                  ! VP                  4       V^ R7      w  ršV
# \         P                  ! W‚8„  4      ^ ,          p
V
# )r   )ÚsizeÚdevice)Úkr   )
r
   Úrandintr   r`   ÚlongÚstdÚmeanÚtopkr   r   )r   r   r   rf   Úrdmrd   ÚstdmÚstdstdÚzstdÚ_Úidxs   &&&&&      r-   r   r   V   s¤   € ß
Ü�}Š}˜Q §¡¨Q¥°t°gÀfÇmÁmÔT×YÑYÓ[Ð[à
�*‰*�]Ó
#€CØ�8‰8‹:€DØ�W‰W‹Y€Fà�J˜&Õ €DàÒÜ—’˜CŸG™G›I¨°1Ô5‰ˆð €Jô �kŠk˜$™-Ó(¨Õ+ˆà€Jr/   c                óR   € V ^8„  d   QhR\         R\        \         \         3,          /# )é   Úcommand_stringÚreturn)ÚstrÚtuple)Úformats   "r-   Ú__annotate__rt   h   s"   € ÷ ñ ¤sð ¬u´S¼#°X­ñ r/   c                 ó0   a€ R  oV3R lpV! V 4      w  r#W#3# )c                 óZ   € \         ;QJ d    . R  V  4       F  NK  	  5# ! R  V  4       4      # )c              3   ó^   "  € T F#  qP                  R 4      P                  4       x € K%  	  R# 5i)zUTF-8N)ÚdecodeÚstrip)Ú.0Ú	to_decodes   & r-   Ú	<genexpr>Ú6execute_and_return.<locals>._decode.<locals>.<genexpr>j   s'   é € ÐaÑH`¸9×%Ñ% gÓ.×4Ñ4×6Ð6ÓH`ùs   ‚+-)rr   )Úsubprocess_err_out_tuples   &r-   Ú_decodeÚ#execute_and_return.<locals>._decodei   s&   € ßŒuÑaÑH`Óa�uÐaˆuÑaÑH`ÓaÓaÐar/   c                 ó¾   <€ S! \         P                  ! \        P                  ! V 4      \         P                  \         P                  R 7      P                  4       4      # ))ÚstdoutÚstderr)Ú
subprocessÚPopenÚshlexÚsplitÚPIPEÚcommunicate)ro   r   s   &€r-   Ú&execute_and_return_decoded_std_streamsÚBexecute_and_return.<locals>.execute_and_return_decoded_std_streamsl   sA   ø€ ÙÜ×ÒÜ—’˜NÓ+Ü!—‘Ü!—‘ô÷ ‰k‹mó
ð 	
r/   © )ro   rŠ   Ústd_outÚstd_errr   s   &   @r-   Úexecute_and_returnr�   h   s&   ø€ òbõ
ñ >¸nÓMÑ€GØÐÐr/   c                ó|  € V P                  4        EF&  w  rV\        \        VP                  4       4      4      ^ 8”  d   \	        WaW#V4       \        V\        P                  P                  4      '       g   Kf  WR9  g   Kn  V P                  V,          pV! VP                  VP                  VP                  RJ4      V P                  V&   V'       dE   VP                  V P                  V,          n        VP                  V P                  V,          n        Vf   EK  \        WdR4      pVf   EK  V! V4       EK)  	  V # )aÕ  
Replace linear modules with a new Linear module.
Parameters:
    model (`torch.nn.Module`):
        Input model or `torch.nn.Module` as the function is run recursively.
    linear_replacement (`torch.nn.Module`):
        The linear module that replaces the old one. Only expects standard arguments.
        If other arguments need to be passed, use a lambda.
    skip_modules (`List[str]`, *optional*, defaults to `lm_head`):
        List of modules names not to convert. Defaults to `lm_head`.
    copy_weights (`bool`):
        Copy the weights from the old linear module to the new one
    post_processing_function (`str`):
        A function name of the replacement linear class that is called
        after processing.
N)Únamed_childrenr   r   ÚchildrenÚreplace_linearr	   r
   r   r   Ú_modulesÚin_featuresÚout_featuresÚbiasr   rC   )	r=   Úlinear_replacementÚskip_modulesÚcopy_weightsÚpost_processing_functionÚnamer$   Ú
old_moduleÚfuncs	   &&&&&    r-   r“   r“   y   sï   € ð. ×,Ñ,×.‰ˆÜŒt�F—O‘OÓ%Ó&Ó'¨!Ô+Ü˜6°|ÐSkÔlä�fœeŸh™hŸo™o×.Ô.°4Ö3KØŸ™¨Õ-ˆJÙ#5Ø×"Ñ"Ø×#Ñ#Ø—‘ 4Ð'ó$ˆE�N‰N˜4Ñ ÷
 Ø.8×.?Ñ.?�—‘˜tÕ$Ô+Ø,6¯O©O�—‘˜tÕ$Ô)à'Õ3Ü˜vÀÓF�ØÕ#Ù˜—Lñ% /ð& €Lr/   c                ó²   € \         P                  ! V 4      pVP                  R4      p\        P                  ! \        V4      \        P                  R7      pV# )zÂ
Pack a dictionary into a torch tensor for storing quant_state items in state_dict.

Parameters:
- source_dict: The dictionary to be packed.

Returns:
A torch tensor containing the packed data.
úutf-8)Údtype)ÚjsonÚdumpsÚencoder
   Útensorr   Úuint8)Úsource_dictÚjson_strÚ
json_bytesÚtensor_datas   &   r-   Úpack_dict_to_tensorr«   ¦   s?   € ô �zŠz˜+Ó&€HØ—‘ Ó)€JÜ—,’,œt JÓ/´u·{±{ÔC€KàÐr/   c                ó¢   € \        V P                  4       P                  4       4      pVP                  R4      p\        P
                  ! V4      pV# )z¶
Unpack a torch tensor into a Python dictionary.

Parameters:
- tensor_data: The torch tensor containing the packed data.

Returns:
A Python dictionary containing the unpacked data.
r    )ÚbytesÚcpuÚnumpyrx   r¢   Úloads)rª   r©   r¨   Úunpacked_dicts   &   r-   Úunpack_tensor_to_dictr²   ·   sB   € ô �{—‘Ó(×.Ñ.Ó0Ó1€JØ× Ñ  Ó)€HÜ—J’J˜xÓ(€MàÐr/   ÚrowÚcol32Ú
col_turingÚ
col_amperec                ó8   € V ^8„  d   QhR\         P                  /# )rn   Út)r
   ÚTensor)rs   s   "r-   rt   rt   Ì   s   € ÷  ñ  ”—‘ñ  r/   c                 óò   € V P                   P                  R 8X  d!   \        P                  P	                  4        R# V P                   P                  R8X  d!   \        P
                  P	                  4        R# R# )ÚcudaÚxpuN)r`   Útyper
   r»   Úsynchronizer¼   )r¸   s   &r-   Úsync_gpur¿   Ì   sG   € Ø‡x�x‡}�}˜ÔÜ�
‰
×ÑÖ Ø	
�‰�‰˜%Ô	Ü�	‰	×ÑÖñ 
 r/   )r   g      @NF))Úlm_headFN)r¢   Úloggingr†   r„   r
   Ú	getLoggerrV   rM   r.   r   r   r�   r“   r«   r²   Ú"LINEAR_8BIT_WEIGHTS_FORMAT_MAPPINGÚitemsÚ*INVERSE_LINEAR_8BIT_WEIGHTS_FORMAT_MAPPINGr¿   )rœ   Úvals   00r-   Ú<module>rÇ      s˜   ðÛ Û Û Û ã à	×	Ò	˜8Ó	$€ò÷B'ñ 'ôTõ$ô"*òZò"ð" ',¨Q°¸¸LÈ!È\Ð[\Ð%]Ð "ØKm×KsÑKsÔKuÔ-vÑKu¹K¸T¨cªiÑKuÒ-vÐ *÷ ùó .ws   Á'B 