Ë
    GêñiqK  ã                   óª  — U d dl Zd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ ddlmZmZ ddlmZ d	d
lmZ  ej(                  e«      Z	 d dlmZmZmZmZmZ d dlmZ d dlmZ  	 d dlm!Z! 	 d dlm#Z$ dZ%ejL                  jO                  dd«      jQ                  «       Z)dZ*e)ev Z+de,fd„Zde,fd„Z#d edd¬«      id edd¬«      iejZ                   edd¬«      iejZ                   edd¬«      iejZ                   ed d!¬«      iejZ                   ed"d!¬«      iejZ                   edd¬«      id#œd ed$d%¬«      iej\                   ed&d'¬«      ejZ                   ed&d'¬«      iejZ                   ed(d'¬«      iejZ                   ed&d'¬«      iejZ                   ed&d)¬«      id*œdejZ                  ej^                  z   ed+d,d	¬-«      iidejZ                  ej^                  z   ed+d.d	¬-«      iidejZ                  ej^                  z   ed+d/d	¬-«      iidejZ                  ej^                  z   ed+d0d	¬-«      iidejZ                  ej^                  z   ed+d1d	¬-«      iidejZ                  ej^                  z   ed+d2d	¬-«      iid3œZ0e1e,e1ee,z  ee1eef   z  f   f   e2d4<   e!�DejZ                   e!d5d6¬7«      iej\                   e!d5d6¬7«      ejZ                   e!d5d6¬7«      id8œe0d9<   d:„ Z3d\d;„Z4dCd	dDœdEd	dDœdEd	dDœdFd	dDœdGd	dDœdHd	dDœdIœZ5e1e,e1e,e,f   f   e2dJ<   i Z6e1e,e	dz  f   e2dK<   dLe,dz  dMe7fdN„Z8	 d]dLe,dOedz  dPe7dMe	dz  fdQ„Z9e6fdRe,dSe1e,e	dz  f   fdT„Z:	 	 	 d^dRe,dUe,dz  dVe;e,z  dz  dPe7dMe	f
dW„ZdXe<e   ez  fdY„Z=da>edZ„ «       Z?g d[¢Z@y# e"$ r dZ!Y �Œ-w xY w# e"$ r dZ%Y �Œ2w xY w# e"$ r  dZ*dZ+d<„ Zd=„ Z# G d>„ d?«      Zd@„ ZdA„ ZdB„ Z4Y Œàw xY w)_é    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                 ób   — t         rt        | «      S t        j                  dt        › �«       d„ S )NúFkernels hub usage is disabled through the environment USE_HUB_KERNELS=c                 ó   — | S ©N© ©Úclss    úg/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/transformers/integrations/hub_kernels.pyú<lambda>z-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   ?   s2   € ÝÜ7¸
ÓCÐCä×ÑØXÔYvÐXwÐxôñ #Ð"r"   Ú	func_namec                 óª   — t         rt        rt        | «      S t        st        j	                  d«       d„ S t        j	                  dt
        › �«       d„ S )Nzwuse_kernel_func_from_hub is not available in the installed kernels version. Please upgrade kernels to use this feature.r   c                 ó   — | S r   r   ©Úfuncs    r    r!   z*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   sV   € ÝÕ =Ü4°YÓ?Ð?å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/   r5   r6   Úcpuzkernels-community/activationÚFastGELU)r1   r   r   Ú	QuickGELUÚNewGELUÚSiluÚGeluÚGeluTanh)r0   r2   r4   ÚMLPr:   r=   r>   r?   ÚSiLUÚGeLUrB   Ú_KERNEL_MAPPINGzkernels-community/rotaryÚapply_rotary_transformers)r1   r(   )r6   r/   Úrotary_pos_embc                 óT   ‡— ‰| v xs" t        ˆfd„| j                  «       D «       «      S )Nc              3   óZ   •K  — | ]"  }t        |t        «      xr t        |‰«      –— Œ$ y ­wr   )Ú
isinstanceÚdictÚhas_key)Ú.0ÚvÚkeys     €r    ú	<genexpr>zhas_key.<locals>.<genexpr>î   s&   øè ø€ Ò[È1œz¨!¬TÓ2ÒF´w¸qÀ#³ÓFÑ[ùs   ƒ(+)ÚanyÚvalues)ÚdrP   s    `r    rM   rM   í   s'   ø€ Ø�aˆxÒ[œ3Ó[ÐPQ×PXÑPXÓPZÔ[Ó[Ð[r"   c                 óp   — | €t         } t        | d«      rt        d¬«      st        d«      ‚t	        | «       y )Nr6   z0.10.2)ÚMIN_VERSIONzfkernels uses an incompatible version. Please install the latest version with `pip install -U kernels`.)rF   rM   r
   ÚImportErrorr   )Úmappings    r    Ú$register_kernel_mapping_transformersrY   ð   s8   € Øˆ?Ü%ˆGÜ�7˜EÔ"Ô+?ÈHÕ+UÜØxóð ô 	  Õ(r"   c                  ó   — d„ }|S )Nc                 ó   — | S r   r   r   s    r    Ú	decoratorz.use_kernel_forward_from_hub.<locals>.decorator  s   € ØˆJr"   r   ©ÚargsÚkwargsr\   s      r    r   r      s   € ò	ð Ðr"   c                  ó   — d„ }|S )Nc                 ó   — | S r   r   r+   s    r    r\   z+use_kernel_func_from_hub.<locals>.decorator  s   € ØˆKr"   r   r]   s      r    r   r     s   € ò	ð Ðr"   c                   ó   — e Zd Zd„ Zy)r   c                 ó   — t        d«      ‚)NzNLayerRepository requires `kernels` to be installed. Run `pip install kernels`.©ÚRuntimeError)Úselfr^   r_   s      r    Ú__init__zLayerRepository.__init__  s   € ÜÐoÓpÐpr"   N)Ú__name__Ú
__module__Ú__qualname__rg   r   r"   r    r   r     s   „ ó	qr"   r   c                  ó   — t        d«      ‚)Nz^replace_kernel_forward_from_hub requires `kernels` to be installed. Run `pip install kernels`.rd   ©r^   r_   s     r    r   r     s   € ÜØló
ð 	
r"   c                  ó   — t        d«      ‚)NzVregister_kernel_mapping requires `kernels` to be installed. Run `pip install kernels`.rd   rl   s     r    r   r     s   € ÜÐsÓtÐtr"   c                  ó   — t        d«      ‚)Nzcregister_kernel_mapping_transformers requires `kernels` to be installed. Run `pip install kernels`.rd   rl   s     r    rY   rY     s   € ÜØqó
ð 	
r"   zkernels-community/causal-conv1d)r1   r   zkernels-community/mamba-ssmz!kernels-community/finegrained-fp8zkernels-community/deep-gemmzkernels-community/sonic-moe)zcausal-conv1dz	mamba-ssmzfalcon_mamba-ssmzfinegrained-fp8z	deep-gemmz	sonic-moeÚ_HUB_KERNEL_MAPPINGÚ_KERNEL_MODULE_MAPPINGÚattn_implementationÚreturnc                 ó>   — | duxr t        j                  d| «      duS )zJCheck whether `attn_implementation` matches a kernel pattern from the hub.Nz'^[^/:]+/[^/:]+(?:@[^/:]+)?(?::[^/:]+)?$)ÚreÚsearch)rq   s    r    Ú	is_kernelrv   *  s-   € ð 	 4Ð'ò 	cÜ�I‰IÐ@ÐBUÓVÐ^bÐbðr"   Úattention_wrapperÚallow_all_kernelsc                 ót  — ddl m} ddlm} d| v r| j	                  d«      d   n| }t        |«      syt        st        d«      ‚d|v r%|j	                  d«      \  }}|j                  «       }n|}d}|j                  «       }|j                  d	«      \  }}}	|j                  «       }|	r|	j                  «       nd}		 t        ||	|¬
«      }
t        |
d«      r|€t        }|}n|�t        |
|«      }|j!                  | «       |j!                  | |d   «       |
S # t        $ r}t        d|› d|› d�«      ‚d}~ww xY w)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`.ú:ú@)Úrevisionrx   z-An error occurred while trying to load from 'z': ú.Úflash_attn_varlen_funcÚflash_attention_2)Úmasking_utilsrz   Úmodeling_utilsr{   Úsplitrv   Ú_kernels_availablerW   ÚstripÚ	partitionr   Ú	ExceptionÚ
ValueErrorÚhasattrr   ÚgetattrÚregister)rq   rw   rx   rz   r{   Úactual_attn_namer1   Úkernel_nameÚ_ÚrevÚkernelÚeÚkernel_functions                r    Úload_and_register_attn_kernelr–   2  si  € õ  =Ý8à<?ÐCVÑ<VÐ*×0Ñ0°Ó5°aÒ8Ð\oÐÜÐ%Ô&ØÝÜðOó
ð 	
ð ÐÑØ/×5Ñ5°cÓ:Ñˆ�Ø!×'Ñ'Ó)‰à"ˆØˆØ�m‰m‹o€Gà×'Ñ'¨Ó,�O€GˆQ�Ø�m‰m‹o€GÙˆ#�)‰)Œ+ $€Cð[Ü˜G¨cÐEVÔWˆô ˆvÐ/Ô0ØÐ$Ü 7ÐØ+‰Ø	Ð	 Ü! &¨+Ó6ˆð ×$Ñ$Ð%8¸/ÔJØ ×)Ñ)Ð*=Ð?[Ð\oÑ?pÔqà€Møô ò [ÜÐHÈÈ	ÐQTÐUVÐTWÐWXÐYÓZÐZûð[ús   Â;D Ä	D7Ä D2Ä2D7r�   rX   c                 óÚ  — | |v rt        ||    t        «      r||    S | t        vrt        j	                  d| › d�«       d || <   y t
        rW	 t        |    d   }t        |    j                  dd «      }t        |    j                  dd «      }t        |||¬«      }||| <   ||    S dd l
}| j                  dd	«      }d
|› d�}	  |j                  dt        «      }	t        |	|d «      }
t!        |
«      r" |
«       r	  |j                  |› «      }||| <   |S d || <   ||    S # t        $ r d || <   Y ||    S t        $ r d || <   Y ||    S w xY w# t        $ r d }
Y Œow xY w# t        $ r d || <   Y ||    S w xY w)NzKernel z! not found in _HUB_KERNEL_MAPPINGr1   r€   r   ©r€   r   r   ú-r‘   Úis_Ú
_availablez..utils.import_utils)rK   r   ro   r%   r&   r‡   Úgetr   ÚFileNotFoundErrorÚAssertionErrorÚ	importlibÚreplaceÚimport_moduleÚ__package__r�   rŠ   Úcallable)r�   rX   r1   r€   r   r“   rŸ   Únew_kernel_namer(   Ú	utils_modÚis_kernel_availableÚmodules               r    Úlazy_load_kernelr¨   o  sá  € Ø�gÑ¤*¨W°[Ñ-AÄ:Ô"NØ�{Ñ#Ð#ØÔ-Ñ-Ü×Ñ˜g k ]Ð2SÐTÔUØ#ˆ�ÑØÝð
	(Ü)¨+Ñ6°yÑAˆGÜ*¨;Ñ7×;Ñ;¸JÈÓMˆHÜ)¨+Ñ6×:Ñ:¸9ÀdÓKˆGÜ °(ÀGÔLˆFØ#)ˆG�KÑ ð> �;ÑÐó- 	à%×-Ñ-¨c°3Ó7ˆØ˜/Ð*¨*Ð5ˆ	ð	'Ø/˜	×/Ñ/Ð0FÌÓTˆIÜ")¨)°YÀÓ"EÐô Ð'Ô(Ñ-@Ô-Bð,Ø0˜×0Ñ0°OÐ3DÓF�Ø'-�˜Ñ$Ø�ð $(ˆG�KÑ à�;ÑÐøô= !ò 	(Ø#'ˆG�KÒ ð: �;ÑÐô9 ò 	(à#'ˆG�KÒ ð4 �;ÑÐð9	(ûô ò 	'Ø"&Òð	'ûô ò ,Ø'+�˜Ò$ð �;ÑÐð,ús=   ÁAD Â>$E Ã5E ÄEÄ-EÅ EÅEÅEÅE*Å)E*r€   r   c                 óV  — ddl m} t        st        d«      ‚| j	                  d«      d   }|dk7  r|st        d«      ‚d|| d	œ}t        j                  j                  d
«      }t        j                  |«      t        j                  d«      k\  rt        | |||¬«      S t        | ||¬«      S )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   r1   Úkernelsz0.10.4)r€   r   Ú
user_agentr˜   )Ú rª   r‡   rW   r†   r‹   rŸ   Úmetadatar   Úpkg_versionÚparseÚget_kernel_hub)r�   r€   r   rx   rª   Úrepo_parentr¯   Úkernels_versions           r    r   r   ž  s³   € õ åÜð-ó
ð 	
ð
 ×#Ñ# CÓ(¨Ñ+€KàÐ)Ò)Ñ2CÜØwó
ð 	
ð  .¸+ÐR]Ñ^€JÜ×(Ñ(×0Ñ0°Ó;€OÜ×Ñ˜Ó)¬[×->Ñ->¸xÓ-HÒHÜ˜k°HÀgÐZdÔeÐeä˜k°HÀgÔNÐNr"   Úmodule_namesc                 ó8   ‡ — t        ‰ t        «      r‰ gŠ ˆ fd„}|S )aO  
    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                 ó<   •‡— | j                   Šˆˆfd„}|| _         | S )Nc                 óä   •—  ‰| g|¢­i |¤Ž | j                   j                  di «      }‰D ]B  }t        |dd «      xs t        |dd «      xs t        |dd «      }|€t        d|›�«      ‚|||<   ŒD y )NÚ_hidden_kernelsrh   Úkernel_layer_namer(   z)Could not infer kernel function name for )Ú__dict__Ú
setdefaultr�   r‹   )rf   r^   r_   Úhidden_kernelsÚfnÚnamer·   Ú	orig_inits         €€r    Únew_initz8use_kernelized_func.<locals>.decorator.<locals>.new_initË  s™   ø€ Ù�dÐ,˜TÒ, VÒ,ð "Ÿ]™]×5Ñ5Ð6GÈÓLˆNØ"ò 
*�ä˜B 
¨DÓ1ò 6Ü˜rÐ#6¸Ó=ò6ä˜r ;°Ó5ð ð
 �<Ü$Ð'PÐQSÐPVÐ%WÓXÐXð (*�˜tÒ$ñ
*r"   )rg   )r   rÃ   rÂ   r·   s     @€r    r\   z&use_kernelized_func.<locals>.decoratorÈ  s   ù€ Ø—L‘Lˆ	õ	*ð"  ˆŒØˆ
r"   )rK   r   )r·   r\   s   ` r    Úuse_kernelized_funcrÄ   »  s#   ø€ ô �,¤Ô)Ø$�~ˆôð. Ðr"   c               #   ó,   K  — 	 da d–— da y# da w xY w­w)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   rY   r   r¨   r   rÄ   r   )NF)NNF)AÚimportlib.metadatarŸ   Úosrt   Úcollections.abcr   Ú
contextlibr   Útypesr   Ú	packagingr   r²   Úutilsr   r	   Úutils.import_utilsr
   Úflash_attentionr   Ú
get_loggerrh   r%   r®   r   r   r   r   r   r   r´   r   r$   r   rW   r   r.   r-   Úenvironrœ   Úupperr'   r‡   r#   ÚstrÚ	INFERENCEÚTRAININGÚTORCH_COMPILErF   rL   Ú__annotations__rM   rY   ro   rp   Úboolrv   r–   r¨   ÚintÚlistrÄ   rÆ   rÇ   Ú__all__r   r"   r    ú<module>rÝ      s¹  ðô Û 	Û 	Ý $Ý %Ý å ,ç 1Ý 5Ý 4ð 
ˆ×	Ñ	˜HÓ	%€ð}
÷õ õõð
Ý*ð
.ÝYà(,Ð%ð %'§J¡J§N¡NÐ3DÀeÓ$L×$RÑ$RÓ$TÐ!ØÐØ4Ð8LÐ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±_Ø:ÀvÐWXô6ðð
ð Ø—‘ ×!3Ñ!3Ñ3±_Ø:ÀvÐWXô6ðð
ð Ø—‘ ×!3Ñ!3Ñ3±_Ø:ÀzÐ[\ô6ðð
ñwBe€O�T˜#˜t F¨S¡L°/ÀDÈÈÐI^ÑD_Ñ2_Ð$_Ñ`Ð`Ñaó BðJ Ð!ð —‘¡Ø6ÐB]ô!ðð —‘™~Ø6ÐB]ô ð —‘¡Ø6ÐB]ô!ð	ñ-
ˆÐ(Ñ)ò \ó)ð^ "CÈqÑQØ:ÀqÑIØ$AÈaÑPØ#FÐSTÑUØ:ÀqÑIØ:ÀqÑIñ2Ð �T˜#˜t C¨ H™~Ð-Ñ.ó ð 8:Ð ˜˜S *¨tÑ"3Ð3Ñ4Ó 9ð 3¨¡:ð °$ó ð diñ:Øð:Ø19¸D±ð:Ø\`ð:à�$Ñó:ðz Pfñ ,  #ð , °°S¸*ÀtÑ:KÐ5KÑ0Ló , ðb  Ø $Ø#ñ	OØðOà�D‰jðOð �3‰Y˜ÑðOð ð	Oð
 óOð:$ d¨8¡n°xÑ&?ó $ðP Ð ð ñ"ó ð"ò 
�øðO ò Ø‹ðûð ò .Ø(-Ó%ð.ûðD ò !
ØÐØÐòò÷qñ qò
ò
uô
ð=!
úsU   ÁN- Á(N Á/N Á7I:N- ÎNÎN- ÎNÎN- ÎN*Î&N- Î)N*Î*N- Î-"OÏO