Ë
    ÜÓ^j_G  ã            
       ó  — d Z ddlZddlmc mZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZ ddlmZ dd	lmZmZ dd
lmZ ddlmZmZ ddlmZ ddlmZ ddlmZmZ ddlm Z  ddl!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* ddl+m,Z,  ejZ                  e.«      Z/	 	 	 d4dej`                  e1ej`                     z  dz  de2dz  dej`                  dz  dej`                  e2z  fd„Z3e G d„ dejh                  «      «       Z5 G d„ dejh                  «      Z6 G d„ dejh                  «      Z7 G d„ d e)«      Z8 G d!„ d"e*«      Z9 G d#„ d$e"«      Z: G d%„ d&e«      Z; G d'„ d(e(«      Z< G d)„ d*e'«      Z= G d+„ d,e#«      Z> G d-„ d.e%«      Z? G d/„ d0e&«      Z@ G d1„ d2e$«      ZAg d3¢ZBy)5zPyTorch Mixtral model.é    N)Únné   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)Úuse_experts_implementation)Úcreate_causal_maskÚ!create_sliding_window_causal_mask)ÚGradientCheckpointingLayer)ÚMoeCausalLMOutputWithPastÚMoeModelOutputWithPast)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚlogging)ÚOutputRecorderé   )	ÚMistralAttentionÚMistralForCausalLMÚMistralForQuestionAnsweringÚ MistralForSequenceClassificationÚMistralForTokenClassificationÚMistralModelÚMistralPreTrainedModelÚMistralRMSNormÚMistralRotaryEmbeddingé   )ÚMixtralConfigÚgate_logitsÚnum_expertsÚattention_maskÚreturnc                 ó¾  — | �t        | t        «      syt        | t        «      rC| d   j                  }t        j                  | D �cg c]  }|j                  |«      ‘Œ c}d¬«      }t        j                  j                  j                  d¬«      }t        j                  ||d¬«      \  }}	t        j                  j                  j                  |	|«      }
|€>t        j                  |
j                  «       d¬«      }t        j                  |d¬«      }�n|j                  \  }}|j                  d   ||z  z  }|ddd…dd…ddf   j                  |||||f«      j                  d||«      j                  «      }t        j                   |
j                  «       |z  d¬«      t        j                   |d¬«      z  }|ddd…dd…df   j                  ||||f«      j                  d|«      j                  |«      }t        j                   ||z  d¬«      t        j                   |d¬«      z  }t        j                   ||j#                  d«      z  «      }||z  S c c}w )aÄ  
    Computes auxiliary load balancing loss as in Switch Transformer - implemented in Pytorch.

    See Switch Transformer (https://huggingface.co/papers/2101.03961) for more details. This function implements the loss
    function presented in equations (4) - (6) of the paper. It aims at penalizing cases where the routing between
    experts is too unbalanced.

    Args:
        gate_logits:
            Logits from the `gate`, should be a tuple of model.config.num_hidden_layers tensors of
            shape [batch_size X sequence_length, num_experts].
        num_experts:
            Number of experts
        top_k:
            The number of experts to route per-token, can be also interpreted as the `top-k` routing
            parameter.
        attention_mask (`torch.Tensor`, *optional*):
            The attention_mask used in forward function
            shape [batch_size X sequence_length] if not None.

    Returns:
        The auxiliary loss.
    Nr   ©Údiméÿÿÿÿ)Ú
isinstanceÚtupleÚdeviceÚtorchÚcatÚtor   Ú
functionalÚsoftmaxÚtopkÚone_hotÚmeanÚfloatÚshapeÚexpandÚreshapeÚsumÚ	unsqueeze)r    r!   Útop_kr"   Úcompute_deviceÚ
layer_gateÚconcatenated_gate_logitsÚrouting_weightsÚ_Úselected_expertsÚexpert_maskÚtokens_per_expertÚrouter_prob_per_expertÚ
batch_sizeÚsequence_lengthÚnum_hidden_layersÚexpert_attention_maskÚ router_per_expert_attention_maskÚoverall_losss                      úv/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/mixtral/modular_mixtral.pyÚload_balancing_loss_funcrJ   5   s9  € ð: Ð¤*¨[¼%Ô"@Øä�+œuÔ%Ø$ Q™×.Ñ.ˆÜ#(§9¡9Ð^iÖ-jÐPZ¨j¯m©m¸NÕ.KÒ-jÐpqÔ#rÐ ä—h‘h×)Ñ)×1Ñ1Ð2JÐPRÐ1ÓS€OäŸ*™* _°eÀÔDÑ€AÐä—(‘(×%Ñ%×-Ñ-Ð.>ÀÓL€KàÐä!ŸJ™J {×'8Ñ'8Ó':ÀÔBÐô "'§¡¨OÀÔ!CÒà&4×&:Ñ&:Ñ#ˆ
�OØ4×:Ñ:¸1Ñ=À*ÈÑB^Ñ_Ðð ˜4¢¢A t¨TÐ1Ñ2ß‰VÐ&¨
°OÀUÈKÐXÓYß‰W�R˜ Ó,ß‰R�Óð	 	ô "ŸI™I k×&7Ñ&7Ó&9Ð<QÑ&QÐWXÔYÔ\a×\eÑ\eØ! qô]
ñ 
Ðð ˜4¢¢A tÐ+Ñ,ß‰VÐ&¨
°OÀ[ÐQÓRß‰W�R˜Ó%ß‰R�Óð	 	)ô "'§¡¨?Ð=]Ñ+]ÐcdÔ!eÔhm×hqÑhqØ,°!ôi
ñ "
Ðô —9‘9Ð.Ð1G×1QÑ1QÐRSÓ1TÑTÓU€LØ˜+Ñ%Ð%ùò[ .ks   ÁIc                   ó�   ‡ — e Zd ZdZdefˆ fd„Zdej                  dej                  dej                  dej                  fd„Zˆ xZ	S )	ÚMixtralExpertsz2Collection of expert weights stored as 3D tensors.Úconfigc                 óò  •— t         ‰| �  «        |j                  | _        |j                  | _        |j                  | _        t        j                  t        j                  | j                  d| j                  z  | j
                  «      «      | _        t        j                  t        j                  | j                  | j
                  | j                  «      «      | _        t        |j                     | _        y )Nr   )ÚsuperÚ__init__Únum_local_expertsr!   Úhidden_sizeÚ
hidden_dimÚintermediate_sizeÚintermediate_dimr   Ú	Parameterr+   ÚemptyÚgate_up_projÚ	down_projr   Ú
hidden_actÚact_fn©ÚselfrM   Ú	__class__s     €rI   rP   zMixtralExperts.__init__‹   s­   ø€ Ü‰ÑÔØ!×3Ñ3ˆÔØ ×,Ñ,ˆŒØ &× 8Ñ 8ˆÔÜŸ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×.Ñ.Ñ/ˆ�ó    Úhidden_statesÚtop_k_indexÚtop_k_weightsr#   c                 óf  — t        j                  |«      }t        j                  «       5  t         j                  j                  j                  || j                  ¬«      }|j                  ddd«      }t        j                  |j                  d¬«      d«      j                  «       }d d d «       D ]ð  }|d   }|| j                  k(  rŒt        j                  |   «      \  }}	||	   }
t        j                  j                  |
| j                  |   «      j                  dd¬«      \  }}| j                  |«      |z  }t        j                  j                  || j                   |   «      }|||	|d f   z  }|j#                  d|	|j%                  |j&                  «      «       Œò |S # 1 sw Y   �ŒxY w)N)Únum_classesr   r   r   )r'   éþÿÿÿr%   r'   )r+   Ú
zeros_likeÚno_gradr   r.   r1   r!   ÚpermuteÚgreaterr7   ÚnonzeroÚwhereÚlinearrX   Úchunkr[   rY   Ú
index_add_r-   Údtype)r]   r`   ra   rb   Úfinal_hidden_statesr@   Ú
expert_hitÚ
expert_idxÚ	top_k_posÚ	token_idxÚcurrent_stateÚgateÚupÚcurrent_hidden_statess                 rI   ÚforwardzMixtralExperts.forward”   s™  € ô $×.Ñ.¨}Ó=ÐÜ�]‰]‹_ñ 	SÜŸ(™(×-Ñ-×5Ñ5°kÈt×O_ÑO_Ð5Ó`ˆKØ%×-Ñ-¨a°°AÓ6ˆKÜŸ™ {§¡¸8 Ó'DÀaÓH×PÑPÓRˆJ÷	Sð
 %ò 
	nˆJØ# A™ˆJØ˜T×-Ñ-Ò-ØÜ#(§;¡;¨{¸:Ñ/FÓ#GÑ ˆI�yØ)¨)Ñ4ˆMÜ—}‘}×+Ñ+¨M¸4×;LÑ;LÈZÑ;XÓY×_Ñ_Ð`aÐgiÐ_Ój‰HˆD�"Ø$(§K¡K°Ó$5¸Ñ$:Ð!Ü$&§M¡M×$8Ñ$8Ð9NÐPT×P^ÑP^Ð_iÑPjÓ$kÐ!Ø$9¸MÈ)ÐU^Ð`dÐJdÑ<eÑ$eÐ!Ø×*Ñ*¨1¨iÐ9N×9QÑ9QÐRe×RkÑRkÓ9lÕmð
	nð #Ð"÷#	Sñ 	Sús   ªA=F&Æ&F0)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rP   r+   ÚTensorry   Ú__classcell__©r^   s   @rI   rL   rL   ‡   sM   ø„ á<ð0˜}õ 0ð#à—|‘|ð#ð —\‘\ð#ð —|‘|ð	#ð
 
�‰÷#r_   rL   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚMixtralTopKRouterc                 ó  •— t         ‰| �  «        |j                  | _        |j                  | _        |j                  | _        t        j                  t        j                  | j
                  | j                  «      «      | _        y ©N)rO   rP   Únum_experts_per_tokr9   rQ   r!   rR   rS   r   rV   r+   rW   Úweightr\   s     €rI   rP   zMixtralTopKRouter.__init__°   s[   ø€ Ü‰ÑÔØ×/Ñ/ˆŒ
Ø!×3Ñ3ˆÔØ ×,Ñ,ˆŒÜ—l‘l¤5§;¡;¨t×/?Ñ/?ÀÇÁÓ#QÓRˆ�r_   c                 óp  — |j                  d| j                  «      }t        j                  || j                  «      }t
        j                  j                  j                  |j                  «       d¬«      }t        j                  || j                  d¬«      \  }}||j                  dd¬«      z  }|}|||fS )Nr'   r%   T)r&   Úkeepdim)r6   rS   ÚFrl   r†   r+   r   r.   r/   r3   r0   r9   r7   )r]   r`   Úrouter_logitsÚrouter_probsÚrouter_top_valueÚrouter_indicesÚrouter_scoress          rI   ry   zMixtralTopKRouter.forward·   sŸ   € Ø%×-Ñ-¨b°$·/±/ÓBˆÜŸ™ °·±Ó<ˆÜ—x‘x×*Ñ*×2Ñ2°=×3FÑ3FÓ3HÈbÐ2ÓQˆÜ+0¯:©:°lÀDÇJÁJÐTVÔ+WÑ(Ð˜.ØÐ,×0Ñ0°RÀÐ0ÓFÑFÐØ(ˆØ˜m¨^Ð;Ð;r_   )rz   r{   r|   rP   ry   r   r€   s   @rI   r‚   r‚   ¯   s   ø„ ôSö<r_   r‚   c                   ót   ‡ — e Zd Zˆ fd„Zdej
                  deej
                  ej
                  f   fd„Zˆ xZS )ÚMixtralSparseMoeBlockc                 ó¦   •— t         ‰| �  «        |j                  | _        |j                  | _        t        |«      | _        t        |«      | _	        y r„   )
rO   rP   r…   r9   Úrouter_jitter_noiseÚjitter_noiser‚   rv   rL   Úexpertsr\   s     €rI   rP   zMixtralSparseMoeBlock.__init__Â   sA   ø€ Ü‰ÑÔØ×/Ñ/ˆŒ
Ø"×6Ñ6ˆÔÜ% fÓ-ˆŒ	Ü% fÓ-ˆ�r_   r`   r#   c                 ó”  — |j                   \  }}}| j                  rQ| j                  dkD  rB|t        j                  |«      j                  d| j                  z
  d| j                  z   «      z  }|j                  d|j                   d   «      }| j                  |«      \  }}}| j                  |||«      }|j                  |||«      }|S )Nr   g      ð?r'   )
r4   Útrainingr“   r+   Ú
empty_likeÚuniform_Úviewrv   r”   r6   )r]   r`   rC   rD   rS   r>   rb   ra   s           rI   ry   zMixtralSparseMoeBlock.forwardÉ   sÀ   € Ø2?×2EÑ2EÑ/ˆ
�O ZØ�=Š=˜T×.Ñ.°Ò2ØœU×-Ñ-¨mÓ<×EÑEÀcÈD×L]ÑL]ÑF]Ð_bÐei×evÑevÑ_vÓwÑwˆMØ%×*Ñ*¨2¨}×/BÑ/BÀ2Ñ/FÓGˆØ(,¯	©	°-Ó(@Ñ%ˆˆ=˜+ØŸ™ ]°KÀÓOˆØ%×-Ñ-¨j¸/È:ÓVˆØÐr_   )	rz   r{   r|   rP   r+   r~   r)   ry   r   r€   s   @rI   r�   r�   Á   s1   ø„ ô.ð U§\¡\ð °e¸E¿L¹LÈ%Ï,É,Ð<VÑ6W÷ r_   r�   c                   ó   — e Zd Zy)ÚMixtralRMSNormN©rz   r{   r|   © r_   rI   r›   r›   Ô   ó   „ Ør_   r›   c                   ó   — e Zd Zy)ÚMixtralRotaryEmbeddingNrœ   r�   r_   rI   r    r    Ø   rž   r_   r    c                   ó   — e Zd Zy)ÚMixtralAttentionNrœ   r�   r_   rI   r¢   r¢   Ü   rž   r_   r¢   c                   óö   ‡ — e Zd Zdedefˆ fd„Z	 	 	 	 ddej                  deej                  ej                  f   dz  dej                  dz  dej                  dz  d	e
dz  d
ee   dej                  fd„Zˆ xZS )ÚMixtralDecoderLayerrM   Ú	layer_idxc                 ó  •— t         ‰| �  «        |j                  | _        t        ||«      | _        t        |«      | _        t        |j                  |j                  ¬«      | _	        t        |j                  |j                  ¬«      | _
        y )N)Úeps)rO   rP   rR   r¢   Ú	self_attnr�   Úmlpr›   Úrms_norm_epsÚinput_layernormÚpost_attention_layernorm)r]   rM   r¥   r^   s      €rI   rP   zMixtralDecoderLayer.__init__á   sl   ø€ Ü‰ÑÔØ!×-Ñ-ˆÔä)¨&°)Ó<ˆŒä(¨Ó0ˆŒÜ-¨f×.@Ñ.@Àf×FYÑFYÔZˆÔÜ(6°v×7IÑ7IÈv×ObÑObÔ(cˆÕ%r_   Nr`   Úposition_embeddingsr"   Úposition_idsÚpast_key_valuesÚkwargsr#   c           	      ó¾   — |}| j                  |«      } | j                  d|||||dœ|¤Ž\  }}||z   }|}| j                  |«      }| j                  |«      }||z   }|S )N)r`   r­   r"   r®   r¯   r�   )r«   r¨   r¬   r©   )	r]   r`   r­   r"   r®   r¯   r°   Úresidualr>   s	            rI   ry   zMixtralDecoderLayer.forwardë   s‹   € ð !ˆØ×,Ñ,¨]Ó;ˆØ)˜4Ÿ>™>ð 
Ø'Ø 3Ø)Ø%Ø+ñ
ð ñ
Ñˆ�qð ! =Ñ0ˆØ ˆØ×5Ñ5°mÓDˆØŸ™ Ó/ˆØ  =Ñ0ˆØÐr_   )NNNN)rz   r{   r|   r   ÚintrP   r+   r~   r)   Ú
LongTensorr   r   r   ry   r   r€   s   @rI   r¤   r¤   à   s¯   ø„ ðd˜}ð d¸õ dð IMØ.2Ø04Ø(,ñà—|‘|ðð # 5§<¡<°·±Ð#=Ñ>ÀÑEðð Ÿ™ tÑ+ð	ð
 ×&Ñ&¨Ñ-ðð  ™ðð Ð+Ñ,ðð 
�‰÷r_   r¤   c                   óV   — e Zd Z eed¬«      eedœZ ej                  «       d„ «       Z
y)ÚMixtralPreTrainedModelr   )Úindex)rŠ   r`   Ú
attentionsc                 ól  — t        j                  | |«       | j                  j                  }t	        |t
        «      rEt        j                  |j                  d|¬«       t        j                  |j                  d|¬«       y t	        |t        «      r#t        j                  |j                  d|¬«       y y )Ng        )r2   Ústd)r   Ú_init_weightsrM   Úinitializer_ranger(   rL   ÚinitÚnormal_rX   rY   r‚   r†   )r]   Úmodulerº   s      rI   r»   z$MixtralPreTrainedModel._init_weights  s{   € ä×%Ñ% d¨FÔ3Ø�k‰k×+Ñ+ˆÜ�fœnÔ-Ü�L‰L˜×,Ñ,°3¸CÕ@Ü�L‰L˜×)Ñ)°¸Ö=Ü˜Ô 1Ô2Ü�L‰L˜Ÿ™¨S°cÖ:ð 3r_   N)rz   r{   r|   r   r‚   r¤   r¢   Ú_can_record_outputsr+   rg   r»   r�   r_   rI   r¶   r¶     s7   „ á'Ð(9ÀÔCØ,Ø&ñÐð €U‡]�]ƒ_ñ;ó ñ;r_   r¶   c                   ó¼   — e Zd Z	 	 	 	 	 	 ddej                  dz  dej
                  dz  dej                  dz  dedz  dej                  dz  dedz  de	e
   d	efd
„Zy)ÚMixtralModelNÚ	input_idsr"   r®   r¯   Úinputs_embedsÚ	use_cacher°   r#   c           
      óz  — |d u |d uz  rt        d«      ‚|r|€t        | j                  ¬«      }|€| j                  |«      }|€V|�|j	                  «       nd}t        j                  |j                  d   |j                  ¬«      |z   }|j                  d«      }| j                  j                  €t        nt        }	 |	| j                  ||||¬«      }
|}| j                  ||¬«      }| j                  d | j                  j                   D ]  } ||f|
||||dœ|¤Ž}Œ | j!                  |«      }t#        ||¬	«      S )
Nz:You must specify exactly one of input_ids or inputs_embeds)rM   r   r   )r*   )rM   rÄ   r"   r¯   r®   )r®   )r"   r®   r¯   rÅ   r­   )Úlast_hidden_stater¯   )Ú
ValueErrorr   rM   Úembed_tokensÚget_seq_lengthr+   Úaranger4   r*   r8   Úsliding_windowr
   r   Ú
rotary_embÚlayersrE   Únormr   )r]   rÃ   r"   r®   r¯   rÄ   rÅ   r°   Úpast_seen_tokensÚmask_functionÚcausal_maskr`   r­   Údecoder_layers                 rI   ry   zMixtralModel.forward  sd  € ð ˜Ð -°tÐ";Ò<ÜÐYÓZÐZá˜Ð0Ü*°$·+±+Ô>ˆOàÐ Ø ×-Ñ-¨iÓ8ˆMàÐØCRÐC^˜×=Ñ=Ô?ÐdeÐÜ Ÿ<™<¨×(;Ñ(;¸AÑ(>À}×G[ÑG[Ô\Ð_oÑoˆLØ'×1Ñ1°!Ó4ˆLà.2¯k©k×.HÑ.HÐ.PÕ*ÔVwˆÙ#Ø—;‘;Ø'Ø)Ø+Ø%ô
ˆð &ˆØ"Ÿo™o¨mÈ,˜oÓWÐà!Ÿ[™[Ð)H¨4¯;©;×+HÑ+HÐIò 		ˆMÙ)Øðà*Ø)Ø /Ø#Ø$7ñð ñ‰Mð		ð Ÿ	™	 -Ó0ˆä%Ø+Ø+ô
ð 	
r_   )NNNNNN)rz   r{   r|   r+   r´   r~   r   ÚFloatTensorÚboolr   r   r   ry   r�   r_   rI   rÂ   rÂ     s¡   „ ð .2Ø.2Ø04Ø(,Ø26Ø!%ñ4
à×#Ñ# dÑ*ð4
ð Ÿ™ tÑ+ð4
ð ×&Ñ&¨Ñ-ð	4
ð
  ™ð4
ð ×(Ñ(¨4Ñ/ð4
ð ˜$‘;ð4
ð Ð+Ñ,ð4
ð 
 ô4
r_   rÂ   c                   ó"  ‡ — e Zd ZddiZˆ fd„Z	 	 	 	 	 	 	 	 	 ddej                  dz  dej                  dz  dej                  dz  dedz  d	ej                  dz  d
ej                  dz  de
dz  de
dz  deej                  z  dee   defd„Zˆ xZS )ÚMixtralForCausalLMzlm_head.weightzmodel.embed_tokens.weightc                 óª   •— t         ‰| �  |«       t        |«      | _        |j                  | _        |j
                  | _        |j                  | _        y r„   )rO   rP   rÂ   ÚmodelÚrouter_aux_loss_coefrQ   r!   r…   r\   s     €rI   rP   zMixtralForCausalLM.__init__S  sF   ø€ Ü‰Ñ˜Ô Ü! &Ó)ˆŒ
Ø$*×$?Ñ$?ˆÔ!Ø!×3Ñ3ˆÔØ#)×#=Ñ#=ˆÕ r_   NrÃ   r"   r®   r¯   rÄ   ÚlabelsrÅ   Úoutput_router_logitsÚlogits_to_keepr°   r#   c
                 ój  — |�|n| j                   j                  } | j                  d|||||||dœ|
¤Ž}|j                  }t	        |	t
        «      rt        |	 d«      n|	}| j                  |dd…|dd…f   «      }d}|� | j                  ||| j                  fi |
¤Ž}d}|rYt        |j                  | j                  | j                  |«      }|�+|| j                  |j                  |j                   «      z  z  }t#        ||||j$                  |j&                  |j(                  |j                  ¬«      S )a~  
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
            config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored
            (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.

        Example:

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

        >>> model = MixtralForCausalLM.from_pretrained("mistralai/Mixtral-8x7B-v0.1")
        >>> tokenizer = AutoTokenizer.from_pretrained("mistralai/Mixtral-8x7B-v0.1")

        >>> 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."
        ```N)rÃ   r"   r®   r¯   rÄ   rÅ   rÜ   )ÚlossÚaux_lossÚlogitsr¯   r`   r¸   rŠ   r�   )rM   rÜ   rÙ   rÇ   r(   r³   ÚsliceÚlm_headÚloss_functionÚ
vocab_sizerJ   rŠ   r!   r…   rÚ   r-   r*   r   r¯   r`   r¸   )r]   rÃ   r"   r®   r¯   rÄ   rÛ   rÅ   rÜ   rÝ   r°   Úoutputsr`   Úslice_indicesrá   rß   rà   s                    rI   ry   zMixtralForCausalLM.forwardZ  sU  € ðJ %9Ð$DÑ È$Ï+É+×JjÑJjð 	ð
 +5¨$¯*©*ð 	+
ØØ)Ø%Ø+Ø'ØØ!5ñ	+
ð ñ	+
ˆð  ×1Ñ1ˆä8BÀ>ÔSVÔ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜mªA¨}ºaÐ,?Ñ@ÓAˆàˆØÐØ%�4×%Ñ% f¨f°d·o±oÑPÈÑPˆDàˆÙÜ/Ø×%Ñ%Ø× Ñ Ø×(Ñ(Øó	ˆHð Ð!Ø˜×1Ñ1°H·K±KÀÇÁÓ4LÑLÑL�ä(ØØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø!×/Ñ/ô
ð 	
r_   )	NNNNNNNNr   )rz   r{   r|   Ú_tied_weights_keysrP   r+   r´   r~   r   rÔ   rÕ   r³   r   r   r   ry   r   r€   s   @rI   r×   r×   P  sþ   ø„ Ø*Ð,GÐHÐô>ð .2Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø,0Ø-.ñP
à×#Ñ# dÑ*ðP
ð Ÿ™ tÑ+ðP
ð ×&Ñ&¨Ñ-ð	P
ð
  ™ðP
ð ×(Ñ(¨4Ñ/ðP
ð × Ñ  4Ñ'ðP
ð ˜$‘;ðP
ð # T™kðP
ð ˜eŸl™lÑ*ðP
ð Ð+Ñ,ðP
ð 
#÷P
r_   r×   c                   ó   — e Zd Zy)Ú MixtralForSequenceClassificationNrœ   r�   r_   rI   rê   rê   ­  rž   r_   rê   c                   ó   — e Zd Zy)ÚMixtralForTokenClassificationNrœ   r�   r_   rI   rì   rì   ±  rž   r_   rì   c                   ó   — e Zd Zy)ÚMixtralForQuestionAnsweringNrœ   r�   r_   rI   rî   rî   µ  rž   r_   rî   )r×   rî   rÂ   r¶   rê   rì   )Nr   N)Cr}   r+   Útorch.nn.functionalr   r.   r‰   Ú r   r½   Úactivationsr   Úcache_utilsr   r   Úintegrationsr	   Úmasking_utilsr
   r   Úmodeling_layersr   Úmodeling_outputsr   r   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   Úutils.output_capturingr   Úmistral.modeling_mistralr   r   r   r   r   r   r   r   r   Úconfiguration_mixtralr   Ú
get_loggerrz   Úloggerr~   r)   r³   rJ   ÚModulerL   r‚   r�   r›   r    r¢   r¤   r¶   rÂ   r×   rê   rì   rî   Ú__all__r�   r_   rI   ú<module>r     s’  ðñ& ã ß Ð Ý å &Ý !ß .Ý 6ß RÝ 9ß QÝ -Ý &ß 0Ý 4÷
÷ 
õ 
õ 1ð 
ˆ×	Ñ	˜HÓ	%€ð
 #Ø
Ø*.ñ	O&Ø—‘  e§l¡lÑ 3Ñ3°dÑ:ðO&à�t‘ðO&ð —L‘L 4Ñ'ð	O&ð
 ‡\�\�CÑóO&ðd ô$#�R—Y‘Yó $#ó ð$#ôN<˜Ÿ	™	ô <ô$˜BŸI™Iô ô&	�^ô 	ô	Ð3ô 	ô	Ð'ô 	ô#Ð4ô #ôL;Ð3ô ;ô$5
�<ô 5
ôpZ
Ð+ô Z
ôz	Ð'Gô 	ô	Ð$Aô 	ô	Ð"=ô 	ò�r_   