a
    hc                     @   s  U d dl Z d dlmZ d dlmZmZ ddlmZ ddlm	Z	 zd dl
mZmZmZmZmZmZmZ d	Zd
edddid
edddiedddejedddidd
edddiejedddejedddiejedddiddZeeeeeef ef f ed< ee W n> eyP   dZdd ZG dd dZdd  Zd!d" ZY n0 ee ed#d$d%Zedd#d&d'Zg d(ZdS ))    N)partial)OptionalUnion   )lazy_import_flash_attention   )flash_attention_forward)DeviceLayerRepositoryMode
get_kernelregister_kernel_mappingreplace_kernel_forward_from_hubuse_kernel_forward_from_hubTcudaz!kernels-community/deformable-detrMultiScaleDeformableAttention)repo_idZ
layer_namezkernels-community/moeLlama4TextMoezkernels-community/liger_kernelsZLigerRMSNorm)r   Zrocmzmedmekk/triton-llama-mlpZTritonLlamaMLPzkernels-community/megablocksMegaBlocksMoeMLPzahadnagy/megablocks)r   r   ZRMSNormZMLPr   _KERNEL_MAPPINGFc                  O   s   dd }|S )Nc                 S   s   | S )N )clsr   r   a/var/www/html/assistant/venv/lib/python3.9/site-packages/transformers/integrations/hub_kernels.py	decoratora   s    z.use_kernel_forward_from_hub.<locals>.decoratorr   )argskwargsr   r   r   r   r   `   s    r   c                   @   s   e Zd Zdd ZdS )r
   c                 O   s   t dd S )NzNLayerRepository requires `kernels` to be installed. Run `pip install kernels`.RuntimeError)selfr   r   r   r   r   __init__g   s    zLayerRepository.__init__N)__name__
__module____qualname__r   r   r   r   r   r
   f   s   r
   c                  O   s   t dd S )Nz^replace_kernel_forward_from_hub requires `kernels` to be installed. Run `pip install kernels`.r   r   r   r   r   r   r   j   s    r   c                  O   s   t dd S )NzVregister_kernel_mapping requires `kernels` to be installed. Run `pip install kernels`.r   r#   r   r   r   r   o   s    r   )attn_implementationreturnc                 C   s   | duot d| duS )zJCheck whether `attn_implementation` matches a kernel pattern from the hub.Nz'^[^/:]+/[^/:]+(?:@[^/:]+)?(?::[^/:]+)?$)research)r$   r   r   r   	is_kernels   s    r(   c              
   C   s`  t | sdS tstdddlm} ddlm} d}| }d| v rX| d\}}||}d|v rx|d\}}|	 }n|}d}|	 }|
d\}}}|	 }|r|	 nd}zt||d	}	W n: ty }
 z"td
| d|
 dW Y d}
~
n
d}
~
0 0 t|	dr,|du rt}t||	d}t|	 n|dur@t|	|}|| | || |d  dS )zALoad and register the kernel associated to `attn_implementation`.NzI`kernels` is not installed. Please install it with `pip install kernels`.r   )ALL_MASK_ATTENTION_FUNCTIONS)ALL_ATTENTION_FUNCTIONS|:@)revisionz,An error occured while trying to load from 'z': .Zflash_attn_varlen_func)implementationZflash_attention_2)r(   _kernels_availableImportErrorZmasking_utilsr)   Zmodeling_utilsr*   splitgetstrip	partitionr   	Exception
ValueErrorhasattrr   r   r   getattrregister)r$   r)   r*   Zattention_wrapperZactual_attn_namer   Zkernel_name_revZkerneleZkernel_functionr   r   r   load_and_register_kernel{   sB    

,



r?   )r
   r   r   r   )r&   	functoolsr   typingr   r   Zmodeling_flash_attention_utilsr   Zflash_attentionr   Zkernelsr	   r
   r   r   r   r   r   r1   Z	INFERENCEZTRAININGr   dictstr__annotations__r2   boolr(   r?   __all__r   r   r   r   <module>   st   
$
&61