
    3ji                     8   % S SK rS SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  SS	KJrJr  SS
KJr  SSKJrJr  SSKJrJr  SSKJr  \(       a  SSKJ r   SSK!J"r"  SSK#J$r$  \" 5       (       a
  S SK%r%S SK&J'r'  \RP                  " \)5      r* S SK+J,r,J-r-J.r.J/r/J0r0J1r1  S SK+J2r3  S SK+J4r5   S SK+J6r6   S SK+J8r9  Sr:\Rv                  Ry                  SS5      R{                  5       r>Sr?\>\;   r@S\A4S jr4S\A4S jr8S\-" S S!S"90S\-" S#S$S"90\/R                  \-" S%S&S"90\/R                  \-" S%S&S"90\/R                  \-" S'S(S"90\/R                  \-" S)S(S"90\/R                  \-" S%S&S"90S*.S\-" S+S,S"90\/R                  \-" S-S.S"9\/R                  \-" S-S.S"90\/R                  \-" S/S.S"90\/R                  \-" S-S.S"90\/R                  \-" S-S0S"90S1.S\/R                  \/R                  -  \-" S2S3SS4900S\/R                  \/R                  -  \-" S2S5SS4900S\/R                  \/R                  -  \-" S2S6SS4900S\/R                  \/R                  -  \-" S2S7SS4900S\/R                  \/R                  -  \-" S2S8SS4900S\/R                  \/R                  -  \-" S2S9SS4900S:.rE\F\A\F\,\A-  \-\F\/\-4   -  4   4   \GS;'   \6b;  \/R                  \6" S<S=S>90\/R                  \6" S<S=S>9\/R                  \6" S<S=S>90S?.\ES@'   SA rHSlSB jrISLSSM.SNSSM.SNSSM.SOSSM.SPSSM.SQSRSS.ST.rJ\F\A\F\A\A4   4   \GSU'   0 rK\F\A\S-  4   \GSV'   SW\AS-  SX\L4SY jrM SmSW\ASZ\S-  S[\LSX\S-  4S\ jjrN\K4S]\AS^\F\A\S-  4   4S_ jjrO   SnS]\AS`\AS-  Sa\P\A-  S-  S[\LSX\4
Sb jjr2Sc\Q\   \-  4Sd jrRSqS\Se 5       rTSf\USg\Q\A   Sh\USX\U4Si jrV        SoSj jrW/ SkQrXg! \7 a    Sr6 GNf = f! \7 a    Sr: GNf = f! \7 a+    Sr?Sr@SC r4SD r8 " SE SF5      r- " SG SH5      r.SI r1SJ r0SK rI GNf = f)p    N)Callable)contextmanager)Path)
ModuleType)TYPE_CHECKING)version   )!get_checkpoint_conversion_mapping&register_checkpoint_conversion_mapping)register_patch_mapping)ENV_VARS_TRUE_VALUESlogging)is_kernels_availableis_torch_available   )flash_attention_forward)PretrainedConfig)PreTrainedModel)KernelConfig)DeviceLayerRepositoryLocalLayerRepositoryModeregister_kernel_mappingreplace_kernel_forward_from_hub)
get_kernel)use_kernel_forward_from_hub)FuncRepository)use_kernel_func_from_hubTFUSE_HUB_KERNELSYES
layer_namec                 l    [         (       a  [        U 5      $ [        R                  S[         35        S $ )NFkernels hub usage is disabled through the environment USE_HUB_KERNELS=c                     U $ N clss    _/home/wildlama/miniconda3/lib/python3.13/site-packages/transformers/integrations/hub_kernels.py<lambda>-use_kernel_forward_from_hub.<locals>.<lambda>V   s    s    )_kernels_enabled$_kernels_use_kernel_forward_from_hubloggerwarning_once_TRANSFORMERS_USE_HUB_KERNELS)r"   s    r*   r   r   O   s5    7
CCXYvXwx #"r-   	func_namec                     [         (       a  [        (       a  [        U 5      $ [        (       d  [        R	                  S5        S $ [        R	                  S[
         35        S $ )Nzwuse_kernel_func_from_hub is not available in the installed kernels version. Please upgrade kernels to use this feature.r$   c                     U $ r&   r'   funcs    r*   r+   *use_kernel_func_from_hub.<locals>.<lambda>e   s    r-   )r.   _has_use_kernel_func_from_hub!_kernels_use_kernel_func_from_hubr0   r1   r2   )r3   s    r*   r   r   X   s_     = =4Y??00##B %$ ##\]z\{| %$r-   cudaz!kernels-community/deformable-detrMultiScaleDeformableAttentionrepo_idr"   zkernels-community/moeLlama4TextMoezkernels-community/liger_kernelsLigerRMSNormzkernels-community/rmsnormRMSNormzkernels-community/mlx_rmsnorm)r;   rocmxpumpsnpuzmedmekk/triton-llama-mlpTritonLlamaMLPzkernels-community/megablocksMegaBlocksMoeMLPzahadnagy/megablocksCPUMegaBlocksMoeMLP)r;   rB   rC   cpuzkernels-community/activationFastGELU)r>   r"   r   	QuickGELUNewGELUSiluGeluGeluTanh)r<   r?   rA   MLPrG   rJ   rK   rL   SiLUGeLUrO   _KERNEL_MAPPINGzkernels-community/rotaryapply_rotary_transformers)r>   r3   )rC   r;   rotary_pos_embc                 b   ^ TU ;   =(       d#    [        U4S jU R                  5        5       5      $ )Nc              3   j   >#    U  H(  n[        U[        5      =(       a    [        UT5      v   M*     g 7fr&   )
isinstancedicthas_key).0vkeys     r*   	<genexpr>has_key.<locals>.<genexpr>   s(     [PZ1z!T2Fwq#FPZs   03)anyvalues)dr]   s    `r*   rZ   rZ      s'    ax[3[PQPXPXPZ[[[r-   c                     U c  [         n [        U S5      (       a  [        SS9(       d  [        S5      e[	        U 5        g )NrC   z0.10.2)MIN_VERSIONzfkernels uses an incompatible version. Please install the latest version with `pip install -U kernels`.)rS   rZ   r   ImportErrorr   )mappings    r*   $register_kernel_mapping_transformersrg      s;    ?%G7E""+?H+Ux  	 (r-   c                      S nU$ )Nc                     U $ r&   r'   r(   s    r*   	decorator.use_kernel_forward_from_hub.<locals>.decorator  s    Jr-   r'   argskwargsrj   s      r*   r   r     s    	 r-   c                      S nU$ )Nc                     U $ r&   r'   r6   s    r*   rj   +use_kernel_func_from_hub.<locals>.decorator  s    Kr-   r'   rl   s      r*   r   r     s    	 r-   c                       \ rS rSrS rSrg)r   i  c                     [        S5      e)NzNLayerRepository requires `kernels` to be installed. Run `pip install kernels`.RuntimeErrorselfrm   rn   s      r*   __init__LayerRepository.__init__  s    oppr-   r'   N__name__
__module____qualname____firstlineno__rx   __static_attributes__r'   r-   r*   r   r     s    	qr-   r   c                       \ rS rSrS rSrg)r   i   c                     [        S5      e)NzSLocalLayerRepository requires `kernels` to be installed. Run `pip install kernels`.rt   rv   s      r*   rx   LocalLayerRepository.__init__!  s    tuur-   r'   Nrz   r'   r-   r*   r   r      s    	vr-   r   c                      [        S5      e)Nz^replace_kernel_forward_from_hub requires `kernels` to be installed. Run `pip install kernels`.rt   rm   rn   s     r*   r   r   $  s    l
 	
r-   c                      [        S5      e)NzVregister_kernel_mapping requires `kernels` to be installed. Run `pip install kernels`.rt   r   s     r*   r   r   )  s    sttr-   c                      [        S5      e)Nzcregister_kernel_mapping_transformers requires `kernels` to be installed. Run `pip install kernels`.rt   r   s     r*   rg   rg   ,  s    q
 	
r-   zkernels-community/causal-conv1d)r>   r   zkernels-community/mamba-ssmz!kernels-community/finegrained-fp8zkernels-community/deep-gemmzkernels-community/sonic-moez
ep-support)r>   revision)zcausal-conv1dz	mamba-ssmzfalcon_mamba-ssmzfinegrained-fp8z	deep-gemmz	sonic-moe_HUB_KERNEL_MAPPING_KERNEL_MODULE_MAPPINGattn_implementationreturnc                 J    U SL=(       a    [         R                  " SU 5      SL$ )zJCheck whether `attn_implementation` matches a kernel pattern from the hub.Nz'^[^/:]+/[^/:]+(?:@[^/:]+)?(?::[^/:]+)?$)research)r   s    r*   	is_kernelr   >  s-     	4' 	cII@BUV^bbr-   attention_wrapperallow_all_kernelsc                    SSK Jn  SSKJn  SU ;   a  U R	                  S5      S   OU n[        U5      (       d  g[        (       d  [        S5      eSU;   a$  UR	                  S5      u  pgUR                  5       nOUnSnUR                  5       nUR                  S	5      u  phn	UR                  5       nU	(       a  U	R                  5       OSn	 [        XiUS
9n
Sn[        U
S5      (       a  Uc  [        nUnO/[        U
S5      (       a  SSKJn  Ub  UOUnSnOUb  [#        X5      nUR%                  U W5        UR%                  XU   5        U
$ ! [         a  n[        SU SU S35      eSnAff = f)a  
Load and register the kernel associated to `attn_implementation`.

Args:
    attn_implementation: A string, usually a kernel repo like "kernels-community/flash-mla".
    attn_wrapper: a callable for the wrapper around the attention implementation. In `transformers` we
        have a wrapper around the `flash_attn_var_len` call, and the same goes for `sdpa` and `eager`.
        They just prepare the arguments properly. This is mostly used for continious batching, where we
        want the `paged` wrapper, which calls the paged cache.
    allow_all_kernels (`bool`, optional):
        Whether to load kernels from unverified hub repos, if it is a custom kernel outside of the `kernels-community`
        hub repository.
r	   )ALL_MASK_ATTENTION_FUNCTIONS)ALL_ATTENTION_FUNCTIONS|r   N`kernels` is either not installed or uses an incompatible version. Please install the latest version with `pip install -U kernels`.:@)r   r   z-An error occurred while trying to load from 'z': .flash_attention_2flash_attn_varlen_funcsparse_atten_func)msa_attention_forwardsdpa)masking_utilsr   modeling_utilsr   splitr   _kernels_availablere   strip	partitionr   	Exception
ValueErrorhasattrr   msa_attentionr   getattrregister)r   r   r   r   r   actual_attn_namer>   kernel_name_revkernelemask_implementationkernel_functionr   s                  r*   load_and_register_attn_kernelr   F  s     =8<?CV<V*005a8\o%&&O
 	
 /55c:!'')"mmoG'',OGmmoG#))+$C[GEVW .v/00$ 7+	,	-	-
 	9/@/L+Rg$		 !&6 $$%8/J ))*=\o?pqM1  [H	QTUVTWWXYZZ[s   
E 
E-E((E-r   rf   c                 8   X;   a  [        X   [        5      (       a  X   $ U [        ;  a  [        R	                  SU  S35        S X'   g [
        (       aV   [        U    S   n[        U    R                  SS 5      n[        U    R                  SS 5      n[        X#U[        S9nXQU '   X   $ S	S KnU R                  S
S5      nSU S3n	 UR                  " S[        5      n
[        XS 5      n[#        U5      (       a&  U" 5       (       a   UR                  " U 5      nXU '   U$ S X'   X   $ ! [         a,  nS X'   [        R	                  SU  SU 35         S nAX   $ S nAf[         a
    S X'    X   $ f = f! [          a    S n Nf = f! [          a
    S X'    X   $ f = f)NzKernel z! not found in _HUB_KERNEL_MAPPINGr>   r   r   )r   r   r   zFailed to load kernel z: r   -r   is_
_availablez..utils.import_utils)rX   r   r   r0   r1   r   getr   ALLOW_ALL_KERNELSFileNotFoundErrorAssertionError	importlibreplaceimport_module__package__r   r   callable)r   rf   r>   r   r   r   r   r   new_kernel_namer3   	utils_modis_kernel_availablemodules                r*   lazy_load_kernelr     s   *W-A:"N"N##--gk]2STU#	()+6yAG*;7;;JMH)+6::9dKGG_pqF#)K @ - 	%--c37/**5		'!//0FTI"))"E '((-@-B-B,"00O3DF'-$ $(G ? ! 	M#'G "8Rs KLL: 9  	(#'G 4 9	(  	'"&	'  ,'+$ ,sC   AD( #E3 F (
E02EE0/E03FFFFr   r   c                 ^   SSK Jn  [        (       d  [        S5      eU R	                  S5      S   nUS:w  a  U(       d  [        S5      eSX@S	.n[        R                  R                  S
5      n[        R                  " U5      [        R                  " S5      :  a
  [        XX&S9$ [        XUS9$ )Nr	   )__version__r   /r   zkernels-communityziYou need to specify `allow_all_kernels=True` to use kernels outside of the `kernels-community` repositorytransformers)	frameworkr   r>   kernelsz0.10.4)r   r   
user_agent)r   r   ) r   r   re   r   r   r   metadatar   pkg_versionparseget_kernel_hub)r   r   r   r   r   repo_parentr   kernels_versions           r*   r   r     s     -
 	

 ##C(+K))2Cw
 	
  .+^J((00;O)[->->x-HHkgeekgNNr-   module_namesc                 D   ^  [        T [        5      (       a  T /m U 4S jnU$ )a3  
This decorator attaches the target function within the module as a plain attribute (not as a submodule).
Keep in mind that this registration is only meant for `kernelize` to recognize its target modules (i.e.
function exchanged for a weightless `nn.Module` with the same forward) to then exchange to the kernel
variation (in-place) if the conditions are met.

We cache each of these function-based registrations: After proper registration and exchange it is removed
from the module's `_modules` dict as it does not really act as `nn.Module` but a base function.
c                 <   >^ U R                   mUU4S jnXl         U $ )Nc                    > T" U /UQ70 UD6  U R                   R                  S0 5      nT HN  n[        USS 5      =(       d!    [        USS 5      =(       d    [        USS 5      nUc  [        SU< 35      eXCU'   MP     g )N_hidden_kernelsr{   kernel_layer_namer3   z)Could not infer kernel function name for )__dict__
setdefaultr   r   )rw   rm   rn   hidden_kernelsfnnamer   	orig_inits         r*   new_init8use_kernelized_func.<locals>.decorator.<locals>.new_init  s    d,T,V, "]]556GLN"B
D1 6r#6=6r;5 
 <$'PQSPV%WXX (*t$ #r-   )rx   )r)   r   r   r   s     @r*   rj   &use_kernelized_func.<locals>.decorator  s    LL		*"  
r-   )rX   r   )r   rj   s   ` r*   use_kernelized_funcr     s&     ,))$~. r-   c               #   ,   #     Sq Sv   Sq g! Sq f = f7f)z
Context manager used to adjust the value of the global `ALLOW_HUB_KERNELS`. This is needed, as this argument
cannot be forwarded directly to the `__init__` of the models, where we set the attention implementation.
TNF)r   r'   r-   r*   allow_all_hub_kernelsr     s!     "  "Es    
parent_clschild_names
kernel_clsc                    ^^^ U R                   mUUU4S jn[        SU R                   3U 4SU05      nSU R                   3Ul        U$ )a"  
Create a new class that inherits from `parent_cls` and fuses the child modules specified in `child_names
with the provided `kernel_cls`.
The first child in `child_names` will be replaced with the `kernel_cls`, and the rest will be replaced with
`nn.Identity()` to keep the same interface.
c                    > T" U /UQ70 UD6  T Vs/ s H  n[        X5      PM     nnT" U6 n[        U TS   U5        TSS   H"  n[        X[        R                  " 5       5        M$     g s  snf )Nr   r   )r   setattrnnIdentity)	rw   rm   rn   r   childrenkernel_instancer   r   original_inits	         r*   patched_init9make_parent_class_for_kernel_fusion.<locals>.patched_init#  sn    d,T,V,4?@KDGD'K@$h/k!no6ODD. $ As   A*Fusedrx   )rx   typer{   r}   )r   r   r   r   patched_clsr   s    ``  @r*   #make_parent_class_for_kernel_fusionr     sW     ''M/ z2234zmjR^E_`K!&z'>'>&?@Kr-   c           
      P	  ^ [        U S5      (       a  [        U R                  S5      (       d  [        SU R                   S35      eU R                  R                  n0 n0 nS nUR
                  R                  5        GH  u  px[        U[        5      (       aN  [        UR                  5       5      S:w  a  [        SU 35      e[        [        UR                  5       5      5      n	O+[        U[        5      (       a  Un	O[        SU< SU< 35      eU	R                  S	5      u  pnU
(       a  U(       d  [        S
U	< SU< 35      eUR                  (       a8  U
R!                  S5      R#                  S5      S   n[%        ['        U
5      UUS9nO	[)        XS9nUR+                  5       nUc  [        SU< 35      e[,        R.                  R1                  UR2                  5      nU(       a  [5        UUR                   S3S 5      OS n[        U[        5      (       a/  Uc  XU'   GM  UR                  Ul        UXG'   XUR                  '   GO[        U[8        5      (       Ga  Uc'  [        SUR                  < SUR                   S35      eUR                  Ul        U Vs/ s H  nUS   PM
     nnU Vs/ s H  nUR;                  SS5      S   PM     nn[        [=        U5      5      S:w  a  [        SU 35      eUS   R?                  SS5      nU Vs/ s H  nUR;                  SS5      S   PM     nnUc'  [@        RB                  " S5         U " U5      nS S S 5        SnURE                  5        H  u  nm[F        RH                  " UU5      (       d  M$  [K        U4S jU 5       5      (       d   [        SU< SU SUR                  < 35      eSn[M        T5      n[O        UUU5      UUR                  '   M     U(       d  [        S U< S!UR                  < S"35      e[Q        USS#9  [        US$5      (       a3  [S        U5      n[U        URV                  5      nUb  UU-   n[Y        UUSS#9  XUR                  '   GM     XRl        g s  snf s  snf s  snf ! , (       d  f       GNF= f)%Nconfig_class
model_typezModel z# has no config_class or model_type.r   zLExpected exactly one kernel repo regardless of device/mode specificity, got zInvalid hub repo z for layer r   zInvalid kernel repo string r   )	repo_pathpackage_namer"   r=   z*Could not load kernel class from hub_repo=LayoutzFused kernel z* requires a companion layout class named 'zLayout' in the same module.r   r   zGAll patterns for a fused kernel must share the same parent module, got *z\w+metaFc              3   <   >#    U  H  n[        TU5      v   M     g 7fr&   )r   )r[   childr   s     r*   r^   ;register_kernel_replacements_and_fusions.<locals>.<genexpr>  s     K{e76511{s   zModule z* does not have the expected child modules z required for the fused kernel TzNo module matched pattern z for fused kernel z3. Provide the full dotted path from the model root.)	overwriteconversion_mapping)-r   r   r   r{   r   kernel_mappingitemsrX   rY   lenra   nextiterstrr   use_local_kernelrstripr   r   r   r   loadsysmodulesr   r|   r   r   tuplersplitsetr   torchdevicenamed_modulesr   	fullmatchallr   r   r   r
   listr  r   )r)   configkernel_configr   patch_mappingnew_mapping
meta_modelr"   hub_reporepo_strr>   r   layer_name_in_repor   repor   
kernel_mod
layout_clsitemglob_patternspparent_patternsparent_patternr   matched_anyr   
module_clsexisting
transformsr   s                                @r*   (register_kernel_replacements_and_fusionsr-  0  s   
 3''ws7G7G/V/V6#,,/RSTT!!,,J%'MK J - < < B B D
h%%8??$%* bckblm  D!234H#&&H0K
~VWW)1););C)@&&0:8,kR\Q_`aa))">>#.44S9"=L'w-)-D #7RDYY[
I(VWW[[__Z%:%:;
R\WZJ,?,?+@)GNbf
 j#&&!*2J' ,6+>+>J((2M% 08
++, 
E**! #J$7$7#: ;(1122MO 
 ,6+>+>J(1;<T!WM<<IJMqqxxQ/2MOJ3'(A- ]^k]lm  -Q/77VDN8EF1188C+A.KF!\\&)!$VJ *  K * 8 8 :f||ND99K{KKK$!$)ST_S` a,,6,?,?+BD  #!&\
5XZ6j112 !;  00BBTU_UhUhTk lH I 
 	}=:3448DHj;;<J#%
2
2:zUYZ+3J''(O !ER $/ _ =J G *)s   R4RR	R
R%	)
r   r   r   r   rg   r-  r   r   r   r   r&   )NF)NNF)r)   ztype[PreTrainedModel]r  r   r  r   r   N)Yimportlib.metadatar   osr   r  collections.abcr   
contextlibr   pathlibr   typesr   typingr   	packagingr   r   r  r
   r   monkey_patchingr   utilsr   r   utils.import_utilsr   r   flash_attentionr   configuration_utilsr   r   r   utils.kernel_configr   r  torch.nnr   
get_loggerr{   r0   r   r   r   r   r   r   r   r   r   r   r/   r   re   r   r:   r9   environr   upperr2   r   r.   r
  	INFERENCETRAININGTORCH_COMPILErS   rY   __annotations__rZ   rg   r   r   boolr   r   r   intr  r   r   r   r   r   r-  __all__r'   r-   r*   <module>rG     sQ    	 	 
 $ %     , j 4 1 I 4 602 
		H	%B
 
*
.Y(,% %'JJNN3De$L$R$R$T!48LL# #%C %" O;:*
 O/*
 =-! =-! 7(! ;(! =-!5 
D O2+
 :1  :1!	 11! :1! :4!/
> !3!33_:)6
 !3!33_:*6
 !3!33_:(6
 !3!33_:vWX6
 !3!33_:vWX6
 !3!33_:z[\6
wBeOT#tFSL/DI^D_2_$_``a BJ ! 6B]! ~6B]  6B]!	-
() \)f "CqQ:qI$AaP#FSTU:qI:U2 T#tCH~-.  8: S*t"334 93: $  diDD19DD\`D$DN Pf - # - S*t:K5K0L - d   $#	OODjO 3YO 	O
 O:$d8nx&? $P   " " c  
	4y/	 y/y/ "y/ 
	y/xY    .(-%.D  %
q qv v

u
E%
sU   O( 9O
  O H=O( 
OO( OO( O%!O( $O%%O( (-PP