+
    œ°³jf  ã                  óf  € ^ RI Ht ^ RIt^ RIHt ^ RIHt ^RIHt ^RI	H
t
 ^RIHt ^RIHtHtHt ^R	IHt ]! 4       '       d   ^ RIt^ RIHt ^t]! R
R7       ! R R4      4       t]P0                  R R l4       tR R lt ! R R]P6                  4      t ! R R]4      tR R ltRR R lltR# )é    )ÚannotationsN)ÚCallable)Ú	dataclass)ÚConversionOps)Úshould_convert_module)Úis_torch_available)ÚKERNELS_MAX_VERSIONÚKERNELS_MIN_VERSIONÚis_kernels_available)Úlazy_load_kernelT)Úfrozenc                  óD   € ] tR t^(t$ RtR]R&   R]R&   R]R&   R]R&   RtR	# )
ÚNVFP4Kernelz-Entry points exposed by the NVFP4 Hub kernel.ÚtypeÚPackedWeightr   ÚgemmÚpackÚswizzled_sf_shape© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Ú__static_attributes__r   ó    Ú`/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/integrations/nvfp4.pyr   r   (   s   ‡ á7àÓØ
ƒNØ
ƒNØ×r   r   c               ó   € V ^8„  d   QhRR/# )é   Úreturnr   r   )Úformats   "r   Ú__annotate__r#   3   s   € ÷ 'ñ '˜;ñ 'r   c                 óÄ  € \        4       '       g"   \        R\         R\         R\         R24      h\	        R4      p V f   \        R4      hR\        V RR4      R	\        V R	R4      R
\        V R
R4      R\        V RR4      /pVP                  4        UUu. uF  w  r#Ve   K  VNK  	  pppV'       d   \        RRP                  V4       R24      h\        R/ VB # u uppi )z,Load and validate the NVFP4 Hub kernel once.zQNVFP4 quantization requires the `kernels` package. Install a compatible version (z <= version < z*), for example with `pip install kernels==z`.Únvfp4NzvFailed to load the NVFP4 kernel. Check that the Hub kernel has a build matching the current PyTorch and CUDA versions.r   r   r   r   z3The NVFP4 kernel is missing required entry points: z, Ú.r   )	r   ÚImportErrorr
   r	   r   ÚgetattrÚitemsÚjoinr   )ÚkernelÚentry_pointsÚnameÚentry_pointÚmissings        r   Úload_nvfp4_kernelr0   2   s	  € ô  ×!Ò!Üð-Ü-@Ð,AÀÔPcÐOdð e6Ü6IÐ5JÈ"ðNó
ð 	
ô ˜gÓ&€FØ‚~Üð)ó
ð 	
ð 	œ ¨¸Ó=Ø”˜ ¨Ó-Ø”˜ ¨Ó-ØœW VÐ-@À$ÓGð	€Lð .:×-?Ñ-?Ô-AÔYÑ-AÑ)˜À[�tˆtÑ-A€GÑYßÜÐOÐPT×PYÑPYÐZaÓPbÐOcÐcdÐeÓfÐfäÑ&˜Ñ&Ð&ùó	 Zs   ÂCÂ"Cc               ó8   € V ^8„  d   QhRRRRRRRRRRRRR	RR
R/# )r    Úinputútorch.TensorÚweightÚ	weight_sfÚweight_sf_rowmajorÚweight_global_scaleÚout_featuresÚintÚin_featuresr!   r   )r"   s   "r   r#   r#   Q   sX   € ÷ -ñ -Øð-àð-ð ð-ð %ð	-ð
 &ð-ð ð-ð ð-ð ñ-r   c           	     óf   € \        4       pVP                  VVVVVVR7      pVP                  W€4      # )zYApply an NVFP4 linear operation using packed weights and dynamic activation quantization.)ÚqweightÚsfÚglobal_scaleÚnÚkÚsf_rowmajor)r0   r   r   )	r2   r4   r5   r6   r7   r8   r:   r+   Úpacked_weights	   &&&&&&&  r   Únvfp4_linearrC   Q   sD   € ô Ó €FØ×'Ñ'ØØØ(Ø
Ø
Ø&ð (ó €Mð �;‰;�}Ó,Ð,r   c                  óJ   a € ] tR t^htRtR V 3R lltR R ltR R ltRtV ;t	# )	ÚNVFP4Linearz6Bias-free linear layer backed by packed NVFP4 weights.c               ó    € V ^8„  d   QhRRRR/# )r    r:   r9   r8   r   )r"   s   "r   r#   ÚNVFP4Linear.__annotate__k   s   € ÷ Rñ R Cð R°sñ Rr   c                	ó€  <€ \         SV `  4        Wn        W n        \        P
                  ! \        P                  ! W!\        P                  R 7      4      V n	        \        4       P                  W!4      w  r4\        P
                  ! \        P                  ! W4\        P                  R 7      4      V n        \        P
                  ! \        P                  ! W!\        ,          \        P                  R 7      4      V n        \        P
                  ! \        P                  ! ^\        P"                  R 7      4      V n        R# ))ÚdtypeN)ÚsuperÚ__init__r:   r8   ÚnnÚBufferÚtorchÚemptyÚbfloat16r4   r0   r   Úint32r5   ÚSF_VEC_SIZEÚuint8r6   Úfloat32r7   )Úselfr:   r8   Úsf_mÚsf_nÚ	__class__s   &&&  €r   rK   ÚNVFP4Linear.__init__k   s¸   ø€ Ü‰ÑÔØ&ÔØ(Ôô —i’i¤§¢¨LÌUÏ^É^Ô \Ó]ˆŒÜ&Ó(×:Ñ:¸<ÓU‰
ˆÜŸš¤5§;¢;¨tÄÇÁÔ#MÓNˆŒä"$§)¢)¬E¯KªK¸ÔU`ÕF`Ôhm×hsÑhsÔ,tÓ"uˆÔÜ#%§9¢9¬U¯[ª[¸Ä%Ç-Á-Ô-PÓ#QˆÖ r   c               ó    € V ^8„  d   QhRRRR/# )r    r2   r3   r!   r   )r"   s   "r   r#   rG   x   s   € ÷ 	
ñ 	
˜\ð 	
¨lñ 	
r   c           	     	óœ   € \        VV P                  V P                  V P                  V P                  V P
                  V P                  4      # ©N)rC   r4   r5   r6   r7   r8   r:   )rU   r2   s   &&r   ÚforwardÚNVFP4Linear.forwardx   sD   € ÜØØ�K‰KØ�N‰NØ×#Ñ#Ø×$Ñ$Ø×ÑØ×Ñó
ð 	
r   c               ó   € V ^8„  d   QhRR/# )r    r!   Ústrr   )r"   s   "r   r#   rG   ƒ   s   € ÷ Zñ Z˜Cñ Zr   c                	ó<   € R V P                    RV P                   R2# )zin_features=z, out_features=z, nvfp4)r:   r8   )rU   s   &r   Ú
extra_reprÚNVFP4Linear.extra_reprƒ   s&   € Ø˜d×.Ñ.Ð/¨¸t×?PÑ?PÐ>QÐQXÐYÐYr   )r:   r8   r4   r7   r5   r6   )
r   r   r   r   r   rK   r]   rb   r   Ú__classcell__)rX   s   @r   rE   rE   h   s#   ø† Ù@÷Rð Rõ	
÷Zó Zr   rE   c                  ó,   € ] tR t^‡tRtR R ltR tRtR# )ÚNVFP4QuantizezOPack a floating-point checkpoint weight into the buffers used by `NVFP4Linear`.c               ó   € V ^8„  d   QhRR/# )r    Údeviceztorch.devicer   )r"   s   "r   r#   ÚNVFP4Quantize.__annotate__Š   s   € ÷ ñ ˜|ñ r   c                	ó   € Wn         R # r\   ©rh   )rU   rh   s   &&r   rK   ÚNVFP4Quantize.__init__Š   s   € ØŽr   c                	óô  € \        4       p/ pVP                  4        F×  w  rV\        V\        4      '       d
   V^ ,          MTpVP	                  R4      '       g   WtV&   KC  VP                  VP                  \        P                  4      V P                  R7      pVP                  R^4      ^ ,          p	VP                  WE&   VP                  WI R2&   VP                  WI R2&   VP                  WI R2&   KÙ  	  V# )r   r4   rk   r&   z
.weight_sfz.weight_sf_rowmajorz.weight_global_scale)r0   r)   Ú
isinstanceÚlistÚendswithr   ÚtorN   rP   rh   Úrsplitr<   r=   rA   r>   )
rU   Ú
input_dictÚkwargsr+   ÚoutputÚkeyÚvalueÚtensorrB   Úbases
   &&,       r   ÚconvertÚNVFP4Quantize.convert�   sá   € Ü"Ó$ˆØˆØ$×*Ñ*Ö,‰JˆCÜ!+¨E´4×!8Ò!8�U˜1–X¸eˆFØ—<‘< ×)Ò)Ø$�s‘Ùà"ŸK™K¨¯	©	´%·.±.Ó(AÈ$Ï+É+˜KÓVˆMØ—:‘:˜c 1Ó% aÕ(ˆDØ'×/Ñ/ˆF‰KØ*7×*:Ñ*:ˆF�V˜:Ð&Ñ'Ø3@×3LÑ3LˆF�VÐ.Ð/Ñ0Ø4A×4NÑ4NˆF�VÐ/Ð0Ó1ñ -ð ˆr   rk   N)r   r   r   r   r   rK   rz   r   r   r   r   rf   rf   ‡   s   † ÙYõör   rf   c               ó    € V ^8„  d   QhRRRR/# )r    Úmoduleú	nn.Moduler!   Úboolr   )r"   s   "r   r#   r#   Ÿ   s   € ÷ ñ  ð ¨tñ r   c                óâ   € \        V \        P                  4      ;'       dO    V P                  R J ;'       d9    V P                  \
        ,          ^ 8H  ;'       d    V P                  ^,          ^ 8H  # r\   )rn   rL   ÚLinearÚbiasr:   rR   r8   )r}   s   &r   Ú_is_nvfp4_compatiblerƒ   Ÿ   sg   € ä�6œ2Ÿ9™9Ó%÷ 	*ð 	*Ø�K‰K˜4Ð÷	*ð 	*à×Ñ¤Õ,°Ñ1÷	*ð 	*ð ×Ñ "Õ$¨Ñ)ð	r   c               ó$   € V ^8„  d   QhRRRRRR/# )r    Úmodelr~   Úmodules_to_not_convertzlist[str] | Noner!   r   )r"   s   "r   r#   r#   ¨   s#   € ÷ 	ñ 	 Yð 	ÐHXð 	Ðdmñ 	r   c           	     óD  € \        V P                  4       4       F‚  w  r#\        W!4      '       d   \        V4      '       g   K)  VP	                  R4      w  rEpV'       d   V P                  V4      MT p\        Wv\        VP                  VP                  4      4       K„  	  V # )z<Replace eligible bias-free linear layers with `NVFP4Linear`.r&   )
ro   Únamed_modulesr   rƒ   Ú
rpartitionÚget_submoduleÚsetattrrE   r:   r8   )r…   r†   r-   r}   Úparent_nameÚ_Ú
child_nameÚparents   &&      r   Úreplace_with_nvfp4_linearr�   ¨   sƒ   € ô ˜U×0Ñ0Ó2Ö3‰ˆÜ$ T×BÒBÔJ^Ð_e×JfÒJfÙØ%)§_¡_°SÓ%9Ñ"ˆ˜
ß5@�×$Ñ$ [Ô1ÀeˆÜ�¤K°×0BÑ0BÀF×DWÑDWÓ$XÖYñ 4ð €Lr   r\   ) Ú
__future__r   Ú	functoolsÚcollections.abcr   Údataclassesr   Úcore_model_loadingr   Úquantizers.quantizers_utilsr   Úutilsr   Úutils.import_utilsr	   r
   r   Úhub_kernelsr   rN   Útorch.nnrL   rR   r   Úcacher0   rC   ÚModulerE   rf   rƒ   r�   r   r   r   Ú<module>r�      s«   ðõ #ã Ý $Ý !å .Ý ?Ý &÷ñ õ
 *ñ ×ÒÛÝð €ñ �$Ô÷ ð  ó ð ð ‡�ô'ó ð'õ<-ô.Z�"—)‘)ô Zô>�Mô õ0÷	ñ 	r   