§
    ‚Štj¼|  ã                   ó  — d Z ddl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 dd
lmZmZ ddlmZ ddlmZmZ ddlmZ  ej        e¦  «        Z G d„ dej         ¦  «        Z! G d„ dej         ¦  «        Z" G d„ dej         ¦  «        Z# G d„ dej         ¦  «        Z$ G d„ dej         ¦  «        Z% G d„ dej         ¦  «        Z& G d„ dej         ¦  «        Z' G d„ dej         ¦  «        Z( G d„ d ej         ¦  «        Z) G d!„ d"ej         ¦  «        Z* G d#„ d$ej         ¦  «        Z+e G d%„ d&e¦  «        ¦   «         Z,e G d'„ d(e,¦  «        ¦   «         Z- ed)¬*¦  «         G d+„ d,e,e¦  «        ¦   «         Z.g d-¢Z/dS ).zPyTorch CPMAnté    N)Únn)ÚCrossEntropyLossé   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)ÚBaseModelOutputWithPastÚCausalLMOutputWithPast)ÚPreTrainedModel)Úauto_docstringÚloggingé   )ÚCpmAntConfigc                   ó>   ‡ — e Zd ZdZdefˆ fd„Zdej        fd„Zˆ xZ	S )ÚCpmAntLayerNormz~
    We use Root Mean Square (RMS) Layer Normalization, please see https://huggingface.co/papers/1910.07467 for details."
    Úconfigc                 óØ   •— t          ¦   «                              ¦   «          |j        | _        |j        | _        t          j        t          j        |j        ¦  «        ¦  «        | _	        d S ©N)
ÚsuperÚ__init__ÚepsÚhidden_sizeÚdim_normr   Ú	ParameterÚtorchÚemptyÚweight©Úselfr   Ú	__class__s     €úh/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/cpmant/modeling_cpmant.pyr   zCpmAntLayerNorm.__init__)   sN   ø€ Ý‰Œ×ÒÑÔÐà”:ˆŒØÔ*ˆŒÝ”l¥5¤;¨vÔ/AÑ#BÔ#BÑCÔCˆŒˆˆó    Úhidden_statesc                 óp  — |                      d¦  «        | j        k    rt          d¦  «        ‚|j        }|                     t
          j        ¦  «                             d¦  «                             dd¬¦  «        }|t          j	        || j
        z   ¦  «        z                       |¦  «        | j        z  }|S )úf
        Args:
            hidden_states (`torch.Tensor` of shape `(batch, seq_len, dim_in)`)
        éÿÿÿÿz'hidden_states.size(-1) != self.dim_normé   T)ÚdimÚkeepdim)Úsizer   ÚAssertionErrorÚdtypeÚtor   Úfloat32ÚpowÚmeanÚrsqrtr   r   )r!   r%   Ú	old_dtypeÚvariances       r#   ÚforwardzCpmAntLayerNorm.forward0   s¤   € ð
 ×Ò˜bÑ!Ô! T¤]Ò2Ð2Ý Ð!JÑKÔKÐKØ!Ô'ˆ	Ø ×#Ò#¥E¤MÑ2Ô2×6Ò6°qÑ9Ô9×>Ò>À2ÈtÐ>ÑTÔTˆØ&­¬°XÀÄÑ5HÑ)IÔ)IÑI×MÒMÈiÑXÔXÐ[_Ô[fÑfˆØÐr$   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   ÚTensorr6   Ú__classcell__©r"   s   @r#   r   r   $   sr   ø€ € € € € ðð ðD˜|ð Dð Dð Dð Dð Dð Dð
 U¤\ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r$   r   c                   óŒ   ‡ — e Zd Zddefˆ fd„Z	 	 	 ddej        dej        dej        dej        d	edz  d
e	dz  dedz  fd„Z
ˆ xZS )ÚCpmAntAttentionNr   c                 óÌ  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        |j        | _        || _        t          j	        | j        | j        | j        z  d¬¦  «        | _
        t          j	        | j        | j        | j        z  d¬¦  «        | _        t          j	        | j        | j        | j        z  d¬¦  «        | _        t          j	        | j        | j        z  | j        d¬¦  «        | _        t          j                             d¬¦  «        | _        |j        �,t          j                             |j        ¬¦  «        | _        d S d | _        d S )NF©Úbiasr(   ©r*   )Úp)r   r   r   Ú	dim_modelÚnum_attention_headsÚ	num_headsÚdim_headÚ	layer_idxr   ÚLinearÚ	project_qÚ	project_kÚ	project_vÚattention_outr   ÚSoftmaxÚsoftmaxÚ	dropout_pÚDropoutÚdropout©r!   r   rI   r"   s      €r#   r   zCpmAntAttention.__init__>   s  ø€ Ý‰Œ×ÒÑÔÐØÔ+ˆŒØÔ3ˆŒØœˆŒØ"ˆŒåœ 4¤>°4´>ÀDÄMÑ3QÐX]Ð^Ñ^Ô^ˆŒÝœ 4¤>°4´>ÀDÄMÑ3QÐX]Ð^Ñ^Ô^ˆŒÝœ 4¤>°4´>ÀDÄMÑ3QÐX]Ð^Ñ^Ô^ˆŒåœY t¤~¸¼Ñ'EÀtÄ~Ð\aÐbÑbÔbˆÔå”x×'Ò'¨BÐ'Ñ/Ô/ˆŒàÔÐ'Ý œ8×+Ò+¨fÔ.>Ð+Ñ?Ô?ˆDŒLˆLˆLàˆDŒLˆLˆLr$   FÚhidden_qÚ	hidden_kvÚattention_maskÚposition_biasÚoutput_attentionsÚpast_key_valuesÚ	use_cachec           	      ó�  — |                      d¦  «        }	|                      d¦  «        }
|                      d¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                     |	|
| j        | j        ¦  «                             dddd¦  «        }|                     |	|| j        | j        ¦  «                             dddd¦  «        }|                     |	|| j        | j        ¦  «                             dddd¦  «        }|�4|                     ||| j	        ¦  «        \  }}|                      d¦  «        }t          j        ||                     dd¦  «        ¦  «        t          j        | j        ¦  «        z  }||z   }t          j        ||                     |	d|
|¦  «        t          j        d¦  «        k    t          j        t%          d	¦  «        |j        |j        ¬
¦  «        ¦  «        }|                      |¦  «        }t          j        ||                     |	d|
|¦  «        t          j        d¦  «        k    t          j        d|j        |j        ¬
¦  «        ¦  «        }|r|}nd}| j        �|                      |¦  «        }t          j        ||¦  «        }|                     |	| j        |
| j        ¦  «                             dddd¦  «        }|                     ¦   «                              |	|
| j        | j        z  ¦  «        }|                      |¦  «        }||fS )ad  
        Args:
            hidden_q (`torch.Tensor`):
                Input of transformer block(self-attention block). It can be the raw embedding of a batch of sequences.
            hidden_kv (`torch.Tensor` of shape `(batch, len_k, dim_model)`)):
                Tensor *key_value* and *query* of shape `(batch, len_k, dim_model)`
            attention_mask (`torch.Tensor` of shape `(batch, len_seq, len_seq)`):
                Avoid invalid areas to participate in the calculation of self-attention.
            position_bias (`torch.Tensor` of shape `(batch, len_seq, len_seq)`):
                Provide positional information to self-attention block.
            output_attentions (`bool`, *optional*):
                Whether or not to return the attentions tensors of all attention layers.
            past_key_values (`Cache`, *optional*):
                Cached past key and value projection states.
            use_cache (`bool`, *optional*):
                If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding
                (see `past_key_values`).
        r   r   r)   r   Néþÿÿÿr(   Fz-inf)Údevicer.   )r,   rK   rL   rM   ÚviewrG   rH   ÚpermuteÚupdaterI   r   ÚmatmulÚ	transposeÚmathÚsqrtÚmasked_fillÚtensorÚscalar_tensorÚfloatr^   r.   rP   rS   Ú
contiguousrN   )r!   rU   rV   rW   rX   rY   rZ   r[   ÚkwargsÚ
batch_sizeÚlen_qÚlen_kÚqueryÚkeyÚvalueÚscoreÚattn_weightss                    r#   r6   zCpmAntAttention.forwardR   sñ  € ð: —]’] 1Ñ%Ô%ˆ
Ø—’˜aÑ Ô ˆØ—’˜qÑ!Ô!ˆà—’˜xÑ(Ô(ˆØ�nŠn˜YÑ'Ô'ˆØ—’˜yÑ)Ô)ˆà—
’
˜: u¨d¬n¸d¼mÑLÔL×TÒTÐUVÐXYÐ[\Ð^_Ñ`Ô`ˆØ�hŠh�z 5¨$¬.¸$¼-ÑHÔH×PÒPÐQRÐTUÐWXÐZ[Ñ\Ô\ˆØ—
’
˜: u¨d¬n¸d¼mÑLÔL×TÒTÐUVÐXYÐ[\Ð^_Ñ`Ô`ˆàÐ&Ø(×/Ò/°°U¸D¼NÑKÔK‰JˆC�Ø—H’H˜R‘L”LˆEõ ”˜U C§M¢M°"°bÑ$9Ô$9Ñ:Ô:½T¼YÀtÄ}Ñ=UÔ=UÑUˆØ˜Ñ%ˆåÔ!ØØ×Ò 
¨A¨u°eÑ<Ô<ÅÄÈUÑ@SÔ@SÒSÝÔ¥ f¡¤°e´lÈ%Ì+ÐVÑVÔVñ
ô 
ˆð
 —’˜UÑ#Ô#ˆåÔ!ØØ×Ò 
¨A¨u°eÑ<Ô<ÅÄÈUÑ@SÔ@SÒSÝÔ ¨%¬,¸e¼kÐJÑJÔJñ
ô 
ˆð
 ð 	 Ø ˆLˆLàˆLàŒ<Ð#Ø—L’L Ñ'Ô'ˆEõ ”˜U EÑ*Ô*ˆà—
’
˜: t¤~°u¸d¼mÑLÔL×TÒTÐUVÐXYÐ[\Ð^_Ñ`Ô`ˆØ× Ò Ñ"Ô"×'Ò'¨
°E¸4¼>ÈDÌMÑ;YÑZÔZˆà×"Ò" 5Ñ)Ô)ˆà�lÐ"Ð"r$   r   )FNN)r7   r8   r9   r   r   r   r;   Ú
BoolTensorÚboolr   r6   r<   r=   s   @r#   r?   r?   =   sÖ   ø€ € € € € ð ð  ˜|ð  ð  ð  ð  ð  ð  ð4 */Ø(,Ø!%ðM#ð M#à”,ðM#ð ”<ðM#ð Ô(ð	M#ð
 ”|ðM#ð   $™;ðM#ð  ™ðM#ð ˜$‘;ðM#ð M#ð M#ð M#ð M#ð M#ð M#ð M#r$   r?   c                   ó†   ‡ — e Zd Zddefˆ fd„Z	 	 	 	 ddej        dej        dej        dz  dedz  d	edz  d
edz  fd„Z	ˆ xZ
S )ÚCpmAntSelfAttentionBlockNr   c                 ó  •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          ||¬¦  «        | _        |j        r+t          j         	                    |j        ¦  «        | _
        d S d | _
        d S ©N©rI   )r   r   r   Úlayernorm_before_attentionr?   Úself_attentionrQ   r   r   rR   rS   rT   s      €r#   r   z!CpmAntSelfAttentionBlock.__init__£   sr   ø€ Ý‰Œ×ÒÑÔÐÝ*9¸&Ñ*AÔ*AˆÔ'Ý-¨fÀ	ÐJÑJÔJˆÔØÔð 	 Ý œ8×+Ò+¨FÔ,<Ñ=Ô=ˆDŒLˆLˆLàˆDŒLˆLˆLr$   Fr%   rW   rX   rY   rZ   r[   c           	      ó²   — |                       |¦  «        }|                      |||||||¦  «        \  }}	| j        �|                      |¦  «        }||z   }||	fS )aî  
        Args:
            hidden_states (`torch.Tensor` of shape `(batch, len_seq, dim_model)`):
                Input of transformer block(self-attention block). It can be the raw embedding of a batch of sequences.
            attention_mask (`torch.Tensor` of shape `(batch, len_seq, len_seq)`):
                Avoid invalid areas to participate in the calculation of self-attention.
            position_bias (`torch.Tensor` of shape `(batch, len_seq, len_seq)`):
                Provide positional information to self-attention block.
            output_attentions (`bool`, *optional*):
                Whether or not to return the attentions tensors of all attention layers.
            past_key_values (`Cache`, *optional*):
                Cached past key and value projection states.
            use_cache (`bool`, *optional*):
                If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding
                (see `past_key_values`).
        )r{   r|   rS   )
r!   r%   rW   rX   rY   rZ   r[   rk   Úoutputsrs   s
             r#   r6   z CpmAntSelfAttentionBlock.forward¬   sv   € ð4 ×1Ò1°-Ñ@Ô@ˆØ $× 3Ò 3ØØØØØØØñ!
ô !
Ñˆ�ð Œ<Ð#Ø—l’l 7Ñ+Ô+ˆGØ%¨Ñ/ˆà˜lÐ*Ð*r$   r   ©NFNN©r7   r8   r9   r   r   r   r;   ru   r   r6   r<   r=   s   @r#   rw   rw   ¢   sÁ   ø€ € € € € ð ð  ˜|ð  ð  ð  ð  ð  ð  ð .2Ø).Ø(,Ø!%ð)+ð )+à”|ð)+ð œð)+ð ”| dÑ*ð	)+ð
   $™;ð)+ð  ™ð)+ð ˜$‘;ð)+ð )+ð )+ð )+ð )+ð )+ð )+ð )+r$   rw   c                   ó:   ‡ — e Zd Zdefˆ fd„Zdej        fd„Zˆ xZS )ÚCpmAntDenseGatedACTr   c                 ó&  •— t          ¦   «                              ¦   «          t          j        |j        |j        d¬¦  «        | _        t          j        |j        |j        d¬¦  «        | _        t          j         	                    ¦   «         | _
        d S ©NFrA   )r   r   r   rJ   r   Údim_ffÚw_0Úw_1r   ÚGELUÚactr    s     €r#   r   zCpmAntDenseGatedACT.__init__Ù   sh   ø€ Ý‰Œ×ÒÑÔÐÝ”9˜VÔ/°´ÀUÐKÑKÔKˆŒÝ”9˜VÔ/°´ÀUÐKÑKÔKˆŒÝ”8—=’=‘?”?ˆŒˆˆr$   r%   c                 óŠ   — |                       |                      |¦  «        ¦  «        }|                      |¦  «        }||z  }|S )z¼Transform an input tensor from one feature space to another via a nonlinear operation

        Args:
            hidden_states (`torch.Tensor` of shape `(batch, seq_len, dim_in)`)
        )r‰   r†   r‡   )r!   r%   Ú
gate_scores      r#   r6   zCpmAntDenseGatedACT.forwardß   sB   € ð —X’X˜dŸhšh }Ñ5Ô5Ñ6Ô6ˆ
ØŸš Ñ/Ô/ˆà" ]Ñ2ˆØÐr$   ©	r7   r8   r9   r   r   r   r;   r6   r<   r=   s   @r#   r‚   r‚   Ø   sa   ø€ € € € € ð#˜|ð #ð #ð #ð #ð #ð #ð
 U¤\ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r$   r‚   c                   ó:   ‡ — e Zd Zdefˆ fd„Zdej        fd„Zˆ xZS )ÚCpmAntFeedForwardr   c                 ó,  •— t          ¦   «                              ¦   «          t          |¦  «        | _        |j        �*t
          j                             |j        ¦  «        | _        nd | _        t          j	        |j
        |j        d¬¦  «        | _        d S r„   )r   r   r‚   Úw_inrQ   r   r   rR   rS   rJ   r…   r   Úw_outr    s     €r#   r   zCpmAntFeedForward.__init__í   su   ø€ Ý‰Œ×ÒÑÔÐÝ'¨Ñ/Ô/ˆŒ	ØÔÐ'Ý œ8×+Ò+¨FÔ,<Ñ=Ô=ˆDŒLˆLàˆDŒLå”Y˜vœ}¨fÔ.@ÀuÐMÑMÔMˆŒ
ˆ
ˆ
r$   r%   c                 ó’   — |                       |¦  «        }| j        �|                      |¦  «        }|                      |¦  «        }|S )r'   )r�   rS   r‘   ©r!   r%   s     r#   r6   zCpmAntFeedForward.forward÷   sE   € ð
 Ÿ	š	 -Ñ0Ô0ˆàŒ<Ð#Ø ŸLšL¨Ñ7Ô7ˆMàŸ
š
 =Ñ1Ô1ˆàÐr$   rŒ   r=   s   @r#   rŽ   rŽ   ì   sh   ø€ € € € € ðN˜|ð Nð Nð Nð Nð Nð Nð U¤\ð ð ð ð ð ð ð ð r$   rŽ   c                   ó:   ‡ — e Zd Zdefˆ fd„Zdej        fd„Zˆ xZS )ÚCpmAntFFNBlockr   c                 ó
  •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          |¦  «        | _        |j        r+t          j         	                    |j        ¦  «        | _
        d S d | _
        d S r   )r   r   r   Úlayernorm_before_ffnrŽ   ÚffnrQ   r   r   rR   rS   r    s     €r#   r   zCpmAntFFNBlock.__init__  sl   ø€ Ý‰Œ×ÒÑÔÐÝ$3°FÑ$;Ô$;ˆÔ!Ý$ VÑ,Ô,ˆŒØÔð 	 Ý œ8×+Ò+¨FÔ,<Ñ=Ô=ˆDŒLˆLˆLàˆDŒLˆLˆLr$   r%   c                 óœ   — |                       |¦  «        }|                      |¦  «        }| j        �|                      |¦  «        }||z   }|S )z£
        Args:
            hidden_states (`torch.Tensor` of shape `(batch, len_seq, dim_model)`):
                Hidden states before feed forward layer.
        )r—   r˜   rS   )r!   r%   Ú
ln_outputsr~   s       r#   r6   zCpmAntFFNBlock.forward  sQ   € ð ×.Ò.¨}Ñ=Ô=ˆ
Ø—(’(˜:Ñ&Ô&ˆØŒ<Ð#Ø—l’l 7Ñ+Ô+ˆGØ%¨Ñ/ˆØÐr$   rŒ   r=   s   @r#   r•   r•     sb   ø€ € € € € ð ˜|ð  ð  ð  ð  ð  ð  ðà”|ðð ð ð ð ð ð ð r$   r•   c                   ó†   ‡ — e Zd Zddefˆ fd„Z	 	 	 	 ddej        dej        dej        dz  dedz  d	edz  d
edz  fd„Z	ˆ xZ
S )ÚCpmAntTransformerBlockNr   c                 óœ   •— t          ¦   «                              ¦   «          t          ||¬¦  «        | _        t	          |¦  «        | _        d S ry   )r   r   rw   Úself_attr•   r˜   rT   s      €r#   r   zCpmAntTransformerBlock.__init__"  s@   ø€ Ý‰Œ×ÒÑÔÐÝ0°À9ÐMÑMÔMˆŒÝ! &Ñ)Ô)ˆŒˆˆr$   Fr%   rW   rX   rY   rZ   r[   c                 óp   — |                       ||||||¬¦  «        \  }}|                      |¦  «        }||fS )a‡  
        Args:
            hidden_states (`torch.Tensor`):
                Input to the layer of shape `(batch, seq_len, dim_model)`
            attention_mask (`torch.Tensor`):
                Avoid invalid areas to participate in the calculation of shape `(batch, seq_len, seq_len)`
            position_bias (`torch.Tensor`):
                Provides position information to attention mechanism of shape `(num_heads, seq_len, seq_len)`
            output_attentions (`bool`, *optional*):
                Whether or not to return the attentions tensors of all attention layers.
            past_key_values (`Cache`, *optional*):
                Cached past key and value projection states
            use_cache (`bool`, *optional*):
                If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding
                (see `past_key_values`).
        )rW   rX   rY   rZ   r[   )rž   r˜   )	r!   r%   rW   rX   rY   rZ   r[   rk   rs   s	            r#   r6   zCpmAntTransformerBlock.forward'  sQ   € ð4 '+§m¢mØØ)Ø'Ø/Ø+Øð '4ñ '
ô '
Ñ#ˆ�|ð Ÿš Ñ/Ô/ˆØ˜lÐ*Ð*r$   r   r   r€   r=   s   @r#   rœ   rœ   !  sÁ   ø€ € € € € ð*ð *˜|ð *ð *ð *ð *ð *ð *ð .2Ø).Ø(,Ø!%ð$+ð $+à”|ð$+ð œð$+ð ”| dÑ*ð	$+ð
   $™;ð$+ð  ™ð$+ð ˜$‘;ð$+ð $+ð $+ð $+ð $+ð $+ð $+ð $+r$   rœ   c                   óˆ   ‡ — e Zd Zdefˆ fd„Z	 	 	 	 ddej        dej        dej        dedz  dedz  d	edz  d
edz  fd„Z	ˆ xZ
S )ÚCpmAntEncoderr   c                 óø   •‡— t          ¦   «                              ¦   «          ‰j        | _        t	          j        ˆfd„t          | j        ¦  «        D ¦   «         ¦  «        | _        t          ‰¦  «        | _	        d S )Nc                 ó2   •— g | ]}t          ‰|¬ ¦  «        ‘ŒS )rz   )rœ   )Ú.0Úir   s     €r#   ú
<listcomp>z*CpmAntEncoder.__init__.<locals>.<listcomp>R  s(   ø€ Ð$qÐ$qÐ$qÐUVÕ%;¸FÈaÐ%PÑ%PÔ%PÐ$qÐ$qÐ$qr$   )
r   r   Únum_hidden_layersÚ
num_layersr   Ú
ModuleListÚrangeÚlayersr   Úoutput_layernormr    s    `€r#   r   zCpmAntEncoder.__init__O  sm   øø€ Ý‰Œ×ÒÑÔÐØ Ô2ˆŒÝ”mÐ$qÐ$qÐ$qÐ$qÕZ_Ð`dÔ`oÑZpÔZpÐ$qÑ$qÔ$qÑrÔrˆŒå /°Ñ 7Ô 7ˆÔÐÐr$   Nr%   rW   rX   rY   Úoutput_hidden_statesrZ   r[   c           	      óÞ   — |rdnd}	|rdnd}
t          | j        ¦  «        D ]+\  }}|r|	|fz  }	 |||||||¬¦  «        }|\  }}|r|
|fz  }
Œ,|                      |¦  «        }|r|	|fz  }	||	|
fS )a  
        Args:
            hidden_states (`torch.Tensor`):
                Input to the layer of shape `(batch, seq_len, dim_model)`
            attention_mask (`torch.Tensor`):
                Avoid invalid areas to participate in the calculation of shape `(batch, seq_len, seq_len)`
            position_bias (`torch.Tensor`):
                Provides position information to attention mechanism of shape `(num_heads, seq_len, seq_len)`
            output_attentions (`bool`, *optional*):
                Whether or not to return the attentions tensors of all attention layers.
            output_hidden_states (`bool`, *optional*):
                Whether or not to return the hidden states of all layers.
            past_key_values (`Cache`, *optional*):
                Cached past key and value projection states
            use_cache (`bool`, *optional*):
                If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding
                (see `past_key_values`).
        © N)rY   rZ   r[   )Ú	enumerater«   r¬   )r!   r%   rW   rX   rY   r­   rZ   r[   rk   Úall_hidden_statesÚall_self_attnsr¥   ÚlayerÚlayer_outputsrs   s                  r#   r6   zCpmAntEncoder.forwardV  sÔ   € ð: #7Ð@˜B˜B¸DÐØ0Ð:˜˜°dˆå! $¤+Ñ.Ô.ð 	2ð 	2‰HˆAˆuØ#ð 6Ø! mÐ%5Ñ5Ð!Ø!˜EØØØØ"3Ø /Ø#ðñ ô ˆMð +8Ñ'ˆM˜<Ø ð 2Ø < /Ñ1�øà×-Ò-¨mÑ<Ô<ˆàð 	2Ø -Ð!1Ñ1ÐàÐ/°Ð?Ð?r$   )NNNNr€   r=   s   @r#   r¡   r¡   N  sÕ   ø€ € € € € ð8˜|ð 8ð 8ð 8ð 8ð 8ð 8ð *.Ø,0Ø(,Ø!%ð4@ð 4@à”|ð4@ð œð4@ð ”|ð	4@ð
   $™;ð4@ð # T™kð4@ð  ™ð4@ð ˜$‘;ð4@ð 4@ð 4@ð 4@ð 4@ð 4@ð 4@ð 4@r$   r¡   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚCpmAntIntermediatec                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          |j        t          ¦  «        rt          |j                 | _        d S |j        | _        d S r   )r   r   r   rJ   r   Úintermediate_sizeÚdenseÚ
isinstanceÚ
hidden_actÚstrr   Úintermediate_act_fnr    s     €r#   r   zCpmAntIntermediate.__init__�  sn   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3KÑLÔLˆŒ
Ý�fÔ'­Ñ-Ô-ð 	9Ý'-¨fÔ.?Ô'@ˆDÔ$Ð$Ð$à'-Ô'8ˆDÔ$Ð$Ð$r$   r%   Úreturnc                 óZ   — |                       |¦  «        }|                      |¦  «        }|S r   )r¹   r½   r“   s     r#   r6   zCpmAntIntermediate.forward—  s,   € ØŸ
š
 =Ñ1Ô1ˆØ×0Ò0°Ñ?Ô?ˆØÐr$   ©r7   r8   r9   r   r   r;   r6   r<   r=   s   @r#   r¶   r¶   Ž  s^   ø€ € € € € ð9ð 9ð 9ð 9ð 9ð U¤\ð °e´lð ð ð ð ð ð ð ð r$   r¶   c                   ór   ‡ — e Zd Zdefˆ fd„Zdej        dej        dej        dej        fd„Zd„ Zdd„Z	ˆ xZ
S )ÚCpmAntSegmentPositionEmbeddingr   c                 ó4  •— t          ¦   «                              ¦   «          |j        | _        |j        | _        |j        | _        |j        | _	        t          j        t          j        |j        |j        z  |j        z   |j        ¦  «        ¦  «        | _        d S r   )r   r   rF   rG   Úposition_bias_num_bucketsÚnum_bucketsÚposition_bias_max_distanceÚmax_distanceÚsegment_typesÚnum_segmentsr   r   r   r   Úrelative_attention_biasr    s     €r#   r   z'CpmAntSegmentPositionEmbedding.__init__ž  s‰   ø€ Ý‰Œ×ÒÑÔÐàÔ3ˆŒØ!Ô;ˆÔØ"Ô=ˆÔØ"Ô0ˆÔå')¤|ÝŒKØÔ$ vÔ';Ñ;¸fÔ>^Ñ^ØÔ*ñô ñ(
ô (
ˆÔ$Ð$Ð$r$   Úkey_posÚ	query_posÚkey_segmentÚquery_segmentc           	      ó´  — t          j        ¦   «         5  |                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        |                     d¦  «        k    r<t          d|                     d¦  «        › d|                     d¦  «        › d�¦  «        ‚||                     d¦  «        k    s||                     d¦  «        k    r)t          d|› d|                     d¦  «        › d�¦  «        ‚||                     d¦  «        k    r)t          d|› d|                     d¦  «        › d�¦  «        ‚|                     |d|¦  «        }|                     ||d¦  «        }|                     |d|¦  «        }|                     ||d¦  «        }|                      ||¦  «        }|| j        z   }|                      t          j        |t           j	        |j
        ¬	¦  «        d d d …f         t          j        |t           j	        |j
        ¬	¦  «        d d …d f         z
  | j        | j        ¬
¦  «        }	t          j        ||k    |	d d d …d d …f         |¦  «        }d d d ¦  «         n# 1 swxY w Y   t          j        || j        ¦  «        }
|
                     dddd¦  «                             ¦   «         }
|
S )Nr   r   z>key_pos.size(0) should be equal to query_pos.size(0), but got z and ú!z7keylen should be equal to key_segment.size(1), but got z;querylen should be equal to query_segment.size(1), but got r(   ©r.   r^   )rÅ   rÇ   r   r)   )r   Úno_gradr,   r-   r_   Ú!_segment_relative_position_bucketrÅ   Ú_position_bucketÚarangeÚint32r^   rÇ   ÚwhereÚFÚ	embeddingrÊ   r`   rj   )r!   rË   rÌ   rÍ   rÎ   ÚbatchÚkeylenÚquerylenÚrelative_position_bucketÚabsolute_position_bucketÚembedss              r#   r6   z&CpmAntSegmentPositionEmbedding.forward­  s8  € õ Œ]‰_Œ_ð %	ð %	Ø—L’L ‘O”OˆEØ—\’\ !‘_”_ˆFØ —~’~ aÑ(Ô(ˆHà�|Š|˜A‰Œ )§.¢.°Ñ"3Ô"3Ò3Ð3Ý$ØÐU\×UaÒUaÐbcÑUdÔUdÐÐÐkt×kyÒkyÐz{Ñk|Ôk|ÐÐÐñô ð ð ˜×)Ò)¨!Ñ,Ô,Ò,Ð,°¸M×<NÒ<NÈqÑ<QÔ<QÒ0QÐ0QÝ$ØqÈfÐqÐqÐ[f×[kÒ[kÐlmÑ[nÔ[nÐqÐqÐqñô ð ð ˜=×-Ò-¨aÑ0Ô0Ò0Ð0Ý$ØyÐRZÐyÐyÐan×asÒasÐtuÑavÔavÐyÐyÐyñô ð ð —l’l 5¨"¨fÑ5Ô5ˆGØ!Ÿš u¨h¸Ñ;Ô;ˆIØ%×*Ò*¨5°"°fÑ=Ô=ˆKØ)×.Ò.¨u°hÀÑCÔCˆMà'+×'MÒ'MÈmÐ]hÑ'iÔ'iÐ$Ø'?À$ÔBRÑ'RÐ$ð (,×'<Ò'<Ý”˜V­5¬;Ð?WÔ?^Ð_Ñ_Ô_Ð`dÐfgÐfgÐfgÐ`gÔhÝ”,˜x­u¬{ÐC[ÔCbÐcÑcÔcÐdeÐdeÐdeÐgkÐdkÔlñmà Ô,Ø!Ô.ð	 (=ñ (ô (Ð$õ (-¤{Ø Ò-Ø(¨¨q¨q¨q°!°!°!¨Ô4Ø(ñ(ô (Ð$ðC%	ð %	ð %	ñ %	ô %	ð %	ð %	ð %	ð %	ð %	ð %	øøøð %	ð %	ð %	ð %	õP ”Ð5°tÔ7SÑTÔTˆà—’  1 a¨Ñ+Ô+×6Ò6Ñ8Ô8ˆØˆs   ”I)J	Ê	JÊJc                 ó   — || j         z  |z   S r   )rÉ   )r!   rÎ   rÍ   s      r#   rÓ   z@CpmAntSegmentPositionEmbedding._segment_relative_position_bucketá  s   € Ø˜tÔ0Ñ0°;Ñ>Ð>r$   é    é€   c                 ó.  — d}|dz  }|dk                          t          j        ¦  «        |z  }t          j        |¦  «        }|dz  }||k     }|t          j        |                     ¦   «         |z  ¦  «        t          j        ||z  ¦  «        z  ||z
  z                        t          j        ¦  «        z   }t          j        |t          j        ||dz
  ¦  «        ¦  «        }|t          j	        ||                      t          j        ¦  «        |¦  «        z  }|S )Nr   r)   r   )
r/   r   rÖ   ÚabsÚlogri   rd   ÚminÚ	full_liker×   )r!   Úrelative_positionrÅ   rÇ   Úrelative_bucketsÚ	max_exactÚis_smallÚrelative_position_if_larges           r#   rÔ   z/CpmAntSegmentPositionEmbedding._position_bucketä  s  € ØÐà˜ÑˆØ-°Ò1×5Ò5µe´kÑBÔBÀ[ÑPÐÝ!œIÐ&7Ñ8Ô8ÐØ 1Ñ$ˆ	Ø$ yÒ0ˆØ%.ÝŒIÐ'×-Ò-Ñ/Ô/°)Ñ;Ñ<Ô<ÝŒh�| iÑ/Ñ0Ô0ñ1à˜YÑ&ñ(÷ Š"�UŒ[‰/Œ/ñ	&Ð"õ
 &+¤YØ&ÝŒOÐ6¸Àa¹ÑHÔHñ&
ô &
Ð"ð 	�EœK¨Ð2C×2FÒ2FÅuÄ{Ñ2SÔ2SÐUoÑpÔpÑpÐØÐr$   )rá   râ   )r7   r8   r9   r   r   r   r;   r6   rÓ   rÔ   r<   r=   s   @r#   rÂ   rÂ   �  sª   ø€ € € € € ð
˜|ð 
ð 
ð 
ð 
ð 
ð 
ð2à”ð2ð ”<ð2ð ”\ð	2ð
 ”|ð2ð 2ð 2ð 2ðh?ð ?ð ?ð ð  ð  ð  ð  ð  ð  ð  r$   rÂ   c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )ÚCpmAntOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S )N)r   )r   r   r   rJ   r¸   r   r¹   Ú	LayerNormÚlayer_norm_epsrR   Úhidden_dropout_probrS   r    s     €r#   r   zCpmAntOutput.__init__û  sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ7¸Ô9KÑLÔLˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆr$   r%   Úinput_tensorr¾   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S r   )r¹   rS   rð   )r!   r%   ró   s      r#   r6   zCpmAntOutput.forward  s@   € ØŸ
š
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØŸš }°|Ñ'CÑDÔDˆØÐr$   rÀ   r=   s   @r#   rî   rî   ú  si   ø€ € € € € ð>ð >ð >ð >ð >ð U¤\ð ÀÄð ÐRWÔR^ð ð ð ð ð ð ð ð r$   rî   c                   óX   ‡ — e Zd ZU eed<   dZ ej        ¦   «         ˆ fd„¦   «         Zˆ xZ	S )ÚCpmAntPreTrainedModelr   Úcpmantc                 ó$  •— t          ¦   «                              |¦  «         t          |t          ¦  «        rt	          j        |j        ¦  «         dS t          |t          ¦  «        r(t	          j        |j	        d| j
        j        ¬¦  «         dS dS )zInitialize the weightsg        )r2   ÚstdN)r   Ú_init_weightsrº   r   ÚinitÚones_r   rÂ   Únormal_rÊ   r   Úinit_std)r!   Úmoduler"   s     €r#   rú   z#CpmAntPreTrainedModel._init_weights  s�   ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ý�f�oÑ.Ô.ð 	]ÝŒJ�v”}Ñ%Ô%Ð%Ð%Ð%Ý˜Õ >Ñ?Ô?ð 	]ÝŒL˜Ô7¸cÀtÄ{ÔG[Ð\Ñ\Ô\Ð\Ð\Ð\ð	]ð 	]r$   )
r7   r8   r9   r   Ú__annotations__Úbase_model_prefixr   rÒ   rú   r<   r=   s   @r#   rö   rö     sg   ø€ € € € € € àÐÐÑØ Ðà€U„]�_„_ð]ð ]ð ]ð ]ñ „_ð]ð ]ð ]ð ]ð ]r$   rö   c                   óÂ   ‡ — e Zd Zdefˆ fd„Zd„ Zd„ Zd„ Ze	 	 	 	 	 	 dde	j
        dz  dedz  d	edz  d
edz  dedz  dedz  dee	j
                 ez  fd„¦   «         Zˆ xZS )ÚCpmAntModelr   c                 ó¢  •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          j        |j        |j        ¦  «        | _        t	          j        |j	        |j
        |j        z  z   |j        ¦  «        | _        t          |¦  «        | _        |j        | _        |j	        | _	        |                      ¦   «          d S r   )r   r   r¡   Úencoderr   Ú	EmbeddingrÈ   r   Úsegment_embeddingÚ
vocab_sizeÚprompt_typesÚprompt_lengthÚinput_embeddingrÂ   rX   Ú	post_initr    s     €r#   r   zCpmAntModel.__init__  s°   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý$ VÑ,Ô,ˆŒÝ!#¤¨fÔ.BÀFÔDVÑ!WÔ!WˆÔÝ!œ|ØÔ Ô 3°fÔ6JÑ JÑJÈFÔL^ñ 
ô  
ˆÔõ <¸FÑCÔCˆÔØ#Ô1ˆÔØ Ô+ˆŒà�ŠÑÔÐÐÐr$   c                 ó   — | j         S r   ©r  ©r!   s    r#   Úget_input_embeddingsz CpmAntModel.get_input_embeddings&  s   € ØÔ#Ð#r$   c                 ó   — || _         d S r   r  )r!   Ú
embeddingsrk   s      r#   Úset_input_embeddingsz CpmAntModel.set_input_embeddings)  s   € Ø)ˆÔÐÐr$   c                 óŠ  — |                      d¦  «        }|                      d¦  «        }|j        }t          j        ||¬¦  «        t          j        ||¬¦  «                             dd¦  «        k    }|d d …d d d …f         |d d …d d …d f                              ¦   «         |                     d||¦  «        z  z  }	|	|d d …d d d …f         |d d …d d …d f         k    z  }	t          j        t          t          || j	        z
  ¦  «        ¦  «        d d d…         |¬¦  «        d d d …f          
                    |d¦  «        |d d …d f         k     }
t          j        t          j        || j	        |¬¦  «                             ¦   «         |
fd¬¦  «        }
|
                     ||d¦  «        |
                     |d|¦  «        z  |	z  }	|	S )Nr   r   )r^   r(   rC   )r,   r^   r   rÕ   r_   Úlogical_notrg   Úlistrª   r
  ÚrepeatÚcatÚonesru   )r!   Ú	input_idsÚspanÚcontextÚlengthrÚ   Úseqlenr^   Údirectional_mask_2drW   Úmask_1ds              r#   Ú_prepare_attention_maskz#CpmAntModel._prepare_attention_mask,  sá  € Ø—’˜qÑ!Ô!ˆØ—’ Ñ"Ô"ˆØÔ!ˆÝ#œl¨6¸&ÐAÑAÔAÅUÄ\ÐRXÐagÐEhÑEhÔEh×EmÒEmÐnpÐrsÑEtÔEtÒtÐØ     D¨!¨!¨! Ô,Ø�A�A�A�q�q�q˜$�JÔ×+Ò+Ñ-Ô-Ð0C×0HÒ0HÈÈFÐTZÑ0[Ô0[Ñ[ñ
ˆð (¨4°°°°4¸¸¸°
Ô+;¸tÀAÀAÀAÀqÀqÀqÈ$ÀJÔ?OÒ+OÑPˆõ ŒL��e F¨TÔ-?Ñ$?Ñ@Ô@ÑAÔAÀ$À$ÀBÀ$ÔGÐPVÐWÑWÔWÐX\Ð^_Ð^_Ð^_ÐX_Ô`×gÒgÐhmÐopÑqÔqØ�Q�Q�Q˜�WŒoòð 	õ ”)�UœZ¨¨tÔ/AÈ&ÐQÑQÔQ×VÒVÑXÔXÐZaÐbÐhiÐjÑjÔjˆØ Ÿš e¨V°QÑ7Ô7¸'¿,º,ÀuÈaÐQWÑ:XÔ:XÑXÐ[iÑiˆØÐr$   Nr  rY   r­   rZ   r[   Úreturn_dictr¾   c           	      ó\  — |�|n| j         j        }|�|n| j         j        }|�|n| j         j        }|�|n| j         j        }|j        t          j        k    r|                     t          j        ¦  «        }|j        |j	        }	}t          j
        |dk    dd¦  «                             ||	¬¦  «        }
|
dk                         d¦  «                             ||	¬¦  «        }t          j        t          j        | j        dz  | j        z   | j        dz  | j        z   ||	¬¦  «                             |                     d¦  «        d¦  «        |fd¬¦  «        }|                     ¦   «         \  }}t          j        t          j        || j        ||	¬¦  «        |
fd¬¦  «        }
t          j        ||fd||	¬¦  «        }t          j        |||	¬¦  «                             |d¦  «        }t          j        ||fd||	¬¦  «        }|r|€t)          | j         ¬	¦  «        }|�|                     ¦   «         nd}|                     ¦   «         }|                      |¦  «        }|                      |
¦  «        }|dk    r|dd…dd…dd…f         }||z   }|                      ||||¦  «        }|                      |||
|
¦  «        }|dd…|d…dd…f         }|dd…dd…|d…dd…f         }|dd…|d…dd…f         }|                      |||||||¦  «        \  }}}|dk    rh|dd…| j        d…dd…f         }|�+d
}|D ]$}||dd…dd…| j        d…| j        d…f         fz  }Œ%|}|�#d
}|D ]}||dd…| j        d…dd…f         fz  }Œ|}|st9          d„ ||||fD ¦   «         ¦  «        S t;          ||||¬¦  «        S )ai  
        input_ids (`torch.Tensor` of shape `(batch_size, seq_len)`):
            Indices of input sequence tokens in the vocabulary.

            Indices can be obtained using [`CPMAntTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for details.

            [What are input IDs?](../glossary#input-ids)
        Nr   r)   rÑ   r(   r   r   rC   )r   r¯   c              3   ó   K  — | ]}|®|V — Œ	d S r   r¯   )r¤   Úvs     r#   ú	<genexpr>z&CpmAntModel.forward.<locals>.<genexpr>�  s1   è è € ð ð ØÐbcÐbo�ÐboÐboÐboÐboðð r$   )Úlast_hidden_staterZ   r%   Ú
attentions)r   rY   r­   r"  r[   r.   r   rÖ   r/   r^   r×   Úsumr  rÕ   r
  r  r  r,   ÚzerosÚfullr	   Úget_seq_lengthrj   r  r  r!  rX   r  Útupler   )r!   r  rY   r­   rZ   r[   r"  rk   r.   r^   Úsegmentr  rÚ   Ú
seq_lengthr  Úpositionr  Úpast_lengthr%   Úsegment_statesrW   rX   r±   Úall_attentionsÚnew_attentionsÚ	attentionÚnew_hidden_statesÚhidden_states                               r#   r6   zCpmAntModel.forward>  s­  € ð( 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð &1Ð%<�k�kÀ$Ä+ÔBYˆØ!*Ð!6�I�I¸D¼KÔ<Qˆ	ð Œ?�eœkÒ)Ð)Ø!Ÿš¥U¤[Ñ1Ô1ˆIØ!œ¨Ô)9ˆvˆÝ”+˜i¨1šn¨a°Ñ3Ô3×6Ò6¸UÈ6Ð6ÑRÔRˆØ˜Q’,×#Ò# BÑ'Ô'×*Ò*°¸vÐ*ÑFÔFˆÝ”Iå”ØÔ&¨Ñ*¨T¬_Ñ<ØÔ&¨Ñ*¨T¬_Ñ<ØØ!ð	ñ ô ÷
 ’&˜Ÿš¨Ñ*Ô*¨AÑ.Ô.Øðð ð
ñ 
ô 
ˆ	ð &ŸNšNÑ,Ô,ÑˆˆzÝ”)�Uœ[¨°Ô0BÈ%ÐX^Ð_Ñ_Ô_ÐahÐiÐopÐqÑqÔqˆÝ”*˜e ZÐ0°!¸5ÈÐPÑPÔPˆÝ”< 
°%ÀÐGÑGÔG×NÒNÈuÐVWÑXÔXˆÝŒz˜5 *Ð-¨q¸ÀfÐMÑMÔMˆàð 	?˜Ð0Ý*°$´+Ð>Ñ>Ô>ˆOà:IÐ:U�o×4Ò4Ñ6Ô6Ð6Ð[\ˆØ×(Ò(Ñ*Ô*ˆ	Ø×,Ò,¨YÑ7Ô7ˆØ×/Ò/°Ñ8Ô8ˆØ˜!ÒÐØ+¨A¨A¨A¨r¨s¨s°A°A°A¨IÔ6ˆNà%¨Ñ6ˆà×5Ò5°iÀÀwÐPVÑWÔWˆØ×*Ò*¨8°X¸wÈÑPÔPˆà'¨¨¨¨;¨<¨<¸¸¸Ð(:Ô;ˆØ% a a a¨¨¨¨K¨L¨L¸!¸!¸!Ð&;Ô<ˆØ% a a a¨¨¨°q°q°qÐ&8Ô9ˆà;?¿<º<ØØØØØ ØØñ<
ô <
Ñ8ˆÐ(¨.ð ˜!ÒÐØ)¨!¨!¨!¨TÔ-?Ð-AÐ-AÀ1À1À1Ð*DÔEˆMàÐ)Ø!#�Ø!/ð eð e�IØ" y°°°°A°A°A°tÔ7IÐ7KÐ7KÈTÔM_ÐMaÐMaÐ1aÔ'bÐ&dÑd�N�NØ!/�Ø Ð,Ø$&Ð!Ø$5ð Uð U�LØ%¨,°q°q°q¸$Ô:LÐ:NÐ:NÐPQÐPQÐPQÐ7QÔ*RÐ)TÑTÐ%Ð%Ø$5Ð!àð 	Ýð ð Ø)¨?Ð<MÈ~Ð^ðñ ô ñ ô ð õ 'Ø+Ø+Ø+Ø%ð	
ñ 
ô 
ð 	
r$   )NNNNNN)r7   r8   r9   r   r   r  r  r!  r   r   r;   ru   r   r-  r   r6   r<   r=   s   @r#   r  r    s&  ø€ € € € € ð˜|ð ð ð ð ð ð ð$ð $ð $ð*ð *ð *ðð ð ð$ ð *.Ø)-Ø,0Ø(,Ø!%Ø#'ðg
ð g
à”< $Ñ&ðg
ð   $™;ðg
ð # T™kð	g
ð
  ™ðg
ð ˜$‘;ðg
ð ˜D‘[ðg
ð 
ˆuŒ|Ô	Ð6Ñ	6ðg
ð g
ð g
ñ „^ðg
ð g
ð g
ð g
ð g
r$   r  zy
    The CPMAnt Model with a language modeling head on top (linear layer with weights tied to the input embeddings).
    )Úcustom_introc                   óð   ‡ — e Zd ZddiZdefˆ fd„Ze	 	 	 	 	 	 	 	 	 ddej        dz  de	dz  d	e
dz  d
e
dz  de
dz  dej        dz  de
dz  dej        dz  deej        z  deez  fd„¦   «         Zd„ Zd„ Zˆ xZS )ÚCpmAntForCausalLMzlm_head.weightzcpmant.input_embedding.weightr   c                 ó  •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          j        |j        |j        |j        |j	        z  z   d¬¦  «        | _
        |                      ¦   «          d S r„   )r   r   r  r÷   r   rJ   r   r  r	  r
  Úlm_headr  r    s     €r#   r   zCpmAntForCausalLM.__init__±  sz   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý! &Ñ)Ô)ˆŒõ ”yØÔ Ô 1°FÔ4GÈ&ÔJ^Ñ4^Ñ ^Ðejð
ñ 
ô 
ˆŒð 	�ŠÑÔÐÐÐr$   Nr   r  rZ   r[   rY   r­   Úlabelsr"  rW   Úlogits_to_keepr¾   c
                 ó6  — |�|n| j         j        }|                      ||||||¦  «        }|r|j        n|d         }t	          |	t
          ¦  «        rt          |	 d¦  «        n|	}|                      |dd…|dd…f         ¦  «        }d}|�Tt          ¦   «         } || 	                    d| 
                    d¦  «        ¦  «        | 	                    d¦  «        ¦  «        }|s|f|dd…         z   }|�|f|z   n|S t          |||j        |j        |j        ¬¦  «        S )u<  
        input_ids (`torch.Tensor` of shape `(batch_size, seq_len)`):
            Indices of input sequence tokens in the vocabulary.

            Indices can be obtained using [`CPMAntTokenizer`]. See [`PreTrainedTokenizer.encode`] and
            [`PreTrainedTokenizer.__call__`] for details.

            [What are input IDs?](../glossary#input-ids)
        labels (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss.

        Example:

        Text Generation with CpmAntForCausalLM.
        ```python
        >>> from transformers import CPMAntTokenizer, CpmAntForCausalLM

        >>> texts = "ä»Šå¤©å¤©æ°”ä¸�é”™ï¼Œ"
        >>> model = CpmAntForCausalLM.from_pretrained("openbmb/cpm-ant-10b")
        >>> tokenizer = CPMAntTokenizer.from_pretrained("openbmb/cpm-ant-10b")
        >>> input_ids = tokenizer(texts, return_tensors="pt")
        >>> outputs = model.generate(**input_ids)
        >>> output_texts = tokenizer.batch_decode(outputs)
        >>> print(output_texts)
        ['ä»Šå¤©å¤©æ°”ä¸�é”™ï¼Œé˜³å…‰æ˜Žåªšï¼Œæˆ‘å’Œå¦ˆå¦ˆä¸€èµ·åŽ»è¶…å¸‚ä¹°ä¸œè¥¿ã€‚\nåœ¨è¶…å¸‚é‡Œï¼Œæˆ‘çœ‹åˆ°äº†ä¸€ä¸ªå¾ˆå¥½çŽ©çš„çŽ©å…·ï¼Œå®ƒçš„å��å­—å�«â€œæœºå™¨äººâ€�ã€‚å®ƒæœ‰ä¸€ä¸ªåœ†åœ†çš„è„‘è¢‹ï¼Œä¸¤å�ªåœ†åœ†çš„çœ¼ç�›ï¼Œè¿˜æœ‰ä¸€ä¸ªåœ†åœ†çš„']
        ```
        Nr   r(   r   )ÚlossÚlogitsrZ   r%   r(  )r   r"  r÷   r'  rº   ÚintÚslicer<  r   r_   r,   r   rZ   r%   r(  )r!   r  rZ   r[   rY   r­   r=  r"  rW   r>  rk   Úmodel_outputr%   Úslice_indicesrA  r@  Ú	loss_funcÚoutputs                     r#   r6   zCpmAntForCausalLM.forward»  sP  € ðR &1Ð%<�k�kÀ$Ä+ÔBYˆà—{’{ØØØ ØØØñ
ô 
ˆð ;FÐZ˜Ô6Ð6È<ÐXYÌ?ˆå8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜m¨A¨A¨A¨}¸a¸a¸aÐ,?Ô@ÑAÔAˆàˆØÐÝ(Ñ*Ô*ˆIØ�9˜VŸ[š[¨¨V¯[ª[¸©_¬_Ñ=Ô=¸v¿{º{È2¹¼ÑOÔOˆDàð 	FØ�Y ¨a¨b¨bÔ!1Ñ1ˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå%ØØØ(Ô8Ø&Ô4Ø#Ô.ð
ñ 
ô 
ð 	
r$   c                 ó   — | j         j        S r   ©r÷   r  r  s    r#   r  z&CpmAntForCausalLM.get_input_embeddings  s   € ØŒ{Ô*Ð*r$   c                 ó   — || j         _        d S r   rI  )r!   r  s     r#   r  z&CpmAntForCausalLM.set_input_embeddings  s   € Ø&0ˆŒÔ#Ð#Ð#r$   )	NNNNNNNNr   )r7   r8   r9   Ú_tied_weights_keysr   r   r   r   r;   r   ru   rB  r-  r   r6   r  r  r<   r=   s   @r#   r:  r:  ©  sZ  ø€ € € € € ð +Ð,KÐLÐð˜|ð ð ð ð ð ð ð ð *.Ø(,Ø!%Ø)-Ø,0Ø&*Ø#'Ø.2Ø-.ðF
ð F
à”< $Ñ&ðF
ð  ™ðF
ð ˜$‘;ð	F
ð
   $™;ðF
ð # T™kðF
ð ”˜tÑ#ðF
ð ˜D‘[ðF
ð œ tÑ+ðF
ð ˜eœlÑ*ðF
ð 
Ð'Ñ	'ðF
ð F
ð F
ñ „^ðF
ðP+ð +ð +ð1ð 1ð 1ð 1ð 1ð 1ð 1r$   r:  )r:  r  rö   )0r:   rd   r   Útorch.nn.functionalr   Ú
functionalrØ   Útorch.nnr   Ú r   rû   Úactivationsr   Úcache_utilsr   r	   Ú
generationr
   Úmodeling_outputsr   r   Úmodeling_utilsr   Úutilsr   r   Úconfiguration_cpmantr   Ú
get_loggerr7   ÚloggerÚModuler   r?   rw   r‚   rŽ   r•   rœ   r¡   r¶   rÂ   rî   rö   r  r:  Ú__all__r¯   r$   r#   ú<module>r[     s   ðð Ð à €€€à €€€Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø )Ð )Ð )Ð )Ð )Ð )Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ -Ð -Ð -Ð -Ð -Ð -Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .ð 
ˆÔ	˜HÑ	%Ô	%€ðð ð ð ð �b”iñ ô ð ð2b#ð b#ð b#ð b#ð b#�b”iñ b#ô b#ð b#ðJ3+ð 3+ð 3+ð 3+ð 3+˜rœyñ 3+ô 3+ð 3+ðlð ð ð ð ˜"œ)ñ ô ð ð(ð ð ð ð ˜œ	ñ ô ð ð4ð ð ð ð �R”Yñ ô ð ð6*+ð *+ð *+ð *+ð *+˜RœYñ *+ô *+ð *+ðZ<@ð <@ð <@ð <@ð <@�B”Iñ <@ô <@ð <@ð@ð ð ð ð ˜œñ ô ð ðY ð Y ð Y ð Y ð Y  R¤Yñ Y ô Y ð Y ðzð ð ð ð �2”9ñ ô ð ð ð]ð ]ð ]ð ]ð ]˜Oñ ]ô ]ñ „ð]ð ðN
ð N
ð N
ð N
ð N
Ð'ñ N
ô N
ñ „ðN
ðb €ððñ ô ð
Z1ð Z1ð Z1ð Z1ð Z1Ð-¨ñ Z1ô Z1ñô ð
Z1ðz HÐ
GÐ
G€€€r$   