Ë
    T^(h#  ã                   óV  — d dl mZmZmZ d dlZd dlmZ d dlmc m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mZmZmZmZmZmZ d	d
lmZ  ej6                  e«      Z G d„ dej<                  «      Z G d„ de«      Z  G d„ de«      Z! G d„ de«      Z" G d„ de«      Z# G d„ de«      Z$y)é    )ÚCallableÚOptionalÚTupleNé   )ÚCache)ÚALL_ATTENTION_FUNCTIONS)Úloggingé   )ÚLlamaAttentionÚLlamaDecoderLayerÚLlamaForCausalLMÚLlamaMLPÚ
LlamaModelÚapply_rotary_pos_embÚeager_attention_forwardé   )Ú
OlmoConfigc                   ód   ‡ — e Zd ZdZdeddfˆ fd„Zdej                  dej                  fd„Zˆ xZ	S )ÚOlmoLayerNormz/LayerNorm but with no learnable weight or bias.Úhidden_sizeÚreturnNc                 ó2   •— t         ‰| �  «        |f| _        y ©N)ÚsuperÚ__init__Únormalized_shape)Úselfr   Ú	__class__s     €úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/olmo/modular_olmo.pyr   zOlmoLayerNorm.__init__   s   ø€ Ü‰ÑÔØ!, ˆÕó    Úhidden_statesc                 ó¼   — |j                   }t        j                  |j                  t        j
                  ¬«      | j                  d d d¬«      j                  |«      S )N)Údtypegñhãˆµøä>)Úeps)r#   ÚFÚ
layer_normÚtoÚtorchÚfloat32r   )r   r!   Ú
orig_dtypes      r   ÚforwardzOlmoLayerNorm.forward!   sO   € Ø"×(Ñ(ˆ
Ü�|‰|˜M×,Ñ,´5·=±=Ð,ÓAÀ4×CXÑCXÐZ^Ð`dÐjnÔo×rÑrØó
ð 	
r    )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úintr   r(   ÚTensorr+   Ú__classcell__©r   s   @r   r   r      s4   ø„ Ù9ð/ Cð /¨Dõ /ð
 U§\¡\ð 
°e·l±l÷ 
r    r   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚOlmoMLPc                 óJ  •— t         ‰| �  |«       t        j                  | j                  | j
                  d¬«      | _        t        j                  | j                  | j
                  d¬«      | _        t        j                  | j
                  | j                  d¬«      | _        y )NF)Úbias)	r   r   ÚnnÚLinearr   Úintermediate_sizeÚ	gate_projÚup_projÚ	down_proj)r   Úconfigr   s     €r   r   zOlmoMLP.__init__)   ss   ø€ Ü‰Ñ˜Ô ÜŸ™ 4×#3Ñ#3°T×5KÑ5KÐRWÔXˆŒÜ—y‘y ×!1Ñ!1°4×3IÑ3IÐPUÔVˆŒÜŸ™ 4×#9Ñ#9¸4×;KÑ;KÐRWÔXˆ�r    )r,   r-   r.   r   r2   r3   s   @r   r5   r5   (   s   ø„ ÷Yð Yr    r5   c                   ó  — e Zd Z	 	 d	dej                  deej                  ej                  f   deej                     dee   deej                     deej                  eej                     eeej                        f   fd„Z	y)
ÚOlmoAttentionNr!   Úposition_embeddingsÚattention_maskÚpast_key_valueÚcache_positionr   c                 óV  — |j                   d d }g |¢d‘| j                  ‘­}| j                  |«      }	| j                  |«      }
| j	                  |«      }| j
                  j                  �´|	j                  | j
                  j                   | j
                  j                  ¬«       |
j                  | j
                  j                   | j
                  j                  ¬«       |j                  | j
                  j                   | j
                  j                  ¬«       |	j                  |«      j                  dd«      }	|
j                  |«      j                  dd«      }
|j                  |«      j                  dd«      }|\  }}t        |	|
||«      \  }	}
|�'|||dœ}|j                  |
|| j                  |«      \  }
}t        }| j
                  j                  dk7  r^| j
                  j                  dk(  r(|j                  dd	«      rt         j#                  d
«       nt$        | j
                  j                     } || |	|
||f| j&                  sdn| j(                  | j*                  dœ|¤Ž\  }} |j,                  g |¢d‘­Ž j/                  «       }| j1                  |«      }||fS )Néÿÿÿÿ)ÚminÚmaxr   r
   )ÚsinÚcosrD   ÚeagerÚsdpaÚoutput_attentionsFzã`torch.nn.functional.scaled_dot_product_attention` does not support `output_attentions=True`. Falling back to eager attention. This warning can be removed using the argument `attn_implementation="eager"` when loading the model.g        )ÚdropoutÚscaling)ÚshapeÚhead_dimÚq_projÚk_projÚv_projr>   Úclip_qkvÚclamp_ÚviewÚ	transposer   ÚupdateÚ	layer_idxr   Ú_attn_implementationÚgetÚloggerÚwarning_oncer   ÚtrainingÚattention_dropoutrO   ÚreshapeÚ
contiguousÚo_proj)r   r!   rA   rB   rC   rD   ÚkwargsÚinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesrJ   rI   Úcache_kwargsÚattention_interfaceÚattn_outputÚattn_weightss                     r   r+   zOlmoAttention.forward1   sy  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆà—{‘{ =Ó1ˆØ—[‘[ Ó/ˆ
Ø—{‘{ =Ó1ˆà�;‰;×ÑÐ+Ø×Ñ T§[¡[×%9Ñ%9Ð$9¸t¿{¹{×?SÑ?SÐÔTØ×Ñ 4§;¡;×#7Ñ#7Ð"7¸T¿[¹[×=QÑ=QÐÔRØ×Ñ T§[¡[×%9Ñ%9Ð$9¸t¿{¹{×?SÑ?SÐÔTà#×(Ñ(¨Ó6×@Ñ@ÀÀAÓFˆØ—_‘_ \Ó2×<Ñ<¸QÀÓBˆ
Ø#×(Ñ(¨Ó6×@Ñ@ÀÀAÓFˆà&‰ˆˆSÜ#7¸ÀjÐRUÐWZÓ#[Ñ ˆ�jàÐ%à#&¨sÀnÑUˆLØ'5×'<Ñ'<¸ZÈÐW[×WeÑWeÐgsÓ'tÑ$ˆJ˜ä(?ÐØ�;‰;×+Ñ+¨wÒ6Ø�{‰{×/Ñ/°6Ò9¸f¿j¹jÐI\Ð^cÔ>dÜ×#Ñ#ðLõô
 '>¸d¿k¹k×>^Ñ>^Ñ&_Ð#á$7ØØØØØð	%
ð  $Ÿ}š}‘C°$×2HÑ2HØ—L‘Lñ	%
ð ñ	%
Ñ!ˆ�\ð *�k×)Ñ)Ð;¨;Ð;¸Ò;×FÑFÓHˆØ—k‘k +Ó.ˆØ˜LÐ(Ð(r    )NN)
r,   r-   r.   r(   r1   r   r   r   Ú
LongTensorr+   © r    r   r@   r@   0   sž   „ ð +/Ø59ñ8)à—|‘|ð8)ð # 5§<¡<°·±Ð#=Ñ>ð8)ð ! §¡Ñ.ð	8)ð
 ! ™ð8)ð ! ×!1Ñ!1Ñ2ð8)ð 
ˆu�|‰|˜X e§l¡lÑ3°X¸eÀEÇLÁLÑ>QÑ5RÐRÑ	Sô8)r    r@   c                   ó(   ‡ — e Zd Zdedefˆ fd„Zˆ xZS )ÚOlmoDecoderLayerr>   rZ   c                 ó²   •— t         ‰| �  ||«       t        |j                  «      | _        t        |j                  «      | _        t        ||¬«      | _        y )N)r>   rZ   )r   r   r   r   Úinput_layernormÚpost_attention_layernormr@   Ú	self_attn©r   r>   rZ   r   s      €r   r   zOlmoDecoderLayer.__init__m   sF   ø€ Ü‰Ñ˜ Ô+Ü,¨V×-?Ñ-?Ó@ˆÔÜ(5°f×6HÑ6HÓ(IˆÔ%Ü&¨fÀ	ÔJˆ�r    )r,   r-   r.   r   r0   r   r2   r3   s   @r   rq   rq   l   s   ø„ ðK˜zð K°c÷ Kñ Kr    rq   c                   ó$   ‡ — e Zd Zdefˆ fd„Zˆ xZS )Ú	OlmoModelr>   c           	      óì   •— t         ‰| �  |«       t        j                  t	        |j
                  «      D �cg c]  }t        ||«      ‘Œ c}«      | _        t        |j                  «      | _
        y c c}w r   )r   r   r8   Ú
ModuleListÚrangeÚnum_hidden_layersrq   Úlayersr   r   Únormrv   s      €r   r   zOlmoModel.__init__u   s[   ø€ Ü‰Ñ˜Ô Ü—m‘mÜBGÈ×H`ÑH`ÓBaÖb°YÔ˜f iÕ0Òbó
ˆŒô " &×"4Ñ"4Ó5ˆ�	ùò cs   ·A1)r,   r-   r.   r   r   r2   r3   s   @r   rx   rx   t   s   ø„ ð6˜z÷ 6ñ 6r    rx   c                   ó   — e Zd Zy)ÚOlmoForCausalLMN)r,   r-   r.   ro   r    r   r€   r€   }   s   „ Ør    r€   )%Útypingr   r   r   r(   Útorch.nnr8   Útorch.nn.functionalÚ
functionalr%   Útorch.utils.checkpointÚcache_utilsr   Úmodeling_utilsr   Úutilsr	   Úllama.modeling_llamar   r   r   r   r   r   r   Úconfiguration_olmor   Ú
get_loggerr,   r]   ÚModuler   r5   r@   rq   rx   r€   ro   r    r   ú<module>r�      sž   ðß ,Ñ ,ã Ý ß Ð Û å  Ý 5Ý ÷÷ ñ õ +ð 
ˆ×	Ñ	˜HÓ	%€ô
�B—I‘Iô 
ôYˆhô Yô9)�Nô 9)ôxKÐ(ô Kô6�
ô 6ô	Ð&õ 	r    