+
    "Ý³jÑv  ã                   ój  € ^ RI t ^ RIt^ RIHt ^ RIHt ^ RIt^ RIHt ^ RI	Hu H
t ^ RIHt ^RIHtHt ^RIHtHtHt ^RIHtHt ^RIHtHt ^R	IHt ^R
IHt ^RIH t   ^RI!H"t# Rt$]! 4       t&R R lt' ! R R4      t( ! R R]4      t)R R lt* ! R R])4      t+. ROt,R#   ]% d    Rt#Rt$ LFi ; i)é    N)ÚIterable)ÚOptional©ÚPreTrainedModel)ÚAdapterÚLora)ÚDEVICEÚHAS_CUDAÚPLATFORM)ÚBaseQuantLinearÚPackableQuantLinear)ÚFORMATÚMETHOD)ÚBACKEND)Úsetup_logger)Útorch_compile)ÚdequantTFc                ó˜   € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\         P                  /# )é   ÚvaluesÚshiftsÚdtypeÚreturn)ÚtorchÚTensorr   )Úformats   "Úc/home/luca/screen-checking/.venv/lib/python3.14/site-packages/gptqmodel/nn_modules/qlinear/torch.pyÚ__annotate__r   &   s;   € ÷ 	>ñ 	>¤§¡ð 	>´e·l±lð 	>Ì5Ï;É;ð 	>Ô[`×[gÑ[gñ 	>ó    c                 ó¸  € V P                   P                  R 8w  d&   \        P                  ! W4      P	                  V4      # V P	                  \        P
                  4      pVP	                  V P                   \        P
                  R7      p\        P                  ! \        P                  ! V^4      V4      p\        P                  ! W54      P	                  V4      # )Únpu©Údevicer   )	r#   Útyper   Úbitwise_right_shiftÚtoÚint64ÚpowÚ	full_likeÚfloor_divide)r   r   r   Ú
values_i64Ú
shifts_i64Údivisorss   &&&   r   Ú_right_shift_unpackr.   &   s•   € Ø‡}�}×Ñ˜UÔ"Ü×(Ò(¨Ó8×;Ñ;¸EÓBÐBð —‘œ5Ÿ;™;Ó'€JØ—‘ &§-¡-´u·{±{�ÓC€JÜ�yŠyœŸš¨°QÓ7¸ÓD€HÜ×Ò˜jÓ3×6Ñ6°uÓ=Ð=r   c                   óJ  a € ] tR t^2t o RtRV 3R lR lltV 3R lR ltV 3R lR lt]V 3R lR	 l4       t	]V 3R
 lR l4       t
]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       tRV 3R lR lltV 3R lR ltRtV tR# )Ú_LinearWeightMetadatazLTensor-like metadata shim for integrations that only inspect `weight` attrs.c                ó$   <€ V ^8„  d   QhRRRS[ /# )r   ÚmoduleÚTorchLinearÚ
transposed©Úbool)r   Ú__classdict__s   "€r   r   Ú"_LinearWeightMetadata.__annotate__5   s   ø€ ÷ &ñ &˜}ð &¹$ñ &r   c                ó   € Wn         W n        R # ©N©Ú_moduleÚ_transposed)Úselfr2   r4   s   &&&r   Ú__init__Ú_LinearWeightMetadata.__init__5   s   € ØŒØ%Ör   c                ó4   <€ V ^8„  d   QhRS[ P                  /# ©r   r   ©r   ÚSize)r   r7   s   "€r   r   r8   9   s   ø€ ÷ !ñ !™Ÿ
™
ñ !r   c                óÎ   € V P                   P                  V P                   P                  3pV P                  '       d   V^,          V^ ,          3p\        P
                  ! V4      # ©é   )r<   Úout_featuresÚin_featuresr=   r   rD   )r>   Úshapes   & r   Ú_shapeÚ_LinearWeightMetadata._shape9   sM   € Ø—‘×*Ñ*¨D¯L©L×,DÑ,DÐEˆØ××ÐØ˜1•X˜u Q�xÐ(ˆEÜ�zŠz˜%Ó Ð r   c                óB   <€ V ^8„  d   QhRS[ P                  R,          /# )r   r   N©r   r   )r   r7   s   "€r   r   r8   ?   s   ø€ ÷ ñ ™uŸ|™|¨dÕ2ñ r   c                óV   € R F"  p\        V P                  VR4      pVf   K   Vu # 	  R# )ÚqweightN)rP   ÚscalesÚbiasÚqzerosÚg_idx)Úgetattrr<   ©r>   ÚnameÚtensors   &  r   Ú_first_tensorÚ#_LinearWeightMetadata._first_tensor?   s/   € ÛDˆDÜ˜TŸ\™\¨4°Ó6ˆFØÔ!Ø’ñ Eñ r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# rB   ©r   r#   )r   r7   s   "€r   r   r8   G   s   ø€ ÷ Lñ L™Ÿ™ñ Lr   c                ón   € V P                  4       pVe   VP                  # \        P                  ! R4      # )NÚcpu)rY   r#   r   )r>   rX   s   & r   r#   Ú_LinearWeightMetadata.deviceF   s-   € à×#Ñ#Ó%ˆØ &Ò 2ˆv�}‰}ÐK¼¿ºÀUÓ8KÐKr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# rB   ©r   r   )r   r7   s   "€r   r   r8   L   s   ø€ ÷ ñ ‘u—{‘{ñ r   c                ó†   € R F,  p\        V P                  VR4      pVf   K   VP                  u # 	  \        P                  # )rR   N)rR   rQ   rP   )rU   r<   r   r   Úfloat16rV   s   &  r   r   Ú_LinearWeightMetadata.dtypeK   s:   € ã1ˆDÜ˜TŸ\™\¨4°Ó6ˆFØÔ!Ø—|‘|Ò#ñ 2ô �}‰}Ðr   c                ó    <€ V ^8„  d   QhRS[ /# rB   r5   )r   r7   s   "€r   r   r8   T   s   ø€ ÷ *ñ *™ñ *r   c                ó4   € V P                   P                  R 8H  # )Úcuda)r#   r$   ©r>   s   &r   Úis_cudaÚ_LinearWeightMetadata.is_cudaS   s   € à�{‰{×Ñ 6Ñ)Ð)r   c                ó    <€ V ^8„  d   QhRS[ /# rB   ©Úint)r   r7   s   "€r   r   r8   X   s   ø€ ÷ ñ ‘cñ r   c                ó   € ^# )r   © rh   s   &r   ÚndimÚ_LinearWeightMetadata.ndimW   s   € ár   c                ó4   <€ V ^8„  d   QhRS[ P                  /# rB   rC   )r   r7   s   "€r   r   r8   \   s   ø€ ÷ ñ ‘u—z‘zñ r   c                ó"   € V P                  4       # r:   ©rK   rh   s   &r   rJ   Ú_LinearWeightMetadata.shape[   s   € à�{‰{‹}Ðr   c                ó    <€ V ^8„  d   QhRS[ /# rB   r5   )r   r7   s   "€r   r   r8   `   s   ø€ ÷ ñ ™tñ r   c                ó   € R # ©Fro   rh   s   &r   Úrequires_gradÚ#_LinearWeightMetadata.requires_grad_   s   € ár   c                ó   <€ V ^8„  d   QhRR/# )r   r   r0   ro   )r   r7   s   "€r   r   r8   d   s   ø€ ÷ Tñ TÐ*ñ Tr   c                óN   € \        V P                  V P                  '       * R 7      # ))r4   )r0   r<   r=   rh   s   &r   ÚTÚ_LinearWeightMetadata.Tc   s   € ä$ T§\¡\À$×BRÑBRÔ>RÔSÐSr   Nc                ó.   <€ V ^8„  d   QhRS[ R,          /# )r   ÚdimNrl   )r   r7   s   "€r   r   r8   g   s   ø€ ÷ 4ñ 4™˜d�
ñ 4r   c                ó>   € V P                  4       pVf   V# W!,          # r:   rt   )r>   r€   rJ   s   && r   ÚsizeÚ_LinearWeightMetadata.sizeg   s   € Ø—‘“ˆØšˆuÐ3¨­Ð3r   c                ó    <€ V ^8„  d   QhRS[ /# rB   )Ústr)r   r7   s   "€r   r   r8   k   s   ø€ ÷ 
ñ 
™#ñ 
r   c                óh   € R V P                    RV P                   R\        V P                  4       R2# )z_LinearWeightMetadata(device=z, dtype=z, shape=Ú))r#   r   ÚtuplerJ   rh   s   &r   Ú__repr__Ú_LinearWeightMetadata.__repr__k   s8   € à+¨D¯K©K¨=¸ÀÇÁÀð MÜ˜4Ÿ:™:Ó&Ð' qð*ð	
r   r;   rx   r:   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r?   rK   rY   Úpropertyr#   r   ri   rp   rJ   ry   r}   r‚   r‰   Ú__static_attributes__Ú__classdictcell__©r7   s   @r   r0   r0   2   sÊ   ø‡ € ÙV÷&ò &÷!ð !÷ð ð ÷Ló ðLð ÷ó ðð ÷*ó ð*ð ÷ó ðð ÷ó ðð ÷ó ðð ÷Tó ðT÷4ò 4÷
ö 
r   r0   c                   ó  a a€ ] tR t^rt o]P
                  .t]P                  .t	]
P                  ^]
P                  ^]
P                  ^/t. RCOt. RDOtRR.tRR.tRtRtRt^.t^.t]P0                  .t]P0                  .t]P:                  ]P<                  ]P>                  .t ]!.t"]PF                  ]PH                  .t%Rt&Rt'R]P>                  RRR3V3R lV 3R lllt(V 3R lt)]*R 4       t+REV3R	 lV 3R
 lllt,RFV3R lV 3R lllt-RGV3R lV 3R lllt.V3R lR lt/R t0V3R lR lt1V3R lR lt2V3R lR lt3V3R lR lt4RHV3R lR llt5V3R lR lt6R t7RHV3R lR  llt8R! t9R" t:V3R# lR$ lt;V3R% lR& lt<V3R' lR( lt=V3R) lR* lt>RIV3R+ lR, llt?RGV3R- lR. llt@R/ tARGV3R0 lR1 lltBV3R2 lR3 ltCR4 tDV3R5 lR6 ltEV3R7 lR8 ltFV3R9 lR: ltGR; tHV3R< lR= ltIV3R> lR? ltJREV3R@ lRA lltKRBtLVtMV ;tN# )Jr3   TFr   Nc                ó€   <€ V ^8„  d   QhRS[ RS[ RS[RS[RS[ RS[ RS[RS[P                  R	S[R
S[RS[S[,          /# )r   ÚbitsÚ
group_sizeÚsymÚdesc_actrI   rH   rR   Ú
pack_dtypeÚadapterÚregister_buffersr   )rm   r6   r   r   r   r   r   )r   r7   s   "€r   r   ÚTorchLinear.__annotate__Œ   s‚   ø€ ÷ 7<ñ 7<áð7<ñ ð7<ñ ð	7<ñ
 ð7<ñ ð7<ñ ð7<ñ ð7<ñ —K‘Kð7<ñ ð7<ñ ð7<ñ ™Õ ñ7<r   c                ó   <€ \         SV `  ! RR VRVRVRVRVRVRVRVRVP                  R\        P                  4      R	V	R
V
RVP                  RR4      RV/VB  V P
                  ^8X  d   \        P                  M\        P                  V n	        \        \        \        P                  P                  RR4      4      4      V n        \        \        P                  P                  RR4      4      V n        ^V n        RV n        RV n        RV n        RV n        / V n        / V n        \        \        \        P                  P                  RR4      4      4      V n        \        P                  P                  R4      pVf   \2        V n        MVR9  ;'       d    \2        V n        / V n        \        \        \        P                  P                  RR4      4      4      V n        RV n        / V n        / V n        / V n         \C        V 4      V n"        R# )r–   r—   r˜   r™   rI   rH   rR   rš   Úbackendr›   rœ   Úenable_wf_unsqueezeTr   ÚGPTQ_TORCH_STREAMINGÚ0ÚGPTQ_TORCH_STREAM_TILEÚ512NÚGPTQ_TORCH_CACHE_WEIGHTSÚGPTQ_TORCH_TRITON_DEQUANTÚGPTQ_TORCH_LOOKAHEADro   >   r¢   ÚFalseÚfalse)#Úsuperr?   Úpopr   Ú
GPTQ_TORCHr–   r   Úint16Úint8Údequant_dtyper6   rm   ÚosÚenvironÚgetÚ_streaming_enabledÚ_stream_tile_colsÚ_stream_double_buffersÚ_g_idx_long_cacheÚ_g_idx_long_cache_stateÚ_zeros_cacheÚ_zeros_cache_stateÚ_stream_dequant_streamsÚ_stream_workspaceÚ_cache_enabledÚ_TRITON_DEQUANT_AVAILABLEÚ_triton_dequant_enabledÚ_cached_weightsÚ_lookahead_enabledÚ_lookahead_nextÚ_prefetched_weightsÚ_prefetch_eventsÚ_prefetch_streamsr0   Ú_weight_metadata)r>   r–   r—   r˜   r™   rI   rH   rR   rš   r›   rœ   r   ÚkwargsÚtriton_flagÚ	__class__s   &&&&&&&&&&&&, €r   r?   ÚTorchLinear.__init__Œ   s  ø€ ô 	‰Òñ 	Øð	à!ð	ð ð	ð ð		ð
 $ð	ð &ð	ð ð	ð "ð	ð —J‘J˜y¬'×*<Ñ*<Ó=ð	ð ð	ð .ð	ð !'§
¡
Ð+@À$Ó Gð	ð ð	ð ò	ð  -1¯I©I¸¬NœUŸ[š[ÄÇ
Á
ˆÔÜ"&¤s¬2¯:©:¯>©>Ð:PÐRUÓ+VÓ'WÓ"XˆÔÜ!$¤R§Z¡Z§^¡^Ð4LÈeÓ%TÓ!UˆÔØ&'ˆÔ#Ø!%ˆÔØ'+ˆÔ$Ø ˆÔØ"&ˆÔØ')ˆÔ$Ø!#ˆÔÜ"¤3¤r§z¡z§~¡~Ð6PÐRUÓ'VÓ#WÓXˆÔÜ—j‘j—n‘nÐ%@ÓAˆØÒÜ+DˆDÕ(ð Ð#:Ñ:÷,,ð ,,ä+ð Ô(ð  "ˆÔÜ"&¤s¬2¯:©:¯>©>Ð:PÐRUÓ+VÓ'WÓ"XˆÔØ#ˆÔØ#%ˆÔ Ø "ˆÔØ!#ˆÔÜ 5°dÓ ;ˆÖr   c                ó¤   <€ \         SV `  4        V P                  4        V P                  4        V P	                  4        V P                  4        R # r:   )rª   Ú	post_initÚoptimizeÚ_stream_reset_cacheÚclear_weight_cacheÚ_reset_prefetch_state)r>   rÈ   s   &€r   rË   ÚTorchLinear.post_initÊ   s?   ø€ ô 	‰ÑÔð 	�‰ŒØ× Ñ Ô"Ø×ÑÔ!Ø×"Ñ"Ö$r   c                ó   € V P                   # r:   )rÅ   rh   s   &r   ÚweightÚTorchLinear.weightÝ   s   € à×$Ñ$Ð$r   c                ó    <€ V ^8„  d   QhRS[ /# )r   Únum_itrrl   )r   r7   s   "€r   r   r�   á   s   ø€ ÷ :ñ :©ñ :r   c                ó  <€ V^8X  d9   V P                   '       d'   V P                  4       '       d   V P                  4       # V P                  '       g$   V P                  R9   d   V P                  VR7      # \        SV `  VR7      # )rG   ©rÕ   ©r   é   é   )r¾   Ú_can_use_triton_dequantÚ_dequantize_weight_tritonÚtrainingr–   Ú_dequantize_weight_cached_248rª   Údequantize_weight)r>   rÕ   rÈ   s   &&€r   rß   ÚTorchLinear.dequantize_weightá   ss   ø€ ð �qŒLØ×,×,Ð,Ø×,Ñ,×.Ò.à×1Ñ1Ó3Ð3ð �}�}ˆ} §¡¨iÔ!7Ø×5Ñ5¸gÐ5ÓFÐFä‰wÑ(°Ð(Ó9Ð9r   c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[/# )r   rŸ   ÚmodeÚ	fullgraph)r…   r6   )r   r7   s   "€r   r   r�   ò   s"   ø€ ÷ ñ ¡ð ±#ð Éñ r   c                ó¶  <€ V P                   '       d   R # V P                  4       ^ ,          P                  P                  pVR8X  d)   RV n         \        P
                  P                  R4       R # Vf   VR8w  d   RMRp\        V P                  WVR7      V n        V P                  '       d   V P                  P                  WVR7       \        SV `)  4        R # )Nr!   Tz5Optimize: `TorchLinear` torch.compile skipped on NPU.ÚmpsÚinductorÚ	aot_eager)rŸ   râ   rã   )Ú	optimizedÚlist_buffersr#   r$   ÚlogÚinfoÚoncer   rß   r›   rÌ   rª   )r>   rŸ   râ   rã   Údevice_typerÈ   s   &&&& €r   rÌ   ÚTorchLinear.optimizeò   s«   ø€ Ø�>�>ˆ>Ùà×'Ñ'Ó)¨!Õ,×3Ñ3×8Ñ8ˆØ˜%Ôð "ˆDŒNÜ�H‰H�M‰MÐQÔRÙàŠ?à$/°5Ô$8‘j¸kˆGô "/¨t×/EÑ/EÈwÐmvÔ!wˆÔà�<�<ˆ<Ø�L‰L×!Ñ!¨'È	Ð!ÔRä‰ÑÖr   c                ó    <€ V ^8„  d   QhRS[ /# )r   râ   r5   )r   r7   s   "€r   r   r�   
  s   ø€ ÷ "(ñ "(™$ñ "(r   c                óÜ  <€ V P                   pW8X  d   V # ^RIHp V P                  '       Ed0   V'       dÙ   V P	                  4       ^8X  dÃ   \        V R4      '       gt   V P                  P                  P                  4       V n	        V! W P                  V P                  R7       V P                  P                  V n        V P                  4        M�V P                  V P                  n        V P	                  ^R7       V P                  4        MO\        V R4      '       d>   V P                  V P                  n        V P	                  ^R7       V P                  4        \        SV `=  VR7      # )é   )Ú#convert_gptq_v1_to_v2_format_moduleÚqzeros_data_v1)r–   rš   )r   )râ   )rÝ   Úutils.modelrò   Ú"SUPPORTS_TRAINING_USE_TORCH_KERNELÚqzero_formatÚhasattrrS   ÚdataÚcloneró   r–   rš   Úqzeros_data_v2rÍ   rª   Útrain)r>   râ   Ú	old_trainrò   rÈ   s   &&  €r   rû   ÚTorchLinear.train
  s  ø€ Ø—M‘Mˆ	ØÔØˆKåFð ×2×2Ñ2çà×$Ñ$Ó&¨!Ô+Ü" 4Ð)9×:Ò:Ø.2¯k©k×.>Ñ.>×.DÑ.DÓ.F˜Ô+Ù;¸DÇyÁyÐ]a×]lÑ]lÕmØ.2¯k©k×.>Ñ.>˜Ô+Ø×0Ñ0Õ2à+/×+>Ñ+>˜Ÿ™Ô(Ø×)Ñ)°Ð)Ô3Ø×0Ñ0Ô2øô ˜4Ð!1×2Ò2à'+×':Ñ':�D—K‘KÔ$Ø×%Ñ%¨QÐ%Ô/Ø×,Ñ,Ô.ä‰w‰} $ˆ}Ó'Ð'r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# ©r   ÚxrN   )r   r7   s   "€r   r   r�   .  s   ø€ ÷ ñ ™Ÿ™ñ r   c                ó°   € VP                   R R V P                  3,           pVP                  RVP                   R,          4      pV P                  W4      pV# )Néÿÿÿÿ)rJ   rH   ÚreshapeÚ_forward)r>   r   Ú	out_shapeÚouts   &&  r   ÚforwardÚTorchLinear.forward.  sL   € ð —G‘G˜C˜R�L D×$5Ñ$5Ð#7Õ7ˆ	Ø�I‰I�b˜!Ÿ'™' "�+Ó&ˆØ�m‰m˜AÓ)ˆØˆ
r   c                óš  € V P                  V4      pV P                  V4      pVeP   \        P                  ! W4      P	                  V4      pV P
                  e   VP                  V P
                  4       M:V P                  V4      '       d   V P                  W4      pMV P                  W4      pV P                  VP                  4       V# r:   )Ú_apply_rotation_to_inputÚ_maybe_get_cached_weightsr   Úmatmulr  rR   Úadd_Ú_should_use_streamingÚ_forward_streamingÚ_forward_eagerÚ_maybe_schedule_lookaheadr   )r>   r   r  Úcachedr  s   &&&  r   r  ÚTorchLinear._forward7  s¤   € Ø×)Ñ)¨!Ó,ˆØ×/Ñ/°Ó2ˆØÒÜ—,’,˜qÓ)×1Ñ1°)Ó<ˆCØ�y‰yÒ$Ø—‘˜Ÿ™Ô#øØ×'Ñ'¨×*Ò*Ø×)Ñ)¨!Ó7‰Cà×%Ñ% aÓ3ˆCà×&Ñ& q§w¡wÔ/Øˆ
r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# rÿ   rN   )r   r7   s   "€r   r   r�   F  s   ø€ ÷ ñ ¡§¡ñ r   c                ó|  € V P                   P                  ^ ,          VP                  R,          ,          pV P                  VP                  VP                  R7      pVf   V P                  VR7      pVP                  VP                  8w  g   VP                  VP                  8w  d(   VP                  VP                  VP                  R7      pV P                  V4       \        P                  ! W4      P                  V4      pV P                  e{   V P                  pVP                  VP                  8w  g   VP                  VP                  8w  d(   VP                  VP                  VP                  R7      pVP                  V4       V P                  '       d   V P                  P                  WR7      pV# )r   ©r#   r×   r"   ©r   r  r  )rT   rJ   Ú_consume_prefetched_weightsr   r#   rß   r&   Ú_update_cached_weightsr   r  r  rR   r  r›   Úapply)r>   r   r  rÕ   Úweightsr  rR   s   &&&    r   r  ÚTorchLinear._forward_eagerF  s6  € Ø—*‘*×"Ñ" 1Õ%¨¯©°­Õ4ˆØ×2Ñ2°1·7±7À1Ç8Á8Ð2ÓLˆØŠ?Ø×,Ñ,°WÐ,Ó=ˆGØ�>‰>˜QŸX™XÔ%¨¯©¸!¿'¹'Ô)Að —j‘j¨¯©¸¿¹�jÓ@ˆGØ×#Ñ# GÔ,Ü�lŠl˜1Ó&×.Ñ.¨yÓ9ˆØ�9‰9Ò Ø—9‘9ˆDØ�{‰{˜cŸj™jÔ(¨D¯J©J¸#¿)¹)Ô,CØ—w‘w c§j¡j¸¿	¹	�wÓB�Ø�H‰H�TŒNà�<�<ˆ<Ø—,‘,×$Ñ$ qÐ$Ó2ˆCàˆ
r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# rÿ   rN   )r   r7   s   "€r   r   r�   ]  s   ø€ ÷ ;ñ ;¡E§L¡Lñ ;r   c           
     ó  a aaaaaaa€ \        ^@\        S P                  S P                  4      4      o\        P
                  ! S P                  S,          4      pSP                  p\        P                  ! SP                  ^ ,          S P                  3SP                  VR7      pS P                  VSP                  SR7      o\        S P                  4       Uu. uF  p^ NK  	  upoS P                  V4      oS P                  4       oS P!                  4       oR VVV VVVVV3R llpV! ^ ^ 4       \        P"                  P%                  4       p\        V4       F»  p	V	S P                  ,          p
VP'                  S4       SV
,          pV	S,          pVP)                  ^WË4      pVP+                  4        \        P,                  ! VSSV
,          P)                  ^^ V4      RRVR7       V	^,           pWã8  g   K   VS P                  ,          pV! Wï4       K½  	  VP/                  V4      pS P0                  e   VP3                  S P0                  4       S P4                  '       d   S P4                  P7                  SVR7      pV# u upi )	é@   ©r   r#   )r#   r   Útilec                ó0   € V ^8„  d   QhR\         R\         /# )r   Útile_idxÚ
buffer_idxrl   )r   s   "r   r   Ú4TorchLinear._forward_streaming.<locals>.__annotate__j  s   € ÷ 	ñ 	œsð 	´ñ 	r   c                 ó2  <€ V S,          p\        VS,           SP                  4      p\        P                  P	                  S4      ;_uu_ 4        SP                  SV,          SSVVS
P                  R 7      S	V&   RRR4       R#   + '       g   i     R# ; i))ÚbufferÚzerosrT   ÚstartÚendr   N)ÚminrH   r   rg   ÚstreamÚ_stream_dequantize_tiler   )r#  r$  r)  r*  ÚbuffersrT   r>   Ústream_dequantr!  Úwidthsr   r(  s   &&  €€€€€€€€r   ÚscheduleÚ0TorchLinear._forward_streaming.<locals>.schedulej  s|   ø€ Ø˜t•OˆEÜ�e˜d•l D×$5Ñ$5Ó6ˆCÜ—‘×"Ñ" >×2Õ2Ø%)×%AÑ%AØ" :Õ.ØØØØØŸ'™'ð &Bó &��zÑ"÷ 3×2×2Ò2ús   Á,BÂB	g        g      ð?)ÚbetaÚalphar  r  )Úmaxr+  r´   rH   ÚmathÚceilr#   r   ÚemptyrJ   r   Ú_stream_get_workspaceÚrangerµ   Ú_stream_get_dequant_streamÚ_stream_decode_qzerosÚ_stream_g_idx_longrg   Úcurrent_streamÚwait_streamÚnarrowÚzero_Úaddmmr  rR   r  r›   r  )r>   r   r  Útotal_tilesr#   r  Ú_r1  Úcompute_streamr#  r$  Úwidthr)  Ú	out_sliceÚ	next_tileÚnext_buffer_idxr.  rT   r/  r!  r0  r(  s   ff&             @@@@@@r   r  ÚTorchLinear._forward_streaming]  s  ÿ€ Ü�2”s˜4×1Ñ1°4×3DÑ3DÓEÓFˆÜ—i’i × 1Ñ 1°DÕ 8Ó9ˆØ—‘ˆä�kŠk˜1Ÿ7™7 1�: t×'8Ñ'8Ð9ÀÇÁÐQWÔXˆØ×,Ñ,°FÀ!Ç'Á'ÐPTÐ,ÓUˆÜ" 4×#>Ñ#>Ô?Ó@Ñ?˜“!Ñ?Ñ@ˆà×8Ñ8¸Ó@ˆØ×*Ñ*Ó,ˆØ×'Ñ'Ó)ˆ÷	÷ 	ñ 	��AŒÜŸ™×2Ñ2Ó4ˆä˜kÖ*ˆHØ! D×$?Ñ$?Õ?ˆJØ×&Ñ& ~Ô6Ø˜:Õ&ˆEØ˜t•OˆEàŸ
™
 1 eÓ3ˆIØ�O‰OÔÜ�KŠKØØØ˜
Õ#×*Ñ*¨1¨a°Ó7ØØØõð ! 1�ˆIØÖ&Ø"+¨d×.IÑ.IÕ"I�Ù˜Ö4ñ) +ð, �k‰k˜)Ó$ˆà�9‰9Ò Ø�H‰H�T—Y‘YÔà�<�<ˆ<Ø—,‘,×$Ñ$ q¨cÐ$Ó2ˆCàˆ
ùòi As   ÃJc                ó4   <€ V ^8„  d   QhRS[ P                  /# rÿ   rN   )r   r7   s   "€r   r   r�   š  s   ø€ ÷ 	ñ 	©5¯<©<ñ 	r   c                ó.  € V P                   '       d   V P                  '       d   R # V P                  P                  VP                  4      pVeF   VP
                  VP
                  8w  d)   V P                  P                  VP                  R 4       R # V# R # r:   )r¼   rÝ   r¿   r²   r   r#   r«   )r>   r   r  s   && r   r  Ú%TorchLinear._maybe_get_cached_weightsš  sr   € Ø×"×"Ð" d§m§m mÙØ×%Ñ%×)Ñ)¨!¯'©'Ó2ˆØÒØ�}‰} §¡Ô(Ø×$Ñ$×(Ñ(¨¯©°$Ô7ñ ð �Ùr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   r  rN   )r   r7   s   "€r   r   r�   ¥  s   ø€ ÷ ?ñ ?©e¯l©lñ ?r   c                ó    € V P                   '       d   V P                  '       d   R # VP                  4       V P                  VP                  &   R # r:   )r¼   rÝ   Údetachr¿   r   )r>   r  s   &&r   r  Ú"TorchLinear._update_cached_weights¥  s4   € Ø×"×"Ð" d§m§m mÙØ.5¯n©nÓ.>ˆ×Ñ˜WŸ]™]Ó+r   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   r   r#   )r   r   r#   )r   r7   s   "€r   r   r�   ª  s#   ø€ ÷ ñ ±·±ð ÁeÇlÁlñ r   c                óÄ  € V P                   '       d   V P                  '       d   R # V P                  P                  VR 4      pVf   R # V P                  P                  VR 4      pVe   VP
                  V8w  d   R # Vea   \        '       dU   VP
                  P                  R8X  d:   \        P                  P                  VP
                  R7      P                  V4       V# )Nrg   r  )rÀ   rÝ   rÂ   r«   rÃ   r#   r
   r$   r   rg   r>  Ú
wait_event)r>   r   r#   rX   Úevents   &&&  r   r  Ú'TorchLinear._consume_prefetched_weightsª  s©   € Ø×&×&Ð&¨$¯-¯-¨-ÙØ×)Ñ)×-Ñ-¨e°TÓ:ˆØŠ>ÙØ×%Ñ%×)Ñ)¨%°Ó6ˆØÒ &§-¡-°6Ô"9ÙØÒ§£¨f¯m©m×.@Ñ.@ÀFÔ.JÜ�J‰J×%Ñ%¨V¯]©]Ð%Ó;×FÑFÀuÔMØˆr   c                ó”   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[RS[RS[ P                  RS[/# )r   r'  r(  rT   r)  r*  r   r   )r   r   rm   r   )r   r7   s   "€r   r   r�   ·  sa   ø€ ÷ ñ á—‘ðñ �|‰|ðñ �|‰|ð	ñ
 ðñ ðñ �{‰{ðñ 
ñr   c                óÐ  € WT,
          pV P                   P                  ^WG4      p\        VP                  ^4      P	                  RV P
                  R4      V P                  V P                  4      p	\        P                  ! W�P                  4      p	V	P                  V	P                  ^ ,          V	P                  ^,          ,          V	P                  ^,          4      p	V	RV P                   p	VP                  ^WG4      p
V P                  P                  ^WG4      pW³,          WšV,          ,
          ,          pVP                  ^^ V4      P                  VP!                  V4      4       V# )rG   Nr  )rP   r@  r.   Ú	unsqueezeÚexpandÚpack_factorÚwf_unsqueeze_neg_oner¯   r   Úbitwise_andÚmaxqr  rJ   rI   rQ   Úcopy_r&   )r>   r'  r(  rT   r)  r*  r   rF  Úqweight_tilerÒ   Ú
zeros_tileÚscales_tiler   s   &&&&&&&      r   r-  Ú#TorchLinear._stream_dequantize_tile·  s  € ð •ˆØ—|‘|×*Ñ*¨1¨eÓ;ˆÜ$Ø×"Ñ" 1Ó%×,Ñ,¨R°×1AÑ1AÀ2ÓFØ×%Ñ%Ø×Ñó
ˆô
 ×"Ò" 6¯9©9Ó5ˆØ—‘ §¡¨Q¥°&·,±,¸qµ/Õ AÀ6Ç<Á<ÐPQÅ?ÓSˆØÐ)˜×)Ñ)Ð*ˆà—\‘\ ! UÓ2ˆ
Ø—k‘k×(Ñ(¨¨EÓ9ˆàÕ$¨¸EÕ1BÕ(BÕCˆØ�‰�a˜˜EÓ"×(Ñ(¨¯©°EÓ):Ô;Øˆr   c                óŽ  € V P                   P                  4       V P                   P                  V P                  P                  3pV P
                  e   V P                  V8X  d   V P
                  # \        V P                   P                  ^4      P                  RRV P                  4      V P                  V P                  4      p\        P                  ! W P                  4      P!                  V P                   P                  ^ ,          R4      pVRR V P                  P                  ^,          13,          pW n        Wn        V# )NºNNNr  )rS   Údata_ptrr#   rQ   rJ   r¸   r¹   r.   rY  rZ  r[  Úwf_unsqueeze_zeror¯   r   r]  r^  r  )r>   Úcache_stater(  s   &  r   r<  Ú!TorchLinear._stream_decode_qzerosÒ  sÿ   € Ø—{‘{×+Ñ+Ó-¨t¯{©{×/AÑ/AÀ4Ç;Á;×CTÑCTÐUˆØ×ÑÒ(¨T×-DÑ-DÈÔ-SØ×$Ñ$Ð$ä#Ø�K‰K×!Ñ! !Ó$×+Ñ+¨B°°D×4DÑ4DÓEØ×"Ñ"Ø×Ñó
ˆô
 ×!Ò! %¯©Ó3×;Ñ;¸D¿K¹K×<MÑ<MÈaÕ<PÐRTÓUˆØ�aÐ.˜$Ÿ+™+×+Ñ+¨AÕ.Ð.Ð.Õ/ˆØ!ÔØ"-ÔØˆr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   Útarget_devicer\   )r   r7   s   "€r   r   r�   â  s   ø€ ÷ &ñ &±·±ñ &r   c                óˆ  € Vf<   V P                   e   V P                   P                  pMV P                  P                  pV P                  e(   V P                  P                  V8X  d   V P                  # V P                  P                  V8X  d!   V P                  P	                  4       V n        MkV P                  P                  P
                  R8H  ;'       d    VP
                  R9   pV P                  P                  V\        P                  VR7      V n        VP
                  VP                  3V n	        V P                  # )Nr^   )r#   r   Únon_blocking>   r!   Úxpurg   )
rP   r#   rT   r¶   Úlongr$   r&   r   Úindexr·   )r>   rk  rm  s   && r   r=  ÚTorchLinear._stream_g_idx_longâ  sý   € ØÒ Ø�|‰|Ò'Ø $§¡× 3Ñ 3‘à $§
¡
× 1Ñ 1�à×!Ñ!Ò-°$×2HÑ2H×2OÑ2OÐS`Ô2`Ø×)Ñ)Ð)à�:‰:×Ñ Ô-Ø%)§Z¡Z§_¡_Ó%6ˆDÕ"àŸ:™:×,Ñ,×1Ñ1°UÑ:×kÐk¸}×?QÑ?QÐUkÑ?kˆLØ%)§Z¡Z§]¡]Ø$Ü—j‘jØ)ð &3ó &ˆDÔ"ð )6×(:Ñ(:¸M×<OÑ<OÐ'PˆÔ$Ø×%Ñ%Ð%r   c                ór   € R V n         R V n        R V n        R V n        V P                  P                  4        R # r:   )r¸   r¹   r¶   r·   r»   Úclearrh   s   &r   rÍ   ÚTorchLinear._stream_reset_cacheù  s4   € Ø ˆÔØ"&ˆÔØ!%ˆÔØ'+ˆÔ$Ø×Ñ×$Ñ$Ö&r   c                ó.  € V P                   '       g   V P                  f   R # V P                  P                  P                  R9  d   R # V P                  '       d   V P                  4       '       d   R # V P                  P                  RR7      V n        R # )Nr^   r  >   r!   rn  rg   )rÝ   rT   r#   r$   r¾   rÛ   r&   rh   s   &r   Ú_maybe_offload_g_idx_to_cpuÚ'TorchLinear._maybe_offload_g_idx_to_cpu   sf   € Ø�=�=ˆ=˜DŸJ™JÒ.ÙØ�:‰:×Ñ×!Ñ!Ð)?Ô?Ùà×'×'Ð'¨D×,HÑ,H×,JÒ,JÙØ—Z‘Z—]‘]¨%�]Ó0ˆŽ
r   c                ó:   <€ V ^8„  d   QhRS[ P                  RS[/# ©r   r#   r   )r   r#   rm   )r   r7   s   "€r   r   r�   
  s   ø€ ÷ +ñ +©¯©ð +¹ñ +r   c                ór   € VP                   e   VP                   # \        P                  P                  4       # r:   )rp  r   rg   Úcurrent_device)r>   r#   s   &&r   Ú_device_cache_keyÚTorchLinear._device_cache_key
  s)   € Ø�<‰<Ò#Ø—<‘<ÐÜ�z‰z×(Ñ(Ó*Ð*r   c                ób   <€ V ^8„  d   QhRS[ P                  RS[ P                  P                  /# ry  ©r   r#   rg   ÚStream)r   r7   s   "€r   r   r�     s)   ø€ ÷ ñ ±·±ð Á%Ç*Á*×BSÑBSñ r   c                óÂ   € V P                  V4      pV P                  P                  V4      pVf/   \        P                  P                  VR7      pW0P                  V&   V# ©Nr  )r|  rº   r²   r   rg   r€  ©r>   r#   Úkeyr,  s   &&  r   r;  Ú&TorchLinear._stream_get_dequant_stream  sW   € Ø×$Ñ$ VÓ,ˆØ×-Ñ-×1Ñ1°#Ó6ˆØŠ>Ü—Z‘Z×&Ñ&¨fÐ&Ó5ˆFØ06×(Ñ(¨Ñ-Øˆr   c          	      ó~   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[RS[S[ P
                  ,          /# )r   r#   r   r!  r   )r   r#   r   rm   Úlistr   )r   r7   s   "€r   r   r�     sD   ø€ ÷ ñ á—‘ðñ �{‰{ðñ ð	ñ
 
‰e�l‰lÕ	ñr   c           	     ó2  € V P                  V4      W#V P                  3pV P                  P                  V4      pVfU   \	        V P
                  4       Uu. uF'  p\        P                  ! V P                  V3W!R7      NK)  	  ppWPP                  V&   V# u upi )Nr   )r|  rI   r»   r²   r:  rµ   r   r8  )r>   r#   r   r!  r„  Ú	workspacerD  s   &&&&   r   r9  Ú!TorchLinear._stream_get_workspace  s›   € ð ×%Ñ% fÓ-¨u¸D×<LÑ<LÐMˆØ×*Ñ*×.Ñ.¨sÓ3ˆ	ØÒô ˜t×:Ñ:Ô;óá;�Aô —’˜T×-Ñ-¨tÐ4¸E×QÙ;ð ð ð +4×"Ñ" 3Ñ'ØÐùòs   Á-Bc                ó:   <€ V ^8„  d   QhRS[ P                  RS[/# )r   r   r   )r   r   r6   )r   r7   s   "€r   r   r�   '  s   ø€ ÷ ñ ¡u§|¡|ð ¹ñ r   c                ó"  € V P                   '       g   R # V P                  R9  d   R # VP                  P                  R8w  d   R # \        '       g   R # V P
                  P                  ^ ,          VP                  R,          ,          ^8w  d   R # R# )Frg   TrØ   r  )r³   r–   r#   r$   r
   rT   rJ   )r>   r   s   &&r   r  Ú!TorchLinear._should_use_streaming'  sg   € Ø×&×&Ð&Ùð �9‰9˜IÔ%ÙØ�8‰8�=‰=˜FÔ"Ùß‹xÙà�:‰:×Ñ˜AÕ !§'¡'¨"¥+Õ-°Ô2ÙÙr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   ÚenabledÚ	tile_cols)r6   rm   )r   r7   s   "€r   r   r�   7  s   ø€ ÷ ñ ©ð Áñ r   c                óF   € Wn         Ve   W n        V P                  4        V # r:   )r³   r´   rÍ   )r>   r�  r�  s   &&&r   Úenable_streamingÚTorchLinear.enable_streaming7  s%   € Ø")ÔØÒ Ø%.Ô"Ø× Ñ Ô"Øˆr   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r�  r5   )r   r7   s   "€r   r   r�   >  s   ø€ ÷ ñ ©4ñ r   c                óB   € Wn         V'       g   V P                  4        V # r:   )r¼   rÎ   ©r>   r�  s   &&r   Úenable_weight_cacheÚTorchLinear.enable_weight_cache>  s   € Ø%ÔßØ×#Ñ#Ô%Øˆr   c                ó:   € V P                   P                  4        R # r:   )r¿   rs  rh   s   &r   rÎ   ÚTorchLinear.clear_weight_cacheD  s   € Ø×Ñ×"Ñ"Ö$r   c                ó    <€ V ^8„  d   QhRS[ /# r•  r5   )r   r7   s   "€r   r   r�   G  s   ø€ ÷ ñ ©ñ r   c                óB   € Wn         V'       g   V P                  4        V # r:   )rÀ   rÏ   r—  s   &&r   Úenable_lookaheadÚTorchLinear.enable_lookaheadG  s   € Ø")ÔßØ×&Ñ&Ô(Øˆr   c                ó   <€ V ^8„  d   QhRR/# )r   r2   r3   ro   )r   r7   s   "€r   r   r�   M  s   ø€ ÷ bñ b¨ñ br   c                ó¸  € Vf   R V n         V P                  4        V # \        V\        4      '       d	   Wn         V # \        V\        4      '       d€   \
        ;QJ d    . R V 4       F  NK  	  5M! R V 4       4      pV'       g   R V n         V P                  4        V # V F$  p\        V\        4      '       d   K  \        R4      h	  W n         V # \        R4      h)Nc              3   ó0   "  € T F  qf   K  Vx € K  	  R # 5ir:   ro   )Ú.0Úms   & r   Ú	<genexpr>Ú1TorchLinear.set_lookahead_next.<locals>.<genexpr>X  s   é € Ð?¡v !ŸAšA£vùs   ‚Œ
z5lookahead targets must be TorchLinear modules or NonezFlookahead target must be TorchLinear, iterable of TorchLinear, or None)rÁ   rÏ   Ú
isinstancer3   r   rˆ   Ú	TypeError)r>   r2   ÚtargetsÚtargets   &&  r   Úset_lookahead_nextÚTorchLinear.set_lookahead_nextM  s»   € ØŠ>Ø#'ˆDÔ Ø×&Ñ&Ô(ØˆKä�fœk×*Ò*Ø#)Ô ØˆKä�fœh×'Ò'ß”eÑ?¡vÓ?—e‘eÑ?¡vÓ?Ó?ˆGßØ'+�Ô$Ø×*Ñ*Ô,Ø�Û!�Ü! &¬+×6Ô6Ü#Ð$[Ó\Ð\ñ "ð $+Ô ØˆKäÐ`ÓaÐar   c                óø   € V P                   P                  4        F'  p\        VR 4      '       g   K  VP                  4        K)  	  V P                   P	                  4        V P
                  P	                  4        R# )ÚdestroyN)rÃ   r   r÷   r®  rs  rÂ   )r>   rU  s   & r   rÏ   Ú!TorchLinear._reset_prefetch_statee  sW   € Ø×*Ñ*×1Ñ1Ö3ˆEÜ�u˜i×(Ô(Ø—‘–ñ 4ð 	×Ñ×#Ñ#Ô%Ø× Ñ ×&Ñ&Ö(r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# ©r   r   ra   )r   r7   s   "€r   r   r�   l  s   ø€ ÷ )ñ )©u¯{©{ñ )r   c                óJ  € V P                   '       d   V P                  '       d   R # V P                  pVf   R # V P                  P                  P
                  R8w  d   R # \        V\        4      '       d   V F  pVP                  V4       K  	  R # VP                  V4       R # )Nrg   )	rÀ   rÝ   rÁ   rP   r#   r$   r§  rˆ   Ú	_prefetch)r>   r   Únext_moduler2   s   &&  r   r  Ú%TorchLinear._maybe_schedule_lookaheadl  s}   € Ø×&×&Ð&¨$¯-¯-¨-ÙØ×*Ñ*ˆØÒÙØ�<‰<×Ñ×#Ñ# vÔ-ÙÜ�k¤5×)Ò)Û%�Ø× Ñ  Ö'ó &ð ×!Ñ! %Ö(r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r±  ra   )r   r7   s   "€r   r   r�   z  s   ø€ ÷ -ñ -™uŸ{™{ñ -r   c                óÔ  € V P                   '       d   V P                  '       d   R # WP                  9   d   R # V P                  4       ^ ,          P                  pVP
                  R8w  d   R # V P                  V4      p\        P                  P                  V4      ;_uu_ 4        \        ^V P                  P                  ^ ,          V P                  ,          4      pV P                  VR7      P                  V4      pR R R 4       \        P                  P!                  RR7      pVP#                  V4       XV P                  V&   W`P$                  V&   R #   + '       g   i     L`; i)Nrg   r×   F)Úenable_timing)rÀ   rÝ   rÂ   ré   r#   r$   Ú_prefetch_get_streamr   rg   r,  r5  rT   rJ   rI   rß   r&   ÚEventÚrecordrÃ   )r>   r   r#   r,  rÕ   r  rU  s   &&     r   r³  ÚTorchLinear._prefetchz  s
  € Ø×&×&Ð&¨$¯-¯-¨-ÙØ×,Ñ,Ô,ÙØ×"Ñ"Ó$ QÕ'×.Ñ.ˆØ�;‰;˜&Ô ÙØ×*Ñ*¨6Ó2ˆÜ�Z‰Z×Ñ˜v×&Õ&Ü˜!˜TŸZ™Z×-Ñ-¨aÕ0°D×4DÑ4DÕDÓEˆGØ×,Ñ,°WÐ,Ó=×@Ñ@ÀÓGˆG÷ 'ô —
‘
× Ñ ¨uÐ Ó5ˆØ�‰�VÔØ*1ˆ× Ñ  Ñ'Ø',×Ñ˜eÓ$÷ '×&ús   Â%AEÅE'	c                ób   <€ V ^8„  d   QhRS[ P                  RS[ P                  P                  /# ry  r  )r   r7   s   "€r   r   r�   ‹  s)   ø€ ÷ ñ ©5¯<©<ð ¹E¿J¹J×<MÑ<Mñ r   c                óÂ   € V P                  V4      pV P                  P                  V4      pVf/   \        P                  P                  VR7      pW0P                  V&   V# r‚  )r|  rÄ   r²   r   rg   r€  rƒ  s   &&  r   r¹  Ú TorchLinear._prefetch_get_stream‹  sW   € Ø×$Ñ$ VÓ,ˆØ×'Ñ'×+Ñ+¨CÓ0ˆØŠ>Ü—Z‘Z×&Ñ&¨fÐ&Ó5ˆFØ*0×"Ñ" 3Ñ'Øˆr   c                ó>   € R V n         R V n        R V n        R V n        R # r:   )rS   rP   rT   rQ   rh   s   &r   Ú_empty_gptq_only_weightsÚ$TorchLinear._empty_gptq_only_weights”  s   € ØˆŒØˆŒØˆŒ
ØˆŽr   c                ó    <€ V ^8„  d   QhRS[ /# rB   r5   )r   r7   s   "€r   r   r�   š  s   ø€ ÷ ñ ©ñ r   c                óì  € \         '       g   R # V P                  '       d   R # V P                  e+   V P                  e   V P                  e   V P
                  f   R # V P                  P                  P                  R8w  d   R # V P                  R9  d   R # V P                  '       d   R # V P                  R9   d&   V P                  V P                  ,          '       d   R # V P                  P                  4       '       dA   V P                  P                  4       '       d!   V P                  P                  4       '       g   R # V P
                  P                  V P                  P                  8w  d   R # R# )Frg   T)r   rñ   rÙ   rÚ   rØ   )r½   rÝ   rP   rS   rQ   rT   r#   r$   r–   ÚplanarrH   r[  Úis_contiguousrh   s   &r   rÛ   Ú#TorchLinear._can_use_triton_dequantš  sü   € ß(Ó(ÙØ�=�=ˆ=ÙØ�<‰<Ò 4§;¡;Ò#6¸$¿+¹+Ò:MÐQU×Q[ÑQ[ÒQcÙØ�<‰<×Ñ×#Ñ# vÔ-ÙØ�9‰9˜LÔ(Ùà�;�;ˆ;Ùà�9‰9˜	Ô! d×&7Ñ&7¸$×:JÑ:J×&JÔ&JÙØ—‘×*Ñ*×,Ò,°·±×1JÑ1J×1LÒ1LÐQU×Q\ÑQ\×QjÑQj×QlÒQlÙà�:‰:×Ñ §¡× 3Ñ 3Ô3ÙÙr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# rB   rN   )r   r7   s   "€r   r   r�   ²  s   ø€ ÷ ñ ©5¯<©<ñ r   c           
     óâ   € V P                   P                  p\        VV P                  V P                   V P                  V P
                  V P                  V P                  V P                  4      pV# r:   )	rQ   r   Útriton_dequantrP   rS   rT   r–   Úpack_dtype_bitsr^  )r>   r   r  s   &  r   rÜ   Ú%TorchLinear._dequantize_weight_triton²  sX   € à—‘×!Ñ!ˆÜ ØØ�L‰LØ�K‰KØ�K‰KØ�J‰JØ�I‰IØ× Ñ Ø�I‰Ió	
ˆð ˆr   c                ó:   <€ V ^8„  d   QhRS[ RS[P                  /# )r   rÕ   r   )rm   r   r   )r   r7   s   "€r   r   r�   Á  s   ø€ ÷ ")ñ ")±Sð ")ÁÇÁñ ")r   c           	     óÖ  € V P                  4        V P                  4       pV P                  V P                  P                  R 7      pV P                  4        \        P                  ! \        V P                  P                  ^4      P                  RV P                  R4      V P                  V P                  4      V P                  4      pVP                  VP                   ^ ,          VP                   ^,          ,          VP                   ^,          4      pV^8X  d5   V P"                  V,          VRV P$                   W#,          ,
          ,          # V P&                  P                   ^ ,          V,          pVP                   ^,          V,          p. p\)        V4       F²  pW…,          p	V^,           V,          p
W†,          pW�^,
          8  d   V^,           V,          MVP                   ^,          pV P"                  RW¼13,          pWIV
1W¼13,          pVRW¼13,          pW9V
 pVP+                  VV,          WïV,          ,
          ,          4       K´  	  \        P,                  ! V^R7      # ))rk  Nre  )r€   r  )Ú_init_wf_unsqueeze_buffersr<  r=  rP   r#   rv  r   r]  r.   rY  rZ  r[  r\  r¯   r^  r  rJ   rQ   rI   rT   r:  ÚappendÚcat)r>   rÕ   r(  Ú
g_idx_longrÒ   Únum_dimÚout_dimr  ÚiÚ	row_startÚrow_endÚ	col_startÚcol_endÚscale_iÚweight_iÚzeros_iÚg_idx_is   &&               r   rÞ   Ú)TorchLinear._dequantize_weight_cached_248Á  só  € Ø×'Ñ'Ô)Ø×*Ñ*Ó,ˆØ×,Ñ,¸4¿<¹<×;NÑ;NÐ,ÓOˆ
Ø×(Ñ(Ô*ä×"Ò"ÜØ—‘×&Ñ& qÓ)×0Ñ0°°T×5EÑ5EÀrÓJØ×)Ñ)Ø×"Ñ"óð
 �I‰Ió
ˆð —‘ §¡¨Q¥°&·,±,¸qµ/Õ AÀ6Ç<Á<ÐPQÅ?ÓSˆà�aŒ<Ø—;‘;˜zÕ*¨fÐ5F°d×6FÑ6FÐ.GÈ%ÕJ[Õ.[Õ\Ð\à—*‘*×"Ñ" 1Õ%¨Õ0ˆØ—,‘,˜q•/ WÕ,ˆØˆÜ�w–ˆAØ�ˆIØ˜1•u Õ'ˆGØ�ˆIØ+,¸!µÔ+<�q˜1•u Ö'À&Ç,Á,ÈqÅ/ˆGà—k‘k ! YÐ%6Ð"6Õ7ˆGØ¨Ð/°Ð1BÐBÕCˆHØ˜A˜yÐ0Ð0Õ1ˆGØ ¨7Ð3ˆGØ�N‰N˜7 7Õ+¨xÀ'Õ:JÕ/JÕKÖLñ  ô �yŠy˜ aÔ(Ð(r   )r¼   r¿   r¶   r·   rÀ   rÁ   rÃ   rÄ   rÂ   rº   rµ   r´   r»   r³   r¾   rÅ   r¸   r¹   r¯   rß   rT   rè   rP   rS   ró   rú   rQ   ©r   rñ   rÙ   é   é   é   rÚ   ©r  é   é    r  é€   é   i   i   rF   )NNF)Tr:   )TN)Or‹   rŒ   r�   rŽ   r   r¬   ÚSUPPORTS_BACKENDSr   ÚGPTQÚSUPPORTS_METHODSr   ÚGPTQ_V2ÚGPTQ_PÚSUPPORTS_FORMATSÚSUPPORTS_BITSÚSUPPORTS_GROUP_SIZEÚSUPPORTS_DESC_ACTÚSUPPORTS_SYMÚSUPPORTS_SHARDSÚSUPPORTS_TRAININGÚSUPPORTS_AUTO_PADDINGÚ!SUPPORTS_IN_FEATURES_DIVISIBLE_BYÚ"SUPPORTS_OUT_FEATURES_DIVISIBLE_BYr	   ÚALLÚSUPPORTS_DEVICESr   ÚSUPPORTS_PLATFORMr   r®   r­   Úint32ÚSUPPORTS_PACK_DTYPESr   ÚSUPPORTS_ADAPTERSrc   Úbfloat16ÚSUPPORTS_DTYPESÚREQUIRES_FORMAT_V2Ú
QUANT_TYPEr?   rË   r�   rÒ   rß   rÌ   rû   r  r  r  r  r  r  r  r-  r<  r=  rÍ   rv  r|  r;  r9  r  r’  r˜  rÎ   rž  r«  rÏ   r  r³  r¹  rÁ  rÛ   rÜ   rÞ   r‘   r’   Ú__classcell__)rÈ   r7   s   @@r   r3   r3   r   s5  ù‡ € Ø ×+Ñ+Ð,ÐØŸ™�}ÐØŸ™ R¨¯©¸¸V¿]¹]ÈBÐOÐÚ)€MÚ?ÐØ˜u˜ÐØ˜%�=€LØ€OØÐØ ÐØ)*¨Ð%Ø*+¨Ð&àŸ
™
�|ÐØ!Ÿ™˜ÐØ!ŸJ™J¨¯©°U·[±[ÐAÐØ˜Ðà—}‘} e§n¡nÐ5€OàÐð €Jð Ø"'§+¡+ØØ!%Ø#'÷7<õ 7<õ|%ð& ñ%ó ð%÷:õ :÷"õ ÷0"(õ "(÷Hð ò÷ð ÷.;ð ;÷z	ð 	÷?ð ?÷
ò ÷ð ò6÷ &ò &ò.'ò1÷+ð +÷
ð ÷ð ÷ ð ÷ ò ÷ò ò%÷ò ÷bð bò0)÷)ð )÷-ð -÷"ð ò÷ð ÷0ð ÷")÷ ")ò ")r   r3   c                ó$   € V ^8„  d   QhR\         /# )r   Úmodelr   )r   s   "r   r   r   å  s   € ÷ ñ œOñ r   c                 óú  € V P                  4        EFY  w  r\        V\        4      '       d"   \        V\        4      '       g   \	        R 4      h\        V\        4      '       g   KU  \
        P                  ! VP                  VP                  4      p\
        P                  ! VP                  4       P                  P                  4       P                  R\        P                  4      4      Vn        \        P
                  P                  VP"                  4      Vn        T pRV9   d6   VP%                  R^4      w  rV\'        V P                  4       4      V,          pMTp\)        WFV4       EK\  	  V P*                  =V # )zzOnly models loaded using TorchLinear are supported for dequantization. Please load model using backend=BACKEND.GPTQ_TORCH.r^   Ú.)Únamed_modulesr§  r   r3   Ú
ValueErrorÚnnÚLinearrI   rH   Ú	Parameterrß   r}   rP  r&   r   rc   rÒ   rR   ÚrsplitÚdictÚsetattrÚconfigÚquantization_config)r  rW   r2   Ú
new_moduleÚparentÚparent_nameÚmodule_names   &      r   Údequantize_modelr  å  s  € Ø×+Ñ+×-‰ˆÜ�fœo×.Ò.´zÀ&Ì+×7VÒ7VÜðFóð ô
 �fœk×*Ô*äŸš 6×#5Ñ#5°v×7JÑ7JÓKˆJÜ "§¢¨V×-EÑ-EÓ-G×-IÑ-I×-PÑ-PÓ-R×-UÑ-UÐV[Ô]b×]jÑ]jÓ-kÓ lˆJÔÜ#Ÿh™h×0Ñ0°·±Ó=ˆJŒOð ˆFØ�dŒ{Ø+/¯;©;°s¸AÓ+>Ñ(�Ü˜e×1Ñ1Ó3Ó4°[ÕA‘à"�ä�F¨×4ñ+ .ð. 	�‰Ð(Ø€Lr   c                   ó¨  a € ] tR tRt o Rt]P                  .t]P                  .t
]P                  ^]P                  ^]P                  ^/tRt. R
Ot. ROtRR.tRR.tRtRtRt^.t^.t]P4                  .t]P4                  .t]P>                  ]P@                  ]PB                  .t". t#]PH                  ]PJ                  .t&Rt'Rt(V 3R lR lt)Rt*V t+R	# )ÚTorchQuantEmbeddingsi  z@Quantized embedding layer backed by the Torch GPTQ dequant path.FTr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   Ú	input_idsrN   )r   r7   s   "€r   r   Ú!TorchQuantEmbeddings.__annotate__!  s   ø€ ÷ @ñ @¡§¡ñ @r   c                óJ   € \         P                  ! WP                  4       4      # r:   )ÚFÚ	embeddingrß   )r>   r  s   &&r   r  ÚTorchQuantEmbeddings.forward!  s   € Ü�{Š{˜9×&<Ñ&<Ó&>Ó?Ð?r   ro   Nrß  rã  ),r‹   rŒ   r�   rŽ   r�   r   r¬   rè  r   ré  rê  r   rë  rì  rí  ÚSUPPORTS_BACKEND_SELECTIONrî  rï  rð  rñ  rò  ró  rô  rõ  rö  r	   r÷  rø  r   rù  r   r®   r­   rú  rû  rü  rc   rý  rþ  rÿ  r   r  r‘   r’   r“   s   @r   r  r    së   ø‡ € ÙJà ×+Ñ+Ð,ÐØŸ™�}ÐØŸ™ R¨¯©¸¸V¿]¹]ÈBÐOÐð "'ÐÚ)€MÚ?ÐØ˜u˜ÐØ˜%�=€LØ€OØÐØ ÐØ)*¨Ð%Ø*+¨Ð&àŸ
™
�|ÐØ!Ÿ™˜ÐØ!ŸJ™J¨¯©°U·[±[ÐAÐØÐà—}‘} e§n¡nÐ5€OàÐð €J÷@ö @r   r  )r3   r  r  )-r6  r°   Úcollections.abcr   Útypingr   r   Útorch.nnr  Útorch.nn.functionalÚ
functionalr  Útransformersr   Úadapter.adapterr   r   Úmodels._constr	   r
   r   Únn_modules.qlinearr   r   Úquantizationr   r   Úutils.backendr   Úutils.loggerr   Úutils.torchr   Útriton_utils.dequantr   rÊ  r½   Ú	Exceptionrê   r.   r0   r3   r  r  Ú__all__ro   r   r   Ú<module>r/     sª   ðó Û 	Ý $Ý ã Ý ß Ð Ý (ç ,ß 7Ñ 7ß Fß *Ý $Ý (Ý (ð&Ý@à $Ðñ ƒn€õ	>÷=
ñ =
ô@q	)Ð%ô q	)õfô8!@˜;ô !@òH F‚øðO ô &Ø€NØ %Òð&ús   Á#B$ Â$B2Â1B2