
    Z j}K                     F   % 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Jr  SSKJr  S	S
KJr  \R(                  " \5      r S SKJrJrJrJrJr  S SKJr  S SKJr    S SKJ!r!   S SKJ#r$  Sr%\RL                  RO                  SS5      RQ                  5       r)Sr*\)\;   r+S\,4S jrS\,4S jr#S\" SSS90S\" SSS90\RZ                  \" SSS90\RZ                  \" SSS90\RZ                  \" S S!S90\RZ                  \" S"S!S90\RZ                  \" SSS90S#.S\" S$S%S90\R\                  \" S&S'S9\RZ                  \" S&S'S90\RZ                  \" S(S'S90\RZ                  \" S&S'S90\RZ                  \" S&S)S90S*.S\RZ                  \R^                  -  \" S+S,S	S-900S\RZ                  \R^                  -  \" S+S.S	S-900S\RZ                  \R^                  -  \" S+S/S	S-900S\RZ                  \R^                  -  \" S+S0S	S-900S\RZ                  \R^                  -  \" S+S1S	S-900S\RZ                  \R^                  -  \" S+S2S	S-900S3.r0\1\,\1\\,-  \\1\\4   -  4   4   \2S4'   \!b;  \RZ                  \!" S5S6S790\R\                  \!" S5S6S79\RZ                  \!" S5S6S790S8.\0S9'   S: r3S^S; jr4SCS	SD.SES	SD.SES	SD.SFS	SD.SGS	SD.SHSISJ.SK.r5\1\,\1\,\,4   4   \2SL'   0 r6\1\,\	S-  4   \2SM'   SN\,S-  SO\74SP jr8 S_SN\,SQ\S-  SR\7SO\	S-  4SS jjr9\64ST\,SU\1\,\	S-  4   4SV jjr:   S`ST\,SW\,S-  SX\;\,-  S-  SR\7SO\	4
SY jjrSZ\<\   \-  4S[ jr=Sq>\S\ 5       r?/ S]Qr@g! \" a    Sr! GNf = f! \" a    Sr% GNf = f! \" a     Sr*Sr+S< rS= r# " S> S?5      rS@ rSA rSB r4 Nf = f)a    N)Callable)contextmanager)
ModuleType)version   )ENV_VARS_TRUE_VALUESlogging)is_kernels_available   )flash_attention_forward)DeviceLayerRepository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    v/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/transformers/integrations/hub_kernels.py<lambda>-use_kernel_forward_from_hub.<locals>.<lambda>F   s    s    )_kernels_enabled$_kernels_use_kernel_forward_from_hubloggerwarning_once_TRANSFORMERS_USE_HUB_KERNELS)r   s    r    r   r   ?   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>U   s    r#   )r$   _has_use_kernel_func_from_hub!_kernels_use_kernel_func_from_hubr&   r'   r(   )r)   s    r    r   r   H   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)r1   rocmxpumpsnpuzmedmekk/triton-llama-mlpTritonLlamaMLPzkernels-community/megablocksMegaBlocksMoeMLPzahadnagy/megablocksCPUMegaBlocksMoeMLP)r1   r7   r8   cpuzkernels-community/activationFastGELU)r3   r   r   	QuickGELUNewGELUSiluGeluGeluTanh)r2   r4   r6   MLPr<   r?   r@   rA   SiLUGeLUrD   _KERNEL_MAPPINGzkernels-community/rotaryapply_rotary_transformers)r3   r)   )r8   r1   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)drR   s    `r    rO   rO      s'    ax[3[PQPXPXPZ[[[r#   c                     U c  [         n [        U S5      (       a  [        SS9(       d  [        S5      e[	        U 5        g )Nr8   z0.10.2)MIN_VERSIONzfkernels uses an incompatible version. Please install the latest version with `pip install -U kernels`.)rH   rO   r
   ImportErrorr   )mappings    r    $register_kernel_mapping_transformersr\      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kwargsr_   s      r    r   r      s    	 r#   c                      S nU$ )Nc                     U $ r   r   r,   s    r    r_   +use_kernel_func_from_hub.<locals>.decorator  s    Kr#   r   ra   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)selfrb   rc   s      r    __init__LayerRepository.__init__  s    oppr#   r   N)__name__
__module____qualname____firstlineno__rl   __static_attributes__r   r#   r    r   r     s    	qr#   r   c                      [        S5      e)Nz^replace_kernel_forward_from_hub requires `kernels` to be installed. Run `pip install kernels`.ri   rb   rc   s     r    r   r     s    l
 	
r#   c                      [        S5      e)NzVregister_kernel_mapping requires `kernels` to be installed. Run `pip install kernels`.ri   rt   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`.ri   rt   s     r    r\   r\     s    q
 	
r#   zkernels-community/causal-conv1d)r3   r   zkernels-community/mamba-ssmz!kernels-community/finegrained-fp8zkernels-community/deep-gemmzkernels-community/sonic-moez
ep-support)r3   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)rz   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
[        U
S5      (       a  Uc  [        nUnOUb  [        X5      nUR!                  U W5        UR!                  XS   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`.:@)rw   r   z-An error occurred while trying to load from 'z': .flash_attn_varlen_funcflash_attention_2)masking_utilsr   modeling_utilsr   splitr   _kernels_availablerZ   strip	partitionr   	Exception
ValueErrorhasattrr   getattrregister)rz   r   r   r   r   actual_attn_namer3   kernel_name_revkernelekernel_functions                r    load_and_register_attn_kernelr   2  sg     =8<?CV<V*005a8\o%&&O
 	
 /55c:!'')"mmoG'',OGmmoG#))+$C[GEVW v/00$ 7+		 !&6 $$%8/J ))*=\o?pqM  [H	QTUVTWWXYZZ[s   
D) )
E
3EE
r   r[   c                    X;   a  [        X   [        5      (       a  X   $ U [        ;  a  [        R	                  SU  S35        S X'   g [
        (       aQ   [        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
    S X'    X   $ [         a
    S X'    X   $ f = f! [         a    S n
 Nuf = f! [         a
    S X'    X   $ f = f)NzKernel z! not found in _HUB_KERNEL_MAPPINGr3   rw   r   rw   r   r   -r   is_
_availablez..utils.import_utils)rM   r   rx   r&   r'   r   getr   FileNotFoundErrorAssertionError	importlibreplaceimport_module__package__r   r   callable)r   r[   r3   rw   r   r   r   new_kernel_namer)   	utils_modis_kernel_availablemodules               r    lazy_load_kernelr   o  s   *W-A:"N"N##--gk]2STU#
	()+6yAG*;7;;JMH)+6::9dKGGLF#)K > - 	%--c37/**5		'!//0FTI"))"E '((-@-B-B,"00O3DF'-$ $(G = ! 	(#'G : 9  	(#'G 4 9	(  	'"&	'  ,'+$ ,s=   AD# #E E #E	6E	E	EEE21E2rw   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   r3   kernelsz0.10.4)rw   r   
user_agentr   ) r   r   rZ   r   r   r   metadatar   pkg_versionparseget_kernel_hub)r   rw   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_kernelsrn   kernel_layer_namer)   z)Could not infer kernel function name for )__dict__
setdefaultr   r   )rk   rb   rc   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#   )rl   )r   r   r   r   s     @r    r_   &use_kernelized_func.<locals>.decorator  s    LL		*"  
r#   )rM   r   )r   r_   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)ALLOW_ALL_KERNELSr   r#   r    allow_all_hub_kernelsr     s!     "  "Es    )	r   r   r   r   r\   r   r   r   r   r   )NF)NNF)Aimportlib.metadatar   osr}   collections.abcr   
contextlibr   typesr   	packagingr   r   utilsr   r	   utils.import_utilsr
   flash_attentionr   
get_loggerrn   r&   r   r   r   r   r   r   r   r   r   r%   r   rZ   r   r0   r/   environr   upperr(   r   r$   str	INFERENCETRAININGTORCH_COMPILErH   rN   __annotations__rO   r\   rx   ry   boolr   r   r   intlistr   r   r   __all__r   r#   r    <module>r      s    	 	 $ %  , 1 5 4 
		H	%}
 
*
.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]!	-
() \)^ "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::19D:\`:$:z Pf , # , S*t:K5K0L , b   $#	OODjO 3YO 	O
 O:$d8nx&? $P   " " 
O    .(-%.D  !
q q

u
=!
sU   M: (M /M+ 7H=M: M($M: 'M((M: +M73M: 6M77M: :#N N 