+
    œ°³jŽY  ã                   óJ  € ^ RI Ht ^ RIt^ RIHt ^RIHt ^RIHtHt ^RI	H
t
 ^RIHt ^RIHt ^R	IHt ^R
IHtHt ^RIHtHt ^RIHtHt ^RIHt ^RIHtHtHt ^RI H!t! ^RI"H#t#H$t$ ^RI%H&t& ^RI'H(t(  ! R R]PR                  4      t* ! R R]PR                  4      t+ ! R R]PR                  4      t,R R lt-R)R R llt.R t/R*R lt0 ! R R ]PR                  4      t1 ! R! R"]4      t2] ! R# R$]4      4       t3] ! R% R&]34      4       t4] ! R' R(]3]
4      4       t5. R+Ot6R# ),é    )ÚCallableN)Únn)ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)Úcreate_causal_mask)ÚFlashAttentionKwargs)ÚGradientCheckpointingLayer)ÚBaseModelOutputWithPastÚCausalLMOutputWithPast)ÚROPE_INIT_FUNCTIONSÚdynamic_rope_update)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tuple)Údeprecate_kwarg)Úmaybe_autocastÚmerge_with_config_defaults)Úcapture_outputs©ÚCohereConfigc                   ó<   a a€ ] tR t^3t oRV 3R lltR tRtVtV ;t# )ÚCohereLayerNormc                óŽ   <€ \         SV `  4        \        P                  ! \        P
                  ! V4      4      V n        W n        R# )zcThe hidden size can be a tuple or an int. The tuple is used for QKNorm to normalize across head_dimN)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizeÚepsÚbiasÚ	__class__s   &&&&€Úk/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/cohere/modeling_cohere.pyr    ÚCohereLayerNorm.__init__4   s-   ø€ ä‰ÑÔÜ—l’l¤5§:¢:¨kÓ#:Ó;ˆŒØ #Öó    c                ó¶  € VP                   pVP                  \        P                  4      pVP	                  RRR7      pW,
          P                  ^4      P	                  RRR7      pW,
          \        P                  ! W@P                  ,           4      ,          pV P                  P                  \        P                  4      V,          pVP                  V4      # )é   T)Úkeepdiméÿÿÿÿ)	ÚdtypeÚtor"   Úfloat32ÚmeanÚpowÚrsqrtr%   r$   )r&   Úhidden_statesÚinput_dtyper5   Úvariances   &&   r+   ÚforwardÚCohereLayerNorm.forward:   s¤   € Ø#×)Ñ)ˆØ%×(Ñ(¬¯©Ó7ˆØ×!Ñ! "¨dÐ!Ó3ˆØ!Õ(×-Ñ-¨aÓ0×5Ñ5°bÀ$Ð5ÓGˆØ&Õ-´·²¸X×H]ÑH]Õ=]Ó1^Õ^ˆØŸ™Ÿ™¤u§}¡}Ó5¸ÕEˆØ×Ñ Ó,Ð,r-   )r%   r$   )Ngñhãˆµøä>F©	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r    r;   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r*   Ú__classdict__s   @@r+   r   r   3   s   ù‡ € ÷$÷-ò -r-   r   c                   óÎ   a a€ ] tR t^Dt o]! RRR7      R
V3R lV 3R lll4       t]]! RRR7      R
V3R lR ll4       4       t]P                  ! 4       ]
R 4       4       tR	tVtV ;t# )ÚCohereRotaryEmbeddingÚdevicez5.18)Úversionc                ó    <€ V ^8„  d   QhRS[ /# ©é   Úconfigr   )ÚformatrF   s   "€r+   Ú__annotate__Ú"CohereRotaryEmbedding.__annotate__F   s   ø€ ÷ Oñ O™|ñ Or-   c                óä  <€ \         SV `  4        VP                  V n        VP                  V n        Wn        V P
                  P                  R ,          V n        V P                  pV P                  R8w  d   \        V P                  ,          pV! V P
                  V4      w  q@n
        \        P                  ! VRR7      V n        \        P                  ! VP                  4       RR7      V n        R# )Ú	rope_typeÚdefaultF)Ú
persistentN)r   r    Úmax_position_embeddingsÚmax_seq_len_cachedÚoriginal_max_seq_lenrN   Úrope_parametersrS   Úcompute_default_rope_parametersr   Úattention_scalingr   ÚBufferÚinv_freqÚcloneÚoriginal_inv_freq)r&   rN   rI   Úrope_init_fnr]   r*   s   &&&  €r+   r    ÚCohereRotaryEmbedding.__init__E   s¬   ø€ ä‰ÑÔØ"(×"@Ñ"@ˆÔØ$*×$BÑ$BˆÔ!àŒàŸ™×4Ñ4°[ÕAˆŒØ!%×!EÑ!EˆØ�>‰>˜YÔ&Ü.¨t¯~©~Õ>ˆLÙ+7¸¿¹ÀVÓ+LÑ(ˆÔ(äŸ	š	 (°uÔ=ˆŒÜ!#§¢¨8¯>©>Ó+;ÈÔ!NˆÖr-   c                óP   <€ V ^8„  d   QhRS[ RS[S[P                  S[3,          /# )rM   rN   Úreturn)r   Útupler"   ÚTensorÚfloat)rO   rF   s   "€r+   rP   rQ   X   s.   ø€ ÷ 5ñ 5±ð 5ÑX]Ñ^c×^jÑ^jÑlqÐ^qÕXrñ 5r-   c           	     ó0  € V P                   R,          p\        V RR4      ;'       g    V P                  V P                  ,          pRpRV\        P
                  ! ^ V^\        P                  R7      V,          ,          ,          pVP                  V4      V3# )a~  
Computes the inverse frequencies according to the original RoPE implementation
Args:
    config ([`~transformers.PreTrainedConfig`]):
        The model configuration.
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      ð?©r2   )rY   Úgetattrr'   Únum_attention_headsr"   Úarangerf   r3   )rN   rI   ÚkwargsÚbaseÚdimÚattention_factorr]   s   &&,    r+   rZ   Ú5CohereRotaryEmbedding.compute_default_rope_parametersV   s~   € ð ×%Ñ% lÕ3ˆÜ�f˜j¨$Ó/×cÐc°6×3EÑ3EÈ×IcÑIcÕ3cˆàÐà˜$¤5§<¢<°°3¸ÄÇÁÔ#MÐPSÕ#SÕTÕUˆØ�{‰{˜6Ó"Ð$4Ð4Ð4r-   c                ób  € V P                   R,          P                  4       P                  VP                  ^ ,          R^4      pVR	,          P                  4       p\	        VP
                  P                  \        4      '       d2   VP
                  P                  R8w  d   VP
                  P                  MRp\        VRR7      ;_uu_ 4        VP                  4       VP                  4       ,          P                  ^^4      p\        P                  ! V^RR7      pVP                  4       V P                  ,          pVP                  4       V P                  ,          p	R R R 4       XP                  VP                   R7      X	P                  VP                   R7      3#   + '       g   i     LH; i)
NÚmpsÚcpuF)Údevice_typeÚenabled©rp   rj   )NºNNNNr1   )ry   Nry   )r]   rf   ÚexpandÚshapeÚ
isinstancerI   ÚtypeÚstrr   Ú	transposer"   Úrepeat_interleaveÚcosr[   Úsinr3   r2   )
r&   ÚxÚposition_idsÚinv_freq_expandedÚposition_ids_expandedrv   ÚfreqsÚembr�   r‚   s
   &&&       r+   r;   ÚCohereRotaryEmbedding.forwardj   s5  € ð !ŸM™M¨-Õ8×>Ñ>Ó@×GÑGÈ×HZÑHZÐ[\ÕH]Ð_aÐcdÓeÐØ ,¨ZÕ 8× >Ñ >Ó @Ðä'1°!·(±(·-±-Ä×'EÒ'EÈ!Ï(É(Ï-É-Ð[`ÔJ`�a—h‘h—m’mÐfkˆÜ¨¸U×CÖCØ&×,Ñ,Ó.Ð1F×1LÑ1LÓ1NÕN×YÑYÐZ[Ð]^Ó_ˆEÜ×)Ò)¨%°¸Ô;ˆ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.	)r[   rN   r]   rW   r_   rX   rS   ©N)r>   r?   r@   rA   r   r    ÚstaticmethodrZ   r"   Úno_gradr   r;   rB   rC   rD   rE   s   @@r+   rH   rH   D   su   ù‡ € Ù�X vÔ.÷Oô Oó /ðOð  Ù�X vÔ.÷5ñ 5ó /ó ð5ð$ ‡]‚]ƒ_Øñ<ó ó ÷<ð <r-   rH   c                   ó8   a a€ ] tR t^zt oV 3R ltR tRtVtV ;t# )Ú	CohereMLPc                óØ  <€ \         SV `  4        Wn        VP                  V n        VP                  V n        \
        P                  ! V P                  V P                  R R7      V n        \
        P                  ! V P                  V P                  R R7      V n        \
        P                  ! V P                  V P                  R R7      V n	        \        VP                  ,          V n        R# ©F©r)   N)r   r    rN   r'   Úintermediate_sizer   ÚLinearÚ	gate_projÚup_projÚ	down_projr   Ú
hidden_actÚact_fn©r&   rN   r*   s   &&€r+   r    ÚCohereMLP.__init__{   s¤   ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔØ!'×!9Ñ!9ˆÔÜŸš 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ˆŒÜ˜V×.Ñ.Õ/ˆŽr-   c                ó�   € V P                  V P                  V P                  V4      4      V P                  V4      ,          4      pV# rŠ   )r–   r˜   r”   r•   )r&   rƒ   r–   s   && r+   r;   ÚCohereMLP.forward…   s6   € Ø—N‘N 4§;¡;¨t¯~©~¸aÓ/@Ó#AÀDÇLÁLÐQRÃOÕ#SÓTˆ	ØÐr-   )r˜   rN   r–   r”   r'   r’   r•   r=   rE   s   @@r+   rŽ   rŽ   z   s   ù‡ € õ0÷ò r-   rŽ   c                ód   € V ^8„  d   QhR\         P                  R\        R\         P                  /# )rM   r8   Ún_reprc   )r"   re   Úint)rO   s   "r+   rP   rP   Š   s.   € ÷ 	Uñ 	UœUŸ\™\ð 	U´#ð 	U¼%¿,¹,ñ 	Ur-   c                ó˜   € V P                   w  r#rEV^8X  d   V # V R,          P                  W#WV4      p V P                  W#V,          WE4      # )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)
)ry   ry   Nry   ry   )r{   rz   Úreshape)r8   rž   ÚbatchÚnum_key_value_headsÚslenri   s   &&    r+   Ú	repeat_kvr¥   Š   sU   € ð
 2?×1DÑ1DÑ.€E Ø�„zØÐØ!Ð"2Õ3×:Ñ:¸5ÐW\ÐdlÓm€MØ× Ñ  ¸eÕ(CÀTÓTÐTr-   c                ó   € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R\        R	\
        \        ,          /# )
rM   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚscalingÚdropoutrn   )r   ÚModuler"   re   rf   r   r   )rO   s   "r+   rP   rP   –   sw   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô ð%ô ð%ô Ô'Õ(ñ%r-   c                 ó"  € \        W P                  4      p\        W0P                  4      p	\        P                  ! WP	                  ^^4      4      V,          p
Ve	   W¤,           p
\
        P                  P                  V
R\        P                  R7      P                  VP                  4      p
\
        P                  P                  W¦V P                  R7      p
\        P                  ! W©4      pVP	                  ^^4      P                  4       pWº3# )rM   )rp   r2   )ÚpÚtrainingr1   )r¥   Únum_key_value_groupsr"   Úmatmulr   r   Ú
functionalÚsoftmaxr4   r3   r2   r­   r±   Ú
contiguous)r§   r¨   r©   rª   r«   r¬   r­   rn   Ú
key_statesÚvalue_statesÚattn_weightsÚattn_outputs   &&&&&&&,    r+   Ú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àÐ$Ð$r-   c                 ó~   € V R,          pV R,          p\         P                  ! V) V.RR7      P                  R4      pV# ).rx   ).:NNrM   ).:r/   NrM   r1   éþÿÿÿ)r"   ÚstackÚflatten)rƒ   Úx1Úx2Úrot_xs   &   r+   Úrotate_halfrÃ   ¯   s:   € à	
ˆ8�€BØ	
ˆ9�€BÜ�KŠK˜"˜˜b˜	 rÔ*×2Ñ2°2Ó6€EØ€Lr-   c                ób  € V P                   pV P                  4       p VP                  4       pVP                  V4      pVP                  V4      pW,          \        V 4      V,          ,           pW,          \        V4      V,          ,           pVP	                  VR7      VP	                  VR7      3# )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.
rj   )r2   rf   Ú	unsqueezerÃ   r3   )ÚqÚkr�   r‚   Úunsqueeze_dimr2   Úq_embedÚk_embeds   &&&&&   r+   Úapply_rotary_pos_embrË   ·   sŠ   € ð$ �G‰G€EØ	�‰‹	€AØ	�‰‹	€AØ
�-‰-˜Ó
&€CØ
�-‰-˜Ó
&€CØ�wœ; q›>¨CÕ/Õ0€GØ�wœ; q›>¨CÕ/Õ0€GØ�:‰:˜Eˆ:Ó" G§J¡J°U JÓ$;Ð;Ð;r-   c                   ó\   a a€ ] tR t^Ót oRtRV3R lV 3R llltRV3R lR lltRtVtV ;t	# )ÚCohereAttentionz=Multi-headed attention from 'Attention Is All You Need' paperc                ó4   <€ V ^8„  d   QhRS[ RS[R,          /# )rM   rN   Ú	layer_idxN©r   rŸ   )rO   rF   s   "€r+   rP   ÚCohereAttention.__annotate__Ö   s   ø€ ÷ ñ ™|ð ¹¸d½
ñ r-   c                ó´  <€ \         SV `  4        Wn        W n        \	        VR VP
                  VP                  ,          4      V n        VP                  VP                  ,          V n	        V P                  R,          V n
        VP                  V n        RV n        \        P                  ! VP
                  VP                  V P                  ,          VP                  R7      V n        \        P                  ! VP
                  VP                  V P                  ,          VP                  R7      V n        \        P                  ! VP
                  VP                  V P                  ,          VP                  R7      V n        \        P                  ! VP                  V P                  ,          VP
                  VP                  R7      V n        VP(                  V n        V P(                  '       dg   \+        VP                  V P                  3VP,                  R7      V n        \+        VP                  V P                  3VP,                  R7      V n        R# R# )ri   Tr‘   ©r'   r(   Ng      à¿)r   r    rN   rÏ   rk   r'   rl   ri   r£   r²   r¬   Úattention_dropoutÚ	is_causalr   r“   Úattention_biasÚq_projÚk_projÚv_projÚo_projÚuse_qk_normr   Úlayer_norm_epsÚq_normÚk_norm©r&   rN   rÏ   r*   s   &&&€r+   r    ÚCohereAttention.__init__Ö   s¸  ø€ Ü‰ÑÔØŒØ"ŒÜ ¨
°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ô
ˆŒð "×-Ñ-ˆÔØ××Ðä)Ø#×7Ñ7¸¿¹ÐGÈV×MbÑMbôˆDŒKô *Ø#×7Ñ7¸¿¹ÐGÈV×MbÑMbôˆDŽKñ r-   c                ó  <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  3,          RS[ P                  R,          RS[R,          RS[S[,          RS[S[ P                  S[ P                  R,          3,          /# )rM   r8   Úposition_embeddingsr«   NÚpast_key_valuesrn   rc   )r"   re   rd   r   r   r
   )rO   rF   s   "€r+   rP   rÑ   ö   s‡   ø€ ÷ .)ñ .)á—|‘|ð.)ñ #¡5§<¡<±·±Ð#=Õ>ð.)ñ Ÿ™ tÕ+ð	.)ñ
  �ð.)ñ Ñ-Õ.ð.)ñ 
‰u�|‰|™UŸ\™\¨DÕ0Ð0Õ	1ñ.)r-   c                ó„  € VP                   R R p. VORNV P                  N5pV P                  V4      P                  V4      pV P	                  V4      P                  V4      p	V P                  V4      P                  V4      p
V P                  '       d#   V P                  V4      pV P                  V	4      p	VP                  ^^4      pV	P                  ^^4      p	V
P                  ^^4      p
Vw  r¼\        W‰W¼4      w  r‰Ve   VP                  WšV P                  4      w  rš\        P                  ! V P                  P                   \"        4      pT! V VV	V
V3RV P$                  '       g   RMV P&                  RV P(                  /VB w  rïVP*                  ! . VORN5!  P-                  4       pV P/                  V4      pWï3# )Nr­   ç        r¬   r1   )r{   ri   r×   ÚviewrØ   rÙ   rÛ   rÝ   rÞ   r   rË   ÚupdaterÏ   r   Úget_interfacerN   Ú_attn_implementationr»   r±   rÔ   r¬   r¡   r¶   rÚ   )r&   r8   râ   r«   rã   rn   Úinput_shapeÚhidden_shapeÚquery_statesr·   r¸   r�   r‚   Úattention_interfacerº   r¹   s   &&&&&,          r+   r;   ÚCohereAttention.forwardö   s»  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆà—{‘{ =Ó1×6Ñ6°|ÓDˆØ—[‘[ Ó/×4Ñ4°\ÓBˆ
Ø—{‘{ =Ó1×6Ñ6°|ÓDˆà××ÐØŸ;™; |Ó4ˆLØŸ™ ZÓ0ˆJà#×-Ñ-¨a°Ó3ˆØ×)Ñ)¨!¨QÓ/ˆ
Ø#×-Ñ-¨a°Ó3ˆà&‰ˆÜ#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 +Ó.ˆØÐ(Ð(r-   )rÔ   rN   ri   rÕ   rÞ   rØ   rÏ   r²   rÚ   rÝ   r×   r¬   rÛ   rÙ   rŠ   )
r>   r?   r@   rA   Ú__doc__r    r;   rB   rC   rD   rE   s   @@r+   rÍ   rÍ   Ó   s"   ù‡ € ÙG÷õ ÷@.)÷ .)ò .)r-   rÍ   c                   óT   a a€ ] tR tRt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚCohereDecoderLayeri'  c                ó&   <€ V ^8„  d   QhRS[ RS[/# )rM   rN   rÏ   rÐ   )rO   rF   s   "€r+   rP   ÚCohereDecoderLayer.__annotate__(  s   ø€ ÷ lñ l™|ð l¹ñ lr-   c                óÔ   <€ \         SV `  4        VP                  V n        \        WR 7      V n        \        V4      V n        \        VP                  VP                  R7      V n	        R# ))rN   rÏ   rÓ   N)
r   r    r'   rÍ   Ú	self_attnrŽ   Úmlpr   rÜ   Úinput_layernormrß   s   &&&€r+   r    ÚCohereDecoderLayer.__init__(  sP   ø€ Ü‰ÑÔØ!×-Ñ-ˆÔÜ(°ÔLˆŒÜ˜VÓ$ˆŒÜ.¸F×<NÑ<NÐU[×UjÑUjÔkˆÖr-   c                ó.  <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[S[ P                  S[ P                  3,          R,          RS[S[,          R	S[ P                  /# )
rM   r8   r«   Nr„   rã   Ú	use_cacherâ   rn   rc   )r"   re   Ú
LongTensorr   Úboolrd   r   r
   )rO   rF   s   "€r+   rP   ró   /  sœ   ø€ ÷ *ñ *á—|‘|ð*ñ Ÿ™ tÕ+ð*ñ ×&Ñ&¨Õ-ð	*ñ
  �ð*ñ ˜$•;ð*ñ #¡5§<¡<±·±Ð#=Õ>ÀÕEð*ñ Ñ-Õ.ð*ñ 
�‰ñ*r-   c                ó¬   € TpV P                  V4      pV P                  ! RRVRVRVRVRVRV/VB w  ršV P                  V4      pW‰,           V,           pV# )a<  
Args:
    hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)`
    attention_mask (`torch.FloatTensor`, *optional*):
        attention mask of size `(batch_size, sequence_length)` if flash attention is used or `(batch_size, 1,
        query_sequence_length, key_sequence_length)` if default attention is used.
    past_key_values (`Cache`, *optional*): cached past key and value projection states
    output_attentions (`bool`, *optional*):
        Whether or not to return the attentions tensors of all attention layers. See `attentions` under
        returned tensors for more detail.
    use_cache (`bool`, *optional*):
        If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding
        (see `past_key_values`).
    position_embeddings (`tuple[torch.FloatTensor, torch.FloatTensor]`, *optional*):
        Tuple containing the cosine and sine positional embeddings of shape `(batch_size, seq_len, head_dim)`,
        with `head_dim` being the embedding dimension of each attention head.
r8   r«   r„   rã   rú   râ   © )r÷   rõ   rö   )r&   r8   r«   r„   rã   rú   râ   rn   ÚresidualÚhidden_states_attentionÚ_Úhidden_states_mlps   &&&&&&&,    r+   r;   ÚCohereDecoderLayer.forward/  s’   € ð6 !ˆØ×,Ñ,¨]Ó;ˆà%)§^¢^ñ &
Ø'ð&
à)ð&
ð &ð&
ð ,ð	&
ð
  ð&
ð !4ð&
ð ñ&
Ñ"Ðð !ŸH™H ]Ó3ÐØ Õ:Ð=NÕNˆØÐr-   )r'   r÷   rö   rõ   )NNNFNr=   rE   s   @@r+   rñ   rñ   '  s    ù‡ € ÷ló l÷*÷ *ò *r-   rñ   c                   ó`   a € ] tR tRt o RtRtR.tR.tRtRt	Rt
RtRtR]R]/tV 3R ltR	tV tR
# )ÚCoherePreTrainedModeli\  ÚmodelTrñ   rã   r8   Ú
attentionsc                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # rL   r   )rO   rF   s   "€r+   rP   Ú"CoherePreTrainedModel.__annotate__\  s   ø‡ ‚ áÑò r-   rþ   N)r>   r?   r@   rA   Ú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_outputsÚ__annotate_func__rB   rC   )rF   s   @r+   r  r  \  s\   ø‡ € ð  ÐØ&*Ð#Ø-Ð.ÐØ#4Ð"5ÐØÐØ€NØÐà!ÐØ"&ÐàÐ+Ø�oðÐ÷ ƒ r-   r  c                   ór   a a€ ] tR tRt oV3R lV 3R llt]]]RV3R lR ll4       4       4       tRt	Vt
V ;t# )ÚCohereModelio  c                ó    <€ V ^8„  d   QhRS[ /# rL   r   )rO   rF   s   "€r+   rP   ÚCohereModel.__annotate__q  s   ø€ ÷ ñ ™|ñ r-   c           	     ó  <€ \         SV `  V4       VP                  V n        VP                  V n        \
        P                  ! VP                  VP                  V P                  4      V n        \
        P                  ! \        VP                  4       Uu. uF  p\        W4      NK  	  up4      V n        \        VP                  VP                  R 7      V n        \#        VR7      V n        RV n        V P)                  4        R# u upi )rÓ   ©rN   FN)r   r    Úpad_token_idÚpadding_idxÚ
vocab_sizer   Ú	Embeddingr'   Úembed_tokensÚ
ModuleListÚrangeÚnum_hidden_layersrñ   Úlayersr   rÜ   ÚnormrH   Ú
rotary_embÚgradient_checkpointingÚ	post_initrß   s   && €r+   r    ÚCohereModel.__init__q  sÊ   ø€ Ü‰Ñ˜Ô Ø!×.Ñ.ˆÔØ ×+Ñ+ˆŒäŸLšL¨×):Ñ):¸F×<NÑ<NÐPT×P`ÑP`ÓaˆÔÜ—m’mÜDIÈ&×JbÑJbÔDcÓdÑDc°yÔ Ö2ÑDcÑdó
ˆŒô $°×1CÑ1CÈ&×J_ÑJ_Ô`ˆŒ	Ü/°vÔ>ˆŒØ&+ˆÔ#ð 	�‰Öùò es   ÂDc                óþ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[R,          RS[S[,          R	S[/# )
rM   Ú	input_idsNr«   r„   rã   Úinputs_embedsrú   rn   rc   )	r"   rû   re   r   ÚFloatTensorrü   r   r   r   )rO   rF   s   "€r+   rP   r  „  s“   ø€ ÷ 2
ñ 2
á×#Ñ# dÕ*ð2
ñ Ÿ™ tÕ+ð2
ñ ×&Ñ&¨Õ-ð	2
ñ
  �ð2
ñ ×(Ñ(¨4Õ/ð2
ñ ˜$•;ð2
ñ Ñ+Õ,ð2
ñ 
!ñ2
r-   c                óˆ  € VR J VR J,          '       d   \        R4      hVf   V P                  V4      pV'       d   Vf   \        V P                  R7      pVfb   Ve   VP	                  4       M^ p\
        P                  ! VP                  ^,          VP                  R7      V,           pVP                  ^ 4      p\        V P                  VVVVR7      p	Tp
V P                  W£R7      pV P                  R V P                  P                    F  pV! V
3RV	RVRVR	VR
V/VB p
K  	  V P                  V
4      p
\        V
VR7      # )Nz:You must specify exactly one of input_ids or inputs_embedsr  )rI   )rN   r+  r«   rã   r„   )r„   r«   râ   r„   rã   rú   )Úlast_hidden_staterã   )Ú
ValueErrorr  r   rN   Úget_seq_lengthr"   rm   r{   rI   rÅ   r	   r%  r#  r"  r$  r   )r&   r*  r«   r„   rã   r+  rú   rn   Úpast_seen_tokensÚcausal_maskr8   râ   Údecoder_layers   &&&&&&&,     r+   r;   ÚCohereModel.forward�  se  € ð ˜Ð -°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Ù)Øñà*ðð %8ðð *ð	ð
 !0ðð $ðð ñŠMñ Jð Ÿ	™	 -Ó0ˆÜ&Ø+Ø+ô
ð 	
r-   )r  r&  r#  r$  r  r%  r  )NNNNNN)r>   r?   r@   rA   r    r   r   r   r;   rB   rC   rD   rE   s   @@r+   r  r  o  s=   ù‡ € ÷ó ð   ØØ÷2
ñ 2
ó ó ó  ÷2
ð 2
r-   r  c                   ó„   a a€ ] tR tRt oRR/tRR/tRR.R.3/tRR/tV 3R	 lt]	]
RV3R
 lR ll4       4       tRtVtV ;t# )ÚCohereForCausalLMi¹  zlm_head.weightzmodel.embed_tokens.weightÚlm_headÚcolwise_gather_outputr8   ÚlogitsÚkeep_full_weightc                ó0  <€ \         SV `  V4       \        V4      V n        VP                  V n        \
        P                  ! VP                  VP                  R R7      V n        VP                  V n	        VP                  V n
        V P                  4        R# r�   )r   r    r  r  r  r   r“   r'   r7  Úlogit_scaleÚtie_word_embeddingsr'  r™   s   &&€r+   r    ÚCohereForCausalLM.__init__À  sq   ø€ Ü‰Ñ˜Ô Ü  Ó(ˆŒ
Ø ×+Ñ+ˆŒÜ—y’y ×!3Ñ!3°V×5FÑ5FÈUÔSˆŒØ!×-Ñ-ˆÔØ#)×#=Ñ#=ˆÔ ð 	�‰Ör-   c                óP  <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[R,          RS[ P                  R,          RS[ P                  R,          RS[R,          R	S[S[ P                  ,          R
S[S[,          RS[	/
# )rM   r*  Nr«   r„   rã   r+  Úlabelsrú   Úlogits_to_keeprn   rc   )
r"   rû   re   r   r,  rü   rŸ   r   r   r   )rO   rF   s   "€r+   rP   ÚCohereForCausalLM.__annotate__Í  s»   ø€ ÷ 6
ñ 6
á×#Ñ# dÕ*ð6
ñ Ÿ™ tÕ+ð6
ñ ×&Ñ&¨Õ-ð	6
ñ
  �ð6
ñ ×(Ñ(¨4Õ/ð6
ñ × Ñ  4Õ'ð6
ñ ˜$•;ð6
ñ ™eŸl™lÕ*ð6
ñ Ñ+Õ,ð6
ñ 
 ñ6
r-   c	                óº  € V P                   ! RRVRVRVRVRVRV/V	B p
V
P                  p\        V\        4      '       d   \	        V) R4      MTpV P                  VRVR3,          4      pWÐP                  ,          pRpVe-   V P                  ! RR	VR
VRV P                  P                  /V	B p\        VVV
P                  V
P                  V
P                  R7      # )au  
Example:

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

>> model = CohereForCausalLM.from_pretrained("CohereForAI/c4ai-command-r-v01")
>> tokenizer = AutoTokenizer.from_pretrained("CohereForAI/c4ai-command-r-v01")

>> 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ú   Nry   r9  r@  r  )Úlossr9  rã   r8   r  rþ   )r  r.  r|   rŸ   Úslicer7  r<  Úloss_functionrN   r  r   rã   r8   r  )r&   r*  r«   r„   rã   r+  r@  rú   rA  rn   Úoutputsr8   Úslice_indicesr9  rD  s   &&&&&&&&&,     r+   r;   ÚCohereForCausalLM.forwardË  s  € ð> ,0¯:ª:ñ ,
Øð,
à)ð,
ð &ð,
ð ,ð	,
ð
 (ð,
ð  ð,
ð ñ,
ˆð  ×1Ñ1ˆÜ8BÀ>ÔSV×8WÒ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜m¨A¨}¸aÐ,?Õ@ÓAˆØ×*Ñ*Õ*ˆàˆØÒØ×%Ò%Ñp¨VÐp¸FÐpÈtÏ{É{×OeÑOeÐpÐioÑpˆDä%ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r-   )r7  r<  r  r=  r  )NNNNNNNr   )r>   r?   r@   rA   Ú_tied_weights_keysÚ_tp_planÚ_pp_planÚ
_fsdp_planr    r   r   r;   rB   rC   rD   rE   s   @@r+   r6  r6  ¹  sf   ù‡ € à*Ð,GÐHÐØÐ2Ð3€HØ˜_Ð-°¨zÐ:Ð;€HØÐ/Ð0€Jõ	ð Ø÷6
ñ 6
ó ó ÷6
ð 6
r-   r6  )rå   )r/   )r6  r  r  )7Úcollections.abcr   r"   r   Úactivationsr   Úcache_utilsr   r   Ú
generationr   Úmasking_utilsr	   Úmodeling_flash_attention_utilsr
   Úmodeling_layersr   Úmodeling_outputsr   r   Úmodeling_rope_utilsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   Úutils.deprecationr   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_coherer   r®   r   rH   rŽ   r¥   r»   rÃ   rË   rÍ   rñ   r  r  r6  Ú__all__rþ   r-   r+   Ú<module>r_     s  ðõ: %ã Ý å !ß .Ý )Ý /Ý BÝ 9ß Oß Kß FÝ &ß IÑ IÝ 0ß GÝ 5Ý .ô-�b—i‘iô -ô"3<˜BŸI™Iô 3<ôl�—	‘	ô õ 	U÷%ò2ô<ô8Q)�b—i‘iô Q)ôh2Ð3ô 2ðj ô˜Oó ó ðð$ ôF
Ð'ó F
ó ðF
ðR ôI
Ð-¨ó I
ó ðI
òX H‚r-   