§
    ‚Štj„Œ  ã                   ó„  — U d dl Z 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 ddlmZmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZmZmZmZmZ ddlmZ erddl m!Z! ddl"m#Z# ddl$m%Z%  e¦   «         r
d dl&Z&d dl'm(Z(  ej)        e*¦  «        Z+de› de› de› d�Z,ej-         .                    dd¦  «         /                    ¦   «         Z0e0ev Z1 e¦   «         rUd dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; d dl2m<Z= d dl2m>Z? d dl2m@ZA d dl2mBZC deDfd„Z@deDfd „ZBdaEeFdz  eGd!<   d"eFfd#„ZHd"eFfd$„ZId]d%„ZJn8d&Z1d'„ Z@d(„ ZB G d)„ d*¦  «        Z6 G d+„ d,¦  «        Z7 G d-„ d.¦  «        Z5d/„ Z:d0„ Z9d1„ ZJd2dd3œd4dd3œd4dd3œd5d6d3œd7dd3œd8d9d:œd;œZKeFeDeFeDeDf         f         eGd<<   i ZLeFeDedz  f         eGd=<   d>eDdz  d"eMfd?„ZN	 d^d>eDd@edz  dAeMd"edz  fdB„ZOeLfdCeDdDeFeDedz  f         fdE„ZPd]d_dJ„Z>	 	 	 d`dCeDdKeDdz  dLeQeDz  dz  dAeMd"ef
dM„Z<dNeRe         ez  fdO„ZSd&aTedP„ ¦   «         ZUdQeVdReReD         dSeVd"eVfdT„ZW	 	 	 	 	 	 	 	 dad[„ZXg d\¢ZYdS )bé    N)ÚCallable)Úcontextmanager)ÚPath)Ú
ModuleType)ÚTYPE_CHECKINGé   )Ú!get_checkpoint_conversion_mappingÚ&register_checkpoint_conversion_mapping)Úregister_patch_mapping)ÚENV_VARS_TRUE_VALUESÚlogging)Úis_flash_attention_requested)ÚKERNELS_MAX_VERSIONÚKERNELS_MIN_VERSIONÚis_kernels_availableÚis_rocm_platformÚis_torch_availableé   )Úflash_attention_forward)ÚPretrainedConfig)ÚPreTrainedModel)ÚKernelConfigzh`kernels` is either not installed or uses an incompatible version. Please install a compatible version (z <= version < z), e.g. `pip install kernels==ú`ÚUSE_HUB_KERNELSÚYES)	ÚCUDAPropertiesÚDeviceÚFuncRepositoryÚLayerRepositoryÚLocalLayerRepositoryÚModeÚregister_kernel_mappingÚreplace_kernel_forward_from_hubÚuse_kernel_mapping)Ú
get_kernel)Ú	kernelize)Úuse_kernel_forward_from_hub)Úuse_kernel_func_from_hubÚ
layer_namec                 óx   — t           rt          | ¦  «        S t                               dt          › �¦  «         d„ S )NúFkernels hub usage is disabled through the environment USE_HUB_KERNELS=c                 ó   — | S ©N© ©Úclss    úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/integrations/hub_kernels.pyú<lambda>z-use_kernel_forward_from_hub.<locals>.<lambda>[   s   € ˜s€ ó    )Ú_kernels_enabledÚ$_kernels_use_kernel_forward_from_hubÚloggerÚwarning_onceÚ_TRANSFORMERS_USE_HUB_KERNELS)r)   s    r1   r'   r'   T   sF   € Ýð 	#Ý7¸
ÑCÔCÐCå×ÒØxÕYvÐxÐxñô ð ð #�?Ð"r3   Ú	func_namec                 óx   — t           rt          | ¦  «        S t                               dt          › �¦  «         d„ S )Nr+   c                 ó   — | S r-   r.   ©Úfuncs    r1   r2   z*use_kernel_func_from_hub.<locals>.<lambda>d   s   €  € r3   )r4   Ú!_kernels_use_kernel_func_from_hubr6   r7   r8   )r9   s    r1   r(   r(   ]   sG   € Ýð 	%Ý4°YÑ?Ô?Ð?å×ÒØxÕYvÐxÐxñô ð ð %Ð$Ð$r3   Ú_KERNEL_MAPPING_CACHEÚreturnc                  ój	  — dt          ddd¬¦  «        it          dt          dd¬¦  «        ¬¦  «        t          d	d
dd¬¦  «        idt          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        iidt          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        iidt          j        t          j        z  t          ddd¬¦  «        t          j        t          j        z  t          ddd¬¦  «        iidt          j        t          j        z  t          ddd¬¦  «        t          j        t          j        z  t          ddd¬¦  «        iidt          j        t          j        z  t          ddd¬¦  «        iit          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        it          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        it          j        t          ddd¬¦  «        it          j        t          ddd¬¦  «        it          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        idœt          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        it          j        t          ddd¬¦  «        t          j        t          ddd¬¦  «        it          j        t          ddd¬¦  «        it          j        t          ddd¬¦  «        id œdt          j        t          j        z  t          d!d"d¬¦  «        iidt          j        t          j        z  t          d!d#d¬¦  «        iidt          j        t          j        z  t          d!d$d¬¦  «        iidt          j        t          j        z  t          d!d%d¬¦  «        iidt          j        t          j        z  t          d!d&d¬¦  «        iidt          j        t          j        z  t          d!d'd¬¦  «        iid(œ} t          j        t          d)d*d¬+¦  «        it          d)d*d¬+¦  «        t          j        t          d,d*d¬+¦  «        id-œdt          j        t          j        z  t          dd.d¬+¦  «        iid/œ}| |z  } | S )0NÚcudaz!kernels-community/deformable-detrÚMultiScaleDeformableAttentionr   )Úrepo_idr)   Úversionéy   )Úmin_capabilityÚmax_capability)ÚtypeÚ
propertieszAtlas-Inference/gdnÚQwen3_5GatedDeltaNetÚ(ef12347fc77d6ddf1cb72c0bd0af1c7d6cc69172T)rD   r)   ÚrevisionÚtrust_remote_codeúkernels-community/mamba-ssmÚcausal_conv1d_fnÚcausal_conv1d_updatezkernels-community/liger-kernelsÚLigerSwiGLUMLPr   ÚLigerTiledSwiGLUMLPÚLigerGEGLUMLPÚLigerTiledGEGLUMLPÚLigerLinearÚLigerRMSNormzkernels-community/rmsnormÚRMSNormzkernels-community/mlx_rmsnorm)rB   ÚrocmÚxpuÚmpsÚnpuzkernels-community/megablocksÚMegaBlocksMoeMLPÚCPUMegaBlocksMoeMLP)rB   rY   rZ   Úcpuzkernels-community/activationÚFastGELUÚ	QuickGELUÚNewGELUÚSiluÚGeluÚGeluTanh)rC   rK   rP   rQ   Ú	SwiGLUMLPÚGeGLUMLPÚLinearrX   r]   r`   ra   rb   ÚSiLUÚGeLUre   zkernels-community/rotaryÚapply_rotary_transformers)rD   r9   rE   zkernels-community/aiter-rope)rZ   rB   rY   ÚLigerForCausalLMLoss)Úrotary_pos_embÚForCausalLMLoss)r   r   r   r!   ÚTRAININGÚ	INFERENCEÚTORCH_COMPILEr   )Ú_KERNEL_MAPPINGÚ_FUNCTION_KERNEL_MAPPINGs     r1   Ú_build_kernel_mappingrt   l   s4  € ð �Ø?Ø>Øðñ ô ð.õ" ØÝ-¸SÐQTÐUÑUÔUðñ ô õ #Ø1Ø5ØGà&*ðñ ô ð	%ð Ý”M¥?Ø =Ø#5Ø !ð$ñ $ô $õ
 ”N¥OØ =Ø#5Ø !ð%ñ %ô %ðð!ð Ý”M¥?Ø =Ø#9Ø !ð$ñ $ô $õ
 ”N¥OØ =Ø#9Ø !ð%ñ %ô %ðð%ð Ý”N¥TÔ%7Ñ7½Ø AØ#3Ø !ð:ñ :ô :õ
 ”M¥DÔ$6Ñ6½Ø AØ#8Ø !ð9ñ 9ô 9ððð Ý”N¥TÔ%7Ñ7½Ø AØ#2Ø !ð:ñ :ô :õ
 ”M¥DÔ$6Ñ6½Ø AØ#7Ø !ð9ñ 9ô 9ððð Ý”M¥DÔ$6Ñ6½Ø AØ#0Ø !ð9ñ 9ô 9ððõ ”M¥?Ø AØ#1Ø !ð$ñ $ô $õ
 ”N¥OØ AØ#1Ø !ð%ñ %ô %ðõ ”M¥?Ø AØ#1Ø !ð$ñ $ô $õ
 ”N¥OØ AØ#1Ø !ð%ñ %ô %ðõ ”N¥OØ ;Ø#,Ø !ð%ñ %ô %ðõ ”N¥OØ ?Ø#,Ø !ð%ñ %ô %ðõ ”M¥?Ø AØ#1Ø !ð$ñ $ô $õ
 ”N¥OØ AØ#1Ø !ð%ñ %ô %ððQ4ð 4õn ”M¥?Ø >Ø#5Ø !ð$ñ $ô $õ
 ”N¥OØ >Ø#5Ø !ð%ñ %ô %ðõ ”M¥?Ø >Ø#5Ø !ð$ñ $ô $õ
 ”N¥OØ >Ø#5Ø !ð%ñ %ô %ðõ ”N¥OØ >Ø#5Ø !ð%ñ %ô %ðõ ”N¥OØ >Ø#8Ø !ð%ñ %ô %ððA'!ð '!ðR Ý”N¥TÔ%7Ñ7½Ø >Ø#-Ø !ð:ñ :ô :ððð Ý”N¥TÔ%7Ñ7½Ø >Ø#.Ø !ð:ñ :ô :ððð Ý”N¥TÔ%7Ñ7½Ø >Ø#,Ø !ð:ñ :ô :ððð Ý”N¥TÔ%7Ñ7½Ø >È6Ð[\ð:ñ :ô :ððð Ý”N¥TÔ%7Ñ7½Ø >È6Ð[\ð:ñ :ô :ððð Ý”N¥TÔ%7Ñ7½Ø >È:Ð_`ð:ñ :ô :ðððIki
ð ki
ˆõb ”N¥NØ :ÐFaÐklð%ñ %ô %ðõ
 'Ø6ÐB]Ðghðñ ô õ ”N¥NØ >ÐJeÐopð%ñ %ô %ððð ð  Ý”M¥DÔ$6Ñ6½Ø AÐMcÐmnð9ñ 9ô 9ðð ð!$
ð $
Ð ð0 *Ð,DÑDˆàÐr3   c                  ó:   — t           €t          ¦   «         a t           S )zPReturn the default transformers kernel mapping, building it lazily on first use.)r?   rt   r.   r3   r1   Úget_kernel_mapping_transformersrv   w  s   € õ !Ð(Ý$9Ñ$;Ô$;Ð!Ý$Ð$r3   c                 óD   — | €t          ¦   «         } t          | ¦  «         d S r-   )rv   r"   )Úmappings    r1   Ú$register_kernel_mapping_transformersry   ~  s&   € Øˆ?Ý5Ñ7Ô7ˆGÝ Ñ(Ô(Ð(Ð(Ð(r3   Fc                  ó   — d„ }|S )Nc                 ó   — | S r-   r.   r/   s    r1   Ú	decoratorz.use_kernel_forward_from_hub.<locals>.decorator‰  s   € ØˆJr3   r.   ©ÚargsÚkwargsr|   s      r1   r'   r'   ˆ  s   € ð	ð 	ð 	ð Ðr3   c                  ó   — d„ }|S )Nc                 ó   — | S r-   r.   r<   s    r1   r|   z+use_kernel_func_from_hub.<locals>.decorator�  s   € ØˆKr3   r.   r}   s      r1   r(   r(   Ž  s   € ð	ð 	ð 	ð Ðr3   c                   ó   — e Zd Zd„ Zd„ ZdS )r   c                 ó    — t          d¦  «        ‚)NzNLayerRepository requires `kernels` to be installed. Run `pip install kernels`.©ÚRuntimeError©Úselfr~   r   s      r1   Ú__init__zLayerRepository.__init__•  s   € ÝÐoÑpÔpÐpr3   c                 ó    — t          d¦  «        ‚)NzMLayerRepository requires `kernels` to be installed. Run `pip install kernels.©ÚNotImplementedError©r‡   s    r1   ÚloadzLayerRepository.load˜  s   € Ý%Ð&uÑvÔvÐvr3   N©Ú__name__Ú
__module__Ú__qualname__rˆ   r�   r.   r3   r1   r   r   ”  s:   € € € € € ð	qð 	qð 	qð	wð 	wð 	wð 	wð 	wr3   r   c                   ó   — e Zd Zd„ Zd„ ZdS )r    c                 ó    — t          d¦  «        ‚)NzSLocalLayerRepository requires `kernels` to be installed. Run `pip install kernels`.r„   r†   s      r1   rˆ   zLocalLayerRepository.__init__œ  s   € ÝÐtÑuÔuÐur3   c                 ó    — t          d¦  «        ‚)NzRLocalLayerRepository requires `kernels` to be installed. Run `pip install kernels.rŠ   rŒ   s    r1   r�   zLocalLayerRepository.loadŸ  s   € Ý%Ødñô ð r3   NrŽ   r.   r3   r1   r    r    ›  s5   € € € € € ð	vð 	vð 	vð	ð 	ð 	ð 	ð 	r3   r    c                   ó   — e Zd Zd„ ZdS )r   c                 ó    — t          d¦  «        ‚)NzMFuncRepository requires `kernels` to be installed. Run `pip install kernels`.r„   r†   s      r1   rˆ   zFuncRepository.__init__¥  s   € ÝÐnÑoÔoÐor3   N)r�   r�   r‘   rˆ   r.   r3   r1   r   r   ¤  s(   € € € € € ð	pð 	pð 	pð 	pð 	pr3   r   c                  ó    — t          d¦  «        ‚)Nz^replace_kernel_forward_from_hub requires `kernels` to be installed. Run `pip install kernels`.r„   ©r~   r   s     r1   r#   r#   ¨  s   € ÝØlñ
ô 
ð 	
r3   c                  ó    — t          d¦  «        ‚)NzVregister_kernel_mapping requires `kernels` to be installed. Run `pip install kernels`.r„   r˜   s     r1   r"   r"   ­  s   € ÝÐsÑtÔtÐtr3   c                  ó    — t          d¦  «        ‚)Nzcregister_kernel_mapping_transformers requires `kernels` to be installed. Run `pip install kernels`.r„   r˜   s     r1   ry   ry   °  s   € ÝØqñ
ô 
ð 	
r3   zkernels-community/causal-conv1d)rD   rE   rO   z!kernels-community/finegrained-fp8é   zkernels-community/deep-gemmzkernels-community/sonic-moez
ep-support)rD   rM   )zcausal-conv1dz	mamba-ssmzfalcon_mamba-ssmzfinegrained-fp8z	deep-gemmz	sonic-moeÚ_HUB_KERNEL_MAPPINGÚ_KERNEL_MODULE_MAPPINGÚattn_implementationc                 ó8   — | duot          j        d| ¦  «        duS )zJCheck whether `attn_implementation` matches a kernel pattern from the hub.Nz'^[^/:]+/[^/:]+(?:@[^/:]+)?(?::[^/:]+)?$)ÚreÚsearch)rž   s    r1   Ú	is_kernelr¢   Â  s.   € ð 	 4Ð'ð 	cÝŒIÐ@ÐBUÑVÔVÐ^bÐbðr3   Úattention_wrapperÚallow_all_kernelsc                 ó¨  — ddl m} ddlm} d| v r|                      d¦  «        d         n| }t          |¦  «        sdS t          ¦   «         st          t          ¦  «        ‚d|v r-|                     d¦  «        \  }}| 	                    ¦   «         }n|}d}| 	                    ¦   «         }| 
                    d¦  «        \  }}}	| 	                    ¦   «         }|	r|	 	                    ¦   «         nd}	d}
|	€t          |d	¬
¦  «        }|rdnd}
	 t          ||	|
|¬¦  «        }n2# t          $ r ‚ t          $ r}t          d|› d|› d�¦  «        ‚d}~ww xY wd}t          |d¦  «        r|€t           }|}n1t          |d¦  «        rddlm} |�|n|}d}n|�t'          ||¦  «        }|                     | |¦  «         |                     | ||         ¦  «         |S )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 continuous 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ú:ú@r›   )Ú"requested_attention_implementationrE   r   ©rM   rE   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¢   r   ÚImportErrorÚ_MISSING_KERNELS_MESSAGEÚstripÚ	partitionr   r%   Ú
ValueErrorÚ	ExceptionÚhasattrr   Úmsa_attentionr±   ÚgetattrÚregister)rž   r£   r¤   r¦   r§   Úactual_attn_namerD   Úkernel_nameÚ_ÚrevrE   Úis_fa4ÚkernelÚeÚmask_implementationÚkernel_functionr±   s                    r1   Úload_and_register_attn_kernelrÉ   Ê  sz  € ð  =Ð<Ð<Ð<Ð<Ð<Ø8Ð8Ð8Ð8Ð8Ð8à<?ÐCVÐ<VÐ<VÐ*×0Ò0°Ñ5Ô5°aÔ8Ð8Ð\oÐÝÐ%Ñ&Ô&ð ØˆtÝÑ!Ô!ð 4ÝÕ2Ñ3Ô3Ð3ð ÐÐÐØ/×5Ò5°cÑ:Ô:Ñˆ�Ø!×'Ò'Ñ)Ô)ˆˆà"ˆØˆØ�mŠm‰oŒo€Gà×'Ò'¨Ñ,Ô,�O€GˆQ�Ø�mŠm‰oŒo€Gð Ð
&ˆ#�)Š)‰+Œ+ˆ+ $€CØ€GØ
€{å-ÐQXÐbcÐdÑdÔdˆØÐ$�!�! 1ˆð[Ý˜G¨c¸7ÐVgÐhÑhÔhˆˆøÝð ð ð ØÝð [ð [ð [ÝÐYÈÐYÐYÐUVÐYÐYÐYÑZÔZÐZøøøøð[øøøð .ÐÝˆvÐ/Ñ0Ô0ð 7ØÐ$Ý 7ÐØ+ˆˆÝ	�Ð,Ñ	-Ô	-ð 
7ð
 	9Ð8Ð8Ð8Ð8Ð8à/@Ð/LÐ+Ð+ÐRgˆØ$ÐÐØ	Ð	 Ý! &¨+Ñ6Ô6ˆð ×$Ò$Ð%8¸/ÑJÔJÐJØ ×)Ò)Ð*=Ð?[Ð\oÔ?pÑqÔqÐqà€Ms   ÄD ÄEÄ3E	Å	ErÁ   rx   c                 óÔ  — | |v r#t          ||          t          ¦  «        r||          S | t          vr%t                               d| › d�¦  «         d || <   d S t          ¦   «         rÍt          rÆ	 t          |          d         }t          |                               dd ¦  «        }t          |                               dd ¦  «        }|€|€d}t          |||t          ¬¦  «        }||| <   ný# t          $ r/}d || <   t                               d| › d	|› �¦  «         Y d }~nÉd }~wt          $ r d || <   Y nµw xY wd
d l}|                      dd¦  «        }d|› d�}		 |                     dt          ¦  «        }
t!          |
|	d ¦  «        }n# t"          $ r d }Y nw xY wt%          |¦  «        r= |¦   «         r3	 |                     |› ¦  «        }||| <   |S # t"          $ r d || <   Y n	w xY wd || <   ||          S )NzKernel z! not found in _HUB_KERNEL_MAPPINGrD   rM   rE   r   r¬   zFailed to load kernel z: r   ú-rÂ   Úis_Ú
_availablez..utils.import_utils)Ú
isinstancer   rœ   r6   r7   r   r4   Úgetr%   ÚALLOW_ALL_KERNELSÚFileNotFoundErrorÚAssertionErrorÚ	importlibÚreplaceÚimport_moduleÚ__package__r¾   r»   Úcallable)rÁ   rx   rD   rM   rE   rÅ   rÆ   rÓ   Únew_kernel_namer9   Ú	utils_modÚis_kernel_availableÚmodules                r1   Úlazy_load_kernelrÜ     s”  € Ø�gÐÐ¥*¨W°[Ô-AÅ:Ñ"NÔ"NÐØ�{Ô#Ð#ØÕ-Ð-Ð-Ý×ÒÐT kÐTÐTÐTÑUÔUÐUØ#ˆ�ÑØˆtÝÑÔð ((Õ"2ð ((ð	(Ý)¨+Ô6°yÔAˆGÝ*¨;Ô7×;Ò;¸JÈÑMÔMˆHÝ)¨+Ô6×:Ò:¸9ÀdÑKÔKˆGàˆ 8Ð#3Ø�å °(ÀGÕ_pÐqÑqÔqˆFØ#)ˆG�KÑ Ð øÝ ð 	Mð 	Mð 	MØ#'ˆG�KÑ Ý×ÒÐ K¸Ð KÐ KÈÐ KÐ KÑLÔLÐLÐLÐLÐLÐLÐLøøøøÝð 	(ð 	(ð 	(à#'ˆG�KÑ Ð Ð ð	(øøøð 	ÐÐÐà%×-Ò-¨c°3Ñ7Ô7ˆØ5˜/Ð5Ð5Ð5ˆ	ð	'Ø!×/Ò/Ð0FÍÑTÔTˆIÝ")¨)°YÀÑ"EÔ"EÐÐøÝð 	'ð 	'ð 	'Ø"&ÐÐÐð	'øøøõ Ð'Ñ(Ô(ð 		(Ð-@Ð-@Ñ-BÔ-Bð 		(ð,Ø"×0Ò0°OÐ1EÑFÔF�Ø'-�˜Ñ$Ø�øÝð ,ð ,ð ,Ø'+�˜Ñ$Ð$Ð$ð,øøøð $(ˆG�KÑ à�;ÔÐsC   Á,A8C% Ã%
D.Ã/%DÄD.Ä-D.Å,E? Å?FÆFÆ+G ÇGÇGÚmodelr   ÚmodeúMode | Nonec                 óp  — t          ¦   «         st          t          ¦  «        ‚d„ }d„ }	 |                      |¦  «         | j        st
          j        n|€t
          j        n|}| j        j	        }|dk    rt          ¦   «         rd}t          |¬¦  «        }| j        �S| j        j         }t          | j        j        |¬¦  «        5  t!          | ||¬¦  «         ddd¦  «         n# 1 swxY w Y   nt!          | ||¬¦  «         d	| _        |                      |¦  «         dS # |                      |¦  «         w xY w)
zYTemporarily register hidden kernel wrappers so `kernelize` can discover and replace them.c                 ó$  — t          | di ¦  «                             ¦   «         D ]k\  }}|t          |                      ¦   «         ¦  «        vrCt	          |t
          j        ¦  «        st          d|› d�¦  «        ‚|                      ||¦  «         Œld S )NÚ_hidden_kernelsz#Attempted to register a kernel for zè, but it was not a `torch.nn.Module`. This means the underlying function needs to be decorated with `@use_kernel_func_from_hub`. Please submit and issue to the transformers repo: `https://github.com/huggingface/transformers/issues`.)	r¾   ÚitemsÚdictÚnamed_childrenrÎ   ÚnnÚModulerº   Úregister_module)rÛ   ÚnameÚfns      r1   Úattach_hidden_kernelsz(kernelize.<locals>.attach_hidden_kernelsQ  s°   € Ý Ð(9¸2Ñ>Ô>×DÒDÑFÔFð 	1ð 	1‰HˆD�"Ø�4 × 5Ò 5Ñ 7Ô 7Ñ8Ô8Ð8Ð8Ý! "¥b¤iÑ0Ô0ð Ý$ðB¸dð Bð Bð Bñô ð ð
 ×&Ò& t¨RÑ0Ô0Ð0øð	1ð 	1r3   c                 ón   — t          | di ¦  «        D ]"}t          | |¦  «        rt          | |¦  «         Œ#d S )Nrâ   )r¾   r¼   Údelattr)rÛ   ré   s     r1   Údetach_hidden_kernelsz(kernelize.<locals>.detach_hidden_kernels\  sM   € Ý˜FÐ$5°rÑ:Ô:ð 	&ð 	&ˆDõ �v˜tÑ$Ô$ð &Ý˜ Ñ%Ô%Ð%øð		&ð 	&r3   NrB   rY   )rI   )Úinherit_mapping)ÚdevicerÞ   T)r   r¶   r·   ÚapplyÚtrainingr!   rp   ro   rð   rI   r   r   Úkernel_configÚuse_local_kernelr$   Úkernel_mappingÚ_kernels_kernelizeÚ_use_kernels)rÝ   rÞ   rë   rî   Údevice_typerð   rï   s          r1   r&   r&   L  s¦  € åÑ!Ô!ð 4ÝÕ2Ñ3Ô3Ð3ð	1ð 	1ð 	1ð&ð &ð &ð+Ø�ŠÐ)Ñ*Ô*Ð*à%*¤^Ð`�tŒ~ˆ~È$È,½¼¸Ð\`ˆØ”lÔ'ˆØ˜&Ò Ð Õ%5Ñ%7Ô%7Ð Ø ˆKÝ˜[Ð)Ñ)Ô)ˆØÔÐ*Ø"'Ô"5Ô"FÐFˆOÝ# EÔ$7Ô$FÐXgÐhÑhÔhð Dð DÝ" 5°¸dÐCÑCÔCÐCðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Døõ ˜u¨V¸$Ð?Ñ?Ô?Ð?à!ˆÔà�ŠÐ)Ñ*Ô*Ð*Ð*Ð*øˆ�ŠÐ)Ñ*Ô*Ð*Ð*øøøs0   ªBD ÃC"ÃD Ã"C&Ã&D Ã)C&Ã*D ÄD5rM   rE   c                 ó†   — ddl m} t          ¦   «         st          t          ¦  «        ‚d|| dœ}t          | ||||¬¦  «        S )Nr   )Ú__version__Útransformers)Ú	frameworkrE   rD   )rM   rE   Ú
user_agentrN   )Ú rú   r   r¶   r·   Úget_kernel_hub)rÁ   rM   rE   r¤   rú   rý   s         r1   r%   r%   w  sf   € ð ÐÐÐÐÐåÑ!Ô!ð 4ÝÕ2Ñ3Ô3Ð3à-¸+ÐR]Ð^Ð^€JÝØ˜h°ÀJÐbsðñ ô ð r3   Úmodule_namesc                 óB   ‡ — 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                 ó2   •‡— | j         Šˆˆfd„}|| _         | S )Nc                 óø   •—  ‰| g|¢R i |¤Ž | j                              di ¦  «        }‰D ]N}t          |dd ¦  «        p!t          |dd ¦  «        pt          |dd ¦  «        }|€t          d|›�¦  «        ‚|||<   ŒOd S )Nrâ   r�   Úkernel_layer_namer9   z)Could not infer kernel function name for )Ú__dict__Ú
setdefaultr¾   rº   )r‡   r~   r   Úhidden_kernelsrê   ré   r   Ú	orig_inits         €€r1   Únew_initz8use_kernelized_func.<locals>.decorator.<locals>.new_init˜  sÁ   ø€ ØˆI�dÐ,˜TÐ,Ð,Ð, VÐ,Ð,Ð,ð "œ]×5Ò5Ð6GÈÑLÔLˆNØ"ð 
*ð 
*�å˜B 
¨DÑ1Ô1ð 6Ý˜rÐ#6¸Ñ=Ô=ð6å˜r ;°Ñ5Ô5ð ð
 �<Ý$Ð%WÐQSÐ%WÐ%WÑXÔXÐXð (*�˜tÑ$Ð$ð
*ð 
*r3   )rˆ   )r0   r	  r  r   s     @€r1   r|   z&use_kernelized_func.<locals>.decorator•  s7   øø€ Ø”Lˆ	ð	*ð 	*ð 	*ð 	*ð 	*ð 	*ð"  ˆŒØˆ
r3   )rÎ   r   )r   r|   s   ` r1   Úuse_kernelized_funcr
  ˆ  s?   ø€ õ �,¥Ñ)Ô)ð &Ø$�~ˆðð ð ð ð ð. Ðr3   c               #   ó*   K  — 	 da dV — da dS # da w xY 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)rÐ   r.   r3   r1   Úallow_all_hub_kernelsr  ³  s:   è è € ð"Ø Ðàˆˆˆð "ÐÐÐø˜EÐÐ!Ð!Ð!Ð!s   „ ŽÚ
parent_clsÚchild_namesÚ
kernel_clsc                 ó~   ‡‡‡— | j         Šˆˆˆfd„}t          d| j        › �| fd|i¦  «        }d| j        › �|_        |S )a6  
    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                 óÔ   •‡ —  ‰‰ g|¢R i |¤Ž ˆ fd„‰D ¦   «         } ‰|Ž }t          ‰ ‰d         |¦  «         ‰dd …         D ]$}t          ‰ |t          j        ¦   «         ¦  «         Œ%d S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r.   )r¾   )Ú.0ré   r‡   s     €r1   ú
<listcomp>zMmake_parent_class_for_kernel_fusion.<locals>.patched_init.<locals>.<listcomp>Ó  s#   ø€ Ð@Ð@Ð@¨D•G˜D $Ñ'Ô'Ð@Ð@Ð@r3   r   r   )Úsetattrræ   ÚIdentity)	r‡   r~   r   ÚchildrenÚkernel_instanceré   r  r  Úoriginal_inits	   `     €€€r1   Úpatched_initz9make_parent_class_for_kernel_fusion.<locals>.patched_initÑ  s›   øø€ Øˆ�dÐ,˜TÐ,Ð,Ð, VÐ,Ð,Ð,Ø@Ð@Ð@Ð@°KÐ@Ñ@Ô@ˆØ$˜* hÐ/ˆÝ��k !”n oÑ6Ô6Ð6Ø   ”Oð 	/ð 	/ˆDÝ�D˜$¥¤¡¤Ñ.Ô.Ð.Ð.ð	/ð 	/r3   ÚFusedrˆ   )rˆ   rI   r�   r‘   )r  r  r  r  Úpatched_clsr  s    ``  @r1   Ú#make_parent_class_for_kernel_fusionr  Ä  sr   øøø€ ð Ô'€Mð/ð /ð /ð /ð /ð /ð /õ Ð4˜zÔ2Ð4Ð4°z°mÀjÐR^ÐE_Ñ`Ô`€KØ@ zÔ'>Ð@Ð@€KÔØÐr3   r0   útype[PreTrainedModel]Úconfigr   ró   r   c           
      óô	  ‡ — t          | d¦  «        rt          | j        d¦  «        st          d| j        › d�¦  «        ‚| j        j        }i }i }d }|j                             ¦   «         D �]…\  }}t          |t          t          f¦  «        rd |i}t          |t          ¦  «        r8t          |                     ¦   «         ¦  «        dk    rt          d|› �¦  «        ‚nt          d|›d|›�¦  «        ‚t          t          |                     ¦   «         ¦  «        ¦  «        }t          |t          ¦  «        rd|\  }	}
|
                     d	d ¦  «        }|
                     d
d ¦  «        }|
                     dd¦  «        pt           }|�d
|ind	|i}
|
d|iz  }
|	|
f}n|}	dt           dœ}
|	|
f}|	                     d¦  «        \  }}}|r|st          d|	›d|›�¦  «        ‚|j        rt'          t)          |¦  «        |¬¦  «        }nt+          d+||dœ|
¤Ž}|                     ¦   «         }|€t          d|›�¦  «        ‚t.          j                             |j        ¦  «        }|rt5          ||j        › d�d ¦  «        nd }|�2d|j        vr)t9          j        |j        ¦  «        d„ ¦   «         }||_        t          |t          ¦  «        r&|€|||<   �Œa|j        |_        |||<   |||j        <   �n t          |t          ¦  «        �rŠ|€ t          d|j        ›d|j        › d�¦  «        ‚|j        |_        d„ |D ¦   «         }d„ |D ¦   «         }t          tA          |¦  «        ¦  «        dk    rt          d|› �¦  «        ‚|d          !                    dd¦  «        }d„ |D ¦   «         }|€7tE          j#        d ¦  «        5   | |¦  «        }d d d ¦  «         n# 1 swxY w Y   d}| $                    ¦   «         D ]}\  }Š tK          j&        ||¦  «        sŒtO          ˆ fd!„|D ¦   «         ¦  «        st          d"|›d#|› d$|j        ›�¦  «        ‚d%}tQ          ‰ ¦  «        }tS          |||¦  «        ||j        <   Œ~|st          d&|›d'|j        ›d(�¦  «        ‚tU          |d%¬)¦  «         t          |d*¦  «        r<tW          |¦  «        }tY          |j-        ¦  «        }|�||z   }t]          ||d%¬)¦  «         |||j        <   �Œ‡||_        d S ),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 rM   rE   rN   F)rE   rN   r©   zInvalid kernel repo string )Ú	repo_pathr)   )rD   r)   z*Could not load kernel class from hub_repo=ÚLayoutÚforwardc                 ó   — d S r-   r.   r†   s      r1   Ú_noop_forwardz?register_kernel_replacements_and_fusions.<locals>._noop_forward&  s   € à�r3   zFused kernel z* requires a companion layout class named 'zLayout' in the same module.c                 ó   — g | ]
}|d          ‘ŒS )r   r.   )r  Úitems     r1   r  z<register_kernel_replacements_and_fusions.<locals>.<listcomp>D  s   € Ð<Ð<Ð<¨˜T !œWÐ<Ð<Ð<r3   c                 óF   — g | ]}|                      d d¦  «        d         ‘ŒS )r­   r   r   ©Úrsplit©r  Úps     r1   r  z<register_kernel_replacements_and_fusions.<locals>.<listcomp>E  s+   € ÐJÐJÐJ°q˜qŸxšx¨¨QÑ/Ô/°Ô2ÐJÐJÐJr3   zGAll patterns for a fused kernel must share the same parent module, got r   Ú*z\w+c                 óF   — g | ]}|                      d d¦  «        d         ‘ŒS )r­   r   r+  r-  s     r1   r  z<register_kernel_replacements_and_fusions.<locals>.<listcomp>M  s+   € ÐFÐFÐF°1˜1Ÿ8š8 C¨Ñ+Ô+¨AÔ.ÐFÐFÐFr3   Úmetac              3   ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r-   )r¼   )r  ÚchildrÛ   s     €r1   ú	<genexpr>z;register_kernel_replacements_and_fusions.<locals>.<genexpr>W  s-   øè è € ÐKÐK°e�7 6¨5Ñ1Ô1ÐKÐKÐKÐKÐKÐKr3   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_mappingr.   )/r¼   r!  rº   r�   r"  rõ   rã   rÎ   ÚstrÚtuplerä   ÚlenÚvaluesÚnextÚiterrÏ   rÐ   r¹   rô   r    r   r   r�   ÚsysÚmodulesr�   r¾   r  Ú	functoolsÚwrapsr%  r  ÚsetrÔ   Útorchrð   Únamed_modulesr    Ú	fullmatchÚallrI   r  r   r	   Úlistr6  r
   )!r0   r  ró   r"  Úpatch_mappingÚnew_mappingÚ
meta_modelr)   Úhub_repoÚrepo_strÚmetadatarM   rE   rN   Ú
final_reporD   rÂ   Úlayer_name_in_repoÚrepor  Ú
kernel_modÚ
layout_clsr'  Úglob_patternsÚparent_patternsÚparent_patternr  Úmatched_anyré   Ú
module_clsÚexistingÚ
transformsrÛ   s!                                   @r1   Ú(register_kernel_replacements_and_fusionsrY  Þ  s¯  ø€ õ
 �3˜Ñ'Ô'ð U­w°sÔ7GÈÑ/VÔ/Vð UÝÐS #¤,ÐSÐSÐSÑTÔTÐTØÔ!Ô,€Jà%'€MØ€Kð €Jà -Ô <× BÒ BÑ DÔ Dð C6ñ C6Ñˆ
�HÝ�h¥¥e Ñ-Ô-ð 	(Ø˜hÐ'ˆHå�h¥Ñ%Ô%ð 	XÝ�8—?’?Ñ$Ô$Ñ%Ô%¨Ò*Ð*Ý ØmÐckÐmÐmñô ð ð +õ
 ÐV°ÐVÐVÈ
ÐVÐVÑWÔWÐWå�˜XŸ_š_Ñ.Ô.Ñ/Ô/Ñ0Ô0ˆõ �h¥Ñ&Ô&ð 	.Ø!)ÑˆH�hà—|’| J°Ñ5Ô5ˆHØ—l’l 9¨dÑ3Ô3ˆGØ (§¢Ð-@À%Ñ HÔ HÐ ]ÕL]ÐØ/6Ð/B˜	 7Ð+Ð+ÈÐU]ÐH^ˆHØÐ,Ð.?Ð@Ñ@ˆHà" HÐ-ˆJˆJàˆHØ#$Õ;LÐMÐMˆHØ" HÐ-ˆJà)1×);Ò);¸CÑ)@Ô)@Ñ&ˆ�Ð&Øð 	bÐ0ð 	bÝÐ`¸8Ð`Ð`ÐR\Ð`Ð`ÑaÔaÐaàÔ)ð 
	Ý'Ý˜w™-œ-Ø-ðñ ô ˆDˆDõ
 #ð ØØ-ðð ð ðð ˆDð —Y’Y‘[”[ˆ
àÐÝÐVÈ(ÐVÐVÑWÔWÐWå”[—_’_ ZÔ%:Ñ;Ô;ˆ
ØR\Ðf•W˜Z¨JÔ,?Ð)GÐ)GÐ)GÈÑNÔNÐNÐbfˆ
àÐ! i°zÔ7JÐ&JÐ&JåŒ_˜ZÔ/Ñ0Ô0ðð ñ 1Ô0ðð "/ˆJÔõ �j¥#Ñ&Ô&ð 9	àÐ!Ø*4�˜JÑ'Ùð ,6Ô+>ˆJÔ(Ø(2ˆM˜*Ñ%ð 0:ˆK˜
Ô+Ñ,Ñ,õ ˜
¥EÑ*Ô*ñ +	ØÐ!Ý ðO JÔ$7ð Oð OØ(Ô1ðOð Oð Oñô ð ð
 ,6Ô+>ˆJÔ(à<Ð<°Ð<Ñ<Ô<ˆMØJÐJ¸MÐJÑJÔJˆOå•3�Ñ'Ô'Ñ(Ô(¨AÒ-Ð-Ý ØmÐ^kÐmÐmñô ð ð -¨QÔ/×7Ò7¸¸VÑDÔDˆNØFÐF¸ÐFÑFÔFˆKàÐ!Ý”\ &Ñ)Ô)ð -ð -Ø!$  V¡¤�Jð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð  ˆKØ *× 8Ò 8Ñ :Ô :ð ð ‘��fÝ”| N°DÑ9Ô9ð ØÝÐKÐKÐKÐK¸{ÐKÑKÔKÑKÔKð Ý$ðD $ð Dð DÐT_ð Dð DØ,6Ô,?ðDð Dñô ð ð #�Ý! &™\œ\�
Ý5XØ ¨Zñ6ô 6�˜jÔ1Ñ2Ð2ð ð Ý ðI°ð Ið IÐU_ÔUhð Ið Ið Iñô ð õ
 	˜}¸Ð=Ñ=Ô=Ð=å�:Ð3Ñ4Ô4ð 	[Ý8¸ÑDÔDˆHÝ˜jÔ;Ñ<Ô<ˆJØÐ#Ø%¨
Ñ2�
Ý2°:¸zÐUYÐZÑZÔZÐZà+5ˆ�JÔ'Ñ(Ñ(à#.€MÔ Ð Ð s   Î4OÏO	ÏO	)r   r%   r&   rÜ   r"   ry   rY  r#   r'   r(   r
  r-   )NF)rÝ   r   rÞ   rß   )NNF)r0   r  r  r   ró   r   r@   N)Zr?  Úosr    r=  Úcollections.abcr   Ú
contextlibr   Úpathlibr   Útypesr   Útypingr   r6  r	   r
   Úmonkey_patchingr   Úutilsr   r   Úutils.genericr   Úutils.import_utilsr   r   r   r   r   Úflash_attentionr   Úconfiguration_utilsr   r´   r   Úutils.kernel_configr   rB  Útorch.nnræ   Ú
get_loggerr�   r6   r·   ÚenvironrÏ   Úupperr8   r4   Úkernelsr   r   r   r   r    r!   r"   r#   r$   r%   rÿ   r&   rö   r'   r5   r(   r>   r7  r?   rä   Ú__annotations__rt   rv   ry   rœ   r�   Úboolr¢   rÉ   rÜ   ÚintrF  r
  rÐ   r  rI   r  rY  Ú__all__r.   r3   r1   ú<module>rp     s;  ðð Ð Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø $Ð $Ð $Ð $Ð $Ð $Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à jÐ jÐ jÐ jÐ jÐ jÐ jÐ jØ 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4ð ð 3Ø6Ð6Ð6Ð6Ð6Ð6Ø0Ð0Ð0Ð0Ð0Ð0Ø2Ð2Ð2Ð2Ð2Ð2àÐÑÔð Ø€L€L€LØÐÐÐÐÐð 
ˆÔ	˜HÑ	%Ô	%€ðuØðuð uØ+>ðuð uØ^qðuð uð uð ð !#¤
§¢Ð/@À%Ñ HÔ H× NÒ NÑ PÔ PÐ Ø0Ð4HÐHÐ ð ÐÑÔð v
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ðð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ð VÐUÐUÐUÐUÐUð#°ð #ð #ð #ð #ð%¨Cð %ð %ð %ð %ð *.Ð˜4 $™;Ð-Ð-Ñ-ðI 4ð Ið Ið Ið IðV%¨Tð %ð %ð %ð %ð)ð )ð )ð )ð )ð Ððð ð ðð ð ðwð wð wð wð wñ wô wð wðð ð ð ð ñ ô ð ðpð pð pð pð pñ pô pð pð
ð 
ð 
ð
uð uð uð
ð 
ð 
ð "CÈqÐQÐQØ:ÀqÐIÐIØ$AÈaÐPÐPØ#FÐSTÐUÐUØ:ÀqÐIÐIØ:ÈÐUÐUð2ð 2Ð �T˜#˜t C¨ Hœ~Ð-Ô.ð ð ñ ð 8:Ð ˜˜S *¨tÑ"3Ð3Ô4Ð 9Ð 9Ñ 9ð 3¨¡:ð °$ð ð ð ð ð diðKð KØðKØ19¸D±ðKØ\`ðKà�$ÑðKð Kð Kð Kð\ Pfð 1 ð 1  #ð 1 °°S¸*ÀtÑ:KÐ5KÔ0Lð 1 ð 1 ð 1 ð 1 ðh(+ð (+ð (+ð (+ð (+ðZ  Ø $Ø#ð	ð Øðà�D‰jðð �3‰Y˜Ñðð ð	ð
 ðð ð ð ð"$ d¨8¤n°xÑ&?ð $ð $ð $ð $ðP Ð ð ð"ð "ñ „ð"ð Øðà�c”ðð ðð 
ð	ð ð ð ð4U/Ø	 ðU/àðU/ð "ðU/ð 
ð	U/ð U/ð U/ð U/ðpð ð €€€r3   