ó
    qyüi¡R  ã                   óÐ  • S SK Jr  S SKJr  S SKrS SKJr  SSKJr  SSKJ	r	J
r
  SSKJr  SS	KJrJrJr  SS
KJr  SSKJrJrJrJr  SSKJrJr  SSKJrJr  SSKJrJ r   SSK!J"r"  SSK#J$r$J%r%J&r&J'r'  SSK(J)r)J*r*  SSK+J,r,  SSK-J.r.  \'R^                  " \05      r1\" S5       " S S\Rd                  5      5       r3 " S S\Rd                  5      r4S r5\" S5      S=S j5       r6 " S S\Rd                  5      r7S\Rp                  S \9S!\Rp                  4S" jr: S>S#\Rd                  S$\Rp                  S%\Rp                  S&\Rp                  S'\Rp                  S-  S(\;S)\;S*\"\$   4S+ jjr<\" \65       " S, S-\Rd                  5      5       r= " S. S/\5      r>\% " S0 S1\ 5      5       r?\% " S2 S3\?5      5       r@\% " S4 S5\?\5      5       rA " S6 S7\\?5      rB " S8 S9\\?5      rC " S: S;\\?5      rD/ S<QrEg)?é    )ÚCallable)ÚOptionalN)Únné   )ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)Úuse_kernel_forward_from_hubÚuse_kernel_func_from_hubÚuse_kernelized_func)Úcreate_causal_mask)ÚGenericForQuestionAnsweringÚ GenericForSequenceClassificationÚGenericForTokenClassificationÚGradientCheckpointingLayer)ÚBaseModelOutputWithPastÚCausalLMOutputWithPast)ÚROPE_INIT_FUNCTIONSÚdynamic_rope_update)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚlogging)Úmaybe_autocastÚmerge_with_config_defaults)Úcapture_outputsé   )ÚLlamaConfigÚRMSNormc                   óx   ^ • \ rS rSrS
S\SS4U 4S jjjrS\R                  S\R                  4S jrS r	S	r
U =r$ )ÚLlamaRMSNormé4   ÚepsÚreturnNc                 óŒ   >• [         TU ]  5         [        R                  " [        R
                  " U5      5      U l        X l        g)z+
LlamaRMSNorm is equivalent to T5LayerNorm
N)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizer'   Ú	__class__s      €Úe/home/mande/repo/quber/.venv/lib/python3.13/site-packages/transformers/models/llama/modeling_llama.pyr+   ÚLlamaRMSNorm.__init__6   s/   ø€ ô 	‰ÑÔÜ—l’l¤5§:¢:¨kÓ#:Ó;ˆŒØ #Õó    Úhidden_statesc                 ó  • UR                   nUR                  [        R                  5      nUR	                  S5      R                  SSS9nU[        R                  " X0R                  -   5      -  nU R                  UR                  U5      -  $ )Né   éÿÿÿÿT)Úkeepdim)	ÚdtypeÚtor-   Úfloat32ÚpowÚmeanÚrsqrtr0   r/   )r1   r7   Úinput_dtypeÚvariances       r4   ÚforwardÚLlamaRMSNorm.forward>   sw   € Ø#×)Ñ)ˆØ%×(Ñ(¬¯©Ó7ˆØ ×$Ñ$ QÓ'×,Ñ,¨R¸Ð,Ð>ˆØ%¬¯ª°H×?TÑ?TÑ4TÓ(UÑUˆØ�{‰{˜]×-Ñ-¨kÓ:Ñ:Ð:r6   c                 ó^   • [        U R                  R                  5       SU R                   3$ )Nz, eps=)Útupler/   Úshaper0   )r1   s    r4   Ú
extra_reprÚLlamaRMSNorm.extra_reprE   s*   € Ü˜Ÿ™×)Ñ)Ó*Ð+¨6°$×2GÑ2GÐ1HÐIÐIr6   )r0   r/   )g�íµ ÷Æ°>)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úfloatr+   r-   ÚTensorrD   rI   Ú__static_attributes__Ú__classcell__©r3   s   @r4   r%   r%   4   sB   ø† ñ$¨ð $¸$÷ $ð $ð; U§\¡\ð ;°e·l±lô ;÷Jð Jr6   r%   c                   óÖ   ^ • \ rS rSr% \R
                  \S'   SS\4U 4S jjjr\	   SS\S-  S\
S   S\S-  S	\S
\4   4S jj5       r\R                  " 5       \S 5       5       rSrU =r$ )ÚLlamaRotaryEmbeddingéI   Úinv_freqNÚconfigc                 ó   >• [         TU ]  5         UR                  U l        UR                  U l        Xl        U R
                  R                  S   U l        U R                  nU R                  S:w  a  [        U R                     nU" U R
                  U5      u  o@l
        U R                  SUSS9  U R                  SUR                  5       SS9  g )NÚ	rope_typeÚdefaultrW   F)Ú
persistentÚoriginal_inv_freq)r*   r+   Úmax_position_embeddingsÚmax_seq_len_cachedÚoriginal_max_seq_lenrX   Úrope_parametersrZ   Úcompute_default_rope_parametersr   Úattention_scalingÚregister_bufferÚclone)r1   rX   ÚdeviceÚrope_init_fnrW   r3   s        €r4   r+   ÚLlamaRotaryEmbedding.__init__L   s²   ø€ Ü‰ÑÔØ"(×"@Ñ"@ˆÔØ$*×$BÑ$BˆÔ!àŒàŸ™×4Ñ4°[ÑAˆŒØ!%×!EÑ!EˆØ�>‰>˜YÓ&Ü.¨t¯~©~Ñ>ˆLÙ+7¸¿¹ÀVÓ+LÑ(ˆÔ(à×Ñ˜Z¨¸eÐÑDØ×ÑÐ0°(·.±.Ó2BÈuÐÒUr6   rf   ztorch.deviceÚseq_lenr(   ztorch.Tensorc           	      ó  • U R                   S   n[        U SS5      =(       d    U R                  U R                  -  nSnSU[        R
                  " SUS[        R                  S9R                  U[        R                  S9U-  -  -  nXe4$ )	aH  
Computes the inverse frequencies according to the original RoPE implementation
Args:
    config ([`~transformers.PreTrainedConfig`]):
        The model configuration.
    device (`torch.device`):
        The device to use for initialization of the inverse frequencies.
    seq_len (`int`, *optional*):
        The current sequence length. Unused for this type of RoPE.
Returns:
    Tuple of (`torch.Tensor`, `float`), containing the inverse frequencies for the RoPE embeddings and the
    post-processing scaling factor applied to the computed cos/sin (unused in this type of RoPE).
Ú
rope_thetaÚhead_dimNg      ð?r   r9   ©r<   )rf   r<   )	ra   Úgetattrr2   Únum_attention_headsr-   ÚarangeÚint64r=   rO   )rX   rf   ri   ÚbaseÚdimÚattention_factorrW   s          r4   rb   Ú4LlamaRotaryEmbedding.compute_default_rope_parameters\   s�   € ð& ×%Ñ% lÑ3ˆÜ�f˜j¨$Ó/×c°6×3EÑ3EÈ×IcÑIcÑ3cˆàÐð Ø”U—\’\ ! S¨!´5·;±;Ñ?×BÑBÈ&ÔX]×XcÑXcÐBÐdÐgjÑjÑkñ
ˆð Ð)Ð)r6   c                 óL  • U R                   S S S 2S 4   R                  5       R                  UR                  S   SS5      R	                  UR
                  5      nUS S 2S S S 24   R                  5       n[        UR
                  R                  [        5      (       a0  UR
                  R                  S:w  a  UR
                  R                  OSn[        USS9   UR                  5       UR                  5       -  R                  SS5      n[        R                  " Xf4SS	9nUR                  5       U R                  -  nUR                  5       U R                  -  n	S S S 5        WR	                  UR                   S
9W	R	                  UR                   S
94$ ! , (       d  f       N@= f)Nr   r:   r!   ÚmpsÚcpuF)Údevice_typeÚenabledr9   ©rs   rm   )rW   rO   ÚexpandrH   r=   rf   Ú
isinstanceÚtypeÚstrr   Ú	transposer-   ÚcatÚcosrc   Úsinr<   )
r1   ÚxÚposition_idsÚinv_freq_expandedÚposition_ids_expandedry   ÚfreqsÚembr‚   rƒ   s
             r4   rD   ÚLlamaRotaryEmbedding.forwardz   sN  € ð !ŸM™M¨$²°4¨-Ñ8×>Ñ>Ó@×GÑGÈ×HZÑHZÐ[\ÑH]Ð_aÐcdÓe×hÑhÐij×iqÑiqÓrÐØ ,ªQ°²a¨ZÑ 8× >Ñ >Ó @Ðä'1°!·(±(·-±-Ä×'EÑ'EÈ!Ï(É(Ï-É-Ð[`ÓJ`�a—h‘h—m’mÐfkˆÜ¨¸UÓCØ&×,Ñ,Ó.Ð1F×1LÑ1LÓ1NÑN×YÑYÐZ[Ð]^Ó_ˆEÜ—)’)˜U˜N°Ñ3ˆCØ—'‘'“)˜d×4Ñ4Ñ4ˆCØ—'‘'“)˜d×4Ñ4Ñ4ˆC÷	 Dð �v‰v˜AŸG™GˆvÐ$ c§f¡f°1·7±7 fÐ&;Ð;Ð;÷ DÕCús   ÃBFÆ
F#)rc   rX   r_   r`   rZ   ©N©NNN)rK   rL   rM   rN   r-   rP   Ú__annotations__r"   r+   Ústaticmethodr   ÚintrG   rO   rb   Úno_gradr   rD   rQ   rR   rS   s   @r4   rU   rU   I   sœ   ø‡ Ø�l‰lÓñV˜{÷ Vð Vð  à%)Ø+/Ø"ñ*Ø˜dÑ"ð*à˜Ñ(ð*ð �t‘ð*ð 
ˆ~˜uÐ$Ñ	%ô	*ó ð*ð: ‡]‚]ƒ_Øñ<ó ó ö<r6   rU   c                 ó–   • U SSU R                   S   S-  24   nU SU R                   S   S-  S24   n[        R                  " U* U4SS9$ )z*Rotates half the hidden dims of the input..Nr:   r9   r{   )rH   r-   r�   )r„   Úx1Úx2s      r4   Úrotate_halfr”   Š   sZ   € à	
ˆ3Ð"�!—'‘'˜"‘+ Ñ"Ð"Ð"Ñ	#€BØ	
ˆ3�—‘˜‘˜qÑ Ñ"Ð"Ñ	#€BÜ�9Š9�r�c˜2�Y BÑ'Ð'r6   Úrotary_pos_embc                 ó˜   • UR                  U5      nUR                  U5      nX-  [        U 5      U-  -   nX-  [        U5      U-  -   nXV4$ )aI  Applies Rotary Position Embedding to the query and key tensors.

Args:
    q (`torch.Tensor`): The query tensor.
    k (`torch.Tensor`): The key tensor.
    cos (`torch.Tensor`): The cosine part of the rotary embedding.
    sin (`torch.Tensor`): The sine part of the rotary embedding.
    unsqueeze_dim (`int`, *optional*, defaults to 1):
        The 'unsqueeze_dim' argument specifies the dimension along which to unsqueeze cos[position_ids] and
        sin[position_ids] so that they can be properly broadcasted to the dimensions of q and k. For example, note
        that cos[position_ids] and sin[position_ids] have the shape [batch_size, seq_len, head_dim]. Then, if q and
        k have the shape [batch_size, heads, seq_len, head_dim], then setting unsqueeze_dim=1 makes
        cos[position_ids] and sin[position_ids] broadcastable to the shapes of q and k. Similarly, if q and k have
        the shape [batch_size, seq_len, heads, head_dim], then set unsqueeze_dim=2.
Returns:
    `tuple(torch.Tensor)` comprising of the query and key tensors rotated using the Rotary Position Embedding.
)Ú	unsqueezer”   )ÚqÚkr‚   rƒ   Úunsqueeze_dimÚq_embedÚk_embeds          r4   Úapply_rotary_pos_embr�   ‘   sS   € ð& �-‰-˜Ó
&€CØ
�-‰-˜Ó
&€CØ‰wœ; q›>¨CÑ/Ñ0€GØ‰wœ; q›>¨CÑ/Ñ0€GØÐÐr6   c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )ÚLlamaMLPé«   c                 óø  >• [         TU ]  5         Xl        UR                  U l        UR                  U l        [
        R                  " U R                  U R                  UR                  S9U l        [
        R                  " U R                  U R                  UR                  S9U l	        [
        R                  " U R                  U R                  UR                  S9U l
        [        UR                     U l        g )N©Úbias)r*   r+   rX   r2   Úintermediate_sizer   ÚLinearÚmlp_biasÚ	gate_projÚup_projÚ	down_projr   Ú
hidden_actÚact_fn©r1   rX   r3   s     €r4   r+   ÚLlamaMLP.__init__¬   s¶   ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔØ!'×!9Ñ!9ˆÔÜŸš 4×#3Ñ#3°T×5KÑ5KÐRX×RaÑRaÑbˆŒÜ—y’y ×!1Ñ!1°4×3IÑ3IÐPV×P_ÑP_Ñ`ˆŒÜŸš 4×#9Ñ#9¸4×;KÑ;KÐRX×RaÑRaÑbˆŒÜ˜V×.Ñ.Ñ/ˆ�r6   c                 óˆ   • U R                  U R                  U R                  U5      5      U R                  U5      -  5      nU$ r‹   )r©   r«   r§   r¨   )r1   r„   r©   s      r4   rD   ÚLlamaMLP.forward¶   s6   € Ø—N‘N 4§;¡;¨t¯~©~¸aÓ/@Ó#AÀDÇLÁLÐQRÃOÑ#SÓTˆ	ØÐr6   )r«   rX   r©   r§   r2   r¤   r¨   )rK   rL   rM   rN   r+   rD   rQ   rR   rS   s   @r4   rŸ   rŸ   «   s   ø† õ0÷ð r6   rŸ   r7   Ún_repr(   c                 ó    • U R                   u  p#pEUS:X  a  U $ U SS2SS2SSS2SS24   R                  X#XU5      n U R                  X#U-  XE5      $ )zÈ
This is the equivalent of torch.repeat_interleave(x, dim=1, repeats=n_rep). The hidden states go from (batch,
num_key_value_heads, seqlen, head_dim) to (batch, num_attention_heads, seqlen, head_dim)
r!   N)rH   r|   Úreshape)r7   r°   ÚbatchÚnum_key_value_headsÚslenrl   s         r4   Ú	repeat_kvr¶   »   s_   € ð
 2?×1DÑ1DÑ.€E Ø�ƒzØÐØ!¢!¢Q¨ªa²Ð"2Ñ3×:Ñ:¸5ÐW\ÐdlÓm€MØ× Ñ  ¸eÑ(CÀTÓTÐTr6   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingÚdropoutÚkwargsc                 ó  • [        X R                  5      n[        X0R                  5      n	[        R                  " XR	                  SS5      5      U-  n
Ub  X¤-   n
[
        R                  R                  U
S[        R                  S9R                  UR                  5      n
[
        R                  R                  X¦U R                  S9n
[        R                  " X©5      nUR	                  SS5      R                  5       nXº4$ )Nr9   r   r:   )rs   r<   )ÚpÚtrainingr!   )r¶   Únum_key_value_groupsr-   Úmatmulr€   r   Ú
functionalÚsoftmaxr>   r=   r<   r½   rÁ   Ú
contiguous)r·   r¸   r¹   rº   r»   r¼   r½   r¾   Ú
key_statesÚvalue_statesÚattn_weightsÚattn_outputs               r4   Úeager_attention_forwardrË   Ç   sÒ   € ô ˜3× ;Ñ ;Ó<€JÜ˜U×$?Ñ$?Ó@€Lä—<’< ×';Ñ';¸A¸qÓ'AÓBÀWÑL€LØÑ!Ø#Ñ4ˆä—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÐS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ð[€LÜ—,’,˜|Ó:€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r6   c                   ó  ^ • \ rS rSrSrS\S\4U 4S jjr   SS\R                  S\
\R                  \R                  4   S-  S	\R                  S-  S
\S-  S\\   S\
\R                  \R                  4   4S jjrSrU =r$ )ÚLlamaAttentionéà   z=Multi-headed attention from 'Attention Is All You Need' paperrX   Ú	layer_idxc                 óP  >• [         TU ]  5         Xl        X l        [	        USUR
                  UR                  -  5      U l        UR                  UR                  -  U l	        U R                  S-  U l
        UR                  U l        SU l        [        R                  " UR
                  UR                  U R                  -  UR                  S9U l        [        R                  " UR
                  UR                  U R                  -  UR                  S9U l        [        R                  " UR
                  UR                  U R                  -  UR                  S9U l        [        R                  " UR                  U R                  -  UR
                  UR                  S9U l        g )Nrl   g      à¿Tr¢   )r*   r+   rX   rÏ   rn   r2   ro   rl   r´   rÂ   r¼   Úattention_dropoutÚ	is_causalr   r¥   Úattention_biasÚq_projÚk_projÚv_projÚo_proj©r1   rX   rÏ   r3   s      €r4   r+   ÚLlamaAttention.__init__ä   sI  ø€ Ü‰ÑÔØŒØ"ŒÜ ¨
°F×4FÑ4FÈ&×JdÑJdÑ4dÓeˆŒØ$*×$>Ñ$>À&×B\ÑB\Ñ$\ˆÔ!Ø—}‘} dÑ*ˆŒØ!'×!9Ñ!9ˆÔØˆŒä—i’iØ×Ñ × :Ñ :¸T¿]¹]Ñ JÐQW×QfÑQfñ
ˆŒô —i’iØ×Ñ × :Ñ :¸T¿]¹]Ñ JÐQW×QfÑQfñ
ˆŒô —i’iØ×Ñ × :Ñ :¸T¿]¹]Ñ JÐQW×QfÑQfñ
ˆŒô —i’iØ×&Ñ&¨¯©Ñ6¸×8JÑ8JÐQW×QfÑQfñ
ˆ�r6   Nr7   Úposition_embeddingsr»   Úpast_key_valuesr¾   r(   c                 ó  • UR                   S S n/ UQSPU R                  P7nU R                  U5      R                  U5      R	                  SS5      nU R                  U5      R                  U5      R	                  SS5      n	U R                  U5      R                  U5      R	                  SS5      n
Uu  p¼[        X‰X¼5      u  p‰Ub  UR                  XšU R                  5      u  pš[        R                  " U R                  R                  [        5      nU" U UU	U
U4U R                  (       d  SOU R                   U R"                  S.UD6u  pïUR$                  " / UQSP76 R'                  5       nU R)                  U5      nXï4$ )Nr:   r!   r9   ç        )r½   r¼   )rH   rl   rÔ   Úviewr€   rÕ   rÖ   r�   ÚupdaterÏ   r   Úget_interfacerX   Ú_attn_implementationrË   rÁ   rÑ   r¼   r²   rÆ   r×   )r1   r7   rÚ   r»   rÛ   r¾   Úinput_shapeÚhidden_shapeÚquery_statesrÇ   rÈ   r‚   rƒ   Úattention_interfacerÊ   rÉ   s                   r4   rD   ÚLlamaAttention.forwardû   s~  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆà—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆØ—[‘[ Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆ
Ø—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆà&‰ˆÜ#7¸ÐRUÓ#[Ñ ˆàÑ&Ø'6×'=Ñ'=¸jÐX\×XfÑXfÓ'gÑ$ˆJä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØð	%
ð  $Ÿ}Ÿ}‘C°$×2HÑ2HØ—L‘Lñ	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ò;×FÑFÓHˆØ—k‘k +Ó.ˆØÐ(Ð(r6   )rÑ   rX   rl   rÒ   rÕ   rÏ   rÂ   r×   rÔ   r¼   rÖ   rŒ   )rK   rL   rM   rN   Ú__doc__r"   r�   r+   r-   rP   rG   r   r   r   rD   rQ   rR   rS   s   @r4   rÍ   rÍ   à   sª   ø† áGð
˜{ð 
°s÷ 
ð4 IMØ.2Ø(,ñ&)à—|‘|ð&)ð # 5§<¡<°·±Ð#=Ñ>ÀÑEð&)ð Ÿ™ tÑ+ð	&)ð
  ™ð&)ð Ð+Ñ,ð&)ð 
ˆu�|‰|˜UŸ\™\Ð)Ñ	*÷&)ó &)r6   rÍ   c                   ó  ^ • \ rS rSrS\S\4U 4S jjr     SS\R                  S\R                  S-  S\R                  S-  S	\
S-  S
\S-  S\\R                  \R                  4   S-  S\\   S\R                  4S jjrSrU =r$ )ÚLlamaDecoderLayeri$  rX   rÏ   c                 ó  >• [         TU ]  5         UR                  U l        [        XS9U l        [        U5      U l        [        UR                  UR                  S9U l	        [        UR                  UR                  S9U l
        g )N)rX   rÏ   ©r'   )r*   r+   r2   rÍ   Ú	self_attnrŸ   Úmlpr%   Úrms_norm_epsÚinput_layernormÚpost_attention_layernormrØ   s      €r4   r+   ÚLlamaDecoderLayer.__init__%  sj   ø€ Ü‰ÑÔØ!×-Ñ-ˆÔä'¨vÑKˆŒä˜FÓ#ˆŒÜ+¨F×,>Ñ,>ÀF×DWÑDWÑXˆÔÜ(4°V×5GÑ5GÈV×M`ÑM`Ñ(aˆÕ%r6   Nr7   r»   r…   rÛ   Ú	use_cacherÚ   r¾   r(   c           
      óº   • UnU R                  U5      nU R                  " SUUUUUUS.UD6u  pX�-   nUnU R                  U5      nU R                  U5      nX�-   nU$ )N)r7   r»   r…   rÛ   rò   rÚ   © )rï   rì   rð   rí   )
r1   r7   r»   r…   rÛ   rò   rÚ   r¾   ÚresidualÚ_s
             r4   rD   ÚLlamaDecoderLayer.forward/  sˆ   € ð !ˆØ×,Ñ,¨]Ó;ˆàŸ>š>ð 
Ø'Ø)Ø%Ø+ØØ 3ñ
ð ñ
Ñˆð !Ñ0ˆð !ˆØ×5Ñ5°mÓDˆØŸ™ Ó/ˆØ Ñ0ˆØÐr6   )r2   rï   rí   rð   rì   )NNNFN)rK   rL   rM   rN   r"   r�   r+   r-   rP   Ú
LongTensorr   ÚboolrG   r   r   rD   rQ   rR   rS   s   @r4   ré   ré   $  sÃ   ø† ðb˜{ð b°s÷ bð /3Ø04Ø(,Ø!&ØHLñà—|‘|ðð Ÿ™ tÑ+ðð ×&Ñ&¨Ñ-ð	ð
  ™ðð ˜$‘;ðð # 5§<¡<°·±Ð#=Ñ>ÀÑEðð Ð+Ñ,ðð 
�‰÷ó r6   ré   c                   óR   • \ rS rSr% \\S'   SrSrS/rS/r	Sr
SrSrSrSr\\S.rSrg	)
ÚLlamaPreTrainedModeliO  rX   ÚmodelTré   rÛ   )r7   Ú
attentionsrô   N)rK   rL   rM   rN   r"   r�   Úbase_model_prefixÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_can_compile_fullgraphÚ_supports_attention_backendré   rÍ   Ú_can_record_outputsrQ   rô   r6   r4   rû   rû   O  sQ   ‡ àÓØÐØ&*Ð#Ø,Ð-ÐØ#4Ð"5ÐØÐØ€NØÐà!ÐØ"&Ðà*Ø$ñÓr6   rû   c                   ó  ^ • \ rS rSrS\4U 4S jjr\\\      SS\	R                  S-  S\	R                  S-  S\	R                  S-  S\S-  S	\	R                  S-  S
\S-  S\\   S\4S jj5       5       5       rSrU =r$ )Ú
LlamaModelib  rX   c           	      ó  >• [         TU ]  U5        UR                  U l        UR                  U l        [
        R                  " UR                  UR                  U R                  5      U l        [
        R                  " [        UR                  5       Vs/ s H  n[        X5      PM     sn5      U l        [        UR                  UR                  S9U l        [#        US9U l        SU l        U R)                  5         g s  snf )Nrë   ©rX   F)r*   r+   Úpad_token_idÚpadding_idxÚ
vocab_sizer   Ú	Embeddingr2   Úembed_tokensÚ
ModuleListÚrangeÚnum_hidden_layersré   Úlayersr%   rî   ÚnormrU   Ú
rotary_embÚgradient_checkpointingÚ	post_initrØ   s      €r4   r+   ÚLlamaModel.__init__d  sÊ   ø€ Ü‰Ñ˜Ô Ø!×.Ñ.ˆÔØ ×+Ñ+ˆŒäŸLšL¨×):Ñ):¸F×<NÑ<NÐPT×P`ÑP`ÓaˆÔÜ—m’mÜCHÈ×IaÑIaÔCbÓcÒCb°iÔ˜vÖ1ÑCbÑcó
ˆŒô ! ×!3Ñ!3¸×9LÑ9LÑMˆŒ	Ü.°fÑ=ˆŒØ&+ˆÔ#ð 	�‰Õùò ds   ÂC?NÚ	input_idsr»   r…   rÛ   Úinputs_embedsrò   r¾   r(   c           
      ó>  • US L US L-  (       a  [        S5      eUc  U R                  U5      nU(       a  Uc  [        U R                  S9nUcU  Ub  UR	                  5       OSn[
        R                  " UR                  S   UR                  S9U-   nUR                  S5      n[        U R                  UUUUS9n	Un
U R                  X£S9nU R                  S U R                  R                    H  nU" U
4U	UUUUS.UD6n
M     U R                  U
5      n
[        U
US	9$ )
Nz:You must specify exactly one of input_ids or inputs_embedsr  r   r!   )rf   )rX   r  r»   rÛ   r…   )r…   )r»   rÚ   r…   rÛ   rò   )Úlast_hidden_staterÛ   )Ú
ValueErrorr  r	   rX   Úget_seq_lengthr-   rp   rH   rf   r—   r   r  r  r  r  r   )r1   r  r»   r…   rÛ   r  rò   r¾   Úpast_seen_tokensÚcausal_maskr7   rÚ   Údecoder_layers                r4   rD   ÚLlamaModel.forwardt  sF  € ð ˜Ð -°tÐ";×<ÜÐYÓZÐZàÑ Ø*.×*;Ñ*;¸IÓ*FˆMæ˜Ñ0Ü*°$·+±+Ñ>ˆOàÑØCRÑC^˜×=Ñ=Ô?ÐdeÐÜ Ÿ<š<¨×(;Ñ(;¸AÑ(>À}×G[ÑG[Ñ\Ð_oÑoˆLØ'×1Ñ1°!Ó4ˆLä(Ø—;‘;Ø'Ø)Ø+Ø%ñ
ˆð &ˆØ"Ÿo™o¨m˜oÐWÐà!Ÿ[™[Ð)H¨4¯;©;×+HÑ+HÓIˆMÙ)Øðà*Ø$7Ø)Ø /Ø#ñð ñŠMñ Jð Ÿ	™	 -Ó0ˆÜ&Ø+Ø+ñ
ð 	
r6   )r  r  r  r  r  r  r  )NNNNNN)rK   rL   rM   rN   r"   r+   r   r    r   r-   rø   rP   r   ÚFloatTensorrù   r   r   r   rD   rQ   rR   rS   s   @r4   r	  r	  b  sÍ   ø† ð˜{÷ ð   ØØð .2Ø.2Ø04Ø(,Ø26Ø!%ñ2
à×#Ñ# dÑ*ð2
ð Ÿ™ tÑ+ð2
ð ×&Ñ&¨Ñ-ð	2
ð
  ™ð2
ð ×(Ñ(¨4Ñ/ð2
ð ˜$‘;ð2
ð Ð+Ñ,ð2
ð 
!ô2
ó ó ó  ö2
r6   r	  c                   óP  ^ • \ rS rSrSS0rSS0rSS/S/40rU 4S jr\\	        SS
\
R                  S	-  S\
R                  S	-  S\
R                  S	-  S\S	-  S\
R                  S	-  S\
R                  S	-  S\S	-  S\\
R                  -  S\\   S\4S jj5       5       rSrU =r$ )ÚLlamaForCausalLMi¬  zlm_head.weightzmodel.embed_tokens.weightÚlm_headÚcolwise_gather_outputr7   Úlogitsc                 óä   >• [         TU ]  U5        [        U5      U l        UR                  U l        [
        R                  " UR                  UR                  SS9U l        U R                  5         g )NFr¢   )
r*   r+   r	  rü   r  r   r¥   r2   r'  r  r¬   s     €r4   r+   ÚLlamaForCausalLM.__init__²  sU   ø€ Ü‰Ñ˜Ô Ü Ó'ˆŒ
Ø ×+Ñ+ˆŒÜ—y’y ×!3Ñ!3°V×5FÑ5FÈUÑSˆŒð 	�‰Õr6   Nr  r»   r…   rÛ   r  Úlabelsrò   Úlogits_to_keepr¾   r(   c	           
      ó|  • U R                   " SUUUUUUS.U	D6n
U
R                  n[        U[        5      (       a  [	        U* S5      OUnU R                  USS2USS24   5      nSnUb)  U R                  " SXÖU R                  R                  S.U	D6n[        UUU
R                  U
R                  U
R                  S9$ )ao  
Example:

```python
>>> from transformers import AutoTokenizer, LlamaForCausalLM

>>> model = LlamaForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf")
>>> tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf")

>>> prompt = "Hey, are you conscious? Can you talk to me?"
>>> inputs = tokenizer(prompt, return_tensors="pt")

>>> # Generate
>>> generate_ids = model.generate(inputs.input_ids, max_length=30)
>>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
"Hey, are you conscious? Can you talk to me?\nI'm not conscious, but I can talk to you."
```)r  r»   r…   rÛ   r  rò   N)r)  r,  r  )Úlossr)  rÛ   r7   rý   rô   )rü   r  r}   r�   Úslicer'  Úloss_functionrX   r  r   rÛ   r7   rý   )r1   r  r»   r…   rÛ   r  r,  rò   r-  r¾   Úoutputsr7   Úslice_indicesr)  r/  s                  r4   rD   ÚLlamaForCausalLM.forward»  sÖ   € ð> ,0¯:ª:ð ,
ØØ)Ø%Ø+Ø'Øñ,
ð ñ,
ˆð  ×1Ñ1ˆä8BÀ>ÔSV×8WÑ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜mªA¨}ºaÐ,?Ñ@ÓAˆàˆØÑØ×%Ò%Ðp¨VÈtÏ{É{×OeÑOeÑpÐioÑpˆDä%ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)ñ
ð 	
r6   )r'  rü   r  )NNNNNNNr   )rK   rL   rM   rN   Ú_tied_weights_keysÚ_tp_planÚ_pp_planr+   r   r   r-   rø   rP   r   r$  rù   r�   r   r   r   rD   rQ   rR   rS   s   @r4   r&  r&  ¬  s  ø† à*Ð,GÐHÐØÐ2Ð3€HØ˜_Ð-°¨zÐ:Ð;€Hõð Øð .2Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø-.ñ6
à×#Ñ# dÑ*ð6
ð Ÿ™ tÑ+ð6
ð ×&Ñ&¨Ñ-ð	6
ð
  ™ð6
ð ×(Ñ(¨4Ñ/ð6
ð × Ñ  4Ñ'ð6
ð ˜$‘;ð6
ð ˜eŸl™lÑ*ð6
ð Ð+Ñ,ð6
ð 
 ô6
ó ó ö6
r6   r&  c                   ó   • \ rS rSrSrg)ÚLlamaForSequenceClassificationiö  rô   N©rK   rL   rM   rN   rQ   rô   r6   r4   r9  r9  ö  s   † Ò^ar6   r9  c                   ó   • \ rS rSrSrSrg)ÚLlamaForQuestionAnsweringiù  Útransformerrô   N)rK   rL   rM   rN   rþ   rQ   rô   r6   r4   r<  r<  ù  s   † Ø%Ór6   r<  c                   ó   • \ rS rSrSrg)ÚLlamaForTokenClassificationiý  rô   Nr:  rô   r6   r4   r?  r?  ý  s   † ÒX[r6   r?  )r&  r	  rû   r9  r<  r?  )r!   )rÝ   )FÚcollections.abcr   Útypingr   r-   r   Úactivationsr   Úcache_utilsr   r	   Ú
generationr
   Úintegrationsr   r   r   Úmasking_utilsr   Úmodeling_layersr   r   r   r   Úmodeling_outputsr   r   Úmodeling_rope_utilsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.genericr   r   Úutils.output_capturingr    Úconfiguration_llamar"   Ú
get_loggerrK   ÚloggerÚModuler%   rU   r”   r�   rŸ   rP   r�   r¶   rO   rË   rÍ   ré   rû   r	  r&  r9  r<  r?  Ú__all__rô   r6   r4   Ú<module>rT     s,  ðõ& %Ý ã Ý å !ß .Ý )ß fÑ fÝ /÷ó ÷÷ Lß FÝ &ß RÓ Rß GÝ 5Ý ,ð 
×	Ò	˜HÓ	%€ñ ˜YÓ'ôJ�2—9‘9ó Jó (ðJô(><˜2Ÿ9™9ô ><òB(ñ Ð*Ó+óó ,ðô2ˆr�y‰yô ð 	U˜UŸ\™\ð 	U°#ð 	U¸%¿,¹,ô 	Uð& ñ%Ø�I‰Ið%à�<‰<ð%ð 
�‰ð%ð �<‰<ð	%ð
 —L‘L 4Ñ'ð%ð ð%ð ð%ð Ð'Ñ(õ%ñ2 Ð)Ó*ô@)�R—Y‘Yó @)ó +ð@)ôF(Ð2ô (ðV ô˜?ó ó ðð$ ôF
Ð%ó F
ó ðF
ðR ôF
Ð+¨_ó F
ó ðF
ôR bÐ%EÐG[Ô aô&Ð ;Ð=Qô &ô \Ð"?ÐAUÔ [ò�r6   