Ë
    ÛÓ^j¼|  ã                   ó  — 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/y).zPyTorch CPMAnté    N)Únn)ÚCrossEntropyLossé   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)ÚBaseModelOutputWithPastÚCausalLMOutputWithPast)ÚPreTrainedModel)Úauto_docstringÚloggingé   )ÚCpmAntConfigc                   óH   ‡ — 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                  «      «      | _	        y ©N)
ÚsuperÚ__init__ÚepsÚhidden_sizeÚdim_normr   Ú	ParameterÚtorchÚemptyÚweight©Úselfr   Ú	__class__s     €úu/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/cpmant/modeling_cpmant.pyr   zCpmAntLayerNorm.__init__)   sE   ø€ Ü‰ÑÔà—:‘:ˆŒØ×*Ñ*ˆŒÜ—l‘l¤5§;¡;¨v×/AÑ/AÓ#BÓCˆ�ó    Úhidden_statesc                 óp  — |j                  d«      | j                  k7  rt        d«      ‚|j                  }|j	                  t
        j                  «      j                  d«      j                  dd¬«      }|t        j                  || j                  z   «      z  j	                  |«      | 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Ü Ð!JÓKÐKØ!×'Ñ'ˆ	Ø ×#Ñ#¤E§M¡MÓ2×6Ñ6°qÓ9×>Ñ>À2ÈtÐ>ÓTˆØ&¬¯©°XÀÇÁÑ5HÓ)IÑI×MÑMÈiÓXÐ[_×[fÑ[fÑfˆØÐr$   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   ÚTensorr6   Ú__classcell__©r"   s   @r#   r   r   $   s&   ø„ ñð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                 óV  •— 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                  j                  d¬«      | _        |j"                  �0t        j                  j%                  |j"                  ¬«      | _        y d | _        y )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Ñ3ˆŒØŸ™ˆŒØ"ˆŒäŸ™ 4§>¡>°4·>±>ÀDÇMÁMÑ3QÐX]Ô^ˆŒÜŸ™ 4§>¡>°4·>±>ÀDÇMÁMÑ3QÐX]Ô^ˆŒÜŸ™ 4§>¡>°4·>±>ÀDÇMÁMÑ3QÐX]Ô^ˆŒäŸY™Y t§~¡~¸¿¹Ñ'EÀtÇ~Á~Ð\aÔbˆÔä—x‘x×'Ñ'¨BÐ'Ó/ˆŒà×ÑÐ'Ü Ÿ8™8×+Ñ+¨f×.>Ñ.>Ð+Ó?ˆD�LàˆD�Lr$   Úhidden_qÚ	hidden_kvÚattention_maskÚposition_biasÚoutput_attentionsÚpast_key_valuesÚ	use_cachec           	      ó€  — |j                  d«      }	|j                  d«      }
|j                  d«      }| j                  |«      }| j                  |«      }| j                  |«      }|j	                  |	|
| j
                  | j                  «      j                  dddd«      }|j	                  |	|| j
                  | j                  «      j                  dddd«      }|j	                  |	|| j
                  | j                  «      j                  dddd«      }|�1|j                  ||| j                  «      \  }}|j                  d«      }t        j                  ||j                  dd«      «      t        j                  | j                  «      z  }||z   }t        j                  ||j	                  |	d|
|«      t        j                   d«      k(  t        j"                  t%        d	«      |j&                  |j(                  ¬
«      «      }| j+                  |«      }t        j                  ||j	                  |	d|
|«      t        j                   d«      k(  t        j"                  d|j&                  |j(                  ¬
«      «      }|r|}nd}| j,                  �| j-                  |«      }t        j                  ||«      }|j	                  |	| j
                  |
| j                  «      j                  dddd«      }|j/                  «       j	                  |	|
| j
                  | j                  z  «      }| j1                  |«      }||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©n¸d¿m¹mÓL×TÑTÐUVÐXYÐ[\Ð^_Ó`ˆØ�h‰h�z 5¨$¯.©.¸$¿-¹-ÓH×PÑPÐQRÐTUÐWXÐZ[Ó\ˆØ—
‘
˜: u¨d¯n©n¸d¿m¹mÓL×TÑTÐUVÐXYÐ[\Ð^_Ó`ˆàÐ&Ø(×/Ñ/°°U¸D¿N¹NÓK‰JˆC�Ø—H‘H˜R“LˆEô —‘˜U C§M¡M°"°bÓ$9Ó:¼T¿Y¹YÀtÇ}Á}Ó=UÑUˆØ˜Ñ%ˆä×!Ñ!ØØ×Ñ 
¨A¨u°eÓ<ÄÇÁÈUÓ@SÑSÜ×Ñ¤ f£°e·l±lÈ%Ï+É+ÔVó
ˆð
 —‘˜UÓ#ˆä×!Ñ!ØØ×Ñ 
¨A¨u°eÓ<ÄÇÁÈUÓ@SÑSÜ×Ñ ¨%¯,©,¸e¿k¹kÔJó
ˆñ
 Ø ‰LàˆLà�<‰<Ð#Ø—L‘L Ó'ˆEô —‘˜U EÓ*ˆà—
‘
˜: t§~¡~°u¸d¿m¹mÓL×TÑTÐUVÐXYÐ[\Ð^_Ó`ˆØ× Ñ Ó"×'Ñ'¨
°E¸4¿>¹>ÈDÏMÉMÑ;YÓ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#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                  |j                  «      | _
        y d | _
        y ©N)rI   )r   r   r   Úlayernorm_before_attentionr?   Úself_attentionrQ   r   r   rR   rS   rT   s      €r#   r   z!CpmAntSelfAttentionBlock.__init__£   sV   ø€ Ü‰ÑÔÜ*9¸&Ó*AˆÔ'Ü-¨fÀ	ÔJˆÔØ×ÒÜ Ÿ8™8×+Ñ+¨F×,<Ñ,<Ó=ˆD�LàˆD�Lr$   r%   rW   rX   rY   rZ   r[   c           	      ó¤   — | j                  |«      }| j                  |||||||«      \  }}	| j                  �| 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`).
        )rz   r{   rS   )
r!   r%   rW   rX   rY   rZ   r[   rk   Úoutputsrs   s
             r#   r6   z CpmAntSelfAttentionBlock.forward¬   sm   € ð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   ¢   sy   ø„ ñ ˜|õ  ð .2Ø).Ø(,Ø!%ñ)+à—|‘|ð)+ð Ÿ™ð)+ð —|‘| dÑ*ð	)+ð
   $™;ð)+ð  ™ð)+ð ˜$‘;÷)+r$   rw   c                   óD   ‡ — 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                  j                  «       | _
        y ©NFrA   )r   r   r   rJ   r   Údim_ffÚw_0Úw_1r   ÚGELUÚactr    s     €r#   r   zCpmAntDenseGatedACT.__init__Ù   s[   ø€ Ü‰ÑÔÜ—9‘9˜V×/Ñ/°·±ÀUÔKˆŒÜ—9‘9˜V×/Ñ/°·±ÀUÔKˆŒÜ—8‘8—=‘=“?ˆ�r$   r%   c                 ór   — | j                  | j                  |«      «      }| j                  |«      }||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ß   s9   € ð —X‘X˜dŸh™h }Ó5Ó6ˆ
ØŸ™ Ó/ˆà" ]Ñ2ˆØÐr$   ©	r7   r8   r9   r   r   r   r;   r6   r<   r=   s   @r#   r�   r�   Ø   s   ø„ ð#˜|õ #ð
 U§\¡\÷ 
r$   r�   c                   óD   ‡ — 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                  |j                  «      | _        nd | _        t        j                  |j                  |j                  d¬«      | _        y rƒ   )r   r   r�   Úw_inrQ   r   r   rR   rS   rJ   r„   r   Úw_outr    s     €r#   r   zCpmAntFeedForward.__init__í   sg   ø€ Ü‰ÑÔÜ'¨Ó/ˆŒ	Ø×ÑÐ'Ü Ÿ8™8×+Ñ+¨F×,<Ñ,<Ó=ˆD�LàˆDŒLä—Y‘Y˜vŸ}™}¨f×.@Ñ.@ÀuÔMˆ�
r$   r%   c                 ó„   — | j                  |«      }| j                  �| j                  |«      }| j                  |«      }|S )r'   )r�   rS   r�   ©r!   r%   s     r#   r6   zCpmAntFeedForward.forward÷   s>   € ð
 Ÿ	™	 -Ó0ˆà�<‰<Ð#Ø ŸL™L¨Ó7ˆMàŸ
™
 =Ó1ˆàÐr$   r‹   r=   s   @r#   r�   r�   ì   s!   ø„ ðN˜|õ Nð U§\¡\÷ r$   r�   c                   óD   ‡ — 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                  |j                  «      | _
        y d | _
        y r   )r   r   r   Úlayernorm_before_ffnr�   ÚffnrQ   r   r   rR   rS   r    s     €r#   r   zCpmAntFFNBlock.__init__  sS   ø€ Ü‰ÑÔÜ$3°FÓ$;ˆÔ!Ü$ VÓ,ˆŒØ×ÒÜ Ÿ8™8×+Ñ+¨F×,<Ñ,<Ó=ˆD�LàˆD�Lr$   r%   c                 óŽ   — | j                  |«      }| j                  |«      }| j                  �| 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  sJ   € ð ×.Ñ.¨}Ó=ˆ
Ø—(‘(˜:Ó&ˆØ�<‰<Ð#Ø—l‘l 7Ó+ˆGØ%¨Ñ/ˆØÐr$   r‹   r=   s   @r#   r”   r”     s    ø„ ð ˜|õ  ðà—|‘|÷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                 óf   •— t         ‰| �  «        t        ||¬«      | _        t	        |«      | _        y ry   )r   r   rw   Úself_attr”   r—   rT   s      €r#   r   zCpmAntTransformerBlock.__init__"  s(   ø€ Ü‰ÑÔÜ0°À9ÔMˆŒÜ! &Ó)ˆ�r$   r%   rW   rX   rY   rZ   r[   c                 ó`   — | j                  ||||||¬«      \  }}| j                  |«      }||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'  sI   € ð4 '+§m¡mØØ)Ø'Ø/Ø+Øð '4ó '
Ñ#ˆ�|ð Ÿ™ Ó/ˆØ˜lÐ*Ð*r$   r   r~   r   r=   s   @r#   r›   r›   !  sy   ø„ ñ*˜|õ *ð .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
                  t        | j                  «      D �cg c]  }t        ||¬«      ‘Œ c}«      | _        t        |«      | _
        y c c}w ry   )r   r   Únum_hidden_layersÚ
num_layersr   Ú
ModuleListÚranger›   Úlayersr   Úoutput_layernorm)r!   r   Úir"   s      €r#   r   zCpmAntEncoder.__init__O  s_   ø€ Ü‰ÑÔØ ×2Ñ2ˆŒÜ—m‘mÔZ_Ð`d×`oÑ`oÓZpÖ$qÐUVÔ%;¸FÈaÖ%PÒ$qÓrˆŒä /°Ó 7ˆÕùò %rs   ÁA8Nr%   rW   rX   rY   Úoutput_hidden_statesrZ   r[   c           	      óØ   — |rdnd}	|rdnd}
t        | j                  «      D ])  \  }}|r|	|fz  }	 |||||||¬«      }|\  }}|sŒ$|
|fz  }
Œ+ | j                  |«      }|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¸DÐÙ0™°dˆä! $§+¡+Ó.ò 	2‰HˆAˆuÙ#Ø! mÐ%5Ñ5Ð!Ù!ØØØØ"3Ø /Ø#ôˆMð +8Ñ'ˆM˜<Ú Ø < /Ñ1‘ð	2ð ×-Ñ-¨mÓ<ˆáØ -Ð!1Ñ1ÐàÐ/°Ð?Ð?r$   )NNNNr   r=   s   @r#   r    r    N  sŠ   ø„ ð8˜|õ 8ð *.Ø,0Ø(,Ø!%ñ4@à—|‘|ð4@ð Ÿ™ð4@ð —|‘|ð	4@ð
   $™;ð4@ð # T™kð4@ð  ™ð4@ð ˜$‘;÷4@r$   r    c                   óV   ‡ — 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                     | _        y |j                  | _        y r   )r   r   r   rJ   r   Úintermediate_sizeÚdenseÚ
isinstanceÚ
hidden_actÚstrr   Úintermediate_act_fnr    s     €r#   r   zCpmAntIntermediate.__init__�  s]   ø€ Ü‰ÑÔÜ—Y‘Y˜v×1Ñ1°6×3KÑ3KÓLˆŒ
Ü�f×'Ñ'¬Ô-Ü'-¨f×.?Ñ.?Ñ'@ˆDÕ$à'-×'8Ñ'8ˆDÕ$r$   r%   Úreturnc                 óJ   — | j                  |«      }| j                  |«      }|S r   )rµ   r¹   r’   s     r#   r6   zCpmAntIntermediate.forward—  s&   € ØŸ
™
 =Ó1ˆØ×0Ñ0°Ó?ˆØÐr$   ©r7   r8   r9   r   r   r;   r6   r<   r=   s   @r#   r²   r²   Ž  s#   ø„ ô9ð U§\¡\ð °e·l±l÷ r$   r²   c                   óš   ‡ — 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                 ób  •— t         ‰| �  «        |j                  | _        |j                  | _        |j                  | _        |j                  | _	        t        j                  t        j                  |j                  |j                  z  |j                  z   |j                  «      «      | _        y 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Ñ3ˆŒØ!×;Ñ;ˆÔØ"×=Ñ=ˆÔØ"×0Ñ0ˆÔä')§|¡|Ü�K‰KØ×$Ñ$ v×';Ñ';Ñ;¸f×>^Ñ>^Ñ^Ø×*Ñ*óó(
ˆÕ$r$   Úkey_posÚ	query_posÚkey_segmentÚquery_segmentc           	      ó0  — t        j                  «       5  |j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      |j                  d«      k7  r0t        d|j                  d«      › d|j                  d«      › d�«      ‚||j                  d«      k7  s||j                  d«      k7  r!t        d|› d|j                  d«      › d�«      ‚||j                  d«      k7  r!t        d|› d|j                  d«      › d�«      ‚|j	                  |d|«      }|j	                  ||d«      }|j	                  |d|«      }|j	                  ||d«      }| j                  ||«      }|| j                  z   }| j                  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 «       t        j                  | j                  «      }
|
j!                  dddd«      j#                  «       }
|
S # 1 sw Y   ŒMxY w)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­  s•  € ô �]‰]‹_ñ %	Ø—L‘L “OˆEØ—\‘\ !“_ˆFØ —~‘~ aÓ(ˆHà�|‰|˜A‹ )§.¡.°Ó"3Ò3Ü$ØTÐU\×UaÑUaÐbcÓUdÐTeÐejÐkt×kyÑkyÐz{Ók|Ðj}Ð}~Ðóð ð ˜×)Ñ)¨!Ó,Ò,°¸M×<NÑ<NÈqÓ<QÒ0QÜ$ØMÈfÈXÐUZÐ[f×[kÑ[kÐlmÓ[nÐZoÐopÐqóð ð ˜=×-Ñ-¨aÓ0Ò0Ü$ØQÐRZÐQ[Ð[`Ðan×asÑasÐtuÓavÐ`wÐwxÐyóð ð —l‘l 5¨"¨fÓ5ˆGØ!Ÿ™ u¨h¸Ó;ˆIØ%×*Ñ*¨5°"°fÓ=ˆKØ)×.Ñ.¨u°hÀÓCˆMà'+×'MÑ'MÈmÐ]hÓ'iÐ$Ø'?À$×BRÑBRÑ'RÐ$ð (,×'<Ñ'<Ü—‘˜V¬5¯;©;Ð?W×?^Ñ?^Ô_Ð`dÒfgÐ`gÑhÜ—,‘,˜x¬u¯{©{ÐC[×CbÑCbÔcÒdeÐgkÐdkÑlñmà ×,Ñ,Ø!×.Ñ.ð	 (=ó (Ð$ô (-§{¡{Ø Ñ-Ø(¨ªq²!¨Ñ4Ø(ó(Ð$÷C%	ôP —‘Ð5°t×7SÑ7SÓTˆà—‘  1 a¨Ó+×6Ñ6Ó8ˆØˆ÷W%	ð %	ús   •H+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Ñ0°;Ñ>Ð>r$   c                 ó.  — d}|dz  }|dkD  j                  t        j                  «      |z  }t        j                  |«      }|dz  }||k  }|t        j                  |j                  «       |z  «      t        j                  ||z  «      z  ||z
  z  j                  t        j                  «      z   }t        j                  |t        j                  ||dz
  «      «      }|t        j                  ||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±kÓBÀ[ÑPÐÜ!ŸI™IÐ&7Ó8ÐØ 1Ñ$ˆ	Ø$ yÑ0ˆØ%.Ü�I‰IÐ'×-Ñ-Ó/°)Ñ;Ó<Ü�h‰h�| iÑ/Ó0ñ1à˜YÑ&ñ(÷ ‰"ŒU�[‰[‹/ñ	&Ð"ô
 &+§Y¡YØ&Ü�O‰OÐ6¸Àa¹ÓHó&
Ð"ð 	œEŸK™K¨Ð2C×2FÑ2FÄuÇ{Á{Ó2SÐUoÓpÑpÐØÐr$   )é    é€   )r7   r8   r9   r   r   r   r;   r6   rÏ   rÐ   r<   r=   s   @r#   r¾   r¾   �  sU   ø„ ð
˜|õ 
ð2à—‘ð2ð —<‘<ð2ð —\‘\ð	2ð
 —|‘|ó2òh?÷ r$   r¾   c                   ón   ‡ — 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                  «      | _        y )N)r   )r   r   r   rJ   r´   r   rµ   Ú	LayerNormÚlayer_norm_epsrR   Úhidden_dropout_probrS   r    s     €r#   r   zCpmAntOutput.__init__û  s`   ø€ Ü‰ÑÔÜ—Y‘Y˜v×7Ñ7¸×9KÑ9KÓLˆŒ
ÜŸ™ f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—z‘z &×"<Ñ"<Ó=ˆ�r$   r%   Úinput_tensorrº   c                 ór   — | j                  |«      }| j                  |«      }| j                  ||z   «      }|S r   )rµ   rS   rì   )r!   r%   rï   s      r#   r6   zCpmAntOutput.forward  s7   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØŸ™ }°|Ñ'CÓDˆØÐr$   r¼   r=   s   @r#   rê   rê   ú  s1   ø„ ô>ð U§\¡\ð ÀÇÁð ÐRW×R^ÑR^÷ r$   rê   c                   óV   ‡ — 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                  «       yt        |t        «      r7t	        j                  |j                  d| j                  j                  ¬«       yy)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‰J�v—}‘}Õ%Ü˜Ô >Ô?Ü�L‰L˜×7Ñ7¸cÀtÇ{Á{×G[ÑG[Ö\ð @r$   )
r7   r8   r9   r   Ú__annotations__Úbase_model_prefixr   rÎ   rö   r<   r=   s   @r#   rò   rò     s+   ø… àÓØ Ðà€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                  | _	        | j                  «        y 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Ñ.BÀF×DVÑDVÓ!WˆÔÜ!Ÿ|™|Ø×Ñ × 3Ñ 3°f×6JÑ6JÑ JÑJÈF×L^ÑL^ó 
ˆÔô <¸FÓCˆÔØ#×1Ñ1ˆÔØ ×+Ñ+ˆŒà�‰Õr$   c                 ó   — | j                   S r   ©r  ©r!   s    r#   Úget_input_embeddingsz CpmAntModel.get_input_embeddings&  s   € Ø×#Ñ#Ð#r$   c                 ó   — || _         y r   r
  )r!   Ú
embeddingsrk   s      r#   Úset_input_embeddingsz CpmAntModel.set_input_embeddings)  s
   € Ø)ˆÕr$   c                 ó*  — |j                  d«      }|j                  d«      }|j                  }t        j                  ||¬«      t        j                  ||¬«      j	                  dd«      k  }|d d …d d d …f   |d d …d d …d f   j                  «       |j	                  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   j                  |d«      |d d …d f   k  }
t        j                  t        j                  || j                  |¬«      j                  «       |
fd¬«      }
|
j	                  ||d«      |
j	                  |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™l¨6¸&ÔAÄUÇ\Á\ÐRXÐagÔEh×EmÑEmÐnpÐrsÓEtÑtÐØ ¢ Dª! Ñ,Ø’A’q˜$�JÑ×+Ñ+Ó-Ð0C×0HÑ0HÈÈFÐTZÓ0[Ñ[ñ
ˆð (¨4²°4º°
Ñ+;¸tÂAÂqÈ$ÀJÑ?OÑ+OÑPˆô �L‰Lœœe F¨T×-?Ñ-?Ñ$?Ó@ÓAÁ$ÀBÀ$ÑGÐPVÔWÐX\Ò^_ÐX_Ñ`×gÑgÐhmÐopÓqØ’Q˜�W‰oñð 	ô —)‘)œUŸZ™Z¨¨t×/AÑ/AÈ&ÔQ×VÑVÓXÐZaÐbÐhiÔjˆØ Ÿ™ e¨V°QÓ7¸'¿,¹,ÀuÈaÐQWÓ: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                  k7  r|j                  t        j                  «      }|j
                  |j                  }	}t        j                  |dk7  dd«      j                  ||	¬«      }
|
dk7  j                  d«      j                  ||	¬«      }t        j                  t        j                  | j                  dz  | j                  z   | j                  dz  | j                  z   ||	¬«      j!                  |j#                  d«      d«      |fd¬«      }|j#                  «       \  }}t        j                  t        j$                  || j                  ||	¬«      |
fd¬«      }
t        j&                  ||fd||	¬«      }t        j                  |||	¬«      j!                  |d«      }t        j&                  ||fd||	¬«      }|r|€t)        | j                   ¬	«      }|�|j+                  «       nd}|j-                  «       }| j/                  |«      }| j1                  |
«      }|dk7  r|dd…dd…dd…f   }||z   }| j3                  ||||«      }| j5                  |||
|
«      }|dd…|d…dd…f   }|dd…dd…|d…dd…f   }|dd…|d…dd…f   }| j7                  |||||||«      \  }}}|dk(  rw|dd…| j                  d…dd…f   }|�4d
}|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  — | ]	  }|€Œ|–— Œ y ­wr   r«   )Ú.0Úvs     r#   ú	<genexpr>z&CpmAntModel.forward.<locals>.<genexpr>�  s   è ø€ ò ØÐbcÑbo”ñùs   ‚Š)Ú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_ÑT_×TqÑTqÐà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆØ!*Ð!6‘I¸D¿K¹K×<QÑ<Qˆ	ð �?‰?œeŸk™kÒ)Ø!Ÿ™¤U§[¡[Ó1ˆIØ!Ÿ™¨×)9Ñ)9ˆvˆÜ—+‘+˜i¨1™n¨a°Ó3×6Ñ6¸UÈ6Ð6ÓRˆØ˜Q‘,×#Ñ# BÓ'×*Ñ*°¸vÐ*ÓFˆÜ—I‘Iä—‘Ø×&Ñ&¨Ñ*¨T¯_©_Ñ<Ø×&Ñ&¨Ñ*¨T¯_©_Ñ<ØØ!ô	÷
 ‘&˜Ÿ™¨Ó*¨AÓ.Øðð ô
ˆ	ð &ŸN™NÓ,ÑˆˆzÜ—)‘)œUŸ[™[¨°×0BÑ0BÈ%ÐX^Ô_ÐahÐiÐopÔqˆÜ—*‘*˜e ZÐ0°!¸5ÈÔPˆÜ—<‘< 
°%ÀÔG×NÑNÈuÐVWÓXˆÜ�z‰z˜5 *Ð-¨q¸ÀfÔMˆá˜Ð0Ü*°$·+±+Ô>ˆOà:IÐ:U�o×4Ñ4Ô6Ð[\ˆØ×(Ñ(Ó*ˆ	Ø×,Ñ,¨YÓ7ˆØ×/Ñ/°Ó8ˆØ˜!ÒØ+ªA¨r©s²A¨IÑ6ˆNà%¨Ñ6ˆà×5Ñ5°iÀÀwÐPVÓWˆØ×*Ñ*¨8°X¸wÈÓPˆà'ª¨;©<ºÐ(:Ñ;ˆØ%¢aª¨K©Lº!Ð&;Ñ<ˆØ%¢a¨©²qÐ&8Ñ9ˆà;?¿<¹<ØØØØØ ØØó<
Ñ8ˆÐ(¨.ð ˜!ÒØ)ª!¨T×-?Ñ-?Ñ-AÂ1Ð*DÑEˆMàÐ)Ø!#�Ø!/ò e�IØ" y²²A°t×7IÑ7IÑ7KÈT×M_ÑM_ÑMaÐ1aÑ'bÐ&dÑd‘Nðeà!/�Ø Ð,Ø$&Ð!Ø$5ò U�LØ%¨,²q¸$×:LÑ:LÑ:NÒPQÐ7QÑ*RÐ)TÑTÑ%ðUà$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
ð # T™kð	g
ð
  ™ðg
ð ˜$‘;ðg
ð ˜D‘[ðg
ð 
ˆu�|‰|Ñ	Ð6Ñ	6ò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¬«      | _
        | j                  «        y rƒ   )r   r   rÿ   ró   r   rJ   r   r  r  r  Úlm_headr  r    s     €r#   r   zCpmAntForCausalLM.__init__±  sd   ø€ Ü‰Ñ˜Ô Ü! &Ó)ˆŒô —y‘yØ×Ñ × 1Ñ 1°F×4GÑ4GÈ&×J^ÑJ^Ñ4^Ñ ^Ðejô
ˆŒð 	�‰Õr$   Nr  rZ   r[   rY   r©   Úlabelsr  rW   Úlogits_to_keeprº   c
                 ó  — |�|n| j                   j                  }| j                  ||||||«      }|r|j                  n|d   }t	        |	t
        «      rt        |	 d«      n|	}| j                  |dd…|dd…f   «      }d}|�At        «       } ||j                  d|j                  d«      «      |j                  d«      «      }|s|f|dd z   }|�|f|z   S |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Úslicer9  r   r_   r,   r   rZ   r%   r%  )r!   r  rZ   r[   rY   r©   r:  r  rW   r;  rk   Úmodel_outputr%   Úslice_indicesr>  r=  Ú	loss_funcÚoutputs                     r#   r6   zCpmAntForCausalLM.forward»  s  € ðR &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆà—{‘{ØØØ ØØØó
ˆñ ;F˜×6Ò6È<ÐXYÉ?ˆä8BÀ>ÔSVÔ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜mªA¨}ºaÐ,?Ñ@ÓAˆàˆØÐÜ(Ó*ˆIÙ˜VŸ[™[¨¨V¯[©[¸«_Ó=¸v¿{¹{È2»ÓOˆDáØ�Y ¨a¨bÐ!1Ñ1ˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEä%ØØØ(×8Ñ8Ø&×4Ñ4Ø#×.Ñ.ô
ð 	
r$   c                 ó.   — | j                   j                  S r   ©ró   r  r  s    r#   r  z&CpmAntForCausalLM.get_input_embeddings  s   € Ø�{‰{×*Ñ*Ð*r$   c                 ó&   — || j                   _        y r   rF  )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   r?  r*  r   r6   r  r  r<   r=   s   @r#   r7  r7  ©  s  ø„ ð +Ð,KÐLÐð˜|õ ð ð *.Ø(,Ø!%Ø)-Ø,0Ø&*Ø#'Ø.2Ø-.ñF
à—<‘< $Ñ&ðF
ð  ™ðF
ð ˜$‘;ð	F
ð
   $™;ðF
ð # T™kðF
ð —‘˜tÑ#ðF
ð ˜D‘[ðF
ð Ÿ™ tÑ+ðF
ð ˜eŸl™lÑ*ðF
ð 
Ð'Ñ	'òF
ó ðF
òP+ö1r$   r7  )r7  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ÿ   r7  Ú__all__r«   r$   r#   ú<module>rX     su  ðñ ã ã ß Ð Ý Ý %å &Ý !ß .Ý )ß OÝ -ß ,Ý .ð 
ˆ×	Ñ	˜HÓ	%€ô�b—i‘iô ô2b#�b—i‘iô b#ôJ3+˜rŸy™yô 3+ôl˜"Ÿ)™)ô ô(˜Ÿ	™	ô ô4�R—Y‘Yô ô6*+˜RŸY™Yô *+ôZ<@�B—I‘Iô <@ô@˜Ÿ™ô ôY  R§Y¡Yô Y ôz�2—9‘9ô ð ô]˜Oó ]ó ð]ð ôN
Ð'ó N
ó ðN
ñb ðôô
Z1Ð-¨ó Z1óð
Z1òz H�r$   