+
    œ°³je‚  ã                   óˆ  € ^ RI t ^ RIHt ^ RIt^ RIHu Ht ^ RIHt ^RIH	t
 ^RIHt ^RIHtHt ^RIHt ^RIHtHt ^R	IHt ^R
IHt ^RIHtHt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/H0t0 ^RI1H2t2 ^RI3H4t4 ]! R4       ! R R]Pj                  4      4       t6 ! R R]Pj                  4      t7 ! R R]Pj                  4      t8 ! R R]Pj                  4      t9] ! R R]Pj                  4      4       t: ! R  R!]Pj                  4      t;R" R# lt<R<R$ R% llt=R=R& lt>R' t?R( t@]! R)4      R>R* l4       tAR?R+ ltBR, R- ltC ! R. R/]Pj                  4      tD ! R0 R1]4      tE ! R2 R3]%4      tF]* ! R4 R5]F4      4       tG]* ! R6 R7]F]4      4       tH ! R8 R9]]F4      tI ! R: R;]]F4      tJ. R@OtKR# )Aé    N)ÚCallable)Únn)Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)Úuse_experts_implementationÚuse_kernel_forward_from_hub)Úcreate_causal_mask)ÚFlashAttentionKwargs)Ú GenericForSequenceClassificationÚGenericForTokenClassificationÚ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©ÚMistral4ConfigÚRMSNormc                   óZ   a a€ ] tR t^2t oRV3R lV 3R llltV3R lR ltR tRtVtV ;t	# )ÚMistral4RMSNormc                ó$   <€ V ^8„  d   QhRS[ RR/# )é   ÚepsÚreturnN)Úfloat)ÚformatÚ__classdict__s   "€Úo/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/mistral4/modeling_mistral4.pyÚ__annotate__ÚMistral4RMSNorm.__annotate__4   s   ø€ ÷ $ñ $©ð $¸$ñ $ó    c                óŽ   <€ \         SV `  4        \        P                  ! \        P
                  ! V4      4      V n        W n        R# )z.
Mistral4RMSNorm is equivalent to T5LayerNorm
N)ÚsuperÚ__init__r   Ú	ParameterÚtorchÚonesÚweightÚvariance_epsilon)ÚselfÚhidden_sizer&   Ú	__class__s   &&&€r+   r1   ÚMistral4RMSNorm.__init__4   s/   ø€ ô 	‰ÑÔÜ—l’l¤5§:¢:¨kÓ#:Ó;ˆŒØ #Ör.   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r%   Úhidden_statesr'   ©r3   ÚTensor)r)   r*   s   "€r+   r,   r-   <   s#   ø€ ÷ ;ñ ;¡U§\¡\ð ;±e·l±lñ ;r.   c                ó:  € VP                   pVP                  \        P                  4      pVP	                  ^4      P                  RRR7      pV\        P                  ! W0P                  ,           4      ,          pV P                  VP                  V4      ,          # )r%   T)Úkeepdiméÿÿÿÿ)	ÚdtypeÚtor3   Úfloat32ÚpowÚmeanÚrsqrtr6   r5   )r7   r=   Úinput_dtypeÚvariances   &&  r+   ÚforwardÚMistral4RMSNorm.forward<   sw   € Ø#×)Ñ)ˆØ%×(Ñ(¬¯©Ó7ˆØ ×$Ñ$ QÓ'×,Ñ,¨R¸Ð,Ó>ˆØ%¬¯ª°H×?TÑ?TÕ4TÓ(UÕUˆØ�{‰{˜]×-Ñ-¨kÓ:Õ:Ð:r.   c                ó^   € \        V P                  P                  4       R V P                   2# )z, eps=)Útupler5   Úshaper6   )r7   s   &r+   Ú
extra_reprÚMistral4RMSNorm.extra_reprC   s*   € Ü˜Ÿ™×)Ñ)Ó*Ð+¨6°$×2GÑ2GÐ1HÐIÐIr.   )r6   r5   )g�íµ ÷Æ°>)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r1   rK   rP   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r9   r*   s   @@r+   r#   r#   2   s%   ù‡ € ÷$õ $÷;ð ;÷Jò Jr.   r#   c                   óÎ   a a€ ] tR t^Gt 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# )ÚMistral4RotaryEmbeddingÚdevicez5.18)Úversionc                ó    <€ V ^8„  d   QhRS[ /# ©r%   Úconfigr   )r)   r*   s   "€r+   r,   Ú$Mistral4RotaryEmbedding.__annotate__I   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)r0   r1   Úmax_position_embeddingsÚmax_seq_len_cachedÚoriginal_max_seq_lenr`   Úrope_parametersrc   Úcompute_default_rope_parametersr   Úattention_scalingr   ÚBufferÚinv_freqÚcloneÚoriginal_inv_freq)r7   r`   r\   Úrope_init_fnrm   r9   s   &&&  €r+   r1   Ú Mistral4RotaryEmbedding.__init__H   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,          /# )r%   r`   r'   )r    rN   r3   r?   r(   )r)   r*   s   "€r+   r,   ra   [   s.   ø€ ÷ 5ñ 5±ð 5ÑZ_Ñ`e×`lÑ`lÑnsÐ`sÕZtñ 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_dimNç      ð?©rC   )ri   Úgetattrr8   Únum_attention_headsr3   Úaranger(   rD   )r`   r\   ÚkwargsÚbaseÚdimÚattention_factorrm   s   &&,    r+   rj   Ú7Mistral4RotaryEmbedding.compute_default_rope_parametersY   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                ó^  € V P                   R,          P                  VP                  ^ ,          R	^4      P                  \        P
                  VP                  R7      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        W4,          P                  ^^4      p\        P                  ! Wf3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)rC   r\   ÚmpsÚcpuF)Údevice_typeÚenabled©r}   rw   )NºNNNNrB   )r†   Nr†   )rm   ÚexpandrO   rD   r3   r(   r\   Ú
isinstanceÚtypeÚstrr   Ú	transposeÚcatÚcosrk   ÚsinrC   )
r7   ÚxÚposition_idsÚinv_freq_expandedÚposition_ids_expandedrƒ   ÚfreqsÚembr�   rŽ   s
   &&&       r+   rK   ÚMistral4RotaryEmbedding.forwardm   s2  € ð �M‰M˜-Õ(×/Ñ/°×0BÑ0BÀ1Õ0EÀrÈ1ÓM×PÑPÔW\×WbÑWbÐkl×ksÑksÐPÓtð 	ð !-¨ZÕ 8× >Ñ >Ó @Ðä'1°!·(±(·-±-Ä×'EÒ'EÈ!Ï(É(Ï-É-Ð[`ÔJ`�a—h‘h—m’mÐfkˆä¨¸U×CÖCØ&Õ>×IÑIÈ!ÈQÓOˆ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   Ã(A4FÆF,	)rk   r`   rm   rg   ro   rh   rc   ©N)rR   rS   rT   rU   r   r1   Ústaticmethodrj   r3   Úno_gradr   rK   rV   rW   rX   rY   s   @@r+   r[   r[   G   su   ù‡ € Ù�X vÔ.÷Oô Oó /ðOð  Ù�X vÔ.÷5ñ 5ó /ó ð5ð$ ‡]‚]ƒ_Øñ<ó ó ÷<ð <r.   r[   c                   ó<   a a€ ] tR t^€t oRV 3R lltR tRtVtV ;t# )ÚMistral4MLPc                óä  <€ \         SV `  4        Wn        VP                  V n        Vf   VP                  MT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 # )NF©Úbias)r0   r1   r`   r8   Úintermediate_sizer   ÚLinearÚ	gate_projÚup_projÚ	down_projr   Ú
hidden_actÚact_fn)r7   r`   rž   r9   s   &&&€r+   r1   ÚMistral4MLP.__init__�   s¬   ø€ Ü‰ÑÔØŒØ!×-Ñ-ˆÔØ=NÒ=V ×!9Ò!9Ð\mˆÔÜŸš 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¡   )r7   r�   r¢   s   && r+   rK   ÚMistral4MLP.forward‹   s6   € Ø—N‘N 4§;¡;¨t¯~©~¸aÓ/@Ó#AÀDÇLÁLÐQRÃOÕ#SÓTˆ	ØÐr.   )r¤   r`   r¢   r    r8   rž   r¡   r–   ©	rR   rS   rT   rU   r1   rK   rV   rW   rX   rY   s   @@r+   rš   rš   €   s   ù‡ € ÷0÷ò r.   rš   c                   ó8   a a€ ] tR t^�t oV 3R ltR tRtVtV ;t# )ÚMistral4TopkRouterc                óš  <€ \         SV `  4        VP                  V n        VP                  V n        VP                  V n        \        P                  ! \        P                  ! V P
                  V P                  4      4      V n        VP                  V n        VP                  V n        VP                   V n        VP"                  V n        R # r–   )r0   r1   Únum_experts_per_tokÚtop_kÚnum_local_expertsÚnum_expertsr8   Ú
hidden_dimr   r2   r3   Úzerosr5   Úrouted_scaling_factorÚn_groupÚ	num_groupÚ
topk_groupÚnorm_topk_prob©r7   r`   r9   s   &&€r+   r1   ÚMistral4TopkRouter.__init__‘   s�   ø€ Ü‰ÑÔØ×/Ñ/ˆŒ
Ø!×3Ñ3ˆÔØ ×,Ñ,ˆŒÜ—l’l¤5§;¢;¨t×/?Ñ/?ÀÇÁÓ#QÓRˆŒØ%+×%AÑ%AˆÔ"ØŸ™ˆŒØ ×+Ñ+ˆŒØ$×3Ñ3ˆÖr.   c                ó  € VP                  RV P                  4      p\        P                  ! WP                  4      pVP                  R4      pVP                  RV P                  V P                  V P                  ,          4      P                  ^RR7      ^ ,          P                  RR7      p\        P                  ! W@P                  RRR7      ^,          p\        P                  ! V4      pVP                  ^V^4       VP                  R4      P                  RV P                  V P                  V P                  ,          4      P!                  RV P                  4      pVP#                  VP%                  4       ( R4      p\        P                  ! W€P&                  RRR7      ^,          p	VP)                  ^V	4      p
V P*                  '       d#   V
P                  RRR7      R,           pW«,          p
W P,                  ,          p
W*V	3# )	é   r…   F)Úkr}   Úsortedç        T)r}   rA   g#B’¡œÇ;rB   )Úviewr°   ÚFÚlinearr5   Úsoftmaxr´   r¯   ÚtopkÚsumr3   rµ   Ú
zeros_likeÚscatter_Ú	unsqueezer‡   ÚreshapeÚmasked_fillÚboolr­   Úgatherr¶   r²   )r7   r=   Úrouter_logitsÚscoresÚgroup_scoresÚ	group_idxÚ
group_maskÚ
score_maskÚscores_for_choiceÚtopk_indicesÚtopk_weightsÚdenominators   &&          r+   rK   ÚMistral4TopkRouter.forwardœ   s£  € Ø%×*Ñ*¨2¨t¯©Ó?ˆÜŸš ·±Ó<ˆØ×&Ñ& rÓ*ˆà�K‰K˜˜DŸN™N¨D×,<Ñ,<ÀÇÁÕ,NÓO×TÑTÐUVÐ\^ÐTÓ_Ð`aÕb×fÑfÐkmÐfÓnð 	ô —J’J˜|¯©ÀBÈuÔUÐVWÕXˆ	Ü×%Ò% lÓ3ˆ
Ø×Ñ˜A˜y¨!Ô,à× Ñ  Ó$ß‰V�B˜Ÿ™¨×(8Ñ(8¸D¿N¹NÕ(JÓKß‰W�R˜×)Ñ)Ó*ð 	ð
 #×.Ñ.°
·±Ó0AÐ/AÀ3ÓGÐÜ—z’zÐ"3·z±zÀrÐRWÔXÐYZÕ[ˆØ—}‘} Q¨Ó5ˆØ××ÐØ&×*Ñ*¨r¸4Ð*Ó@À5ÕHˆKØÕ'ˆLØ#×&@Ñ&@Õ@ˆØ¨LÐ8Ð8r.   )r°   r¶   r¯   r´   r²   r­   rµ   r5   r¨   rY   s   @@r+   rª   rª   �   s   ù‡ € õ	4÷9ò 9r.   rª   c                   óH   a a€ ] tR t^µt oRtV 3R ltV3R lR ltRtVtV ;t	# )ÚMistral4Expertsz2Collection of expert weights stored as 3D tensors.c                ó  <€ \         SV `  4        VP                  V n        VP                  V n        VP                  V n        \        P                  ! \        P                  ! V P                  ^V P                  ,          V P
                  4      4      V n        \        P                  ! \        P                  ! V P                  V P
                  V P                  4      4      V n        \        VP                  ,          V n        R# )r%   N)r0   r1   r®   r¯   r8   r°   Úmoe_intermediate_sizeÚintermediate_dimr   r2   r3   ÚemptyÚgate_up_projr¢   r   r£   r¤   r·   s   &&€r+   r1   ÚMistral4Experts.__init__¹   s­   ø€ Ü‰ÑÔØ!×3Ñ3ˆÔØ ×,Ñ,ˆŒØ &× <Ñ <ˆÔÜŸLšL¬¯ª°T×5EÑ5EÀqÈ4×K`ÑK`ÕG`Ðbf×bqÑbqÓ)rÓsˆÔÜŸš¤e§k¢k°$×2BÑ2BÀDÇOÁOÐUY×UjÑUjÓ&kÓlˆŒÜ˜V×.Ñ.Õ/ˆŽr.   c                ó‚   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[ P                  /# )r%   r=   Útop_k_indexÚtop_k_weightsr'   r>   )r)   r*   s   "€r+   r,   ÚMistral4Experts.__annotate__Â   sC   ø€ ÷ #ñ #á—|‘|ð#ñ —\‘\ð#ñ —|‘|ð	#ñ
 
�‰ñ#r.   c                óÆ  € \         P                  ! V4      p\         P                  ! 4       ;_uu_ 4        \         P                  P                  P                  W P                  R 7      pVP                  ^^^ 4      p\         P                  ! VP                  RR7      ^ 4      P                  4       pRRR4       X EF  pV^ ,          pWpP                  8X  d   K  \         P                  ! XV,          4      w  r‰W,          p
\        P                  P                  W P                  V,          4      P                  ^RR7      w  r¼V P                  V4      V,          p\        P                  P                  WÐP                   V,          4      pWÓW˜R3,          ,          pVP#                  ^ W�P%                  VP&                  4      4       EK  	  V#   + '       g   i     EL'; i))Únum_classesr…   NrB   )rB   éþÿÿÿ)r3   rÄ   r˜   r   Ú
functionalÚone_hotr¯   ÚpermuteÚgreaterrÃ   ÚnonzeroÚwhererÀ   rÜ   Úchunkr¤   r¢   Ú
index_add_rD   rC   )r7   r=   rß   rà   Úfinal_hidden_statesÚexpert_maskÚ
expert_hitÚ
expert_idxÚ	top_k_posÚ	token_idxÚcurrent_stateÚgateÚupÚcurrent_hidden_statess   &&&&          r+   rK   ÚMistral4Experts.forwardÂ   ss  € ô $×.Ò.¨}Ó=ÐÜ�]Š]�_�_ÜŸ(™(×-Ñ-×5Ñ5°k×O_ÑO_Ð5Ó`ˆKØ%×-Ñ-¨a°°AÓ6ˆKÜŸš {§¡¸8 Ó'DÀaÓH×PÑPÓRˆJ÷ ô
 %ˆJØ# A�ˆJØ×-Ñ-Ô-ÙÜ#(§;¢;¨{¸:Õ/FÓ#GÑ ˆIØ)Õ4ˆMÜ—}‘}×+Ñ+¨M×;LÑ;LÈZÕ;XÓY×_Ñ_Ð`aÐgiÐ_Ój‰HˆDØ$(§K¡K°Ó$5¸Õ$:Ð!Ü$&§M¡M×$8Ñ$8Ð9N×P^ÑP^Ð_iÕPjÓ$kÐ!Ø$9È)Ð`dÐJdÕ<eÕ$eÐ!Ø×*Ñ*¨1¨i×9QÑ9QÐRe×RkÑRkÓ9l×mñ %ð #Ð"÷# �_ˆ_ús   ´A=GÇG 	)r¤   r¢   rÜ   r°   rÚ   r¯   ©
rR   rS   rT   rU   Ú__doc__r1   rK   rV   rW   rX   rY   s   @@r+   r×   r×   µ   s   ù‡ € á<õ0÷#÷ #ð #r.   r×   c                   óT   a a€ ] tR t^Ýt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚMistral4MoEz2
A mixed expert module containing shared experts.
c                ó    <€ V ^8„  d   QhRS[ /# r_   r   )r)   r*   s   "€r+   r,   ÚMistral4MoE.__annotate__â   s   ø€ ÷ 
ñ 
™~ñ 
r.   c                óÈ   <€ \         SV `  4        Wn        \        V4      V n        \        V4      V n        \        WP                  VP                  ,          R 7      V n
        R# ))r`   rž   N)r0   r1   r`   r×   Úexpertsrª   rô   rš   rÙ   Ún_shared_expertsÚshared_expertsr·   s   &&€r+   r1   ÚMistral4MoE.__init__â   sL   ø€ Ü‰ÑÔØŒÜ& vÓ.ˆŒÜ& vÓ.ˆŒ	Ü)Ø×-IÑ-IÈF×LcÑLcÕ-cô
ˆÖr.   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r<   r>   )r)   r*   s   "€r+   r,   rý   ë   s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r.   c                óþ   € TpVP                   pV P                  V4      w  rEpVP                  RVP                   R,          4      pV P                  WV4      P                  ! V!  pWP	                  V4      ,           pV# )rº   rB   )rO   rô   r¾   rÿ   r  )r7   r=   Ú	residualsÚ
orig_shapeÚ_rÓ   rÒ   s   &&     r+   rK   ÚMistral4MoE.forwardë   sw   € Ø!ˆ	Ø"×(Ñ(ˆ
Ø(,¯	©	°-Ó(@Ñ%ˆ˜Ø%×*Ñ*¨2¨}×/BÑ/BÀ2Õ/FÓGˆØŸ™ ]À,ÓO×TÒTÐV`ÑaˆØ%×(;Ñ(;¸IÓ(FÕFˆØÐr.   )r`   rÿ   rô   r  rø   rY   s   @@r+   rû   rû   Ý   s#   ù‡ € ñ÷
ó 
÷÷ ð r.   rû   c                ód   € V ^8„  d   QhR\         P                  R\        R\         P                  /# )r%   r=   Ún_repr'   )r3   r?   Úint)r)   s   "r+   r,   r,   õ   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)
)r†   r†   Nr†   r†   )rO   r‡   rÇ   )r=   r
  ÚbatchÚnum_key_value_headsÚslenru   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	\
        \        ,          /# )
r%   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚscalingÚdropoutr{   )r   ÚModuler3   r?   r(   r   r   )r)   s   "r+   r,   r,     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# )r%   )r}   rC   )ÚpÚtrainingrB   )r  Únum_key_value_groupsr3   Úmatmulr‹   r   rå   rÁ   rE   rD   rC   r  r  Ú
contiguous)r  r  r  r  r  r  r  r{   Ú
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                 ój   € V ^8:  d   R# RV,          \         P                  ! V 4      ,          R,           # )rº   rv   gš™™™™™¹?)ÚmathÚlog)ÚscaleÚmscales   &&r+   Úyarn_get_mscaler*    s(   € Ø�„zÙØ��<œ$Ÿ(š( 5›/Õ)¨CÕ/Ð/r.   c                 ó®   € V P                  R R4      R8w  d>   V P                  R^ 4      pV R,          pV'       d   \        W24      pW,          V,          pV# )rc   rd   Úmscale_all_dimÚfactor)Úgetr*  )ri   r  r,  Úscaling_factorr)  s   &&   r+   Úyarn_apply_mscaler0     sS   € Ø×Ñ˜;¨	Ó2°iÔ?Ø(×,Ñ,Ð-=¸qÓAˆØ(¨Õ2ˆßÜ$ ^ÓDˆFØÕ&¨Õ/ˆGØ€Nr.   c                óÌ   € V RRV P                   R,          ^,          13,          pV RV P                   R,          ^,          R13,          p\        P                  ! V) V3RR7      # )z*Rotates half the hidden dims of the input..Nr…   rB   )rO   r3   rŒ   )r�   Úx1Úx2s   &  r+   Úrotate_halfr4  *  sZ   € à	
ˆ3Ð"�!—'‘'˜"•+ Õ"Ð"Ð"Õ	#€BØ	
ˆ3�—‘˜•˜qÕ Ñ"Ð"Õ	#€BÜ�9Š9�r�c˜2�Y BÔ'Ð'r.   Úrotary_pos_embc                óÈ   € VP                  V4      pVP                  V4      pW,          \        V 4      V,          ,           pW,          \        V4      V,          ,           pWV3# )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.
)rÆ   r4  )Úqr»   r�   rŽ   Úunsqueeze_dimÚq_embedÚk_embeds   &&&&&  r+   Úapply_rotary_pos_embr;  1  sS   € ð& �-‰-˜Ó
&€CØ
�-‰-˜Ó
&€CØ�wœ; q›>¨CÕ/Õ0€GØ�wœ; q›>¨CÕ/Õ0€GØÐÐr.   c                ó  € VRRVP                   R,          ^,          13,          P                  V4      pVRRVP                   R,          ^,          13,          P                  V4      pV R,          V R,          rvVR,          VR,          r˜\        P                  ! Wb,          Ws,          ,
          Wr,          Wc,          ,           .RR7      p
\        P                  ! W‚,          W“,          ,
          W’,          Wƒ,          ,           .RR7      pW«3# )aŸ  
Applies interleaved Rotary Position Embedding to the query and key tensors.

DeepSeek lays the rotary dimensions out in interleaved pairs `(x0, x1), (x2, x3), ...`, each rotated by a
single frequency. We compute that rotation directly on the even/odd slices instead of de-interleaving with a
`view`/`transpose`/`reshape`; the output is bit-identical to the de-interleaved `rotate_half` formulation while
avoiding the extra contiguous copy.

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.
    position_ids (`torch.Tensor`):
        The position indices of the tokens corresponding to the query and key tensors. For example, this can be
        used to pass offsetted position ids when working with a KV-cache.
    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.
.Nr…   rB   ).:r   Nr%   ).:rº   Nr%   )rO   rÆ   r3   rŒ   )r7  r»   r�   rŽ   r�   r8  Úq1Úq2Úk1Úk2r9  r:  s   &&&&&&      r+   Úapply_rotary_pos_emb_interleaverA  K  sÓ   € ð8 ˆcÐ'�S—Y‘Y˜r•] aÕ'Ð'Ð'Õ
(×
2Ñ
2°=Ó
A€CØ
ˆcÐ'�S—Y‘Y˜r•] aÕ'Ð'Ð'Õ
(×
2Ñ
2°=Ó
A€Càˆy�\˜1˜Y�<ˆØˆy�\˜1˜Y�<ˆä�iŠi˜� B¥HÕ,¨b­h¸½Õ.AÐBÈÔK€GÜ�iŠi˜� B¥HÕ,¨b­h¸½Õ.AÐBÈÔK€GØÐÐr.   c                óp   € V ^8„  d   QhR\         P                  R\        R\        R\         P                  /# )r%   Úpositions_idsÚbetarf   r'   )r3   r?   r(   r  )r)   s   "r+   r,   r,   r  s4   € ÷ %ñ %¬%¯,©,ð %¼eð %Ô^að %Ôfk×frÑfrñ %r.   c           	      óž   € ^V\         P                  ! ^\         P                  ! W,          4      ,           4      ,          ,           pVR,          # )rº   )r†   Nr†   N)r3   r'  Úfloor)rC  rD  rf   r  s   &&& r+   Úget_llama_4_attn_scalerG  r  s7   € Ø�$œŸš 1¤u§{¢{°=Õ3ZÓ'[Õ#[Ó\Õ\Õ\€GØÐ#Õ$Ð$r.   c                   ój   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltR
V3R lR lltR	tVt	V ;t
# )ÚMistral4Attentioniw  z4Multi-headed Latent Attention (MLA) from Deepseek V2c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r%   r`   Ú	layer_idx©r    r  )r)   r*   s   "€r+   r,   ÚMistral4Attention.__annotate__z  s   ø€ ÷ 5]ñ 5]™~ð 5]¹#ñ 5]r.   c                ó‚  <€ \         SV `  4        Wn        W n        VP                  V n        VP
                  V n        VP                  V n        VP                  V n        VP                  V n	        VP                  V n
        VP                  V n        VP                  V n        VP                  VP                  ,           V n        VP                  VP                  ,          V n        R V n        V P                  f?   \"        P$                  ! V P
                  V P                  V P                  ,          RR7      MRV n        V P                  e8   \"        P$                  ! V P
                  VP                  VP(                  R7      MRV n        V P                  e   \-        VP                  4      MRV n        V P                  e?   \"        P$                  ! VP                  V P                  V P                  ,          RR7      MRV n        \"        P$                  ! V P
                  VP                  VP                  ,           VP(                  R7      V n        \-        VP                  4      V n        \"        P$                  ! VP                  V P                  V P                  V P                  ,           ,          RR7      V n        \"        P$                  ! V P                  V P                  ,          V P
                  VP(                  R7      V n        \;        VP<                  V P                  R,          4      V n        R# )TNFrœ   g      à¿) r0   r1   r`   rL  Úattention_dropoutr8   ry   Ú	num_headsÚq_lora_rankÚqk_rope_head_dimÚkv_lora_rankÚ
v_head_dimÚqk_nope_head_dimÚqk_head_dimr  r  Ú	is_causalr   rŸ   Úq_projÚattention_biasÚq_a_projr#   Úq_a_layernormÚq_b_projÚkv_a_proj_with_mqaÚkv_a_layernormÚ	kv_b_projÚo_projr0  ri   r  ©r7   r`   rL  r9   s   &&&€r+   r1   ÚMistral4Attention.__init__z  s{  ø€ Ü‰ÑÔØŒØ"ŒØ!'×!9Ñ!9ˆÔØ!×-Ñ-ˆÔØ×3Ñ3ˆŒà!×-Ñ-ˆÔØ &× 7Ñ 7ˆÔØ"×/Ñ/ˆÔØ ×+Ñ+ˆŒØ &× 7Ñ 7ˆÔØ!×2Ñ2°V×5LÑ5LÕLˆÔØ$*×$>Ñ$>À&×B\ÑB\Õ$\ˆÔ!àˆŒð ×ÑÒ'ô �IŠI�d×&Ñ&¨¯©¸×9IÑ9IÕ(IÐPUÕVàð 	Œð ×ÑÒ+ô �IŠI�d×&Ñ&¨×(:Ñ(:À×AVÑAVÕWàð 	Œð
 EI×DTÑDTÒD`œ_¨V×-?Ñ-?Ô@ÐfjˆÔð ×ÑÒ+ô �IŠI�f×(Ñ(¨$¯.©.¸4×;KÑ;KÕ*KÐRWÕXàð 	Œô #%§)¢)Ø×ÑØ×Ñ &×"9Ñ"9Õ9Ø×&Ñ&ô#
ˆÔô
 .¨f×.AÑ.AÓBˆÔÜŸšØ×ÑØ�N‰N˜d×3Ñ3°d·o±oÕEÕFØô
ˆŒô —i’iØ�N‰N˜TŸ_™_Õ,Ø×ÑØ×&Ñ&ô
ˆŒô )¨×)?Ñ)?À×AQÑAQÐVZÕA[Ó\ˆŽr.   c                ó’   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[S[ P                  S[ P                  3,          /# )r%   Úkv_nopeÚk_rotr'   )r3   r?   rN   )r)   r*   s   "€r+   r,   rN  ±  s?   ø€ ÷ (ñ (¡§¡ð (±e·l±lð (ÁuÉUÏ\É\Ñ[`×[gÑ[gÐMgÕGhñ (r.   c                ó‚  € VP                   w  r4rTW5RV P                  V P                  ,           3pV P                  V4      P	                  V4      P                  ^^4      p\        P                  ! WP                  V P                  .RR7      w  rxVP                  RVP                   ^,          RR4      pVP                  ! . VP                   RR OV P                  V P                  ,           N5!  p	V	RRV P                  13,          P                  V4       V	RV P                  R13,          P                  V4       W˜3# )as  Expands the compressed latents into key and value states. Args:
    - kv_nope: key + value without positional encoding, shape [batch_size, 1, seqlen, self.kv_lora_rank]
    - k_rot: shared key with positional encoding, shape [batch_size, 1, seqlen, self.qk_rope_head_dim]
Returns the key and value states, two tensors of shape [batch, num_heads, seq, (k or v)_head_dim].
r…   N.rB   )rO   rV  rU  r`  r¾   r‹   r3   Úsplitr‡   Ú	new_emptyrS  Úcopy_)
r7   re  rf  Ú
batch_sizer  Ú
seq_lengthÚ	key_shapeÚk_noper!  r   s
   &&&       r+   Ú	expand_kvÚMistral4Attention.expand_kv±  s  € ð (/§}¡}Ñ$ˆ
�zØ¨R°×1FÑ1FÈÏÉÕ1XÐYˆ	à—.‘. Ó)×.Ñ.¨yÓ9×CÑCÀAÀqÓIˆÜ$Ÿ{š{¨7×5JÑ5JÈDÏOÉOÐ4\ÐbdÔeÑˆØ—‘˜R §¡¨a¥°"°bÓ9ˆð ×&Ò&Ðj¨¯©°c°rÐ(:Ðj¸D×<QÑ<QÐTX×TiÑTiÕ<iÓjˆ
Ø�3Ð/˜$×/Ñ/Ð/Ð/Õ0×6Ñ6°vÔ>Ø�3˜×-Ñ-Ñ/Ð/Õ0×6Ñ6°uÔ=ØÐ'Ð'r.   c                ól  <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  3,          RS[ P                  R,          RS[ P                  RS[R,          RS[S[,          RS[S[ P                  S[ P                  R,          S[S[ P                  ,          R,          3,          /# )	r%   r=   Úposition_embeddingsr  Nr�   Úpast_key_valuesr{   r'   )r3   r?   rN   r   r   r   )r)   r*   s   "€r+   r,   rN  Ä  s¥   ø€ ÷ >)ñ >)á—|‘|ð>)ñ #¡5§<¡<±·±Ð#=Õ>ð>)ñ Ÿ™ tÕ+ð	>)ñ
 —l‘lð>)ñ  �ð>)ñ Ñ-Õ.ð>)ñ 
‰u�|‰|™UŸ\™\¨DÕ0±%¹¿¹Õ2EÈÕ2LÐLÕ	Mñ>)r.   c                óÞ  € VP                   R R w  rxWxRV P                  3p	V P                  f   V P                  V4      p
M/V P	                  V P                  V P                  V4      4      4      p
V
P                  V	4      P                  ^^4      p
\        P                  ! W P                  V P                  .RR7      w  r¼V P                  V4      p\        P                  ! WÐP                  V P                  .RR7      w  rïV P                  V4      P                  V^W€P                  4      pVP                  V^W€P                  4      pVw  ppV P                   P"                  '       d   \%        WÏVV4      w  rÏM\'        WÏVV4      w  rÏVe    VP)                  VWðP*                  4      w  pp\        P,                  ! W¼3RR7      pV\/        VV P                   P0                  P3                  R4      V P                   P0                  P3                  R4      4      P5                  VP6                  4      ,          pV P9                  VV4      w  pp\:        P<                  ! V P                   P>                  \@        4      pT! V VVVV3RV PB                  '       g   RMV PD                  RV PF                  /VB w  ppVPI                  WxR4      PK                  4       pV PM                  V4      pVV3# )Nr…   Úllama_4_scaling_betaÚ original_max_position_embeddingsr  r½   r  rB   )'rO   rW  rR  rY  r]  r\  r[  r¾   r‹   r3   rh  rV  rS  r^  rT  r_  r`   Úrope_interleaverA  r;  ÚupdaterL  rŒ   rG  ri   r.  rD   rC   ro  r   Úget_interfaceÚ_attn_implementationr$  r  rP  r  rÇ   r  ra  )r7   r=   rr  r  r�   rs  r{   rk  rl  Úquery_shapeÚq_statesÚq_passÚq_rotÚcompressed_kvÚkv_passrf  Úk_passr�   rŽ   Úquery_statesr   r!  Úattention_interfacer#  r"  s   &&&&&&,                  r+   rK   ÚMistral4Attention.forwardÄ  sŸ  € ð "/×!4Ñ!4°S°bÐ!9Ñˆ
Ø!¨r°4×3CÑ3CÐDˆà×ÑÒ#Ø—{‘{ =Ó1‰Hà—}‘} T×%7Ñ%7¸¿¹ÀmÓ8TÓ%UÓVˆHØ—=‘= Ó-×7Ñ7¸¸1Ó=ˆÜŸš H×/DÑ/DÀd×F[ÑF[Ð.\ÐbdÔe‰ˆà×/Ñ/°Ó>ˆÜŸš ]×5FÑ5FÈ×H]ÑH]Ð4^ÐdfÔg‰ˆà×$Ñ$ WÓ-×2Ñ2°:¸qÀ*×N_ÑN_Ó`ˆØ—
‘
˜: q¨*×6KÑ6KÓLˆà&‰ˆˆSØ�;‰;×&×&Ð&Ü:¸5ÈÈcÓR‰LˆE�5ä/°¸cÀ3ÓG‰LˆEð Ò&Ø+×2Ñ2°6¸5Ç.Á.ÓQ‰MˆF�Eä—y’y & °bÔ9ˆà#Ô&<ØØ�K‰K×'Ñ'×+Ñ+Ð,BÓCØ�K‰K×'Ñ'×+Ñ+Ð,NÓOó'
÷ ‰"ˆ\×ÑÓ
 õ	!ˆð $(§>¡>°&¸%Ó#@Ñ ˆ
�Lä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð  $Ÿ}Ÿ}˜}‘C°$×2HÑ2Hð	%
ð —L‘Lð	%
ð ñ	%
Ñ!ˆ�\ð "×)Ñ)¨*À"ÓE×PÑPÓRˆØ—k‘k +Ó.ˆØ˜LÐ(Ð(r.   )rP  r`   r8   rX  r_  r^  r`  rT  rL  rQ  r  ra  r\  r[  r]  rR  rY  rW  rV  rS  r  rU  r–   )rR   rS   rT   rU   rù   r1   ro  rK   rV   rW   rX   rY   s   @@r+   rI  rI  w  s.   ù‡ € Ù>÷5]ó 5]÷n(ð (÷&>)÷ >)ò >)r.   rI  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# )ÚMistral4DecoderLayeri  c                ó&   <€ V ^8„  d   QhRS[ RS[/# rK  rM  )r)   r*   s   "€r+   r,   Ú!Mistral4DecoderLayer.__annotate__  s   ø€ ÷ eñ e™~ð e¹#ñ er.   c                ób  <€ \         SV `  4        VP                  V n        \        WR 7      V n        W!P
                  8¼  d   \        V4      V n        M\        V4      V n        \        VP                  VP                  R7      V n        \        VP                  VP                  R7      V n        R# ))r`   rL  ©r&   N)r0   r1   r8   rI  Ú	self_attnÚfirst_k_dense_replacerû   Úmlprš   r#   Úrms_norm_epsÚinput_layernormÚpost_attention_layernormrb  s   &&&€r+   r1   ÚMistral4DecoderLayer.__init__  sƒ   ø€ Ü‰ÑÔØ!×-Ñ-ˆÔä*°&ÔNˆŒà×4Ñ4Ô4Ü" 6Ó*ˆD�Hä" 6Ó*ˆDŒHä.¨v×/AÑ/AÀv×GZÑGZÔ[ˆÔÜ(7¸×8JÑ8JÐPV×PcÑPcÔ(dˆÖ%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                  /# )
r%   r=   r  Nr�   rs  Ú	use_cacherr  r{   r'   )r3   r?   Ú
LongTensorr   rÉ   rN   r   r   )r)   r*   s   "€r+   r,   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W�,           pTpV P                  V4      pV P                  V4      pW�,           pV# )r=   r  r�   rs  r“  rr  © )r�  r‹  r�  r�  )
r7   r=   r  r�   rs  r“  rr  r{   Úresidualr  s
   &&&&&&&,  r+   rK   ÚMistral4DecoderLayer.forward  s©   € ð !ˆØ×,Ñ,¨]Ó;ˆàŸ>š>ñ 
Ø'ð
à)ð
ð &ð
ð ,ð	
ð
  ð
ð !4ð
ð ñ
Ñˆð !Õ0ˆð !ˆØ×5Ñ5°mÓDˆØŸ™ Ó/ˆØ Õ0ˆØÐr.   )r8   r�  r�  r�  r‹  )NNNFNr¨   rY   s   @@r+   r†  r†    s    ù‡ € ÷eó e÷÷ ò r.   r†  c                   ó¢   a 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. t. t]P&                  ! 4       V 3R l4       tV3R	 ltR
tVtV ;t# )ÚMistral4PreTrainedModeli4  ÚmodelTr†  rs  r=   Ú
attentionsc                óÐ  <€ \         SV `  V4       \        V\        4      '       d:   \        P
                  ! VP                  R V P                  P                  R7       R# \        V\        4      '       dq   \        P
                  ! VP                  R V P                  P                  R7       \        P
                  ! VP                  R V P                  P                  R7       R# R# )r½   )rG   ÚstdN)r0   Ú_init_weightsrˆ   rª   ÚinitÚnormal_r5   r`   Úinitializer_ranger×   rÜ   r¢   )r7   r  r9   s   &&€r+   rŸ  Ú%Mistral4PreTrainedModel._init_weightsG  sŽ   ø€ ä‰Ñ˜fÔ%Ü�fÔ0×1Ò1Ü�LŠL˜Ÿ™¨S°d·k±k×6SÑ6S×TÜ˜¤×0Ò0Ü�LŠL˜×,Ñ,°3¸D¿K¹K×<YÑ<YÕZÜ�LŠL˜×)Ñ)°¸¿¹×9VÑ9V×Wñ 1r.   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r_   r   )r)   r*   s   "€r+   r,   Ú$Mistral4PreTrainedModel.__annotate__4  s   ø‡ ‚ ÙÑò r.   r–  )rR   rS   rT   rU   Ú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†  rI  Ú_can_record_outputsÚ_keep_in_fp32_modules_strictÚ"_keys_to_ignore_on_load_unexpectedr3   r˜   rŸ  Ú__annotate_func__rV   rW   rX   rY   s   @@r+   rš  rš  4  sƒ   ù‡ € àÐØ&*Ð#Ø/Ð0ÐØ#4Ð"5ÐØÐØ€NØÐà!ÐØ"&ÐàÐ-ØÐ'ðÐð $&Ð Ø)+Ð&à
‡]‚]ƒ_ôXó ðX÷) … 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# )ÚMistral4ModeliQ  c                ó    <€ V ^8„  d   QhRS[ /# r_   r   )r)   r*   s   "€r+   r,   ÚMistral4Model.__annotate__S  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Š  ©r`   FN)r0   r1   Úpad_token_idÚpadding_idxÚ
vocab_sizer   Ú	Embeddingr8   Úembed_tokensÚ
ModuleListÚrangeÚnum_hidden_layersr†  Úlayersr#   rŽ  Únormr[   Ú
rotary_embÚgradient_checkpointingÚ	post_initrb  s   && €r+   r1   ÚMistral4Model.__init__S  sÊ   ø€ Ü‰Ñ˜Ô Ø!×.Ñ.ˆÔØ ×+Ñ+ˆŒäŸLšL¨×):Ñ):¸F×<NÑ<NÐPT×P`ÑP`ÓaˆÔÜ—m’mÜFKÈF×LdÑLdÔFeÓfÑFe¸Ô! &Ö4ÑFeÑfó
ˆŒô $ F×$6Ñ$6¸F×<OÑ<OÔPˆŒ	Ü1¸Ô@ˆŒØ&+ˆÔ#ð 	�‰Öùò g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[/# )
r%   Ú	input_idsNr  r�   rs  Úinputs_embedsr“  r{   r'   )	r3   r”  r?   r   ÚFloatTensorrÉ   r   r   r   )r)   r*   s   "€r+   r,   r¶  f  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¸  )r\   )r`   rÉ  r  rs  r�   )r�   r  rr  r�   rs  r“  )Úlast_hidden_staters  )Ú
ValueErrorr½  r   r`   Úget_seq_lengthr3   rz   rO   r\   rÆ   r   rÃ  rÁ  rÀ  rÂ  r   )r7   rÈ  r  r�   rs  rÉ  r“  r{   Úpast_seen_tokensÚcausal_maskr=   rr  Údecoder_layers   &&&&&&&,     r+   rK   ÚMistral4Model.forwardc  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)rR   rS   rT   rU   r1   r   r   r   rK   rV   rW   rX   rY   s   @@r+   r´  r´  Q  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# )ÚMistral4ForCausalLMi›  zlm_head.weightzmodel.embed_tokens.weightÚlm_headÚcolwise_gather_outputr=   ÚlogitsÚkeep_full_weightc                óì   <€ \         SV `  V4       \        V4      V n        VP                  V n        \
        P                  ! VP                  VP                  R R7      V n        V P                  4        R# )Frœ   N)
r0   r1   r´  r›  r»  r   rŸ   r8   rÕ  rÅ  r·   s   &&€r+   r1   ÚMistral4ForCausalLM.__init__¢  sU   ø€ Ü‰Ñ˜Ô Ü" 6Ó*ˆŒ
Ø ×+Ñ+ˆŒÜ—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[	/
# )r%   rÈ  Nr  r�   rs  rÉ  Úlabelsr“  Úlogits_to_keepr{   r'   )
r3   r”  r?   r   rÊ  rÉ   r  r   r   r   )r)   r*   s   "€r+   r,   Ú Mistral4ForCausalLM.__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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      # )a�  
Example:

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

>>> model = Mistral4ForCausalLM.from_pretrained("meta-mistral4/Mistral4-2-7b-hf")
>>> tokenizer = AutoTokenizer.from_pretrained("meta-mistral4/Mistral4-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�   rs  rÉ  r“  Nr†   r×  rÜ  r»  )Úlossr×  rs  r=   rœ  r–  )r›  rÌ  rˆ   r  ÚslicerÕ  Úloss_functionr`   r»  r   rs  r=   rœ  )r7   rÈ  r  r�   rs  rÉ  rÜ  r“  rÝ  r{   Úoutputsr=   Úslice_indicesr×  rà  s   &&&&&&&&&,     r+   rK   ÚMistral4ForCausalLM.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.   )rÕ  r›  r»  )NNNNNNNr   )rR   rS   rT   rU   Ú_tied_weights_keysÚ_tp_planÚ_pp_planÚ
_fsdp_planr1   r   r   rK   rV   rW   rX   rY   s   @@r+   rÔ  rÔ  ›  sf   ù‡ € à*Ð,GÐHÐØÐ2Ð3€HØ˜_Ð-°¨zÐ:Ð;€HØÐ/Ð0€Jõð Ø÷6
ñ 6
ó ó ÷6
ð 6
r.   rÔ  c                   ó   € ] tR tRtRtR# )Ú!Mistral4ForSequenceClassificationiæ  r–  N©rR   rS   rT   rU   rV   r–  r.   r+   rë  rë  æ  ó   † Ûr.   rë  c                   ó   € ] tR tRtRtR# )ÚMistral4ForTokenClassificationiê  r–  Nrì  r–  r.   r+   rï  rï  ê  rí  r.   rï  )r½   )rº   rº   )rº   )Nrº   )rš  r´  rÔ  rë  rï  )Lr&  Úcollections.abcr   r3   Útorch.nn.functionalr   rå   r¿   Ú r   r   Úactivationsr   Úcache_utilsr   r   Ú
generationr	   Úintegrationsr
   r   Úmasking_utilsr   Úmodeling_flash_attention_utilsr   Úmodeling_layersr   r   r   Úmodeling_outputsr   r   Úmodeling_rope_utilsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   Úutils.deprecationr   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_mistral4r    r  r#   r[   rš   rª   r×   rû   r  r$  r*  r0  r4  r;  rA  rG  rI  r†  rš  r´  rÔ  rë  rï  Ú__all__r–  r.   r+   Ú<module>r     s¹  ðó( Ý $ã ß Ð Ý å &Ý !ß .Ý )ß SÝ /Ý B÷ñ ÷
 Pß Kß FÝ &ß IÑ IÝ 0ß GÝ 5Ý 2ñ ˜YÓ'ôJ�b—i‘ió Jó (ðJô(6<˜bŸi™iô 6<ôr�"—)‘)ô ô "9˜Ÿ™ô "9ðJ ô$#�b—i‘ió $#ó ð$#ôN�"—)‘)ô õ0	U÷%ô20òò(ñ Ð-Ó.óó /ðô2$õN%ô
K)˜Ÿ	™	ô K)ô\,Ð5ô ,ô^X˜oô Xð: ôF
Ð+ó F
ó ðF
ðR ôG
Ð1°?ó G
ó ðG
ôT	Ð(HÐJaô 	ô	Ð%BÐD[ô 	ò‚r.   