§
    ‚Štj³4  ã            	       óH  — d dl Z d dlZd dlmZ d dlZd dlmZmZ ddlmZ ddl	m
Z
 ddlmZ  e
j        e¦  «        Z ed¦  «         G d	„ d
ej        ¦  «        ¦   «         ZeZ ed¦  «         G d„ dej        ¦  «        ¦   «         Z ed¦  «         G d„ dej        ¦  «        ¦   «         Z ed¦  «         G d„ dej        ¦  «        ¦   «         Z ed¦  «         G d„ dej        ¦  «        ¦   «         Z ed¦  «         G d„ dej        ¦  «        ¦   «         Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d „ d!ej        ¦  «        Z G d"„ d#ej        ¦  «        Z G d$„ d%ej        ¦  «        Z G d&„ d'ej        ¦  «        Z G d(„ d)e¦  «        Z G d*„ d+ej        ¦  «        Z i d,e“d-ed.d/d0œf“d1e“d2e“d3ed4d5if“d6e“d7ed8d5if“d9e“d:ej!        “d;e“d<ej"        “d=e“d>e“d?e“d@ej#        “dAe“dBej$        “ej%        eeej&        ej'        ej(        e dCœ¥Z) ee)¦  «        Z*dD„ Z+ e+d3¦  «        Z, e+d2¦  «        Z- e+d,¦  «        Z. e+d1¦  «        Z/ e+d6¦  «        Z0 e+d?¦  «        Z1 e+dE¦  «        Z2 e+d>¦  «        Z3 e+d=¦  «        Z4dS )Fé    N)ÚOrderedDict)ÚTensorÚnné   )Úuse_kernel_forward_from_hub)Úlogging)Úis_torchdynamo_compilingÚGeluTanhc                   óJ   ‡ — e Zd ZdZd	defˆ fd„Zdedefd„Zdedefd„Zˆ xZ	S )
ÚGELUTanha&  
    A fast C implementation of the tanh approximation of the GeLU activation function. See
    https://huggingface.co/papers/1606.08415.

    This implementation is equivalent to NewGELU and FastGELU but much faster. However, it is not an exact numerical
    match due to rounding errors.
    FÚuse_gelu_tanh_pythonc                 ó¼   •— t          ¦   «                              ¦   «          |r| j        | _        d S t	          j        t          j        j        d¬¦  «        | _        d S )NÚtanh)Úapproximate)	ÚsuperÚ__init__Ú_gelu_tanh_pythonÚactÚ	functoolsÚpartialr   Ú
functionalÚgelu)Úselfr   Ú	__class__s     €úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/activations.pyr   zGELUTanh.__init__(   sP   ø€ Ý‰Œ×ÒÑÔÐØð 	QØÔ-ˆDŒHˆHˆHå Ô(­¬Ô);ÈÐPÑPÔPˆDŒHˆHˆHó    ÚinputÚreturnc                 ó²   — |dz  dt          j        t          j        dt          j        z  ¦  «        |dt          j        |d¦  «        z  z   z  ¦  «        z   z  S ©Nç      à?ç      ð?ç       @ç÷Hmâä¦?g      @©Útorchr   ÚmathÚsqrtÚpiÚpow©r   r   s     r   r   zGELUTanh._gelu_tanh_python/   sP   € Ø�s‰{˜c¥E¤J­t¬y¸½t¼w¹Ñ/GÔ/GÈ5ÐS[Õ^cÔ^gÐhmÐorÑ^sÔ^sÑSsÑKsÑ/tÑ$uÔ$uÑuÑvÐvr   c                 ó,   — |                       |¦  «        S ©N©r   r+   s     r   ÚforwardzGELUTanh.forward2   ó   € Ø�xŠx˜‰ŒÐr   ©F)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úboolr   r   r   r/   Ú__classcell__©r   s   @r   r   r      s¥   ø€ € € € € ðð ðQð Q¨Tð Qð Qð Qð Qð Qð Qðw vð w°&ð wð wð wð wð˜Vð ¨ð ð ð ð ð ð ð ð r   r   ÚNewGELUc                   ó"   — e Zd ZdZdedefd„ZdS )ÚNewGELUActivationzÎ
    Implementation of the GELU activation function currently in Google BERT repo (identical to OpenAI GPT). Also see
    the Gaussian Error Linear Units paper: https://huggingface.co/papers/1606.08415
    r   r   c                 ó²   — d|z  dt          j        t          j        dt          j        z  ¦  «        |dt          j        |d¦  «        z  z   z  ¦  «        z   z  S r    r%   r+   s     r   r/   zNewGELUActivation.forwardA   sP   € Ø�U‰{˜c¥E¤J­t¬y¸½t¼w¹Ñ/GÔ/GÈ5ÐS[Õ^cÔ^gÐhmÐorÑ^sÔ^sÑSsÑKsÑ/tÑ$uÔ$uÑuÑvÐvr   N©r2   r3   r4   r5   r   r/   © r   r   r;   r;   :   sH   € € € € € ðð ð
w˜Vð w¨ð wð wð wð wð wð wr   r;   ÚGeLUc                   óJ   ‡ — e Zd ZdZd	defˆ fd„Zdedefd„Zdedefd„Zˆ xZ	S )
ÚGELUActivationa³  
    Original Implementation of the GELU activation function in Google BERT repo when initially created. For
    information: OpenAI GPT's GELU is slightly different (and gives slightly different results): 0.5 * x * (1 +
    torch.tanh(math.sqrt(2 / math.pi) * (x + 0.044715 * torch.pow(x, 3)))) This is now written in C in nn.functional
    Also see the Gaussian Error Linear Units paper: https://huggingface.co/papers/1606.08415
    FÚuse_gelu_pythonc                 ó”   •— t          ¦   «                              ¦   «          |r| j        | _        d S t          j        j        | _        d S r-   )r   r   Ú_gelu_pythonr   r   r   r   )r   rB   r   s     €r   r   zGELUActivation.__init__N   s?   ø€ Ý‰Œ×ÒÑÔÐØð 	*ØÔ(ˆDŒHˆHˆHå”}Ô)ˆDŒHˆHˆHr   r   r   c                 óf   — |dz  dt          j        |t          j        d¦  «        z  ¦  «        z   z  S )Nr!   r"   r#   )r&   Úerfr'   r(   r+   s     r   rD   zGELUActivation._gelu_pythonU   s-   € Ø�s‰{˜c¥E¤I¨eµd´iÀ±n´nÑ.DÑ$EÔ$EÑEÑFÐFr   c                 ó,   — |                       |¦  «        S r-   r.   r+   s     r   r/   zGELUActivation.forwardX   r0   r   r1   )
r2   r3   r4   r5   r6   r   r   rD   r/   r7   r8   s   @r   rA   rA   E   s�   ø€ € € € € ðð ð*ð *¨ð *ð *ð *ð *ð *ð *ðG &ð G¨Vð Gð Gð Gð Gð˜Vð ¨ð ð ð ð ð ð ð ð r   rA   ÚSiLUc                   ó"   — e Zd ZdZdedefd„ZdS )ÚSiLUActivationaè  
    See Gaussian Error Linear Units (Hendrycks et al., https://arxiv.org/abs/1606.08415) where the SiLU (Sigmoid Linear
    Unit) was originally introduced and coined, and see Sigmoid-Weighted Linear Units for Neural Network Function
    Approximation in Reinforcement Learning (Elfwing et al., https://arxiv.org/abs/1702.03118) and Swish: a Self-Gated
    Activation Function (Ramachandran et al., https://arxiv.org/abs/1710.05941v1) where the SiLU was experimented with
    later.
    r   r   c                 ó@   — t           j                             |¦  «        S r-   )r   r   Úsilur+   s     r   r/   zSiLUActivation.forwardf   s   € ÝŒ}×!Ò! %Ñ(Ô(Ð(r   Nr=   r>   r   r   rJ   rJ   \   s@   € € € € € ðð ð)˜Vð )¨ð )ð )ð )ð )ð )ð )r   rJ   ÚFastGELUc                   ó"   — e Zd ZdZdedefd„ZdS )ÚFastGELUActivationz}
    Applies GELU approximation that is slower than QuickGELU but more accurate. See: https://github.com/hendrycks/GELUs
    r   r   c                 óZ   — d|z  dt          j        |dz  dd|z  |z  z   z  ¦  «        z   z  S )Nr!   r"   g€ÑÓ3Eˆé?r$   )r&   r   r+   s     r   r/   zFastGELUActivation.forwardp   s;   € Ø�U‰{˜c¥E¤J¨u°|Ñ/CÀsÈXÐX]ÑM]Ð`eÑMeÑGeÑ/fÑ$gÔ$gÑgÑhÐhr   Nr=   r>   r   r   rO   rO   j   sH   € € € € € ðð ði˜Vð i¨ð ið ið ið ið ið ir   rO   Ú	QuickGELUc                   ó"   — e Zd ZdZdedefd„ZdS )ÚQuickGELUActivationzr
    Applies GELU approximation that is fast but somewhat inaccurate. See: https://github.com/hendrycks/GELUs
    r   r   c                 ó6   — |t          j        d|z  ¦  «        z  S )Ng¬Zd;û?)r&   Úsigmoidr+   s     r   r/   zQuickGELUActivation.forwardz   s   € Ø•u”} U¨U¡]Ñ3Ô3Ñ3Ð3r   Nr=   r>   r   r   rS   rS   t   s@   € € € € € ðð ð4˜Vð 4¨ð 4ð 4ð 4ð 4ð 4ð 4r   rS   c                   ó<   ‡ — e Zd ZdZdedefˆ fd„Zdedefd„Zˆ xZS )ÚClippedGELUActivationa’  
    Clip the range of possible GeLU outputs between [min, max]. This is especially useful for quantization purpose, as
    it allows mapping negatives values in the GeLU spectrum. For more information on this trick, please refer to
    https://huggingface.co/papers/2004.09602.

    Gaussian Error Linear Unit. Original Implementation of the gelu activation function in Google Bert repo when
    initially created.

    For information: OpenAI GPT's gelu is slightly different (and gives slightly different results): 0.5 * x * (1 +
    torch.tanh(math.sqrt(2 / math.pi) * (x + 0.044715 * torch.pow(x, 3)))). See https://huggingface.co/papers/1606.08415
    ÚminÚmaxc                 óœ   •— ||k    rt          d|› d|› d�¦  «        ‚t          ¦   «                              ¦   «          || _        || _        d S )Nzmin should be < max (got min: z, max: ú))Ú
ValueErrorr   r   rX   rY   )r   rX   rY   r   s      €r   r   zClippedGELUActivation.__init__‹   sV   ø€ Ø�Š9ˆ9ÝÐP¸cÐPÐPÈ#ÐPÐPÐPÑQÔQÐQå‰Œ×ÒÑÔÐØˆŒØˆŒˆˆr   Úxr   c                 ó\   — t          j        t          |¦  «        | j        | j        ¦  «        S r-   )r&   Úclipr   rX   rY   )r   r]   s     r   r/   zClippedGELUActivation.forward“   s    € ÝŒz�$˜q™'œ' 4¤8¨T¬XÑ6Ô6Ð6r   )	r2   r3   r4   r5   Úfloatr   r   r/   r7   r8   s   @r   rW   rW   ~   sw   ø€ € € € € ð
ð 
ð˜Eð ¨ð ð ð ð ð ð ð7˜ð 7 Fð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7r   rW   c                   ó2   ‡ — e Zd ZdZˆ fd„Zdedefd„Zˆ xZS )ÚAccurateGELUActivationzÙ
    Applies GELU approximation that is faster than default and more accurate than QuickGELU. See:
    https://github.com/hendrycks/GELUs

    Implemented along with MEGA (Moving Average Equipped Gated Attention)
    c                 ó”   •— t          ¦   «                              ¦   «          t          j        dt          j        z  ¦  «        | _        d S )Né   )r   r   r'   r(   r)   Úprecomputed_constant©r   r   s    €r   r   zAccurateGELUActivation.__init__Ÿ   s7   ø€ Ý‰Œ×ÒÑÔÐÝ$(¤I¨aµ$´'©kÑ$:Ô$:ˆÔ!Ð!Ð!r   r   r   c                 ó~   — d|z  dt          j        | j        |dt          j        |d¦  «        z  z   z  ¦  «        z   z  S )Nr!   r   r$   é   )r&   r   re   r*   r+   s     r   r/   zAccurateGELUActivation.forward£   sC   € Ø�U‰{˜a¥%¤*¨TÔ-FÈ%ÐRZÕ]bÔ]fÐglÐnoÑ]pÔ]pÑRpÑJpÑ-qÑ"rÔ"rÑrÑsÐsr   )r2   r3   r4   r5   r   r   r/   r7   r8   s   @r   rb   rb   —   sn   ø€ € € € € ðð ð;ð ;ð ;ð ;ð ;ðt˜Vð t¨ð tð tð tð tð tð tð tð tr   rb   c                   óB   ‡ — e Zd ZdZˆ fd„Zdedefd„Zdedefd„Zˆ xZS )ÚMishActivationzÙ
    See Mish: A Self-Regularized Non-Monotonic Activation Function (Misra., https://huggingface.co/papers/1908.08681). Also
    visit the official repository for the paper: https://github.com/digantamisra98/Mish
    c                 ót   •— t          ¦   «                              ¦   «          t          j        j        | _        d S r-   )r   r   r   r   Úmishr   rf   s    €r   r   zMishActivation.__init__­   s)   ø€ Ý‰Œ×ÒÑÔÐÝ”=Ô%ˆŒˆˆr   r   r   c                 ój   — |t          j        t          j                             |¦  «        ¦  «        z  S r-   )r&   r   r   r   Úsoftplusr+   s     r   Ú_mish_pythonzMishActivation._mish_python±   s'   € Ø•u”z¥"¤-×"8Ò"8¸Ñ"?Ô"?Ñ@Ô@Ñ@Ð@r   c                 ó,   — |                       |¦  «        S r-   r.   r+   s     r   r/   zMishActivation.forward´   r0   r   )	r2   r3   r4   r5   r   r   ro   r/   r7   r8   s   @r   rj   rj   §   sŒ   ø€ € € € € ðð ð
&ð &ð &ð &ð &ðA &ð A¨Vð Að Að Að Að˜Vð ¨ð ð ð ð ð ð ð ð r   rj   c                   ó"   — e Zd ZdZdedefd„ZdS )ÚLinearActivationz[
    Applies the linear activation function, i.e. forwarding input directly to output.
    r   r   c                 ó   — |S r-   r>   r+   s     r   r/   zLinearActivation.forward½   s   € Øˆr   Nr=   r>   r   r   rr   rr   ¸   s@   € € € € € ðð ð˜Vð ¨ð ð ð ð ð ð r   rr   c                   ó   — e Zd ZdZdd„ZdS )ÚLaplaceActivationzû
    Applies elementwise activation based on Laplace function, introduced in MEGA as an attention activation. See
    https://huggingface.co/papers/2209.10655

    Inspired by squared relu, but with bounded range and gradient for better stability
    ç»¹øÛž æ?ç ^×/ØÒ?c                 ó�   — ||z
                        |t          j        d¦  «        z  ¦  «        }ddt          j        |¦  «        z   z  S )Nr#   r!   r"   )Údivr'   r(   r&   rF   )r   r   ÚmuÚsigmas       r   r/   zLaplaceActivation.forwardÉ   s@   € Ø˜‘× Ò  ­¬°3©¬Ñ!7Ñ8Ô8ˆØ�c�EœI eÑ,Ô,Ñ,Ñ-Ð-r   N)rv   rw   ©r2   r3   r4   r5   r/   r>   r   r   ru   ru   Á   s2   € € € € € ðð ð.ð .ð .ð .ð .ð .r   ru   c                   ó   — e Zd ZdZd„ ZdS )ÚReLUSquaredActivationz^
    Applies the relu^2 activation introduced in https://huggingface.co/papers/2109.08668
    c                 ól   — t           j                             |¦  «        }t          j        |¦  «        }|S r-   )r   r   Úrelur&   Úsquare)r   r   Úrelu_appliedÚsquareds       r   r/   zReLUSquaredActivation.forwardÓ   s+   € Ý”}×)Ò)¨%Ñ0Ô0ˆÝ”,˜|Ñ,Ô,ˆØˆr   Nr|   r>   r   r   r~   r~   Î   s-   € € € € € ðð ðð ð ð ð r   r~   c                   ó   — e Zd ZdZd„ ZdS )ÚSqrtSoftplusActivationuF   sqrt(softplus(x)) â€” the router scoring function used by DeepSeek V4.c                 ód   — t           j                             |¦  «                             ¦   «         S r-   )r   r   rn   r(   r+   s     r   r/   zSqrtSoftplusActivation.forwardÜ   s$   € ÝŒ}×%Ò% eÑ,Ô,×1Ò1Ñ3Ô3Ð3r   Nr|   r>   r   r   r…   r…   Ù   s)   € € € € € ØPÐPð4ð 4ð 4ð 4ð 4r   r…   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚClassInstantierc                 ó’   •— t          ¦   «                              |¦  «        }t          |t          ¦  «        r|n|i f\  }} |di |¤ŽS )Nr>   )r   Ú__getitem__Ú
isinstanceÚtuple)r   ÚkeyÚcontentÚclsÚkwargsr   s        €r   rŠ   zClassInstantier.__getitem__á   sL   ø€ Ý‘'”'×%Ò% cÑ*Ô*ˆÝ!+¨GµUÑ!;Ô!;ÐN�g�gÀ'È2À‰ˆˆVØˆsˆ}ˆ}�Vˆ}ˆ}Ðr   )r2   r3   r4   rŠ   r7   r8   s   @r   rˆ   rˆ   à   s8   ø€ € € € € ðð ð ð ð ð ð ð ð r   rˆ   c                   ój   ‡ — e Zd ZdZddddej        dfˆ fd„	Zdedefd	„Zdedefd
„Z	dedefd„Z
ˆ xZS )ÚXIELUActivationzî
    Applies the xIELU activation function introduced in https://arxiv.org/abs/2411.13010

    If the user has installed the nickjbrowning/XIELU wheel, we import xIELU CUDA
    Otherwise, we emit a single warning and use xIELU Python
    gš™™™™™é?r!   g�íµ ÷Æ°¾Fc           
      óŒ  •— t          ¦   «                              ¦   «          t          j        t	          j        t	          j        t	          j        ||¬¦  «        ¦  «        ¦  «                             d¦  «        ¦  «        | _	        t          j        t	          j        t	          j        t	          j        ||z
  |¬¦  «        ¦  «        ¦  «                             d¦  «        ¦  «        | _
        |                      dt	          j        ||¬¦  «        ¦  «         |                      dt	          j        ||¬¦  «        ¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        d | _        	 dd l}t          j        j                             ¦   «         | _        d}	 ddlm}	  |	| j        ¦  «        | _        |dz  }n,# t2          $ r}
|d|
› d	�z  }| j        | _        Y d }
~
nd }
~
ww xY wt4                               |¦  «         d S # t2          $ r)}
t4                               d
|
› d�¦  «         Y d }
~
d S d }
~
ww xY w)N)Údtyper   ÚbetaÚepszUsing experimental xIELU CUDA.)Úallow_in_graphz& Enabled torch._dynamo for xIELU CUDA.z+ Could not enable torch._dynamo for xIELU (z*) - this may result in slower performance.z CUDA-fused xIELU not available (u   ) â€“ falling back to a Python version.
For CUDA xIELU (experimental), `pip install git+https://github.com/nickjbrowning/XIELU`)r   r   r   Ú	Parameterr&   ÚlogÚexpm1ÚtensorÚ	unsqueezeÚalpha_pÚalpha_nÚregister_bufferÚwith_vector_loadsr`   Ú_beta_scalarÚ_eps_scalarÚ_xielu_cuda_objÚ	xielu.opsÚclassesÚxieluÚXIELUÚtorch.compilerr—   Ú_xielu_cudaÚ_xielu_cuda_fnÚ	ExceptionÚloggerÚwarning_once)r   Úalpha_p_initÚalpha_n_initr•   r–   r”   r    r¦   Úmsgr—   Úerrr   s              €r   r   zXIELUActivation.__init__ï   sf  ø€ õ 	‰Œ×ÒÑÔÐÝ”|¥E¤I­e¬k½%¼,À|Ð[`Ð:aÑ:aÔ:aÑ.bÔ.bÑ$cÔ$c×$mÒ$mÐnoÑ$pÔ$pÑqÔqˆŒÝ”|ÝŒI•e”k¥%¤,¨|¸dÑ/BÈ%Ð"PÑ"PÔ"PÑQÔQÑRÔR×\Ò\Ð]^Ñ_Ô_ñ
ô 
ˆŒð 	×Ò˜V¥U¤\°$¸eÐ%DÑ%DÔ%DÑEÔEÐEØ×Ò˜U¥E¤L°¸EÐ$BÑ$BÔ$BÑCÔCÐCØ!2ˆÔå! $™KœKˆÔÝ  ™:œ:ˆÔà#ˆÔð	ØÐÐÐå#(¤=Ô#6×#<Ò#<Ñ#>Ô#>ˆDÔ Ø2ˆCð7Ø9Ð9Ð9Ð9Ð9Ð9à&4 n°TÔ5EÑ&FÔ&F�Ô#ØÐ?Ñ?��øÝð 7ð 7ð 7ØÐtÀSÐtÐtÐtÑt�Ø&*Ô&6�Ô#Ð#Ð#Ð#Ð#Ð#øøøøð7øøøõ ×Ò Ñ$Ô$Ð$Ð$Ð$øÝð 	ð 	ð 	Ý×Òðj°3ð jð jð jñô ð ð ð ð ð ð ð øøøøð	øøøsB   Å8.H Æ' G ÇH Ç
G1ÇG,Ç'H Ç,G1Ç1H È
IÈH>È>Ir]   r   c           
      ón  — t           j                             | j        ¦  «        }| j        t           j                             | j        ¦  «        z   }t          j        |dk    ||z  |z  | j        |z  z   t          j        t          j	        || j
        ¦  «        ¦  «        |z
  |z  | j        |z  z   ¦  «        S )Nr   )r   r   rn   r�   r•   rž   r&   Úwhererš   rX   r–   )r   r]   r�   rž   s       r   Ú_xielu_pythonzXIELUActivation._xielu_python  s˜   € Ý”-×(Ò(¨¬Ñ6Ô6ˆØ”)�bœm×4Ò4°T´\ÑBÔBÑBˆÝŒ{Ø�ŠEØ�a‰K˜!‰O˜dœi¨!™mÑ+ÝŒ[�œ 1 d¤hÑ/Ô/Ñ0Ô0°1Ñ4¸Ñ?À$Ä)ÈaÁ-ÑOñ
ô 
ð 	
r   c                 óp  — |j         }|                     ¦   «         dk     r-|                     d¦  «        }|                     ¦   «         dk     °-|                     ¦   «         dk    r*|                     dd|                     d¦  «        ¦  «        }||j         k    r!t
                               d||j         ¦  «         | j                             || j	         
                    |j        ¦  «        | j         
                    |j        ¦  «        | j        | j        | j        ¦  «        }|                     |¦  «        S )zDFirewall function to prevent torch.compile from seeing .item() callsrh   r   éÿÿÿÿr   z_Warning: xIELU input tensor expects 3 dimensions but got (shape: %s). Reshaping to (shape: %s).)ÚshapeÚdimrœ   ÚviewÚsizer¬   r­   r£   r/   r�   Útor”   rž   r¡   r¢   r    )r   r]   Úoriginal_shapeÚresults       r   r©   zXIELUActivation._xielu_cuda"  s  € àœˆà�eŠe‰gŒg˜ŠkˆkØ—’˜A‘”ˆAð �eŠe‰gŒg˜Škˆkà�5Š5‰7Œ7�QŠ;ˆ;Ø—’�r˜1˜aŸfšf R™jœjÑ)Ô)ˆAØ˜QœWÒ$Ð$Ý×ÒØqØØ”ñô ð ð
 Ô%×-Ò-ØØŒL�OŠO˜AœGÑ$Ô$ØŒL�OŠO˜AœGÑ$Ô$àÔØÔØÔ"ñ
ô 
ˆð �{Š{˜>Ñ*Ô*Ð*r   r   c                 óÂ   — | j         �D|j        r=t          ¦   «         s|                      |¦  «        S t                               d¦  «         |                      |¦  «        S )Nz:torch._dynamo is compiling, using Python version of xIELU.)r£   Úis_cudar	   rª   r¬   r­   r´   r+   s     r   r/   zXIELUActivation.forward;  s^   € ØÔÐ+°´Ð+Ý+Ñ-Ô-ð bØ×*Ò*¨5Ñ1Ô1Ð1å×#Ò#Ð$`ÑaÔaÐaØ×!Ò! %Ñ(Ô(Ð(r   )r2   r3   r4   r5   r&   Úbfloat16r   r   r´   r©   r/   r7   r8   s   @r   r’   r’   ç   sÄ   ø€ € € € € ðð ð ØØØØŒnØð(ð (ð (ð (ð (ð (ðT
˜vð 
¨&ð 
ð 
ð 
ð 
ð+˜Vð +¨ð +ð +ð +ð +ð2)˜Vð )¨ð )ð )ð )ð )ð )ð )ð )ð )r   r’   r   Úgelu_10iöÿÿÿé
   )rX   rY   Ú	gelu_fastÚgelu_newÚgelu_pythonrB   TÚgelu_pytorch_tanhÚgelu_python_tanhr   Úgelu_accurateÚ	hardswishÚlaplaceÚ
leaky_reluÚlinearrl   Ú
quick_gelur€   Úrelu2Úrelu6)rU   rL   ÚsqrtsoftplusÚswishr   Úprelur¦   c           	      ó    — | t           v rt           |          S t          d| › dt          t                                ¦   «         ¦  «        › �¦  «        ‚)Nz	function z not found in ACT2FN mapping )ÚACT2FNÚKeyErrorÚlistÚkeys)Úactivation_strings    r   Úget_activationrÙ   a  sO   € Ø�FÐ"Ð"ÝÐ'Ô(Ð(åÐhÐ#4ÐhÐhÕSWÕX^×XcÒXcÑXeÔXeÑSfÔSfÐhÐhÑiÔiÐir   rL   )5r   r'   Úcollectionsr   r&   r   r   Úintegrations.hub_kernelsr   Úutilsr   Úutils.import_utilsr	   Ú
get_loggerr2   r¬   ÚModuler   ÚPytorchGELUTanhr;   rA   rJ   rO   rS   rW   rb   rj   rr   ru   r~   r…   rˆ   r’   Ú	HardswishÚ	LeakyReLUÚReLUÚReLU6ÚSigmoidrH   ÚTanhÚPReLUÚACT2CLSrÔ   rÙ   rÅ   rÄ   r   rÃ   rÆ   rÍ   rL   rl   Ú
linear_actr>   r   r   ú<module>rê      sÅ  ðð Ð Ð Ð Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #à €€€Ø Ð Ð Ð Ð Ð Ð Ð à AÐ AÐ AÐ AÐ AÐ AØ Ð Ð Ð Ð Ð Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8ð 
ˆÔ	˜HÑ	%Ô	%€ð Ð˜ZÑ(Ô(ðð ð ð ð ˆrŒyñ ô ñ )Ô(ðð0 €ð Ð˜YÑ'Ô'ðwð wð wð wð w˜œ	ñ wô wñ (Ô'ðwð Ð˜VÑ$Ô$ðð ð ð ð �R”Yñ ô ñ %Ô$ðð, Ð˜VÑ$Ô$ð
)ð 
)ð 
)ð 
)ð 
)�R”Yñ 
)ô 
)ñ %Ô$ð
)ð Ð˜ZÑ(Ô(ðið ið ið ið i˜œñ iô iñ )Ô(ðið Ð˜[Ñ)Ô)ð4ð 4ð 4ð 4ð 4˜"œ)ñ 4ô 4ñ *Ô)ð4ð7ð 7ð 7ð 7ð 7˜BœIñ 7ô 7ð 7ð2tð tð tð tð t˜RœYñ tô tð tð ð ð ð ð �R”Yñ ô ð ð"ð ð ð ð �r”yñ ô ð ð
.ð 
.ð 
.ð 
.ð 
.˜œ	ñ 
.ô 
.ð 
.ðð ð ð ð ˜BœIñ ô ð ð4ð 4ð 4ð 4ð 4˜RœYñ 4ô 4ð 4ðð ð ð ð �kñ ô ð ðZ)ð Z)ð Z)ð Z)ð Z)�b”iñ Z)ô Z)ð Z)ðzØ
ˆNðàÐ%¨s¸2Ð'>Ð'>Ð?ðð Ð#ðð Ð!ð	ð
 �NÐ%6¸Ð$=Ð>ðð ˜ðð ˜Ð$:¸DÐ#AÐBðð Ð+ðð �”ðð Ð ðð �"”,ðð Ððð ˆNðð Ð%ðð ˆBŒGðð  Ð"ð!ð" ˆRŒXð#ð$ ŒzØØ*ØŒWØŒGØŒXØð1ð ð €ð4 
ˆ˜Ñ	!Ô	!€ðjð jð jð ˆn˜]Ñ+Ô+€Øˆ>˜*Ñ%Ô%€Ø€~�fÑÔ€ØˆN˜;Ñ'Ô'€	Ø"�NÐ#6Ñ7Ô7Ð Øˆ^˜LÑ)Ô)€
Ø€~�fÑÔ€Ø€~�fÑÔ€Øˆ^˜HÑ%Ô%€
€
€
r   