§
    ‚Štj4*  ã                   ó¤  — d dl m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 ddlmZmZ dd	lmZmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZmZmZm Z m!Z! ddl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z.  ej/        e0¦  «        Z1 G d„ de%¦  «        Z2 G d„ de&¦  «        Z3 G d„ de,¦  «        Z4 G d„ de¦  «        Z5 G d„ de¦  «        Z6 G d„ d e ¦  «        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e:¦  «        Z= G d-„ d.ee:¦  «        Z>g d/¢Z?dS )0é    )ÚCallableN)Únné   )Úinitialization)ÚCache)ÚFlashAttentionKwargs)Ú GenericForSequenceClassificationÚGenericForTokenClassification)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)Úlogging)Úis_flash_attention_requestedé   )ÚDeepseekV2TopkRouter)ÚDeepseekV3AttentionÚDeepseekV3DecoderLayerÚDeepseekV3ExpertsÚDeepseekV3MoEÚapply_rotary_pos_emb_interleave)ÚLlamaForCausalLMÚ
LlamaModelÚLlamaRMSNormÚLlamaRotaryEmbeddingÚapply_rotary_pos_embÚeager_attention_forward)Úget_llama_4_attn_scale)ÚQwen2MoeMLPé   )ÚMistral4Configc                   ó   — e Zd ZdS )ÚMistral4RMSNormN©Ú__name__Ú
__module__Ú__qualname__© ó    úk/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/mistral4/modular_mistral4.pyr"   r"   4   ó   € € € € € Ø€Dr(   r"   c                   ó   — e Zd ZdS )ÚMistral4RotaryEmbeddingNr#   r'   r(   r)   r,   r,   8   r*   r(   r,   c                   ó   — e Zd ZdS )ÚMistral4MLPNr#   r'   r(   r)   r.   r.   <   r*   r(   r.   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚMistral4TopkRouterc                 ó~   •— t          ¦   «                              |¦  «         | `|j        | _        |j        | _        d S ©N)ÚsuperÚ__init__Útopk_methodÚnum_local_expertsÚnum_expertsÚnorm_topk_prob)ÚselfÚconfigÚ	__class__s     €r)   r4   zMistral4TopkRouter.__init__A   s=   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØÐØ!Ô3ˆÔØ$Ô3ˆÔÐÐr(   c                 óº  — |                      d| j        ¦  «        }t          j        || j        ¦  «        }|                     d¦  «        }|                      d| j        | j        | j        z  ¦  «                             dd¬¦  «        d          	                    d¬¦  «        }t          j        || j        dd¬¦  «        d         }t          j        |¦  «        }|                     d|d¦  «         |                     d¦  «                             d| j        | j        | j        z  ¦  «                             d| j        ¦  «        }|                     |                     ¦   «          d¦  «        }t          j        || j        dd¬¦  «        d         }	|                     d|	¦  «        }
| j        r|
 	                    dd	¬
¦  «        dz   }|
|z  }
|
| j        z  }
||
|	fS )Néÿÿÿÿr   ©Údimr   F)Úkr?   Úsortedr   ç        T)r?   Úkeepdimg#B’¡œÇ;)ÚviewÚ
hidden_dimÚFÚlinearÚweightÚsoftmaxÚ	num_groupr7   ÚtopkÚsumÚtorchÚ
topk_groupÚ
zeros_likeÚscatter_Ú	unsqueezeÚexpandÚreshapeÚmasked_fillÚboolÚtop_kÚgatherr8   Úrouted_scaling_factor)r9   Úhidden_statesÚrouter_logitsÚscoresÚgroup_scoresÚ	group_idxÚ
group_maskÚ
score_maskÚscores_for_choiceÚtopk_indicesÚtopk_weightsÚdenominators               r)   ÚforwardzMistral4TopkRouter.forwardG   sÅ  € Ø%×*Ò*¨2¨t¬Ñ?Ô?ˆÝœ °´Ñ<Ô<ˆØ×&Ò& rÑ*Ô*ˆà�KŠK˜˜DœN¨DÔ,<ÀÄÑ,NÑOÔO×TÒTÐUVÐ\^ÐTÑ_Ô_Ð`aÔb×fÒfÐkmÐfÑnÔnð 	õ ”J˜|¨t¬ÀBÈuÐUÑUÔUÐVWÔXˆ	ÝÔ% lÑ3Ô3ˆ
Ø×Ò˜A˜y¨!Ñ,Ô,Ð,à× Ò  Ñ$Ô$ßŠV�B˜œ¨Ô(8¸D¼NÑ(JÑKÔKßŠW�R˜Ô)Ñ*Ô*ð 	ð
 #×.Ò.°
·²Ñ0AÔ0AÐ/AÀ3ÑGÔGÐÝ”zÐ"3°t´zÀrÐRWÐXÑXÔXÐYZÔ[ˆØ—}’} Q¨Ñ5Ô5ˆØÔð 	(Ø&×*Ò*¨r¸4Ð*Ñ@Ô@À5ÑHˆKØ˜KÑ'ˆLØ# dÔ&@Ñ@ˆØ˜l¨LÐ8Ð8r(   )r$   r%   r&   r4   rd   Ú__classcell__©r;   s   @r)   r0   r0   @   sG   ø€ € € € € ð4ð 4ð 4ð 4ð 4ð9ð 9ð 9ð 9ð 9ð 9ð 9r(   r0   c                   ó   — e Zd ZdS )ÚMistral4ExpertsNr#   r'   r(   r)   rh   rh   `   r*   r(   rh   c                   ó   — e Zd ZdS )ÚMistral4MoENr#   r'   r(   r)   rj   rj   d   r*   r(   rj   c                   óè   — e Zd Zdedefd„Z	 ddej        deej        ej        f         dej        dz  dej        d	e	dz  d
e
e         deej        ej        dz  eej                 dz  f         fd„ZdS )ÚMistral4Attentionr:   Ú	layer_idxc                 ó.  — t           j                             | ¦  «         || _        || _        |j        |j        z  | _        |j        | _        |j        | _	        |j
        | _
        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        d| _        | j
        €/t          j        |j        | j	        | j        z  d¬¦  «        | _        nrt          j        |j        |j
        |j        ¬¦  «        | _        t-          |j
        ¦  «        | _        t          j        |j
        | j	        | j        z  d¬¦  «        | _        t          j        |j        | j        | j        z   |j        ¬¦  «        | _        t-          | j        ¦  «        | _        t          j        | j        | j	        | j        | j        z   z  d¬¦  «        | _        t          j        | j	        | j        z  |j        |j        ¬¦  «        | _        | j        dz  | _        d S )NTF)Úbiasg      à¿)r   ÚModuler4   r:   rm   Únum_attention_headsÚnum_key_value_headsÚnum_key_value_groupsÚattention_dropoutÚ	num_headsÚq_lora_rankÚqk_rope_head_dimÚkv_lora_rankÚ
v_head_dimÚqk_nope_head_dimÚqk_head_dimÚ	is_causalÚLinearÚhidden_sizeÚ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_projÚscaling©r9   r:   rm   s      r)   r4   zMistral4Attention.__init__i   sæ  € Ý
Œ	×Ò˜4Ñ Ô Ð ØˆŒØ"ˆŒØ$*Ô$>À&ÔB\Ñ$\ˆÔ!Ø!'Ô!9ˆÔØÔ3ˆŒà!Ô-ˆÔØ &Ô 7ˆÔØ"Ô/ˆÔØ Ô+ˆŒØ &Ô 7ˆÔØ!Ô-ˆÔàˆŒØÔÐ#Ýœ) FÔ$6¸¼ÈÔIYÑ8YÐ`eÐfÑfÔfˆDŒKˆKåœI fÔ&8¸&Ô:LÐSYÔShÐiÑiÔiˆDŒMÝ!0°Ô1CÑ!DÔ!DˆDÔÝœI fÔ&8¸$¼.È4ÔK[Ñ:[ÐbgÐhÑhÔhˆDŒMå"$¤)ØÔØÔ Ô 5Ñ5ØÔ&ð#
ñ #
ô #
ˆÔõ
 .¨dÔ.?Ñ@Ô@ˆÔÝœØÔØŒN˜dÔ3°d´oÑEÑFØð
ñ 
ô 
ˆŒõ ”iØŒN˜Tœ_Ñ,ØÔØÔ&ð
ñ 
ô 
ˆŒð Ô'¨DÑ1ˆŒˆˆr(   NrY   Úposition_embeddingsÚattention_maskÚposition_idsÚpast_key_valuesÚkwargsÚreturnc                 óŠ  — |j         d d…         \  }}||d| j        f}	||d| j        | j        z   f}
| j        €|                      |¦  «        }n;|                      |                      |                      |¦  «        ¦  «        ¦  «        }| 	                    |	¦  «         
                    dd¦  «        }t          j        || j        | j        gd¬¦  «        \  }}|                      |¦  «        }t          j        || j        | j        gd¬¦  «        \  }}|                      |                      |¦  «        ¦  «         	                    |
¦  «         
                    dd¦  «        }t          j        || j        | j        gd¬¦  «        \  }}| 	                    |d|| j        ¦  «        }|\  }}| j        j        rt)          ||||¦  «        \  }}nt+          ||||¦  «        \  }} |j        g |j         d d…         ¢d‘R Ž }t          j        ||fd¬¦  «        }t          j        ||fd¬¦  «        }|t1          || j        j                             d¦  «        | j        j                             d¦  «        ¦  «                             |j        ¦  «        z  }|�|                     ||| j        ¦  «        \  }}t?          | j        ¦  «        r4| j        | j        k    r$tA          j!        |d| j        | j        z
  g¦  «        }tE          j#        | j        j$        tJ          ¦  «        } || ||||f| j&        sdn| j'        | j(        d	œ|¤Ž\  }}t?          | j        ¦  «        r)| j        | j        k    r|d d …d d …d d …d | j        …f         }| )                    ||d¦  «         *                    ¦   «         }|  +                    |¦  «        }||fS )
Nr=   r   r   r>   Úllama_4_scaling_betaÚ original_max_position_embeddingsr   rB   )Údropoutrˆ   ),Úshaper{   rz   ry   rv   r   rƒ   r‚   r�   rD   Ú	transposerM   Úsplitrw   r„   rx   r†   r…   r:   Úrope_interleaver   r   rR   Úcatr   Úrope_parametersÚgetÚtoÚdtypeÚupdaterm   r   rF   Úpadr   Úget_interfaceÚ_attn_implementationr   Útrainingrt   rˆ   rS   Ú
contiguousr‡   )r9   rY   rŠ   r‹   rŒ   r�   rŽ   Ú
batch_sizeÚ
seq_lengthÚquery_shapeÚ	key_shapeÚq_statesÚq_passÚq_rotÚcompressed_kvÚk_passÚk_rotÚvalue_statesÚcosÚsinÚquery_statesÚ
key_statesÚattention_interfaceÚattn_outputÚattn_weightss                            r)   rd   zMistral4Attention.forward”   sç  € ð "/Ô!4°S°b°SÔ!9Ñˆ
�JØ! :¨r°4Ô3CÐDˆØ ¨R°Ô1FÈÌÑ1XÐYˆ	àÔÐ#Ø—{’{ =Ñ1Ô1ˆHˆHà—}’} T×%7Ò%7¸¿ºÀmÑ8TÔ8TÑ%UÔ%UÑVÔVˆHØ—=’= Ñ-Ô-×7Ò7¸¸1Ñ=Ô=ˆÝœ H¨tÔ/DÀdÔF[Ð.\ÐbdÐeÑeÔe‰ˆ�à×/Ò/°Ñ>Ô>ˆÝœ M°DÔ4EÀtÔG\Ð3]ÐceÐfÑfÔf‰ˆ�à—’ × 3Ò 3°FÑ ;Ô ;Ñ<Ô<×AÒAÀ)ÑLÔL×VÒVÐWXÐZ[Ñ\Ô\ˆÝ$œ{¨6°DÔ4IÈ4Ì?Ð3[ÐacÐdÑdÔdÑˆ�à—
’
˜: q¨*°dÔ6KÑLÔLˆà&‰ˆˆSØŒ;Ô&ð 	HÝ:¸5À%ÈÈcÑRÔR‰LˆE�5�5å/°°u¸cÀ3ÑGÔG‰LˆE�5Ø�”Ð4˜fœl¨3¨B¨3Ô/Ð4°Ð4Ð4Ð4ˆå”y &¨% °bÐ9Ñ9Ô9ˆÝ”Y ¨˜°BÐ7Ñ7Ô7ˆ
à#Õ&<ØØŒKÔ'×+Ò+Ð,BÑCÔCØŒKÔ'×+Ò+Ð,NÑOÔOñ'
ô '
÷ Š"ˆ\ÔÑ
 Ô
 ñ	!ˆð Ð&Ø'6×'=Ò'=¸jÈ,ÐX\ÔXfÑ'gÔ'gÑ$ˆJ˜å'¨¬Ñ4Ô4ð 	X¸Ô9IÈTÌ_Ò9\Ð9\Ýœ5 °°4Ô3CÀdÄoÑ3UÐ/VÑWÔWˆLå(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð	%
ð  $œ}ÐH�C�C°$Ô2HØ”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\õ (¨¬Ñ4Ô4ð 	B¸Ô9IÈTÌ_Ò9\Ð9\Ø% a a a¨¨¨¨A¨A¨AÐ/@°´Ð/@Ð&@ÔAˆKà!×)Ò)¨*°jÀ"ÑEÔE×PÒPÑRÔRˆØ—k’k +Ñ.Ô.ˆØ˜LÐ(Ð(r(   r2   )r$   r%   r&   r    Úintr4   rM   ÚTensorÚtupler   r   r   rd   r'   r(   r)   rl   rl   h   së   € € € € € ð)2˜~ð )2¸#ð )2ð )2ð )2ð )2ðb )-ðF)ð F)à”|ðF)ð # 5¤<°´Ð#=Ô>ðF)ð œ tÑ+ð	F)ð
 ”lðF)ð  ™ðF)ð Ð-Ô.ðF)ð 
ˆuŒ|˜Uœ\¨DÑ0°%¸¼Ô2EÈÑ2LÐLÔ	MðF)ð F)ð F)ð F)ð F)ð F)r(   rl   c                   ó   — e Zd Zdedefd„ZdS )ÚMistral4DecoderLayerr:   rm   c                 óp  — t           j                             | ¦  «         |j        | _        t	          ||¬¦  «        | _        ||j        k    rt          |¦  «        | _        nt          |¦  «        | _        t          |j        |j        ¬¦  «        | _        t          |j        |j        ¬¦  «        | _        d S )N)r:   rm   )Úeps)r   rp   r4   r~   rl   Ú	self_attnÚfirst_k_dense_replacerj   Úmlpr.   r"   Úrms_norm_epsÚinput_layernormÚpost_attention_layernormr‰   s      r)   r4   zMistral4DecoderLayer.__init__Þ   s¢   € Ý
Œ	×Ò˜4Ñ Ô Ð Ø!Ô-ˆÔå*°&ÀIÐNÑNÔNˆŒà˜Ô4Ò4Ð4Ý" 6Ñ*Ô*ˆDŒHˆHå" 6Ñ*Ô*ˆDŒHå.¨vÔ/AÀvÔGZÐ[Ñ[Ô[ˆÔÝ(7¸Ô8JÐPVÔPcÐ(dÑ(dÔ(dˆÔ%Ð%Ð%r(   N)r$   r%   r&   r    rµ   r4   r'   r(   r)   r¹   r¹   Ý   s>   € € € € € ðe˜~ð e¸#ð eð eð eð eð eð er(   r¹   c                   óŽ   ‡ — e Zd ZU eed<   dZdZdgZdgZdZ	dZ
dZdZdZeedœZg Zg Z ej        ¦   «         ˆ fd„¦   «         Zˆ xZS )ÚMistral4PreTrainedModelr:   ÚmodelTr¹   r�   )rY   Ú
attentionsc                 óŠ  •— t          ¦   «                              |¦  «         t          |t          ¦  «        r(t	          j        |j        d| j        j        ¬¦  «         d S t          |t          ¦  «        rNt	          j        |j
        d| j        j        ¬¦  «         t	          j        |j        d| j        j        ¬¦  «         d S d S )NrB   )ÚmeanÚstd)r3   Ú_init_weightsÚ
isinstancer0   ÚinitÚnormal_rH   r:   Úinitializer_rangerh   Úgate_up_projÚ	down_proj)r9   Úmoduler;   s     €r)   rÉ   z%Mistral4PreTrainedModel._init_weights   s¶   ø€ å‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ0Ñ1Ô1ð 	XÝŒL˜œ¨S°d´kÔ6SÐTÑTÔTÐTÐTÐTÝ˜¥Ñ0Ô0ð 	XÝŒL˜Ô,°3¸D¼KÔ<YÐZÑZÔZÐZÝŒL˜Ô)°¸¼Ô9VÐWÑWÔWÐWÐWÐWð	Xð 	Xr(   )r$   r%   r&   r    Ú__annotations__Ú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¹   rl   Ú_can_record_outputsÚ_keep_in_fp32_modules_strictÚ"_keys_to_ignore_on_load_unexpectedrM   Úno_gradrÉ   re   rf   s   @r)   rÃ   rÃ   í   s½   ø€ € € € € € ØÐÐÑØÐØ&*Ð#Ø/Ð0ÐØ#4Ð"5ÐØÐØ€NØÐà!ÐØ"&Ðà-Ø'ðð Ðð $&Ð Ø)+Ð&à€U„]�_„_ðXð Xð Xð Xñ „_ðXð Xð Xð Xð Xr(   rÃ   c                   ó   — e Zd ZdS )ÚMistral4ModelNr#   r'   r(   r)   rà   rà   
  r*   r(   rà   c                   ó   — e Zd ZdS )ÚMistral4ForCausalLMNr#   r'   r(   r)   râ   râ     r*   r(   râ   c                   ó   — e Zd ZdS )Ú!Mistral4ForSequenceClassificationNr#   r'   r(   r)   rä   rä     r*   r(   rä   c                   ó   — e Zd ZdS )ÚMistral4ForTokenClassificationNr#   r'   r(   r)   ræ   ræ     r*   r(   ræ   )rÃ   rà   râ   rä   ræ   )@Úcollections.abcr   rM   Útorch.nn.functionalr   Ú
functionalrF   Ú r   rË   Úcache_utilsr   Úmodeling_flash_attention_utilsr   Úmodeling_layersr	   r
   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   Úutils.genericr   Ú deepseek_v2.modeling_deepseek_v2r   Ú deepseek_v3.modeling_deepseek_v3r   r   r   r   r   Úllama.modeling_llamar   r   r   r   r   r   Úministral3.modeling_ministral3r   Úqwen2_moe.modeling_qwen2_moer   Úconfiguration_mistral4r    Ú
get_loggerr$   Úloggerr"   r,   r.   r0   rh   rj   rl   r¹   rÃ   rà   râ   rä   ræ   Ú__all__r'   r(   r)   ú<module>rû      s?  ðð %Ð $Ð $Ð $Ð $Ð $à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø  Ð  Ð  Ð  Ð  Ð  Ø BÐ BÐ BÐ BÐ BÐ BØ ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ð ^Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø CÐ CÐ CÐ CÐ CÐ Cðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð DÐ CÐ CÐ CÐ CÐ CØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ð 
ˆÔ	˜HÑ	%Ô	%€ð	ð 	ð 	ð 	ð 	�lñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð2ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�+ñ 	ô 	ð 	ð9ð 9ð 9ð 9ð 9Ð-ñ 9ô 9ð 9ð@	ð 	ð 	ð 	ð 	Ð'ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�-ñ 	ô 	ð 	ðr)ð r)ð r)ð r)ð r)Ð+ñ r)ô r)ð r)ðjeð eð eð eð eÐ1ñ eô eð eð Xð Xð Xð Xð X˜oñ Xô Xð Xð:	ð 	ð 	ð 	ð 	�Jñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð*ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð(HÐJañ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð%BÐD[ñ 	ô 	ð 	ðð ð €€€r(   