+
    œ°³j<<  ã                   óè  € R t ^ RIHt ^ RIt^ RIHt ^RIHt ^RIHt ^RI	H
t
 ^RIHt ^RIHt ^R	IHtHtHtHtHtHt ^R
IHt  ! R R]4      t ! R R]4      t ! R R]P4                  P6                  4      tR"R lt ! R R]4      t ! R R]P>                  4      t  ! R R]PB                  4      t" ! R R]4      t# ! R R]4      t$ ! R R]4      t% ! R R]4      t& ! R  R!]]$4      t'. R#Ot(R# )$zPyTorch Phimoe model.)ÚCallableN)Únn)Ú GenericForSequenceClassification)ÚROPE_INIT_FUNCTIONS)Úmaybe_autocast)ÚOutputRecorder)ÚLlamaAttention)ÚMixtralDecoderLayerÚMixtralExpertsÚMixtralForCausalLMÚMixtralModelÚMixtralPreTrainedModelÚMixtralRotaryEmbedding©ÚPhimoeConfigc                   ó@   a € ] tR t^(t o RV 3R lR lltRR ltRtV tR# )ÚPhimoeRotaryEmbeddingNc                ó    <€ V ^8„  d   QhRS[ /# ©é   Úconfigr   )ÚformatÚ__classdict__s   "€Új/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/phimoe/modular_phimoe.pyÚ__annotate__Ú"PhimoeRotaryEmbedding.__annotate__)   s   ø€ ÷ Oñ O™|ñ Oó    c                ó(  € \         P                  P                  4        VP                  V n        VP                  V n        Wn        V P                  P                  R ,          V n        V P                  V n
        V P                  R8w  d   \        V P                  ,          V n
        V P                  V P                  V4      w  q0n        \         P                  ! VRR7      V n        \         P                  ! VP                  4       RR7      V n        R# )Ú	rope_typeÚdefaultF)Ú
persistentN)r   ÚModuleÚ__init__Úmax_position_embeddingsÚmax_seq_len_cachedÚoriginal_max_seq_lenr   Úrope_parametersr   Úcompute_default_rope_parametersÚrope_init_fnr   Úattention_scalingÚBufferÚinv_freqÚcloneÚoriginal_inv_freq)Úselfr   Údevicer+   s   &&& r   r"   ÚPhimoeRotaryEmbedding.__init__)   s¼   € Ü
�	‰	×ÑÔØ"(×"@Ñ"@ˆÔØ$*×$BÑ$BˆÔ!àŒØŸ™×4Ñ4°[ÕAˆŒØ&*×&JÑ&JˆÔØ�>‰>˜YÔ&Ü 3°D·N±NÕ CˆDÔØ+/×+<Ñ+<¸T¿[¹[È&Ó+QÑ(ˆÔ(äŸ	š	 (°uÔ=ˆŒÜ!#§¢¨8¯>©>Ó+;ÈÔ!NˆÖr   c                ó°  € R p\         P                  ! V4      ^,           pV P                  P                  R,          R8w  dd   V'       d\   W@P                  P                  R,          8”  d   V P                  P                  R,          MV P                  P                  R,          pV P	                  V P                  4      w  rVVf   TMTpV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        Wx,          P                  ^^4      p
\         P                  ! Wª3RR7      pVP!                  4       V,          pVP#                  4       V,          pR R R 4       XP                  VP$                  4      XP                  VP$                  4      3#   + '       g   i     LF; i)Nr   r   Ú original_max_position_embeddingsÚlong_mscaleÚshort_mscale)Údtyper/   ÚmpsÚcpuF)Údevice_typeÚenabled©Údim)NºNNNNéÿÿÿÿ)r<   Nr<   )ÚtorchÚmaxr   r&   r(   ÚexpandÚshapeÚtoÚfloatr/   Ú
isinstanceÚtypeÚstrr   Ú	transposeÚcatÚcosÚsinr5   )r.   ÚxÚposition_idsÚmscaleÚseq_lenr+   r)   Úinv_freq_expandedÚposition_ids_expandedr8   ÚfreqsÚembrI   rJ   s   &&&           r   ÚforwardÚPhimoeRotaryEmbedding.forward8   s³  € ØˆÜ—)’)˜LÓ)¨AÕ-ˆØ�;‰;×&Ñ& {Õ3°yÔ@ÇWð Ÿ[™[×8Ñ8Ð9[Õ\Ô\ð —‘×+Ñ+¨MÖ:à—[‘[×0Ñ0°Õ@ð ð
 '+×&7Ñ&7¸¿¹Ó&DÑ#ˆØ&,¢nÑ"¸&ˆà�]Õ#×*Ñ*¨<×+=Ñ+=¸aÕ+@À"ÀaÓH×KÑKÔRW×R]ÑR]Ðfg×fnÑfnÐKÓoð 	ð !-¨ZÕ 8× >Ñ >Ó @Ðä'1°!·(±(·-±-Ä×'EÒ'EÈ!Ï(É(Ï-É-Ð[`ÔJ`�a—h‘h—m’mÐfkˆÜ¨¸U×CÖCØ&Õ>×IÑIÈ!ÈQÓOˆEÜ—)’)˜U˜N°Ô3ˆCØ—'‘'“)˜fÕ$ˆCØ—'‘'“)˜fÕ$ˆC÷	 Dð
 �v‰v�a—g‘g‹ §¡ q§w¡w£Ð/Ð/÷ D×Cús   Æ'A IÉI	)r)   r   r+   r$   r-   r%   r(   r   ©N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r"   rS   Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r   (   s   ø‡ € ÷Oò O÷0ò 0r   r   c                   ó   € ] tR t^QtRtR# )ÚPhimoeAttention© N©rV   rW   rX   rY   rZ   r_   r   r   r^   r^   Q   ó   † Ûr   r^   c                   óX   a € ] tR t^Ut o ]V 3R lR l4       t]V 3R lR l4       tRtV tR# )ÚPhimoeMultiplierc          
      óœ   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  RS[ P                  RS[ P                  /# )r   ÚscoresÚ
multiplierÚselected_expertsÚmasked_gatesÚmask_for_one©r>   ÚTensor)r   r   s   "€r   r   ÚPhimoeMultiplier.__annotate__W   sQ   ø€ ÷ )ñ )á—‘ð)ñ —L‘Lð)ñ  Ÿ,™,ð	)ñ
 —l‘lð)ñ —l‘lñ)r   c                ó6   € V P                  W#V4       W%,          # )aÄ  
Forward pass for the custom autograd function.

Args:
    ctx: Context object to save information for backward computation.
    scores (torch.Tensor): Input scores tensor.
    multiplier (torch.Tensor): Multiplier tensor.
    selected_experts (torch.Tensor): Tensor of selected experts.
    masked_gates (torch.Tensor): Masked gates tensor.
    mask_for_one (torch.Tensor): Mask for one tensor.

Returns:
    torch.Tensor: Result of the forward pass.
)Úsave_for_backward)Úctxre   rf   rg   rh   ri   s   &&&&&&r   rS   ÚPhimoeMultiplier.forwardV   s   € ð. 	×Ñ˜j¸LÔIØÕ(Ð(r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   Úgrad_at_outputrj   )r   r   s   "€r   r   rl   q   s   ø€ ÷ 
ñ 
áŸ™ñ
r   c                ó”   € V P                   w  r#pW,          pWAP                  R4      ,          pVP                  RVVR7       VRRRR3# )a
  
Backward pass for the custom autograd function.

Args:
    ctx: Context object with saved tensors from the forward pass.
    grad_at_output (torch.Tensor): Gradient at the output.

Returns:
    tuple[torch.Tensor, None, None, None, None]: Gradients for the inputs.
)r;   ÚindexÚsrcNr=   )Úsaved_tensorsÚmulÚscatter_add_)ro   rr   rf   rg   rh   Úgrad_at_scores_expandeds   &&    r   ÚbackwardÚPhimoeMultiplier.backwardp   sg   € ð 69×5FÑ5FÑ2ˆ
 là'Õ4ˆà".×1CÑ1CÀBÓ1GÕ"GÐØ×,Ñ,ØØ"Øð 	-ô 	
ð $ØØØØð
ð 	
r   r_   N)	rV   rW   rX   rY   ÚstaticmethodrS   rz   rZ   r[   r\   s   @r   rc   rc   U   s+   ø‡ € Ø÷)ó ð)ð2 ÷
ó ö
r   rc   c                ó4  € \         P                  ! 4       ;_uu_ 4        V P                  RRR7      w  rEV P                  4       P	                  VR7      pW@,
          V,          ^V,          8„  pRRR4       V P                  X\        R4      4      pV'       dq   V\         P                  ! V\         P                  R7      P                  4       P                  4       ,
          P                  RR7      ^,          P                  R4      pMXp\         P                  ! VRR7      pVP                  RVR7      p	V'       dˆ   VP                  RRR7      w  r¥\         P                  ! W…8H  \         P                  ! V
4      R	8„  4      p\         P                   ! R
VRR7      P#                  V4      p\$        P'                  V V	VVV4      pMT	p\         P(                  ! V RV\        R4      4      p\         P                  ! 4       ;_uu_ 4        VP                  RRR7      w  rEV P                  4       P	                  VR7      pW@,
          V,          ^V,          8„  pRRR4       VP                  V\        R4      4      pV'       dq   V\         P                  ! V\         P                  R7      P                  4       P                  4       ,
          P                  RR7      ^,          P                  R4      pMXp\         P                  ! VRR7      pVP                  RVR7      pV'       d–   VP                  RRR7      w  r¥\         P                  ! Wõ8H  \         P                  ! V
4      P+                  4       R	8„  4      p\         P                   ! R
VRR7      P#                  V4      p\$        P'                  V VVVV4      pMTp\         P,                  ! VV3RR7      p\         P,                  ! W�3RR7      pVV3#   + '       g   i     ELŽ; i  + '       g   i     EL»; i)u,  
Sparse mixer function to select top-k experts and compute multipliers.
Based on the paper: https://huggingface.co/papers/2409.12136
We first replace the TopK(Â·) function as random sampling of discrete variables
in model training. Then, following Liu et al. (2023a) and Liu et al. (2023b), we apply Heun's
third order method to approximate the expert routing gradient and construct a modified
back-propagation to give a mathematically sound gradient estimation for expert routing.

Args:
    scores (torch.Tensor): Input scores tensor.
    jitter_eps (float): Jitter epsilon for numerical stability.
    training (bool): Flag indicating if the model is in training mode.
    top_k (int): Number of top experts to select.

Returns:
    tuple[torch.Tensor, torch.Tensor]: Multiplier and selected experts tensors.
T)r;   Úkeepdim)ÚminNz-inf)Úmemory_formatr:   )r;   rt   g      è?gioð…ÉTÕ?gKÈ=›Uå?)Úalphar=   )r>   Úno_gradr?   ÚabsÚclampÚmasked_fillrC   Ú
empty_likeÚlegacy_contiguous_formatÚexponential_ÚlogÚ	unsqueezeÚsoftmaxÚgatherÚ
logical_orÚ	rand_likeÚaddÚtype_asrc   ÚapplyÚscatterÚuniform_Úconcat)re   Ú
jitter_epsÚtrainingÚtop_kÚmask_logits_thresholdÚmax_indÚfactorrh   rg   Úmultiplier_oÚ
max_scoresri   rf   Úmasked_scoresÚmasked_gates_top2Úselected_experts_top2Úmultiplier_top2_oÚmask_for_one_top2Úmultiplier_top2s   &&&&               r   Úsparsemixerr£   “   s‹  € ô$ 
�Š��à)/¯©¸ÀD¨Ó)IÑ&ÐØ—‘“×#Ñ#Ð(=Ð#Ó>ˆØ"7Õ"@ÀFÕ!JÈqÐS]Í~Ñ ^Ð÷	 
ð ×%Ñ%Ð&;¼UÀ6»]ÓK€Lßð Ü×"Ò" <¼u×?]Ñ?]Ô^×kÑkÓm×qÑqÓsõt÷ ‰S�RˆS‹[˜õ	÷
 ‰Y�r‹]ñ 	ð #Ðô —=’= °2Ô6€LØ×&Ñ&¨2Ð5EÐ&ÓF€Lçà*×.Ñ.°2¸tÐ.ÓDÑˆ
Ü×'Ò'ØÑ'Ü�OŠO˜JÓ'¨$Ñ.ó
ˆô
 —y’y ¨¸VÔD×LÑLÈ\ÓZˆä%×+Ñ+ØØØØØó
‰
ð "ˆ
ô —M’MØØ
ØÜˆf‹ó	€Mô 
�Š��à)6×):Ñ):¸rÈ4Ð):Ó)PÑ&ÐØ—‘“×#Ñ#Ð(=Ð#Ó>ˆØ"7Õ"@ÀFÕ!JÈqÐS]Í~Ñ ^Ð÷	 
ð &×1Ñ1Ð2GÌÈvËÓWÐßð "Ü×"Ò"Ð#4ÄE×DbÑDbÔcß‘“ß‘“õ÷
 ‰S�RˆS‹[˜õ÷ ‰Y�r‹]ñ 	ð !(ÐäŸšÐ&7¸RÔ@ÐØ)×0Ñ0°RÐ?TÐ0ÓUÐçà/×3Ñ3¸ÀDÐ3ÓIÑˆ
Ü!×,Ò,Ø!Ñ,Ü�OŠO˜JÓ'×0Ñ0Ó2°TÑ9ó
Ðô
 "ŸIšI fÐ.?ÀvÔN×VÑVÐWhÓiÐä*×0Ñ0ØØØ!ØØó
‰ð ,ˆä—’˜z¨?Ð;ÀÔD€JÜ—|’|Ð%5Ð$MÐSUÔVÐð 	Øðð ÷G 
�ˆú÷f 
�ˆús   žAO2ÈAPÏ2P	ÐP	c                   ó   € ] tR tRtRtR# )ÚPhimoeExpertsi  r_   Nr`   r_   r   r   r¥   r¥     ra   r   r¥   c                   óV   a a€ ] tR tRt oV3R lV 3R lltV3R lV 3R lltRtVtV ;t# )ÚPhimoeTopKRouteri  c                ó    <€ V ^8„  d   QhRS[ /# r   r   )r   r   s   "€r   r   ÚPhimoeTopKRouter.__annotate__  s   ø€ ÷ 4ñ 4™|ñ 4r   c                óÜ   <€ \         SV `  VP                  VP                  R R7       VP                  V n        VP
                  V n        VP                  V n        VP                  V n        R# )F©ÚbiasN)	Úsuperr"   Úhidden_sizeÚnum_local_expertsÚrouter_jitter_noiseÚinput_jitter_noiseÚnum_experts_per_tokr—   Únum_experts©r.   r   Ú	__class__s   &&€r   r"   ÚPhimoeTopKRouter.__init__  sZ   ø€ Ü‰Ñ˜×+Ñ+¨V×-EÑ-EÈEÐÔRØ#)×#=Ñ#=ˆÔ Ø"(×";Ñ";ˆÔØ×/Ñ/ˆŒ
Ø!×3Ñ3ˆÖr   c                óx   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  S[ P                  3,          /# ©r   Úhidden_statesÚreturn)r>   rk   Útuple)r   r   s   "€r   r   r©     s5   ø€ ÷ 	@ñ 	@¡U§\¡\ð 	@±e¹E¿L¹LÉ%Ï,É,Ð<VÕ6Wñ 	@r   c                ój  <€ V P                   '       da   V P                  ^ 8”  dP   V\        P                  ! V4      P	                  RV P                  ,
          RV P                  ,           4      ,          p\
        SV `  V4      p\        W P                  V P                   V P                  R7      w  r4W#V3# )é    ç      ð?)r•   r–   r—   )
r–   r±   r>   r†   r“   r­   rS   r£   r°   r—   )r.   r¹   Úrouter_logitsÚrouting_weightsrg   rµ   s   &&   €r   rS   ÚPhimoeTopKRouter.forward  s™   ø€ Ø�=�=ˆ=˜T×4Ñ4°qÔ8ØœU×-Ò-¨mÓ<×EÑEØ�d×-Ñ-Õ-¨s°T×5LÑ5LÕ/Lóõ ˆMô ™™¨Ó6ˆÜ,7Ø×&>Ñ&>ÈÏÉÐ^b×^hÑ^hô-
Ñ)ˆð Ð/?Ð?Ð?r   )r±   r³   r°   r—   )	rV   rW   rX   rY   r"   rS   rZ   r[   Ú__classcell__©rµ   r   s   @@r   r§   r§     s!   ù‡ € ÷4ó 4÷	@÷ 	@ó 	@r   r§   c                   óH   a a€ ] tR tRt oRtV 3R ltV3R lR ltRtVtV ;t	# )ÚPhimoeSparseMoeBlocki&  a¤  
This implementation is
strictly equivalent to standard MoE with full capacity (no
dropped tokens). It's faster since it formulates MoE operations
in terms of block-sparse operations to accommodate imbalanced
assignments of tokens to experts, whereas standard MoE either
(1) drop tokens at the cost of reduced performance or (2) set
capacity factor to number of experts and thus waste computation
and memory on padding.
c                ó  <€ \         SV `  4        VP                  V n        VP                  V n        VP                  V n        VP                  V n	        \        V4      V n        \        V4      V n        VP                  V n        R # rU   )r­   r"   r®   Ú
hidden_dimÚintermediate_sizeÚffn_dimr¯   r³   r²   r—   r§   Úrouterr¥   Úexpertsr±   r´   s   &&€r   r"   ÚPhimoeSparseMoeBlock.__init__2  si   ø€ Ü‰ÑÔØ ×,Ñ,ˆŒØ×/Ñ/ˆŒØ!×3Ñ3ˆÔØ×/Ñ/ˆŒ
Ü& vÓ.ˆŒÜ$ VÓ,ˆŒØ"(×";Ñ";ˆÖr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r¸   rj   )r   r   s   "€r   r   Ú!PhimoeSparseMoeBlock.__annotate__<  s'   ø€ ÷ Tñ T¡U§\¡\ð T±e·l±lñ Tr   c                ó¶  € VP                   w  r#pV P                  '       da   V P                  ^ 8”  dP   V\        P                  ! V4      P                  RV P                  ,
          RV P                  ,           4      ,          pVP                   w  r#pVP                  RV4      pV P                  V4      w  rVpV P                  WV4      pVP                  W#V4      # )r½   r¾   r=   )	rA   r–   r±   r>   r†   r“   ÚreshaperÊ   rË   )	r.   r¹   Ú
batch_sizeÚsequence_lengthrÇ   Ú_rÀ   rg   Úfinal_hidden_statess	   &&       r   rS   ÚPhimoeSparseMoeBlock.forward<  sÂ   € Ø2?×2EÑ2EÑ/ˆ
 ZØ�=�=ˆ=˜T×4Ñ4°qÔ8ØœU×-Ò-¨mÓ<×EÑEØ�d×-Ñ-Õ-¨s°T×5LÑ5LÕ/Lóõ ˆMð 3@×2EÑ2EÑ/ˆ
 ZØ%×-Ñ-¨b°*Ó=ˆØ/3¯{©{¸=Ó/IÑ,ˆÐ,Ø"Ÿl™l¨=ÈOÓ\ÐØ"×*Ñ*¨:È
ÓSÐSr   )rË   rÉ   rÇ   r±   r³   rÊ   r—   )
rV   rW   rX   rY   Ú__doc__r"   rS   rZ   r[   rÂ   rÃ   s   @@r   rÅ   rÅ   &  s!   ù‡ € ñ	õ<÷T÷ Tð Tr   rÅ   c                   ó>   a a€ ] tR tRt oV3R lV 3R lltRtVtV ;t# )ÚPhimoeDecoderLayeriJ  c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   r   Ú	layer_idx)r   Úint)r   r   s   "€r   r   ÚPhimoeDecoderLayer.__annotate__K  s   ø€ ÷ 
ñ 
™|ð 
¹ñ 
r   c                óî   <€ \         SV `  W4       \        P                  ! VP                  VP
                  R R7      V n        \        P                  ! VP                  VP
                  R R7      V n        R# ©T)ÚepsÚelementwise_affineN)r­   r"   r   Ú	LayerNormr®   Úrms_norm_epsÚinput_layernormÚpost_attention_layernorm)r.   r   rÚ   rµ   s   &&&€r   r"   ÚPhimoeDecoderLayer.__init__K  sX   ø€ Ü‰Ñ˜Ô+ô  "Ÿ|š|¨F×,>Ñ,>ÀF×DWÑDWÐlpÔqˆÔÜ(*¯ªØ×Ñ F×$7Ñ$7ÈDô)
ˆÖ%r   )rã   rä   ©rV   rW   rX   rY   r"   rZ   r[   rÂ   rÃ   s   @@r   rØ   rØ   J  s   ù‡ € ÷
÷ 
ó 
r   rØ   c                   ó6   € ] tR tRtR]! ]^ R7      R]R]/tRt	R# )ÚPhimoePreTrainedModeliU  r¿   )rt   r¹   Ú
attentionsr_   N)
rV   rW   rX   rY   r   r§   rØ   r^   Ú_can_record_outputsrZ   r_   r   r   rè   rè   U  s"   † à™Ð(8ÀÔBØÐ+Ø�oðÔr   rè   c                   ó>   a a€ ] tR tRt oV3R lV 3R lltRtVtV ;t# )ÚPhimoeModeli]  c                ó    <€ V ^8„  d   QhRS[ /# r   r   )r   r   s   "€r   r   ÚPhimoeModel.__annotate__^  s   ø€ ÷ gñ g™|ñ gr   c                óŠ   <€ \         SV `  V4       \        P                  ! VP                  VP
                  R R7      V n        R# rÞ   )r­   r"   r   rá   r®   râ   Únormr´   s   &&€r   r"   ÚPhimoeModel.__init__^  s1   ø€ Ü‰Ñ˜Ô Ü—L’L ×!3Ñ!3¸×9LÑ9LÐaeÔfˆŽ	r   )rð   ræ   rÃ   s   @@r   rì   rì   ]  s   ù‡ € ÷g÷ gó gr   rì   c                   óB   a a€ ] tR tRt oV 3R ltRV 3R lltRtVtV ;t# )ÚPhimoeForCausalLMic  c                ó²   <€ \         SV `  V4       \        P                  ! VP                  VP
                  V P                  P                  R 7      V n        R# )r«   N)	r­   r"   r   ÚLinearr®   Ú
vocab_sizer   Úlm_head_biasÚlm_headr´   s   &&€r   r"   ÚPhimoeForCausalLM.__init__d  s:   ø€ Ü‰Ñ˜Ô Ü—y’y ×!3Ñ!3°V×5FÑ5FÈTÏ[É[×MeÑMeÔfˆŽr   c                óJ  <€ V'       d|   \        V P                  R 4      '       d`   VP                  ^,          V P                  P                  ^,           8¼  d-   VP	                  4       p	W�P                  P                  8:  d   Rp\
        SV `  ! R	RVRVRVRVRVRVRV/VB p
V
# )
r2   NÚ	input_idsÚpast_key_valuesÚattention_maskÚinputs_embedsrL   Ú	use_cacheÚlogits_to_keepr_   )Úhasattrr   rA   r2   Úget_seq_lengthr­   Úprepare_inputs_for_generation)r.   rû   rü   rý   rþ   rL   rÿ   r   ÚkwargsÚpast_lengthÚmodel_inputsrµ   s   &&&&&&&&,  €r   r  Ú/PhimoeForCausalLM.prepare_inputs_for_generationi  sÁ   ø€ ÷" Ü˜Ÿ™Ð%G×HÒHØ—‘ Õ" d§k¡k×&RÑ&RÐUVÕ&VÔVà)×8Ñ8Ó:ˆKØŸk™k×JÑJÔJØ"&�ä‘wÒ<ñ 	
Øð	
à+ð	
ð *ð	
ð (ð		
ð
 &ð	
ð  ð	
ð *ð	
ð ñ	
ˆð Ðr   )rø   )NNNNTr½   )	rV   rW   rX   rY   r"   r  rZ   r[   rÂ   rÃ   s   @@r   ró   ró   c  s   ù‡ € õg÷
#÷ #r   ró   c                   ó   € ] tR tRtRtR# )ÚPhimoeForSequenceClassificationi�  r_   Nr`   r_   r   r   r	  r	  �  s   † Ó`cr   r	  )r   )rè   rì   ró   r	  ))rÖ   Úcollections.abcr   r>   r   Úmodeling_layersr   Úmodeling_rope_utilsr   Úutils.genericr   Úutils.output_capturingr   Úllama.modeling_llamar   Úmixtral.modeling_mixtralr	   r
   r   r   r   r   Úconfiguration_phimoer   r   r^   ÚautogradÚFunctionrc   r£   r¥   rõ   r§   r!   rÅ   rØ   rè   rì   ró   r	  Ú__all__r_   r   r   Ú<module>r     sê   ðñ å $ã Ý õõ 7Ý +Ý 4Ý 1÷÷ õ /ô&0Ð2ô &0ôR	�nô 	ô;
�u—~‘~×.Ñ.ô ;
ô|xôv	�Nô 	ô@�r—y‘yô @ô(!T˜2Ÿ9™9ô !TôH
Ð,ô 
ôÐ2ô ôg�,ô gô)Ð*ô )ôX dÐ&FÐH]Ô cò‚r   