§
    ‚Štj]  ã                   óì  — d Z ddlmZ ddl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 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m Z 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,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3  e"j4        e5¦  «        Z6 G d„ de-¦  «        Z7 G d„ de.¦  «        Z8 G d„ dej9        ¦  «        Z: G d„ dej9        ¦  «        Z; G d „ d!ej9        ¦  «        Z< G d"„ d#ej9        ¦  «        Z= G d$„ d%ej9        ¦  «        Z> G d&„ d'e)¦  «        Z?e  G d(„ d)e,¦  «        ¦   «         Z@e  G d*„ d+e+¦  «        ¦   «         ZA G d,„ d-e@e¦  «        ZB G d.„ d/ee@¦  «        ZCg d0¢ZDdS )1zPyTorch JetMoe model.é    )ÚCallableN)Únn)Ú
functionalé   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)Úcreate_causal_mask)Ú GenericForSequenceClassification)ÚMoeCausalLMOutputWithPastÚMoeModelOutputWithPast)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚlogging)Úmerge_with_config_defaults)ÚOutputRecorderÚcapture_outputsé   )ÚLlamaDecoderLayer)ÚMixtralModelÚMixtralPreTrainedModelÚMixtralRMSNormÚMixtralRotaryEmbeddingÚapply_rotary_pos_embÚeager_attention_forwardÚload_balancing_loss_funcé   )ÚJetMoeConfigc                   ó   — e Zd ZdS )ÚJetMoeRMSNormN©Ú__name__Ú
__module__Ú__qualname__© ó    úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/jetmoe/modular_jetmoe.pyr&   r&   4   ó   € € € € € Ø€Dr,   r&   c                   ó   — e Zd ZdS )ÚJetMoeRotaryEmbeddingNr'   r+   r,   r-   r0   r0   8   r.   r,   r0   c                   ó6   ‡ — e Zd Zdedededdfˆ fd„Zd„ Zˆ xZS )ÚJetMoeParallelExpertsÚnum_expertsÚ
input_sizeÚoutput_sizeÚreturnNc                 óÌ   •— t          ¦   «                              ¦   «          t          j        t	          j        |||¦  «        ¦  «        | _        || _        || _        || _	        dS )aÃ  
        Initialize the JetMoeParallelExperts module.
        The experts weights are stored in [num_experts, output_size, input_size] format. Such that it's compatible with
        many MoE libraries, such as [Megablock](https://github.com/databricks/megablocks) and
        [ScatterMoE](https://github.com/shawntan/scattermoe), as well as the
        [MoE kernel](https://github.com/vllm-project/vllm/blob/main/vllm/model_executor/layers/fused_moe/fused_moe.py)
        used in vllm.

        Args:
            num_experts (int):
                Number of experts.
            input_size (int):
                Size of the input.
            output_size (int):
                Size of the output.
        N)
ÚsuperÚ__init__r   Ú	ParameterÚtorchÚemptyÚweightr3   r4   r5   )Úselfr3   r4   r5   Ú	__class__s       €r-   r9   zJetMoeParallelExperts.__init__=   sW   ø€ õ" 	‰Œ×ÒÑÔÐÝ”l¥5¤;¨{¸KÈÑ#TÔ#TÑUÔUˆŒØ&ˆÔØ$ˆŒØ&ˆÔÐÐr,   c                 ó  — |                      |d¬¦  «        }g }t          | j        ¦  «        D ];}|                     t	          j        ||         | j        |         ¦  «        ¦  «         Œ<t          j        |d¬¦  «        }|S )a  
        Forward pass of the JetMoeParallelExperts module.

        Args:
            inputs (Tensor):
                Input tensor.
            expert_size:
                Expert size information.

        Returns:
            Tensor: Output tensor.
        r   ©Údim)	ÚsplitÚranger3   ÚappendÚFÚlinearr=   r;   Úcat)r>   ÚinputsÚexpert_sizeÚ
input_listÚoutput_listÚiÚresultss          r-   ÚforwardzJetMoeParallelExperts.forwardT   s€   € ð —\’\ +°1�\Ñ5Ô5ˆ
ØˆÝ�tÔ'Ñ(Ô(ð 	Hð 	HˆAØ×Ò�qœx¨
°1¬°t´{À1´~ÑFÔFÑGÔGÐGÐGÝ”)˜K¨QÐ/Ñ/Ô/ˆØˆr,   ©r(   r)   r*   Úintr9   rO   Ú__classcell__©r?   s   @r-   r2   r2   <   sh   ø€ € € € € ð' Cð '°Sð 'Àsð 'Ètð 'ð 'ð 'ð 'ð 'ð 'ð.ð ð ð ð ð ð r,   r2   c                   ó2   ‡ — e Zd Zdededefˆ fd„Zd„ Zˆ xZS )ÚJetMoeTopKGatingr4   r3   Útop_kc                 óª   •— t          ¦   «                              ¦   «          || _        || _        || _        t          j        ||d¬¦  «        | _        dS )a  
        Initialize the top-k gating mechanism.

        Args:
            input_size (`int`):
                Size of the input.
            num_experts (`int`):
                Number of experts.
            top_k (`int`):
                Number of top experts to select.
        F©ÚbiasN)r8   r9   r3   r4   rV   r   ÚLinearÚlayer)r>   r4   r3   rV   r?   s       €r-   r9   zJetMoeTopKGating.__init__j   sM   ø€ õ 	‰Œ×ÒÑÔÐà&ˆÔØ$ˆŒØˆŒ
å”Y˜z¨;¸UÐCÑCÔCˆŒ
ˆ
ˆ
r,   c                 óÐ  — |                       |¦  «                             ¦   «         }|                     | j        d¬¦  «        \  }}t	          j        |d¬¦  «                             |¦  «        }t	          j        |                     d¦  «        | j	        g|j
        |j        ¬¦  «        }|                     d|d¦  «        }|                     ¦   «                              d¦  «        }|                     ¦   «         }|                     ¦   «         }	|	                     d¦  «        \  }
}|                     | j        d¬¦  «        }|                     ¦   «         }||         }|||||fS )Nr#   rA   r   ©ÚdtypeÚdeviceÚtrunc)Úrounding_mode)r[   ÚfloatÚtopkrV   r;   ÚsoftmaxÚtype_asÚzerosÚsizer3   r^   r_   ÚscatterÚlongÚsumÚtolistÚflattenÚsortÚdiv)r>   Úhidden_statesÚlogitsÚtop_k_logitsÚtop_k_indicesÚtop_k_gatesrf   ÚgatesrJ   Útop_k_expertsÚ_Úindex_sorted_expertsÚbatch_indexÚbatch_gatess                 r-   rO   zJetMoeTopKGating.forward~   sS  € à—’˜MÑ*Ô*×0Ò0Ñ2Ô2ˆØ&,§k¢k°$´*À! kÑ&DÔ&DÑ#ˆ�mÝ”m L°aÐ8Ñ8Ô8×@Ò@ÀÑOÔOˆõ ”Ø×Ò˜aÑ Ô  $Ô"2Ð3¸;Ô;LÐU`ÔUgð
ñ 
ô 
ˆð —’˜a °Ñ2Ô2ˆØ—j’j‘l”l×&Ò& qÑ)Ô)ˆð "×(Ò(Ñ*Ô*ˆð &×-Ò-Ñ/Ô/ˆØ"/×"4Ò"4°QÑ"7Ô"7ÑˆÐØ*×.Ò.¨t¬zÈÐ.ÑQÔQˆð "×)Ò)Ñ+Ô+ˆØ!Ð"6Ô7ˆà# [°+¸{ÈFÐRÐRr,   rP   rS   s   @r-   rU   rU   i   sq   ø€ € € € € ðD 3ð D°Sð DÀð Dð Dð Dð Dð Dð Dð(Sð Sð Sð Sð Sð Sð Sr,   rU   c                   ó.   ‡ — e Zd ZdZdefˆ fd„Zd„ Zˆ xZS )Ú	JetMoeMoEzº
    A Sparsely gated mixture of experts layer with 1-layer Feed-Forward networks as experts.

    Args:
        config:
            Configuration object with model hyperparameters.
    Úconfigc                 ó  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        t
          |j                 | _        t          j	         
                    t          j        | j        ¦  «        ¦  «        | _        t          |j        | j        | j        dz  ¦  «        | _        t          |j        | j        | j        ¦  «        | _        t#          | j        |j        |j        ¬¦  «        | _        d S )Nr   ©r4   r3   rV   )r8   r9   Úhidden_sizer4   Úintermediate_sizer   Úactivation_functionÚ
activationr;   r   r:   r<   rY   r2   Únum_local_expertsÚinput_linearÚoutput_linearrU   Únum_experts_per_tokÚrouter©r>   r|   r?   s     €r-   r9   zJetMoeMoE.__init__£   sÌ   ø€ Ý‰Œ×ÒÑÔÐà Ô,ˆŒØ!Ô3ˆÔÝ  Ô!;Ô<ˆŒÝ”H×&Ò&¥u¤{°4´?Ñ'CÔ'CÑDÔDˆŒ	Ý1°&Ô2JÈDÌOÐ]aÔ]mÐpqÑ]qÑrÔrˆÔÝ2°6Ô3KÈTÔM]Ð_cÔ_nÑoÔoˆÔå&Ø”ØÔ0ØÔ,ð
ñ 
ô 
ˆŒˆˆr,   c                 ód  — |                      ¦   «         \  }}}|                     d|¦  «        }|                      |¦  «        \  }}}}}	||         }
|                      |
|¦  «        }|                     dd¬¦  «        }|                      |d         ¦  «        |d         z  }|                      ||¦  «        }||dd…df         z  }t          j        ||z  | j	        f|j
        |j        ¬¦  «        }|                     d||¦  «        }|                     ||| j	        ¦  «        }|| j        z   }|S )a  
        Forward pass of the mixture of experts layer.

        Args:
            layer_input (Tensor):
                Input tensor.

        Returns:
            Tensor:
                Output tensor.
            Tensor:
                Router logits.
        éÿÿÿÿr   rA   r   r#   Nr]   )rg   Úreshaper‡   r„   Úchunkr‚   r…   r;   rf   r4   r^   r_   Ú	index_addÚviewrY   )r>   Úlayer_inputÚbszÚlengthÚemb_sizerv   rx   ry   rJ   Úrouter_logitsÚexpert_inputsro   Úchunked_hidden_statesÚexpert_outputsrf   Úlayer_outputs                   r-   rO   zJetMoeMoE.forward³   s<  € ð !,× 0Ò 0Ñ 2Ô 2ÑˆˆV�XØ!×)Ò)¨"¨hÑ7Ô7ˆØBFÇ+Â+ÈkÑBZÔBZÑ?ˆˆ;˜ [°-à# KÔ0ˆØ×)Ò)¨-¸ÑEÔEˆØ -× 3Ò 3°A¸2Ð 3Ñ >Ô >ÐØŸšÐ(=¸aÔ(@ÑAÔAÐDYÐZ[ÔD\Ñ\ˆØ×+Ò+¨M¸;ÑGÔGˆà'¨+°a°a°a¸°gÔ*>Ñ>ˆå”˜S 6™\¨4¬?Ð;À>ÔCWÐ`nÔ`uÐvÑvÔvˆØ—’ q¨+°~ÑFÔFˆØ#×(Ò(¨¨f°d´oÑFÔFˆØ# d¤iÑ/ˆØÐr,   )r(   r)   r*   Ú__doc__r$   r9   rO   rR   rS   s   @r-   r{   r{   š   s]   ø€ € € € € ðð ð
˜|ð 
ð 
ð 
ð 
ð 
ð 
ð ð ð ð ð ð ð r,   r{   c                   ó:   ‡ — e Zd ZdZdefˆ fd„Zd„ Zd„ Zd„ Zˆ xZ	S )Ú	JetMoeMoAzÅ
    A Sparsely gated mixture of attention layer with pairs of query- and output-projections as experts.

    Args:
        config:
            Configuration object with model hyperparameters.
    r|   c                 ó  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        |j        |j        z  | _        |j        | _	        t          j                             t          j        | j        ¦  «        ¦  «        | _        t          | j        | j        | j        ¦  «        | _        t          | j        | j        | j        ¦  «        | _        t%          | j        | j        | j	        ¬¦  «        | _        d S )Nr~   )r8   r9   rƒ   r3   r   r4   Úkv_channelsÚnum_key_value_headsr†   rV   r;   r   r:   r<   rY   r2   r„   r…   rU   r‡   rˆ   s     €r-   r9   zJetMoeMoA.__init__Ý   sÓ   ø€ Ý‰Œ×ÒÑÔÐà!Ô3ˆÔØ Ô,ˆŒØ!Ô-°Ô0JÑJˆÔØÔ/ˆŒ
Ý”H×&Ò&¥u¤{°4´?Ñ'CÔ'CÑDÔDˆŒ	å1°$Ô2BÀDÄOÐUYÔUeÑfÔfˆÔÝ2°4Ô3CÀTÔEUÐW[ÔWfÑgÔgˆÔå&Ø”ØÔ(Ø”*ð
ñ 
ô 
ˆŒˆˆr,   c                 ó´  — |                      ¦   «         \  }}}|                     d|¦  «        }|                      |¦  «        \  }}}}}	||||f}
||         }|                      ||¦  «        }t	          j        ||z  | j        z  | j        f|j        |j	        ¬¦  «        }| 
                    d||¦  «        }|                     ||| j        d¦  «        }||	|
fS )z�
        Map inputs to attention experts according to routing decision and compute query projection inside each experts.
        rŠ   r]   r   )rg   r‹   r‡   r„   r;   rf   rV   r   r^   r_   r�   rŽ   )r>   r�   r�   r‘   r’   rw   rx   ry   rJ   r“   Ú	topo_infor”   r–   rf   r—   s                  r-   ÚmapzJetMoeMoA.mapï   sù   € ð !,× 0Ò 0Ñ 2Ô 2ÑˆˆV�XØ!×)Ò)¨"¨hÑ7Ô7ˆØUY×U`ÒU`ÐalÑUmÔUmÑRÐ˜k¨;¸À]Ø)¨;¸À[ÐQˆ	ð $ KÔ0ˆØ×*Ò*¨=¸+ÑFÔFˆõ ”Ø�6‰\˜DœJÑ&¨Ô(8Ð9ÀÔAUÐ^lÔ^sð
ñ 
ô 
ˆð —’ qÐ*>ÀÑOÔOˆØ#×(Ò(¨¨f°d´jÀ"ÑEÔEˆØ˜]¨IÐ5Ð5r,   c                 óœ  — |                      ¦   «         \  }}}}|                     d|¦  «        }|\  }}}	}
||         }|                      ||
¦  «        }||	dd…df         z  }t          j        ||z  | j        f|j        |j        ¬¦  «        }|                     d||¦  «        }| 	                    ||| j        ¦  «        }|| j
        z   }|S )zu
        Compute output projection inside each attention experts and merge the outputs of different experts.
        rŠ   Nr]   r   )rg   r‹   r…   r;   rf   r4   r^   r_   r�   rŽ   rY   )r>   r�   rŸ   r�   r‘   Úkr   rw   rx   ry   rJ   r”   r–   rf   r—   s                  r-   ÚreducezJetMoeMoA.reduce  sç   € ð '2×&6Ò&6Ñ&8Ô&8Ñ#ˆˆV�Q˜Ø!×)Ò)¨"¨kÑ:Ô:ˆØFOÑCÐ˜k¨;¸ð $Ð$8Ô9ˆØ×+Ò+¨M¸;ÑGÔGˆð (¨+°a°a°a¸°gÔ*>Ñ>ˆõ ”˜S 6™\¨4¬?Ð;À>ÔCWÐ`nÔ`uÐvÑvÔvˆØ—’ q¨+°~ÑFÔFˆØ#×(Ò(¨¨f°d´oÑFÔFˆØ# d¤iÑ/ˆØÐr,   c                 ó    — t          d¦  «        ‚)Nz-This module doesn't support call and forward.)ÚNotImplementedError)r>   r�   s     r-   rO   zJetMoeMoA.forward  s   € Ý!Ð"QÑRÔRÐRr,   )
r(   r)   r*   r˜   r$   r9   r    r£   rO   rR   rS   s   @r-   rš   rš   Ô   s‚   ø€ € € € € ðð ð
˜|ð 
ð 
ð 
ð 
ð 
ð 
ð$6ð 6ð 6ð.ð ð ð,Sð Sð Sð Sð Sð Sð Sr,   rš   c                   óÐ   ‡ — e Zd ZdZddededz  fˆ fd„Z	 	 	 ddej        dej        dz  dej	        dz  d	e
dz  d
eej        ej        dz  eej                 dz  f         f
d„Zˆ xZS )ÚJetMoeAttentionzH
    Multi-headed attention from 'Attention Is All You Need' paper.
    Nr|   Ú	layer_idxc                 ó"  •— t          ¦   «                              ¦   «          || _        || _        d| _        |€(t
                               d| j        j        › d�¦  «         d| _	        |j
        | _        |j        | _        |j        |j        z  | _        |j        | _        |j        | _        |j        | _        | j        dz  | _        t)          |¦  «        | _        t,          j                             |j        | j        dz  d¬	¦  «        | _        dS )
zä
        Initialize the JetMoeAttention module.

        Args:
            config:
                Configuration object with model hyperparameters.
            layer_idx:
                Index of the layer in the model.
        TNzInstantiating z¹ without passing a `layer_idx` is not recommended and will lead to errors during the forward call if caching is used. Please make sure to provide a `layer_idx` when creating this class.r#   g      à¿r   FrX   )r8   r9   r|   r¨   Ú	is_causalÚloggerÚwarning_oncer?   r(   Únum_key_value_groupsr†   rV   Úattention_dropoutrœ   r�   Úkv_projection_sizeÚnum_attention_headsÚ	num_headsÚhead_dimÚscalingrš   Úexpertsr;   r   rZ   r   Úkv_proj©r>   r|   r¨   r?   s      €r-   r9   zJetMoeAttention.__init__%  s  ø€ õ 	‰Œ×ÒÑÔÐØˆŒØ"ˆŒØˆŒØÐÝ×Òð, ¤Ô!8ð ,ð ,ð ,ñô ð ð %&ˆÔ!ØÔ/ˆŒ
Ø!'Ô!9ˆÔØ"(Ô"4°vÔ7QÑ"QˆÔØ#)Ô#=ˆÔ ØÔ3ˆŒØÔ*ˆŒØ”} dÑ*ˆŒÝ  Ñ(Ô(ˆŒå”x—’ vÔ'9¸4Ô;RÐUVÑ;VÐ]b�ÑcÔcˆŒˆˆr,   ro   Úattention_maskÚposition_embeddingsÚpast_key_valuesr6   c                 óÐ  — |j         d d…         }g |¢d‘| j        ‘R }| j                             |¦  «        \  }}	}
|                      |¦  «                             dd¬¦  «        \  }}|                     |¦  «                             dd¦  «        }|                     |¦  «                             dd¦  «        }|                     |¦  «                             dd¦  «        }|\  }}t          ||||¦  «        \  }}|�| 	                    ||| j
        ¦  «        \  }}t          j        | j        j        t          ¦  «        }|                     d| j        dd¦  «        }|                     d| j        dd¦  «        } || ||||f| j        sdn| j        | j        dœ|¤Ž\  }} |j        g |¢| j        ‘d‘R Ž }| j                             ||
¦  «        } |j        g |¢d‘R Ž }|||	fS )NrŠ   r   rA   r#   ç        )Údropoutr³   )Úshaper²   r´   r    rµ   rŒ   rŽ   Ú	transposer    Úupdater¨   r   Úget_interfacer|   Ú_attn_implementationr!   ÚrepeatrV   Útrainingr®   r³   r£   )r>   ro   r·   r¸   r¹   ÚkwargsÚinput_shapeÚhidden_shapeÚquery_statesr“   rŸ   Ú
key_statesÚvalue_statesÚcosÚsinÚattention_interfaceÚattn_outputÚattn_weightss                     r-   rO   zJetMoeAttention.forwardF  s2  € ð $Ô)¨#¨2¨#Ô.ˆØ8˜Ð8 bÐ8¨$¬-Ð8Ð8ˆà15´×1AÒ1AÀ-Ñ1PÔ1PÑ.ˆ�m YØ#'§<¢<°Ñ#>Ô#>×#DÒ#DÀQÈBÐ#DÑ#OÔ#OÑ ˆ
�Là#×(Ò(¨Ñ6Ô6×@Ò@ÀÀAÑFÔFˆØ—_’_ \Ñ2Ô2×<Ò<¸QÀÑBÔBˆ
Ø#×(Ò(¨Ñ6Ô6×@Ò@ÀÀAÑFÔFˆà&‰ˆˆSÝ#7¸ÀjÐRUÐWZÑ#[Ô#[Ñ ˆ�jàÐ&Ø'6×'=Ò'=¸jÈ,ÐX\ÔXfÑ'gÔ'gÑ$ˆJ˜å(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð  ×&Ò& q¨$¬*°a¸Ñ;Ô;ˆ
Ø#×*Ò*¨1¨d¬j¸!¸QÑ?Ô?ˆà$7Ð$7ØØØØØð	%
ð  $œ}ÐH�C�C°$Ô2HØ”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\ð '�kÔ&ÐD¨ÐD°T´ZÐDÀÐDÐDÐDˆØ”l×)Ò)¨+°yÑAÔAˆØ&�kÔ&Ð8¨Ð8°RÐ8Ð8Ð8ˆØ˜L¨-Ð7Ð7r,   ©N)NNN)r(   r)   r*   r˜   r$   rQ   r9   r;   ÚTensorÚ
LongTensorr	   ÚtuplerO   rR   rS   s   @r-   r§   r§      sò   ø€ € € € € ðð ðdð d˜|ð d¸¸d¹
ð dð dð dð dð dð dðH /3Ø7;Ø(,ð/8ð /8à”|ð/8ð œ tÑ+ð/8ð #Ô-°Ñ4ð	/8ð
  ™ð/8ð 
ˆuŒ|˜Uœ\¨DÑ0°%¸¼Ô2EÈÑ2LÐLÔ	Mð/8ð /8ð /8ð /8ð /8ð /8ð /8ð /8r,   r§   c                   óÚ   ‡ — e Zd Zddededz  fˆ fd„Z	 	 	 	 	 ddej        dej        dz  dej        dz  d	e	dz  d
e
dz  deej        ej        f         dz  dee         dej        fd„Zˆ xZS )ÚJetMoeDecoderLayerNr|   r¨   c                 ó  •— t          ¦   «                              ||¦  «         t          |j        ¦  «        | _        t          ||¦  «        | _        t          |j        ¦  «        | _        t          |¦  «        | _	        | `
d S rÏ   )r8   r9   r&   r   Úinput_layernormr§   Úself_attentionÚpost_attention_layernormr{   ÚmlpÚ	self_attnr¶   s      €r-   r9   zJetMoeDecoderLayer.__init__y  sm   ø€ Ý‰Œ×Ò˜ Ñ+Ô+Ð+Ý,¨VÔ-?Ñ@Ô@ˆÔÝ-¨f°iÑ@Ô@ˆÔÝ(5°fÔ6HÑ(IÔ(IˆÔ%Ý˜VÑ$Ô$ˆŒØˆNˆNˆNr,   Fro   r·   Úposition_idsr¹   Ú	use_cacher¸   rÄ   r6   c           
      óÐ   — |}|                       |¦  «        } | j        d||||||dœ|¤Ž\  }}	}	||z   }|}|                      |¦  «        }|                      |¦  «        }||z   }|S )N)ro   r·   rÛ   r¹   rÜ   r¸   r+   )rÖ   r×   rØ   rÙ   )
r>   ro   r·   rÛ   r¹   rÜ   r¸   rÄ   Úresidualrv   s
             r-   rO   zJetMoeDecoderLayer.forward�  s¤   € ð !ˆØ×,Ò,¨]Ñ;Ô;ˆà1˜dÔ1ð 
Ø'Ø)Ø%Ø+ØØ 3ð
ð 
ð ð
ð 
Ñˆ�q˜!ð ! =Ñ0ˆð !ˆØ×5Ò5°mÑDÔDˆØŸš Ñ/Ô/ˆØ  =Ñ0ˆØÐr,   rÏ   )NNNFN)r(   r)   r*   r$   rQ   r9   r;   rÐ   rÑ   r	   ÚboolrÒ   r   r   rO   rR   rS   s   @r-   rÔ   rÔ   x  s   ø€ € € € € ðð ˜|ð ¸¸d¹
ð ð ð ð ð ð ð /3Ø04Ø(,Ø!&ØHLðð à”|ðð œ tÑ+ðð Ô&¨Ñ-ð	ð
  ™ðð ˜$‘;ðð # 5¤<°´Ð#=Ô>ÀÑEðð Ð+Ô,ðð 
Œðð ð ð ð ð ð ð r,   rÔ   c                   ó¼   — e Zd ZU  eed¬¦  «         eed¬¦  «        ge eed¬¦  «        dœZee	d<   dZ
dZd	gZd
gZdZdZdZ ej        ¦   «         d„ ¦   «         ZdS )ÚJetMoePreTrainedModelr   )Úindexé   r#   )r“   ro   Ú
attentionsr|   ÚmodelFrÔ   r¹   Tc                 ó  — t          j        | |¦  «         t          |t          ¦  «        r(t	          j        |j        d| j        j        ¬¦  «         dS t          |t          t          z  ¦  «        rt	          j        |j        ¦  «         dS dS )zInitialize the weights.r»   )ÚmeanÚstdN)r   Ú_init_weightsÚ
isinstancer2   ÚinitÚnormal_r=   r|   Úinitializer_rangerš   r{   Úzeros_rY   )r>   Úmodules     r-   ré   z#JetMoePreTrainedModel._init_weights±  s‡   € õ 	Ô% d¨FÑ3Ô3Ð3Ý�fÕ3Ñ4Ô4ð 	%ÝŒL˜œ¨S°d´kÔ6SÐTÑTÔTÐTÐTÐTÝ˜¥	­IÑ 5Ñ6Ô6ð 	%ÝŒK˜œÑ$Ô$Ð$Ð$Ð$ð	%ð 	%r,   N)r(   r)   r*   r   r§   rU   rÔ   Ú_can_record_outputsr$   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_skip_keys_device_placementÚ_supports_flash_attnÚ_supports_sdpaÚ_can_compile_fullgraphr;   Úno_gradré   r+   r,   r-   rá   rá   ¡  sÀ   € € € € € € ð )˜.¨ÀÐBÑBÔBÀNÀNÐScÐklÐDmÑDmÔDmÐnØ+Ø$�n _¸AÐ>Ñ>Ô>ðð Ðð
 ÐÐÑØÐØ&+Ð#Ø-Ð.ÐØ#4Ð"5ÐØÐØ€NØ"Ðà€U„]�_„_ð%ð %ñ „_ð%ð %ð %r,   rá   c                   óâ   ‡ — e Zd Zdefˆ fd„Zeee	 	 	 	 	 	 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ˆ xZS )ÚJetMoeModelr|   c                 ó–  •‡— t          ¦   «                              ‰¦  «         ‰j        | _        ‰j        | _        t          j        ‰j        ‰j        | j        ¦  «        | _        t          j	        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        ‰j        | _        t          ‰j        ‰j        ¬¦  «        | _        d S )Nc                 ó0   •— g | ]}t          ‰|¦  «        ‘ŒS r+   )rÔ   )Ú.0r¨   r|   s     €r-   ú
<listcomp>z(JetMoeModel.__init__.<locals>.<listcomp>Ä  s$   ø€ ÐdÐdÐd°yÕ ¨	Ñ2Ô2ÐdÐdÐdr,   )Úeps)r8   r9   Úpad_token_idÚpadding_idxÚ
vocab_sizer   Ú	Embeddingr   Úembed_tokensÚ
ModuleListrD   Únum_hidden_layersÚlayersrÁ   r&   Úrms_norm_epsÚnormrˆ   s    `€r-   r9   zJetMoeModel.__init__½  s±   øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø!Ô.ˆÔØ Ô+ˆŒåœL¨Ô):¸FÔ<NÐPTÔP`ÑaÔaˆÔÝ”mØdÐdÐdÐdÅEÈ&ÔJbÑDcÔDcÐdÑdÔdñ
ô 
ˆŒð %+Ô$?ˆÔ!Ý! &Ô"4¸&Ô:MÐNÑNÔNˆŒ	ˆ	ˆ	r,   NÚ	input_idsr·   rÛ   r¹   Úinputs_embedsrÜ   rÄ   r6   c           
      óF  — |d u |d uz  rt          d¦  «        ‚|r|€t          | j        ¬¦  «        }|€|                      |¦  «        }|€V|�|                     ¦   «         nd}t          j        |j        d         |j        ¬¦  «        |z   }| 	                    d¦  «        }t          | j        ||||¬¦  «        }	|}
|                      |
|¦  «        }| j        d | j        j        …         D ]} ||
f||	|||dœ|¤Ž}
Œ|                      |
¦  «        }
t          |
|¬¦  «        S )	Nz:You must specify exactly one of input_ids or inputs_embeds)r|   r   r#   )r_   )r|   r  r·   r¹   rÛ   )r¸   r·   r¹   rÜ   rÛ   )Úlast_hidden_stater¹   )Ú
ValueErrorr
   r|   r  Úget_seq_lengthr;   Úaranger½   r_   Ú	unsqueezer   Ú
rotary_embr  r  r
  r   )r>   r  r·   rÛ   r¹   r  rÜ   rÄ   Úpast_seen_tokensÚcausal_maskro   r¸   Údecoder_layers                r-   rO   zJetMoeModel.forwardÉ  sŠ  € ð ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàð 	?˜Ð0Ý*°$´+Ð>Ñ>Ô>ˆOàÐ Ø ×-Ò-¨iÑ8Ô8ˆMàÐØCRÐC^˜×=Ò=Ñ?Ô?Ð?ÐdeÐÝ œ<¨Ô(;¸AÔ(>À}ÔG[Ð\Ñ\Ô\Ð_oÑoˆLØ'×1Ò1°!Ñ4Ô4ˆLå(Ø”;Ø'Ø)Ø+Ø%ð
ñ 
ô 
ˆð &ˆð #Ÿošo¨m¸\ÑJÔJÐà!œ[Ð)H¨4¬;Ô+HÐ)HÔIð 		ð 		ˆMØ)˜MØðà$7Ø*Ø /Ø#Ø)ðð ð ðð ˆMˆMð Ÿ	š	 -Ñ0Ô0ˆå%Ø+Ø+ð
ñ 
ô 
ð 	
r,   )NNNNNN)r(   r)   r*   r$   r9   r   r   r   r;   rÑ   rÐ   r	   ÚFloatTensorrß   r   r   r   rO   rR   rS   s   @r-   rû   rû   »  s  ø€ € € € € ð
O˜|ð 
Oð 
Oð 
Oð 
Oð 
Oð 
Oð  ØØð .2Ø.2Ø04Ø(,Ø26Ø!%ð5
ð 5
àÔ# dÑ*ð5
ð œ tÑ+ð5
ð Ô&¨Ñ-ð	5
ð
  ™ð5
ð Ô(¨4Ñ/ð5
ð ˜$‘;ð5
ð Ð+Ô,ð5
ð 
 ð5
ð 5
ð 5
ñ „^ñ „_ñ  Ôð5
ð 5
ð 5
ð 5
ð 5
r,   rû   c                   óü   ‡ — e Zd ZddiZˆ fd„Zee	 	 	 	 	 	 	 	 	 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ej	        z  dedz  defd„¦   «         ¦   «         Zˆ xZS )ÚJetMoeForCausalLMzlm_head.weightzmodel.embed_tokens.weightc                 ó^  •— t          ¦   «                              |¦  «         t          |¦  «        | _        |j        | _        |j        | _        t          j        |j        |j        d¬¦  «        | _	        |j
        | _
        |j        | _        |j        | _        |                      ¦   «          d S )NFrX   )r8   r9   rû   rå   r  Úaux_loss_coefr   rZ   r   Úlm_headÚtie_word_embeddingsrƒ   r3   r†   Ú	post_initrˆ   s     €r-   r9   zJetMoeForCausalLM.__init__  s–   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý  Ñ(Ô(ˆŒ
Ø Ô+ˆŒØ#Ô1ˆÔÝ”y Ô!3°VÔ5FÈUÐSÑSÔSˆŒØ#)Ô#=ˆÔ Ø!Ô3ˆÔØ#)Ô#=ˆÔ ð 	�ŠÑÔÐÐÐr,   Nr   Fr  r·   rÛ   r¹   r  ÚlabelsrÜ   Úlogits_to_keepÚoutput_router_logitsr6   c
                 óø  —  | j         d|||||||	dœ|
¤Ž}|j        }t          |t          ¦  «        rt	          | d ¦  «        n|}|                      |d d …|d d …f         ¦  «        }d }|� | j        ||fd| j        j        i|
¤Ž}d }|	rHt          |j
        | j        | j        |¦  «        }|�%|| j        |                     |j        ¦  «        z  z  }t!          ||||j        |j        |j        |j
        ¬¦  «        S )N)r  r·   rÛ   r¹   r  rÜ   r!  r  )ÚlossÚaux_lossrp   r¹   ro   rä   r“   r+   )rå   r  rê   rQ   Úslicer  Úloss_functionr|   r  r"   r“   r3   r†   r  Útor_   r   r¹   ro   rä   )r>   r  r·   rÛ   r¹   r  r  rÜ   r   r!  rÄ   Úoutputsro   Úslice_indicesrp   r#  r$  s                    r-   rO   zJetMoeForCausalLM.forward  sm  € ð +5¨$¬*ð 	+
ØØ)Ø%Ø+Ø'ØØ!5ð	+
ð 	+
ð ð	+
ð 	+
ˆð  Ô1ˆå8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜m¨A¨A¨A¨}¸a¸a¸aÐ,?Ô@ÑAÔAˆàˆØÐØ%�4Ô%ØØðð ð  œ;Ô1ðð ð	ð ˆDð ˆØð 	FÝ/ØÔ%ØÔ ØÔ(Øñ	ô ˆHð Ð!Ø˜Ô*¨X¯[ª[¸¼Ñ-EÔ-EÑEÑE�å(ØØØØ#Ô3Ø!Ô/ØÔ)Ø!Ô/ð
ñ 
ô 
ð 	
r,   )	NNNNNNNr   F)r(   r)   r*   Ú_tied_weights_keysr9   r   r   r;   rÑ   rÐ   r	   r  rß   rQ   r   rO   rR   rS   s   @r-   r  r    s-  ø€ € € € € Ø*Ð,GÐHÐðð ð ð ð ð Øð .2Ø.2Ø04Ø(,Ø26Ø*.Ø!%Ø-.Ø,1ð9
ð 9
àÔ# dÑ*ð9
ð œ tÑ+ð9
ð Ô&¨Ñ-ð	9
ð
  ™ð9
ð Ô(¨4Ñ/ð9
ð Ô  4Ñ'ð9
ð ˜$‘;ð9
ð ˜eœlÑ*ð9
ð # T™kð9
ð 
#ð9
ð 9
ð 9
ñ „^ñ Ôð9
ð 9
ð 9
ð 9
ð 9
r,   r  c                   ó   — e Zd ZdS )ÚJetMoeForSequenceClassificationNr'   r+   r,   r-   r,  r,  R  s   € € € € € € € r,   r,  )r  rû   rá   r,  )Er˜   Úcollections.abcr   r;   r   Útorch.nnr   rF   Ú r   rë   Úactivationsr   Úcache_utilsr	   r
   Ú
generationr   Úmasking_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.genericr   Úutils.output_capturingr   r   Úllama.modeling_llamar   Úmixtral.modeling_mixtralr   r   r   r   r    r!   r"   Úconfiguration_jetmoer$   Ú
get_loggerr(   r«   r&   r0   ÚModuler2   rU   r{   rš   r§   rÔ   rá   rû   r  r,  Ú__all__r+   r,   r-   ú<module>rA     sR  ðð Ð à $Ð $Ð $Ð $Ð $Ð $à €€€Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø )Ð )Ð )Ð )Ð )Ð )Ø /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð RÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð /Ð .Ð .Ð .Ð .Ð .ð 
ˆÔ	˜HÑ	%Ô	%€ð	ð 	ð 	ð 	ð 	�Nñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð2ñ 	ô 	ð 	ð*ð *ð *ð *ð *˜BœIñ *ô *ð *ðZ.Sð .Sð .Sð .Sð .S�r”yñ .Sô .Sð .Sðb7ð 7ð 7ð 7ð 7�”	ñ 7ô 7ð 7ðtISð ISð ISð ISð IS�”	ñ ISô ISð ISðXU8ð U8ð U8ð U8ð U8�b”iñ U8ô U8ð U8ðp&ð &ð &ð &ð &Ð*ñ &ô &ð &ðR ð%ð %ð %ð %ð %Ð2ñ %ô %ñ „ð%ð2 ðE
ð E
ð E
ð E
ð E
�,ñ E
ô E
ñ „ðE
ðPK
ð K
ð K
ð K
ð K
Ð-¨ñ K
ô K
ð K
ð\ dÐ cÐ cÐ cÐ cÐ&FÐH]Ñ cÔ cÐ cð kÐ
jÐ
j€€€r,   