Ë
    S^(h
Ü  ã                   óê  — d Z ddlmZmZmZ ddlZddlZddlmZ ddlm	Z	m
Z
mZ ddlmZ ddlmZmZmZmZmZ dd	lmZ dd
lmZmZmZmZ ddlmZ  ej:                  e«      ZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ) G d„ dejT                  «      Z+ G d„ dejT                  «      Z,ejZ                  j\                  d„ «       Z/ejZ                  j\                  d„ «       Z0ejZ                  j\                  d„ «       Z1ejZ                  j\                  d„ «       Z2ejZ                  j\                  dejf                  d e4fd!„«       Z5ejZ                  j\                  dejf                  d"ejf                  fd#„«       Z6ejZ                  j\                  dejf                  d"ejf                  d$e4fd%„«       Z7ejZ                  j\                  dejf                  d"ejf                  fd&„«       Z8 G d'„ d(ejT                  «      Z9 G d)„ d*ejT                  «      Z: G d+„ d,ejT                  «      Z; G d-„ d.ejT                  «      Z< G d/„ d0ejT                  «      Z= G d1„ d2ejT                  «      Z> G d3„ d4ejT                  «      Z? G d5„ d6e«      Z@d7ZAd8ZB ed9eA«       G d:„ d;e@«      «       ZC G d<„ d=ejT                  «      ZD G d>„ d?ejT                  «      ZE G d@„ dAejT                  «      ZF G dB„ dCejT                  «      ZG G dD„ dEejT                  «      ZH edFeA«       G dG„ dHe@«      «       ZI G dI„ dJejT                  «      ZJ edKeA«       G dL„ dMe@«      «       ZK edNeA«       G dO„ dPe@«      «       ZL edQeA«       G dR„ dSe@«      «       ZMg dT¢ZNy)UzPyTorch DeBERTa model.é    )ÚOptionalÚTupleÚUnionN)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELossé   )ÚACT2FN)ÚBaseModelOutputÚMaskedLMOutputÚQuestionAnsweringModelOutputÚSequenceClassifierOutputÚTokenClassifierOutput)ÚPreTrainedModel)Úadd_code_sample_docstringsÚadd_start_docstringsÚ%add_start_docstrings_to_model_forwardÚloggingé   )ÚDebertaConfigr   zmicrosoft/deberta-basez!lsanochkin/deberta-large-feedbackz' Paris'z0.54z#Palak/microsoft_deberta-large_squadz' a nice puppet'gìQ¸…ëÁ?é   é   c                   ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚDebertaLayerNormzBLayerNorm module in the TF style (epsilon inside the square root).c                 óä   •— t         ‰| �  «        t        j                  t	        j
                  |«      «      | _        t        j                  t	        j                  |«      «      | _        || _	        y ©N)
ÚsuperÚ__init__r   Ú	ParameterÚtorchÚonesÚweightÚzerosÚbiasÚvariance_epsilon)ÚselfÚsizeÚepsÚ	__class__s      €új/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/deberta/modeling_deberta.pyr   zDebertaLayerNorm.__init__9   sH   ø€ Ü‰ÑÔÜ—l‘l¤5§:¡:¨dÓ#3Ó4ˆŒÜ—L‘L¤§¡¨TÓ!2Ó3ˆŒ	Ø #ˆÕó    c                 óX  — |j                   }|j                  «       }|j                  dd¬«      }||z
  j                  d«      j                  dd¬«      }||z
  t	        j
                  || j                  z   «      z  }|j                  |«      }| j                  |z  | j                  z   }|S )NéÿÿÿÿT)Úkeepdimé   )
ÚdtypeÚfloatÚmeanÚpowr!   Úsqrtr&   Útor#   r%   )r'   Úhidden_statesÚ
input_typer3   ÚvarianceÚys         r+   ÚforwardzDebertaLayerNorm.forward?   s¤   € Ø"×(Ñ(ˆ
Ø%×+Ñ+Ó-ˆØ×!Ñ! "¨dÐ!Ó3ˆØ! DÑ(×-Ñ-¨aÓ0×5Ñ5°bÀ$Ð5ÓGˆØ&¨Ñ-´·±¸HÀt×G\ÑG\Ñ<\Ó1]Ñ]ˆØ%×(Ñ(¨Ó4ˆØ�K‰K˜-Ñ'¨$¯)©)Ñ3ˆØˆr,   )gê-�™—q=©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r;   Ú__classcell__©r*   s   @r+   r   r   6   s   ø„ ÙLõ$ör,   r   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚDebertaSelfOutputc                 ó  •— t         ‰| �  «        t        j                  |j                  |j                  «      | _        t        |j                  |j                  «      | _        t        j                  |j                  «      | _        y r   )r   r   r   ÚLinearÚhidden_sizeÚdenser   Úlayer_norm_epsÚ	LayerNormÚDropoutÚhidden_dropout_probÚdropout©r'   Úconfigr*   s     €r+   r   zDebertaSelfOutput.__init__K   s\   ø€ Ü‰ÑÔÜ—Y‘Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
Ü)¨&×*<Ñ*<¸f×>SÑ>SÓTˆŒÜ—z‘z &×"<Ñ"<Ó=ˆ�r,   c                 ór   — | j                  |«      }| j                  |«      }| j                  ||z   «      }|S r   ©rH   rM   rJ   ©r'   r7   Úinput_tensors      r+   r;   zDebertaSelfOutput.forwardQ   ó7   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØŸ™ }°|Ñ'CÓDˆØÐr,   ©r=   r>   r?   r   r;   rA   rB   s   @r+   rD   rD   J   s   ø„ ô>ör,   rD   c                 óš  — | j                  d«      }|j                  d«      }t        j                  |t        j                  | j                  ¬«      }t        j                  |t        j                  |j                  ¬«      }|dd…df   |j                  dd«      j                  |d«      z
  }|d|…dd…f   }|j                  d«      }|S )aí  
    Build relative position according to the query and key

    We assume the absolute position of query \(P_q\) is range from (0, query_size) and the absolute position of key
    \(P_k\) is range from (0, key_size), The relative positions from query to key is \(R_{q \rightarrow k} = P_q -
    P_k\)

    Args:
        query_size (int): the length of query
        key_size (int): the length of key

    Return:
        `torch.LongTensor`: A tensor with shape [1, query_size, key_size]

    éþÿÿÿ©r1   ÚdeviceNr   r.   r   )r(   r!   ÚarangeÚlongrY   ÚviewÚrepeatÚ	unsqueeze)Úquery_layerÚ	key_layerÚ
query_sizeÚkey_sizeÚq_idsÚk_idsÚrel_pos_idss          r+   Úbuild_relative_positionrf   X   s¬   € ð$ ×!Ñ! "Ó%€JØ�~‰~˜bÓ!€Hä�L‰L˜¬5¯:©:¸k×>PÑ>PÔQ€EÜ�L‰L˜¬¯©¸I×<LÑ<LÔM€EØš˜4˜‘. 5§:¡:¨a°Ó#4×#;Ñ#;¸JÈÓ#JÑJ€KØ˜k˜z˜kª1˜nÑ-€KØ×'Ñ'¨Ó*€KØÐr,   c                 ó¤   — | j                  |j                  d«      |j                  d«      |j                  d«      |j                  d«      g«      S )Nr   r   r0   r.   ©Úexpandr(   )Úc2p_posr_   Úrelative_poss      r+   Úc2p_dynamic_expandrl   u   sI   € à�>‰>˜;×+Ñ+¨AÓ.°×0@Ñ0@ÀÓ0CÀ[×EUÑEUÐVWÓEXÐZf×ZkÑZkÐlnÓZoÐpÓqÐqr,   c                 ó¤   — | j                  |j                  d«      |j                  d«      |j                  d«      |j                  d«      g«      S )Nr   r   rW   rh   )rj   r_   r`   s      r+   Úp2c_dynamic_expandrn   z   sG   € à�>‰>˜;×+Ñ+¨AÓ.°×0@Ñ0@ÀÓ0CÀYÇ^Á^ÐTVÓEWÐYb×YgÑYgÐhjÓYkÐlÓmÐmr,   c                 óŒ   — | j                  |j                  «       d d | j                  d«      |j                  d«      fz   «      S )Nr0   rW   rh   )Ú	pos_indexÚp2c_attr`   s      r+   Úpos_dynamic_expandrr      s=   € à×Ñ˜GŸL™L›N¨2¨AÐ.°)·.±.ÀÓ2DÀiÇnÁnÐUWÓFXÐ1YÑYÓZÐZr,   r_   Úscale_factorc                 ó–   — t        j                  t        j                  | j                  d«      t         j                  ¬«      |z  «      S )Nr.   ©r1   )r!   r5   Útensorr(   r2   )r_   rs   s     r+   Úscaled_size_sqrtrw   ‡   s0   € ä�:‰:”e—l‘l ;×#3Ñ#3°BÓ#7¼u¿{¹{ÔKÈlÑZÓ[Ð[r,   r`   c                 ód   — | j                  d«      |j                  d«      k7  rt        | |«      S |S ©NrW   )r(   rf   )r_   r`   rk   s      r+   Ú
build_rposrz   Œ   s1   € à×Ñ˜Ó˜yŸ~™~¨bÓ1Ò1Ü& {°IÓ>Ð>àÐr,   Úmax_relative_positionsc           
      ó�   — t        j                  t        t        | j	                  d«      |j	                  d«      «      |«      «      S ry   )r!   rv   ÚminÚmaxr(   )r_   r`   r{   s      r+   Úcompute_attention_spanr   ”   s4   € ä�<‰<œœC × 0Ñ 0°Ó 4°i·n±nÀRÓ6HÓIÐKaÓbÓcÐcr,   c           	      óÎ   — |j                  d«      |j                  d«      k7  rA|d d …d d …d d …df   j                  d«      }t        j                  | dt	        || |«      ¬«      S | S )NrW   r   r.   r0   ©ÚdimÚindex)r(   r^   r!   Úgatherrr   )rq   r_   r`   rk   rp   s        r+   Úuneven_size_correctedr…   ™   s_   € à×Ñ˜Ó˜yŸ~™~¨bÓ1Ò1Ø ¢¢A¢q¨! Ñ,×6Ñ6°rÓ:ˆ	Ü�|‰|˜G¨Ô2DÀYÐPWÐYbÓ2cÔdÐdàˆr,   c                   óp  ‡ — e Zd ZdZˆ fd„Zd„ Z	 	 	 	 ddej                  dej                  dede	ej                     de	ej                     d	e	ej                     d
e
ej                  e	ej                     f   fd„Zdej                  dej                  dej                  d	ej                  def
d„Zˆ xZS )ÚDisentangledSelfAttentiona  
    Disentangled self-attention module

    Parameters:
        config (`str`):
            A model config class instance with the configuration to build a new model. The schema is similar to
            *BertConfig*, for more details, please refer [`DebertaConfig`]

    c                 óZ  •— t         ‰| �  «        |j                  |j                  z  dk7  r&t	        d|j                  › d|j                  › d�«      ‚|j                  | _        t        |j                  |j                  z  «      | _        | j                  | j                  z  | _        t        j                  |j                  | j                  dz  d¬«      | _
        t        j                  t        j                  | j                  t        j                  ¬«      «      | _        t        j                  t        j                  | j                  t        j                  ¬«      «      | _        |j"                  �|j"                  ng | _        t%        |d	d«      | _        t%        |d
d«      | _        | j(                  rct        j                  |j                  |j                  d¬«      | _        t        j                  |j                  |j                  d¬«      | _        nd | _        d | _        | j&                  rÒt%        |dd«      | _        | j.                  dk  r|j0                  | _        t        j2                  |j4                  «      | _        d| j"                  v r1t        j                  |j                  | j                  d¬«      | _        d| j"                  v r/t        j                  |j                  | j                  «      | _        t        j2                  |j<                  «      | _        y )Nr   zThe hidden size (z6) is not a multiple of the number of attention heads (ú)r
   F©r%   ru   Úrelative_attentionÚtalking_headr{   r.   r   Úc2pÚp2c) r   r   rG   Únum_attention_headsÚ
ValueErrorÚintÚattention_head_sizeÚall_head_sizer   rF   Úin_projr    r!   r$   r2   Úq_biasÚv_biasÚpos_att_typeÚgetattrr‹   rŒ   Úhead_logits_projÚhead_weights_projr{   Úmax_position_embeddingsrK   rL   Úpos_dropoutÚpos_projÚ
pos_q_projÚattention_probs_dropout_probrM   rN   s     €r+   r   z"DisentangledSelfAttention.__init__°   sm  ø€ Ü‰ÑÔØ×Ñ × :Ñ :Ñ:¸aÒ?ÜØ# F×$6Ñ$6Ð#7ð 8Ø ×4Ñ4Ð5°Qð8óð ð $*×#=Ñ#=ˆÔ Ü#& v×'9Ñ'9¸F×<VÑ<VÑ'VÓ#WˆÔ Ø!×5Ñ5¸×8PÑ8PÑPˆÔÜ—y‘y ×!3Ñ!3°T×5GÑ5GÈ!Ñ5KÐRWÔXˆŒÜ—l‘l¤5§;¡;°×0BÑ0BÌ5Ï;É;Ô#WÓXˆŒÜ—l‘l¤5§;¡;°×0BÑ0BÌ5Ï;É;Ô#WÓXˆŒØ39×3FÑ3FÐ3R˜F×/Ò/ÐXZˆÔä")¨&Ð2FÈÓ"NˆÔÜ# F¨N¸EÓBˆÔà×ÒÜ$&§I¡I¨f×.HÑ.HÈ&×JdÑJdÐkpÔ$qˆDÔ!Ü%'§Y¡Y¨v×/IÑ/IÈ6×KeÑKeÐlqÔ%rˆDÕ"à$(ˆDÔ!Ø%)ˆDÔ"à×"Ò"Ü*1°&Ð:RÐTVÓ*WˆDÔ'Ø×*Ñ*¨QÒ.Ø.4×.LÑ.L�Ô+Ü!Ÿz™z¨&×*DÑ*DÓEˆDÔà˜×)Ñ)Ñ)Ü "§	¡	¨&×*<Ñ*<¸d×>PÑ>PÐW\Ô ]�”Ø˜×)Ñ)Ñ)Ü"$§)¡)¨F×,>Ñ,>À×@RÑ@RÓ"S�”ä—z‘z &×"EÑ"EÓFˆ�r,   c                 ó�   — |j                  «       d d | j                  dfz   }|j                  |«      }|j                  dddd«      S )Nr.   r   r0   r   r
   )r(   r�   r\   Úpermute)r'   ÚxÚnew_x_shapes      r+   Útranspose_for_scoresz.DisentangledSelfAttention.transpose_for_scoresÖ   sF   € Ø—f‘f“h˜s �m t×'?Ñ'?ÀÐ&DÑDˆØ�F‰F�;ÓˆØ�y‰y˜˜A˜q !Ó$Ð$r,   r7   Úattention_maskÚoutput_attentionsÚquery_statesrk   Úrel_embeddingsÚreturnc                 óL  — |€9| j                  |«      }| j                  |«      j                  dd¬«      \  }}	}
�n| j                   j                  j                  | j                  dz  d¬«      }t        d«      D ��cg c]C  }t        j                  t        | j                  «      D �cg c]  }||dz  |z      ‘Œ c}d¬«      ‘ŒE }}}t        j                  |d   |j                  «       j                  |d   j                  ¬«      «      }t        j                  |d   |j                  «       j                  |d   j                  ¬«      «      }t        j                  |d   |j                  «       j                  |d   j                  ¬«      «      }|||fD �cg c]  }| j                  |«      ‘Œ c}\  }}	}
|| j                  | j                  dddd…f   «      z   }|
| j                  | j                  dddd…f   «      z   }
d}dt        | j                  «      z   }t!        ||«      }||j                  |j                  ¬«      z  }t        j                  ||	j#                  dd	«      «      }| j$                  r*|�(|�&| j'                  |«      }| j)                  ||	|||«      }|�||z   }| j*                  �5| j+                  |j-                  dddd«      «      j-                  dddd«      }|j/                  «       }|j1                  | t        j2                  |j                  «      j4                  «      }t6        j8                  j;                  |d¬«      }| j=                  |«      }| j>                  �5| j?                  |j-                  dddd«      «      j-                  dddd«      }t        j                  ||
«      }|j-                  dddd«      jA                  «       }|jC                  «       dd	 d
z   }|jE                  |«      }|s|dfS ||fS c c}w c c}}w c c}w )aÑ  
        Call the module

        Args:
            hidden_states (`torch.FloatTensor`):
                Input states to the module usually the output from previous layer, it will be the Q,K and V in
                *Attention(Q,K,V)*

            attention_mask (`torch.BoolTensor`):
                An attention mask matrix of shape [*B*, *N*, *N*] where *B* is the batch size, *N* is the maximum
                sequence length in which element [i,j] = *1* means the *i* th token in the input can attend to the *j*
                th token.

            output_attentions (`bool`, *optional*):
                Whether return the attention matrix.

            query_states (`torch.FloatTensor`, *optional*):
                The *Q* state in *Attention(Q,K,V)*.

            relative_pos (`torch.LongTensor`):
                The relative position encoding between the tokens in the sequence. It's of shape [*B*, *N*, *N*] with
                values ranging in [*-max_relative_positions*, *max_relative_positions*].

            rel_embeddings (`torch.FloatTensor`):
                The embedding of relative distances. It's a tensor of shape [\(2 \times
                \text{max_relative_positions}\), *hidden_size*].


        Nr
   r.   ©r‚   r   ru   r   r0   rW   )r.   )#r”   r¤   Úchunkr#   r�   Úranger!   ÚcatÚmatmulÚtr6   r1   r•   r–   Úlenr—   rw   Ú	transposer‹   rœ   Údisentangled_att_biasr™   r¡   ÚboolÚmasked_fillÚfinfor}   r   Ú
functionalÚsoftmaxrM   rš   Ú
contiguousr(   r\   )r'   r7   r¥   r¦   r§   rk   r¨   Úqpr_   r`   Úvalue_layerÚwsÚkÚiÚqkvwÚqÚvr¢   Úrel_attrs   ÚscaleÚattention_scoresÚattention_probsÚcontext_layerÚnew_context_layer_shapes                            r+   r;   z!DisentangledSelfAttention.forwardÛ   sà  € ðL ÐØ—‘˜mÓ,ˆBØ26×2KÑ2KÈBÓ2O×2UÑ2UÐVWÐ]_Ð2UÓ2`Ñ/ˆK˜¢Kà—‘×$Ñ$×*Ñ*¨4×+CÑ+CÀaÑ+GÈQÐ*ÓOˆBÜhmÐnoÓhp×qÐcd”E—I‘I´e¸D×<TÑ<TÓ6UÖV°˜r ! a¡%¨!¡)›}ÒVÐ\]Ö^ÐqˆDÑqÜ—‘˜T !™W l§n¡nÓ&6×&9Ñ&9ÀÀQÁÇÁÐ&9Ó&NÓOˆAÜ—‘˜T !™W m§o¡oÓ&7×&:Ñ&:ÀÀaÁÇÁÐ&:Ó&OÓPˆAÜ—‘˜T !™W m§o¡oÓ&7×&:Ñ&:ÀÀaÁÇÁÐ&:Ó&OÓPˆAØZ[Ð]^Ð`aÐYbÖ2cÐTU°4×3LÑ3LÈQÕ3OÒ2cÑ/ˆK˜ Kà! D×$=Ñ$=¸d¿k¹kÈ$ÐPTÒVWÈ-Ñ>XÓ$YÑYˆØ! D×$=Ñ$=¸d¿k¹kÈ$ÐPTÒVWÈ-Ñ>XÓ$YÑYˆàˆàœ3˜t×0Ñ0Ó1Ñ1ˆÜ  ¨lÓ;ˆØ! E§H¡H°;×3DÑ3D HÓ$EÑEˆÜ Ÿ<™<¨°Y×5HÑ5HÈÈRÓ5PÓQÐà×"Ò" ~Ð'AÀlÐF^Ø!×-Ñ-¨nÓ=ˆNØ×0Ñ0°¸iÈÐWeÐgsÓtˆGàÐØ/°'Ñ9Ðð × Ñ Ð,Ø#×4Ñ4Ð5E×5MÑ5MÈaÐQRÐTUÐWXÓ5YÓZ×bÑbÐcdÐfgÐijÐlmÓnÐà'×,Ñ,Ó.ˆØ+×7Ñ7¸.Ð8IÌ5Ï;É;ÐWb×WhÑWhÓKi×KmÑKmÓnÐäŸ-™-×/Ñ/Ð0@ÀbÐ/ÓIˆàŸ,™, Ó7ˆØ×!Ñ!Ð-Ø"×4Ñ4°_×5LÑ5LÈQÐPQÐSTÐVWÓ5XÓY×aÑaÐbcÐefÐhiÐklÓmˆOäŸ™ _°kÓBˆØ%×-Ñ-¨a°°A°qÓ9×DÑDÓFˆØ"/×"4Ñ"4Ó"6°s¸Ð";¸eÑ"CÐØ%×*Ñ*Ð+BÓCˆÙ Ø! 4Ð(Ð(Ø˜Ð/Ð/ùòU WùÓqùò 3ds   Á>+PÂ)PÂ;PÆP!ÐPr_   r`   rs   c           	      ó$  — |€t        |||j                  «      }|j                  «       dk(  r!|j                  d«      j                  d«      }nT|j                  «       dk(  r|j                  d«      }n/|j                  «       dk7  rt	        d|j                  «       › �«      ‚t        ||| j                  «      }|j                  «       }|| j                  |z
  | j                  |z   …d d …f   j                  d«      }d}d| j                  v r�| j                  |«      }| j                  |«      }t        j                  ||j                  dd	«      «      }	t        j                  ||z   d|dz  dz
  «      }
t        j                  |	dt!        |
||«      ¬
«      }	||	z  }d| j                  v rå| j#                  |«      }| j                  |«      }|t%        ||«      z  }t'        |||«      }t        j                  | |z   d|dz  dz
  «      }t        j                  ||j                  dd	«      j)                  |j*                  ¬«      «      }t        j                  |dt-        |||«      ¬
«      j                  dd	«      }t/        ||||«      }||z  }|S )Nr0   r   r
   r   é   z2Relative position ids must be of dim 2 or 3 or 4. r�   r.   rW   r�   rŽ   ru   )rf   rY   r‚   r^   r�   r   r{   r[   r—   r�   r¤   r!   r¯   r²   Úclampr„   rl   rž   rw   rz   r6   r1   rn   r…   )r'   r_   r`   rk   r¨   rs   Úatt_spanÚscoreÚpos_key_layerÚc2p_attrj   Úpos_query_layerÚr_posÚp2c_posrq   s                  r+   r³   z/DisentangledSelfAttention.disentangled_att_bias2  sŠ  € ð ÐÜ2°;À	È;×K]ÑK]Ó^ˆLØ×ÑÓ Ò"Ø'×1Ñ1°!Ó4×>Ñ>¸qÓA‰LØ×ÑÓ 1Ò$Ø'×1Ñ1°!Ó4‰Là×ÑÓ 1Ò$ÜÐQÐR^×RbÑRbÓRdÐQeÐfÓgÐgä)¨+°yÀ$×B]ÑB]Ó^ˆØ#×(Ñ(Ó*ˆØ'Ø×'Ñ'¨(Ñ2°T×5PÑ5PÐS[Ñ5[Ð[Ò]^Ð^ñ
ç
‰)�A‹,ð 	ð ˆð �D×%Ñ%Ñ%Ø ŸM™M¨.Ó9ˆMØ ×5Ñ5°mÓDˆMÜ—l‘l ;°×0GÑ0GÈÈBÓ0OÓPˆGÜ—k‘k ,°Ñ"9¸1¸hÈ¹lÈQÑ>NÓOˆGÜ—l‘l 7°Ô:LÈWÐVaÐcoÓ:pÔqˆGØ�WÑˆEð �D×%Ñ%Ñ%Ø"Ÿo™o¨nÓ=ˆOØ"×7Ñ7¸ÓHˆOØÔ/°ÀÓNÑNˆOÜØØØóˆEô
 —k‘k 5 &¨8Ñ"3°Q¸À1¹ÀqÑ8HÓIˆGÜ—l‘l 9¨o×.GÑ.GÈÈBÓ.O×.RÑ.RÐYb×YhÑYhÐ.RÓ.iÓjˆGÜ—l‘lØ˜RÔ'9¸'À;ÐPYÓ'Zôç‰i˜˜BÓð ô ,¨G°[À)È\ÓZˆGØ�WÑˆEàˆr,   ©FNNN)r=   r>   r?   r@   r   r¤   r!   ÚTensorr´   r   r   r;   r‘   r³   rA   rB   s   @r+   r‡   r‡   ¥   só   ø„ ñô$GòL%ð #(Ø/3Ø/3Ø15ñU0à—|‘|ðU0ð Ÿ™ðU0ð  ð	U0ð
 ˜uŸ|™|Ñ,ðU0ð ˜uŸ|™|Ñ,ðU0ð ! §¡Ñ.ðU0ð 
ˆu�|‰|˜X e§l¡lÑ3Ð3Ñ	4óU0ðn6à—\‘\ð6ð —<‘<ð6ð —l‘lð	6ð
 Ÿ™ð6ð ÷6r,   r‡   c                   ó*   ‡ — e Zd ZdZˆ fd„Zdd„Zˆ xZS )ÚDebertaEmbeddingszGConstruct the embeddings from word, position and token_type embeddings.c                 óÐ  •— t         ‰| �  «        t        |dd«      }t        |d|j                  «      | _        t        j                  |j                  | j                  |¬«      | _        t        |dd«      | _	        | j                  sd | _
        n/t        j                  |j                  | j                  «      | _
        |j                  dkD  r0t        j                  |j                  | j                  «      | _        nd | _        | j                  |j                  k7  r2t        j                  | j                  |j                  d¬«      | _        nd | _        t!        |j                  |j"                  «      | _        t        j&                  |j(                  «      | _        || _        | j/                  d	t1        j2                  |j                  «      j5                  d
«      d¬«       y )NÚpad_token_idr   Úembedding_size)Úpadding_idxÚposition_biased_inputTFrŠ   Úposition_ids)r   r.   )Ú
persistent)r   r   r˜   rG   rØ   r   Ú	EmbeddingÚ
vocab_sizeÚword_embeddingsrÚ   Úposition_embeddingsr›   Útype_vocab_sizeÚtoken_type_embeddingsrF   Ú
embed_projr   rI   rJ   rK   rL   rM   rO   Úregister_bufferr!   rZ   ri   )r'   rO   r×   r*   s      €r+   r   zDebertaEmbeddings.__init__n  sy  ø€ Ü‰ÑÔÜ˜v ~°qÓ9ˆÜ% fÐ.>À×@RÑ@RÓSˆÔÜ!Ÿ|™|¨F×,=Ñ,=¸t×?RÑ?RÐ`lÔmˆÔä%,¨VÐ5LÈdÓ%SˆÔ"Ø×)Ò)Ø'+ˆDÕ$ä')§|¡|°F×4RÑ4RÐTX×TgÑTgÓ'hˆDÔ$à×!Ñ! AÒ%Ü)+¯©°f×6LÑ6LÈd×NaÑNaÓ)bˆDÕ&à)-ˆDÔ&à×Ñ &×"4Ñ"4Ò4Ü Ÿi™i¨×(;Ñ(;¸V×=OÑ=OÐV[Ô\ˆD�Oà"ˆDŒOä)¨&×*<Ñ*<¸f×>SÑ>SÓTˆŒÜ—z‘z &×"<Ñ"<Ó=ˆŒØˆŒð 	×ÑØœEŸL™L¨×)GÑ)GÓH×OÑOÐPWÓXÐejð 	õ 	
r,   c                 ó   — |�|j                  «       }n|j                  «       d d }|d   }|€| j                  d d …d |…f   }|€:t        j                  |t        j                  | j                  j
                  ¬«      }|€| j                  |«      }| j                  � | j                  |j	                  «       «      }nt        j                  |«      }|}	| j                  r|	|z   }	| j                  �| j                  |«      }
|	|
z   }	| j                  �| j                  |	«      }	| j                  |	«      }	|�…|j                  «       |	j                  «       k7  rD|j                  «       dk(  r |j                  d«      j                  d«      }|j                  d«      }|j!                  |	j"                  «      }|	|z  }	| j%                  |	«      }	|	S )Nr.   r   rX   rÉ   r0   )r(   rÛ   r!   r$   r[   rY   rß   rà   Ú
zeros_likerÚ   râ   rã   rJ   r‚   Úsqueezer^   r6   r1   rM   )r'   Ú	input_idsÚtoken_type_idsrÛ   ÚmaskÚinputs_embedsÚinput_shapeÚ
seq_lengthrà   Ú
embeddingsrâ   s              r+   r;   zDebertaEmbeddings.forward�  s¬  € ØÐ Ø#Ÿ.™.Ó*‰Kà'×,Ñ,Ó.¨s°Ð3ˆKà  ‘^ˆ
àÐØ×,Ñ,ªQ°°°¨^Ñ<ˆLàÐ!Ü"Ÿ[™[¨¼E¿J¹JÈt×O`ÑO`×OgÑOgÔhˆNàÐ Ø ×0Ñ0°Ó;ˆMà×#Ñ#Ð/Ø"&×":Ñ":¸<×;LÑ;LÓ;NÓ"OÑä"'×"2Ñ"2°=Ó"AÐà"ˆ
Ø×%Ò%Ø#Ð&9Ñ9ˆJØ×%Ñ%Ð1Ø$(×$>Ñ$>¸~Ó$NÐ!Ø#Ð&;Ñ;ˆJà�?‰?Ð&ØŸ™¨Ó4ˆJà—^‘^ JÓ/ˆ
àÐØ�x‰x‹z˜ZŸ^™^Ó-Ò-Ø—8‘8“: ’?ØŸ<™<¨›?×2Ñ2°1Ó5�DØ—~‘~ aÓ(�Ø—7‘7˜:×+Ñ+Ó,ˆDà# dÑ*ˆJà—\‘\ *Ó-ˆ
ØÐr,   )NNNNNr<   rB   s   @r+   rÕ   rÕ   k  s   ø„ ÙQô
÷>,r,   rÕ   c                   óp   ‡ — e Zd Zˆ fd„Z	 	 	 	 ddedeej                  eej                     f   fd„Z	ˆ xZ
S )ÚDebertaAttentionc                 óp   •— t         ‰| �  «        t        |«      | _        t	        |«      | _        || _        y r   )r   r   r‡   r'   rD   ÚoutputrO   rN   s     €r+   r   zDebertaAttention.__init__½  s-   ø€ Ü‰ÑÔÜ-¨fÓ5ˆŒ	Ü'¨Ó/ˆŒØˆ�r,   r¦   r©   c                 óv   — | j                  ||||||¬«      \  }}|€|}| j                  ||«      }	|r|	|fS |	d fS )N)r§   rk   r¨   )r'   rò   )
r'   r7   r¥   r¦   r§   rk   r¨   Úself_outputÚ
att_matrixÚattention_outputs
             r+   r;   zDebertaAttention.forwardÃ  se   € ð #'§)¡)ØØØØ%Ø%Ø)ð #,ó #
Ñˆ�Zð ÐØ(ˆLØŸ;™; {°LÓAÐáØ$ jÐ1Ð1à$ dÐ+Ð+r,   rÒ   ©r=   r>   r?   r   r´   r   r!   rÓ   r   r;   rA   rB   s   @r+   rð   rð   ¼  sF   ø„ ôð #(ØØØñ,ð  ð	,ð 
ˆu�|‰|˜X e§l¡lÑ3Ð3Ñ	4÷,r,   rð   c                   óV   ‡ — e Zd Zˆ fd„Zdej
                  dej
                  fd„Zˆ xZS )ÚDebertaIntermediatec                 ó  •— t         ‰| �  «        t        j                  |j                  |j
                  «      | _        t        |j                  t        «      rt        |j                     | _        y |j                  | _        y r   )r   r   r   rF   rG   Úintermediate_sizerH   Ú
isinstanceÚ
hidden_actÚstrr   Úintermediate_act_fnrN   s     €r+   r   zDebertaIntermediate.__init__à  s]   ø€ Ü‰ÑÔÜ—Y‘Y˜v×1Ñ1°6×3KÑ3KÓLˆŒ
Ü�f×'Ñ'¬Ô-Ü'-¨f×.?Ñ.?Ñ'@ˆDÕ$à'-×'8Ñ'8ˆDÕ$r,   r7   r©   c                 óJ   — | j                  |«      }| j                  |«      }|S r   )rH   rÿ   ©r'   r7   s     r+   r;   zDebertaIntermediate.forwardè  s&   € ØŸ
™
 =Ó1ˆØ×0Ñ0°Ó?ˆØÐr,   ©r=   r>   r?   r   r!   rÓ   r;   rA   rB   s   @r+   rù   rù   ß  s#   ø„ ô9ð U§\¡\ð °e·l±l÷ r,   rù   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚDebertaOutputc                 ó   •— t         ‰| �  «        t        j                  |j                  |j
                  «      | _        t        |j
                  |j                  «      | _	        t        j                  |j                  «      | _        || _        y r   )r   r   r   rF   rû   rG   rH   r   rI   rJ   rK   rL   rM   rO   rN   s     €r+   r   zDebertaOutput.__init__ï  sc   ø€ Ü‰ÑÔÜ—Y‘Y˜v×7Ñ7¸×9KÑ9KÓLˆŒ
Ü)¨&×*<Ñ*<¸f×>SÑ>SÓTˆŒÜ—z‘z &×"<Ñ"<Ó=ˆŒØˆ�r,   c                 ór   — | j                  |«      }| j                  |«      }| j                  ||z   «      }|S r   rQ   rR   s      r+   r;   zDebertaOutput.forwardö  rT   r,   rU   rB   s   @r+   r  r  î  s   ø„ ôör,   r  c                   óp   ‡ — e Zd Zˆ fd„Z	 	 	 	 ddedeej                  eej                     f   fd„Z	ˆ xZ
S )ÚDebertaLayerc                 ó‚   •— t         ‰| �  «        t        |«      | _        t	        |«      | _        t        |«      | _        y r   )r   r   rð   Ú	attentionrù   Úintermediater  rò   rN   s     €r+   r   zDebertaLayer.__init__þ  s3   ø€ Ü‰ÑÔÜ)¨&Ó1ˆŒÜ/°Ó7ˆÔÜ# FÓ+ˆ�r,   r¦   r©   c                 ó�   — | j                  ||||||¬«      \  }}| j                  |«      }	| j                  |	|«      }
|r|
|fS |
d fS )N©r¦   r§   rk   r¨   )r
  r  rò   )r'   r7   r¥   r§   rk   r¨   r¦   rö   rõ   Úintermediate_outputÚlayer_outputs              r+   r;   zDebertaLayer.forward  sn   € ð (,§~¡~ØØØ/Ø%Ø%Ø)ð (6ó (
Ñ$Ð˜*ð #×/Ñ/Ð0@ÓAÐØ—{‘{Ð#6Ð8HÓIˆáØ  *Ð-Ð-à  $Ð'Ð'r,   )NNNFr÷   rB   s   @r+   r  r  ý  sF   ø„ ô,ð ØØØ"'ñ(ð  ð(ð 
ˆu�|‰|˜X e§l¡lÑ3Ð3Ñ	4÷(r,   r  c                   ó†   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zdd„Z	 	 	 	 	 ddej                  dej                  de
d	e
d
e
f
d„Zˆ xZS )ÚDebertaEncoderz8Modified BertEncoder with relative position bias supportc                 óÆ  •— t         ‰| �  «        t        j                  t	        |j
                  «      D �cg c]  }t        |«      ‘Œ c}«      | _        t        |dd«      | _	        | j                  rdt        |dd«      | _
        | j                  dk  r|j                  | _
        t        j                  | j                  dz  |j                  «      | _        d| _        y c c}w )Nr‹   Fr{   r.   r   r0   )r   r   r   Ú
ModuleListr­   Únum_hidden_layersr  Úlayerr˜   r‹   r{   r›   rÝ   rG   r¨   Úgradient_checkpointing)r'   rO   Ú_r*   s      €r+   r   zDebertaEncoder.__init__!  s¶   ø€ Ü‰ÑÔÜ—]‘]Ä%È×H`ÑH`ÓBaÖ#b¸Q¤L°Õ$8Ò#bÓcˆŒ
Ü")¨&Ð2FÈÓ"NˆÔØ×"Ò"Ü*1°&Ð:RÐTVÓ*WˆDÔ'Ø×*Ñ*¨QÒ.Ø.4×.LÑ.L�Ô+Ü"$§,¡,¨t×/JÑ/JÈQÑ/NÐPV×PbÑPbÓ"cˆDÔØ&+ˆÕ#ùò $cs   ¶Cc                 óR   — | j                   r| j                  j                  }|S d }|S r   )r‹   r¨   r#   )r'   r¨   s     r+   Úget_rel_embeddingz DebertaEncoder.get_rel_embedding,  s0   € Ø7;×7NÒ7N˜×,Ñ,×3Ñ3ˆØÐð UYˆØÐr,   c                 óþ   — |j                  «       dk  rE|j                  d«      j                  d«      }||j                  d«      j                  d«      z  }|S |j                  «       dk(  r|j                  d«      }|S )Nr0   r   rW   r.   r
   )r‚   r^   rç   )r'   r¥   Úextended_attention_masks      r+   Úget_attention_maskz!DebertaEncoder.get_attention_mask0  sƒ   € Ø×ÑÓ 1Ò$Ø&4×&>Ñ&>¸qÓ&A×&KÑ&KÈAÓ&NÐ#Ø4Ð7N×7VÑ7VÐWYÓ7Z×7dÑ7dÐegÓ7hÑhˆNð Ðð ×ÑÓ! QÒ&Ø+×5Ñ5°aÓ8ˆNàÐr,   c                 óZ   — | j                   r|€|�t        ||«      }|S t        ||«      }|S r   )r‹   rf   )r'   r7   r§   rk   s       r+   Úget_rel_poszDebertaEncoder.get_rel_pos9  s>   € Ø×"Ò" |Ð';ØÐ'Ü6°|À]ÓS�ð Ðô  7°}ÀmÓT�ØÐr,   r7   r¥   Úoutput_hidden_statesr¦   Úreturn_dictc           
      óØ  — | j                  |«      }| j                  |||«      }|r|fnd }|rdnd }	|}
| j                  «       }t        | j                  «      D ]k  \  }}| j
                  r1| j                  r%| j                  |j                  |
|||||«      \  }}n ||
|||||¬«      \  }}|r||fz   }|�|}n|}
|sŒf|	|fz   }	Œm |st        d„ |||	fD «       «      S t        |||	¬«      S )N© )r§   rk   r¨   r¦   c              3   ó&   K  — | ]	  }|€Œ|–— Œ y ­wr   r"  )Ú.0rÁ   s     r+   ú	<genexpr>z)DebertaEncoder.forward.<locals>.<genexpr>u  s   è ø€ Òh˜qÐZ[ÑZgœÑhùs   ‚Š©Úlast_hidden_stater7   Ú
attentions)r  r  r  Ú	enumerater  r  ÚtrainingÚ_gradient_checkpointing_funcÚ__call__Útupler   )r'   r7   r¥   r  r¦   r§   rk   r   Úall_hidden_statesÚall_attentionsÚnext_kvr¨   r¾   Úlayer_moduleÚatt_ms                  r+   r;   zDebertaEncoder.forwardA  s7  € ð ×0Ñ0°Ó@ˆØ×'Ñ'¨°|À\ÓRˆáOc¸MÑ;KÐimÐÙ0™°dˆàˆà×/Ñ/Ó1ˆÜ(¨¯©Ó4ò 	;‰OˆAˆ|Ø×*Ò*¨t¯}ª}Ø'+×'HÑ'HØ ×)Ñ)ØØ"Ø Ø Ø"Ø%ó(Ñ$�™uñ (4ØØ"Ø!-Ø!-Ø#1Ø&7ô(Ñ$�˜uñ $Ø$5¸Ð8HÑ$HÐ!àÐ'Ø,‘à'�â Ø!/°5°(Ñ!:‘ð=	;ñ@ ÜÑh ]Ð4EÀ~Ð$VÔhÓhÐhÜØ+Ð;LÐYgô
ð 	
r,   )NN)TFNNT)r=   r>   r?   r@   r   r  r  r  r!   rÓ   r´   r;   rA   rB   s   @r+   r  r    sh   ø„ ÙBô	,òòóð &*Ø"'ØØØ ñ7
à—|‘|ð7
ð Ÿ™ð7
ð #ð	7
ð
  ð7
ð ÷7
r,   r  c                   ó(   — e Zd ZdZeZdZdgZdZd„ Z	y)ÚDebertaPreTrainedModelz†
    An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
    models.
    Údebertarà   Tc                 ó6  — t        |t        j                  «      rm|j                  j                  j                  d| j                  j                  ¬«       |j                  �%|j                  j                  j                  «        yyt        |t        j                  «      rz|j                  j                  j                  d| j                  j                  ¬«       |j                  �2|j                  j                  |j                     j                  «        yyt        |t        j                  t        f«      rJ|j                  j                  j                  d«       |j                  j                  j                  «        yt        |t        «      rI|j                   j                  j                  «        |j"                  j                  j                  «        yt        |t$        t&        f«      r%|j                  j                  j                  «        yy)zInitialize the weights.g        )r3   ÚstdNg      ð?)rü   r   rF   r#   ÚdataÚnormal_rO   Úinitializer_ranger%   Úzero_rÝ   rÙ   rJ   r   Úfill_r‡   r•   r–   ÚLegacyDebertaLMPredictionHeadÚDebertaLMPredictionHead)r'   Úmodules     r+   Ú_init_weightsz$DebertaPreTrainedModel._init_weights†  sk  € ä�fœbŸi™iÔ(ð �M‰M×Ñ×&Ñ&¨C°T·[±[×5RÑ5RÐ&ÔSØ�{‰{Ð&Ø—‘× Ñ ×&Ñ&Õ(ð 'ä˜¤§¡Ô-Ø�M‰M×Ñ×&Ñ&¨C°T·[±[×5RÑ5RÐ&ÔSØ×!Ñ!Ð-Ø—‘×"Ñ" 6×#5Ñ#5Ñ6×<Ñ<Õ>ð .ä˜¤§¡Ô/?Ð @ÔAØ�M‰M×Ñ×$Ñ$ SÔ)Ø�K‰K×Ñ×"Ñ"Õ$Ü˜Ô 9Ô:Ø�M‰M×Ñ×$Ñ$Ô&Ø�M‰M×Ñ×$Ñ$Õ&Ü˜Ô!>Ô@WÐ XÔYØ�K‰K×Ñ×"Ñ"Õ$ð Zr,   N)
r=   r>   r?   r@   r   Úconfig_classÚbase_model_prefixÚ"_keys_to_ignore_on_load_unexpectedÚsupports_gradient_checkpointingr@  r"  r,   r+   r4  r4  {  s(   „ ñð
 !€LØ!ÐØ*?Ð)@Ð&Ø&*Ð#ó%r,   r4  aø  
    The DeBERTa model was proposed in [DeBERTa: Decoding-enhanced BERT with Disentangled
    Attention](https://arxiv.org/abs/2006.03654) by Pengcheng He, Xiaodong Liu, Jianfeng Gao, Weizhu Chen. It's build
    on top of BERT/RoBERTa with two improvements, i.e. disentangled attention and enhanced mask decoder. With those two
    improvements, it out perform BERT/RoBERTa on a majority of tasks with 80GB pretraining data.

    This model is also a PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) subclass.
    Use it as a regular PyTorch Module and refer to the PyTorch documentation for all matter related to general usage
    and behavior.


    Parameters:
        config ([`DebertaConfig`]): Model configuration class with all the parameters of the model.
            Initializing with a config file does not load the weights associated with the model, only the
            configuration. Check out the [`~PreTrainedModel.from_pretrained`] method to load the model weights.
aõ  
    Args:
        input_ids (`torch.LongTensor` of shape `({0})`):
            Indices of input sequence tokens in the vocabulary.

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

            [What are input IDs?](../glossary#input-ids)
        attention_mask (`torch.FloatTensor` of shape `({0})`, *optional*):
            Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`:

            - 1 for tokens that are **not masked**,
            - 0 for tokens that are **masked**.

            [What are attention masks?](../glossary#attention-mask)
        token_type_ids (`torch.LongTensor` of shape `({0})`, *optional*):
            Segment token indices to indicate first and second portions of the inputs. Indices are selected in `[0,
            1]`:

            - 0 corresponds to a *sentence A* token,
            - 1 corresponds to a *sentence B* token.

            [What are token type IDs?](../glossary#token-type-ids)
        position_ids (`torch.LongTensor` of shape `({0})`, *optional*):
            Indices of positions of each input sequence tokens in the position embeddings. Selected in the range `[0,
            config.max_position_embeddings - 1]`.

            [What are position IDs?](../glossary#position-ids)
        inputs_embeds (`torch.FloatTensor` of shape `({0}, hidden_size)`, *optional*):
            Optionally, instead of passing `input_ids` you can choose to directly pass an embedded representation. This
            is useful if you want more control over how to convert *input_ids* indices into associated vectors than the
            model's internal embedding lookup matrix.
        output_attentions (`bool`, *optional*):
            Whether or not to return the attentions tensors of all attention layers. See `attentions` under returned
            tensors for more detail.
        output_hidden_states (`bool`, *optional*):
            Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors for
            more detail.
        return_dict (`bool`, *optional*):
            Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
zaThe bare DeBERTa Model transformer outputting raw hidden-states without any specific head on top.c                   ó\  ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Z eej                  d«      «       e
eee¬«      	 	 	 	 	 	 	 	 ddeej                      deej                      d	eej                      d
eej                      deej                      dee   dee   dee   deeef   fd„«       «       Zˆ xZS )ÚDebertaModelc                 ó    •— t         ‰| �  |«       t        |«      | _        t	        |«      | _        d| _        || _        | j                  «        y ©Nr   )	r   r   rÕ   rî   r  ÚencoderÚz_stepsrO   Ú	post_initrN   s     €r+   r   zDebertaModel.__init__Þ  s@   ø€ Ü‰Ñ˜Ô ä+¨FÓ3ˆŒÜ% fÓ-ˆŒØˆŒØˆŒà�‰Õr,   c                 ó.   — | j                   j                  S r   ©rî   rß   ©r'   s    r+   Úget_input_embeddingsz!DebertaModel.get_input_embeddingsè  s   € Ø�‰×.Ñ.Ð.r,   c                 ó&   — || j                   _        y r   rM  ©r'   Únew_embeddingss     r+   Úset_input_embeddingsz!DebertaModel.set_input_embeddingsë  s   € Ø*8ˆ�‰Õ'r,   c                 ó   — t        d«      ‚)z�
        Prunes heads of the model. heads_to_prune: dict of {layer_num: list of heads to prune in this layer} See base
        class PreTrainedModel
        z7The prune function is not implemented in DeBERTa model.)ÚNotImplementedError)r'   Úheads_to_prunes     r+   Ú_prune_headszDebertaModel._prune_headsî  s   € ô
 "Ð"[Ó\Ð\r,   úbatch_size, sequence_length©Ú
checkpointÚoutput_typerA  rè   r¥   ré   rÛ   rë   r¦   r  r   r©   c	           	      ó|  — |�|n| j                   j                  }|�|n| j                   j                  }|�|n| j                   j                  }|�|�t	        d«      ‚|�#| j                  ||«       |j                  «       }	n!|�|j                  «       d d }	nt	        d«      ‚|�|j                  n|j                  }
|€t        j                  |	|
¬«      }|€&t        j                  |	t        j                  |
¬«      }| j                  |||||¬«      }| j                  ||d||¬«      }|d	   }| j                  d	kD  r¼|d
   }t        | j                  «      D �cg c]  }| j                  j                   d   ‘Œ }}|d   }| j                  j#                  «       }| j                  j%                  |«      }| j                  j'                  |«      }|d	d  D ]!  } |||d|||¬«      }|j)                  |«       Œ# |d   }|s|f||rd	d  z   S dd  z   S t+        ||r|j,                  nd |j.                  ¬«      S c c}w )NzDYou cannot specify both input_ids and inputs_embeds at the same timer.   z5You have to specify either input_ids or inputs_embeds)rY   rX   )rè   ré   rÛ   rê   rë   T)r  r¦   r   r   rW   Fr  r0   r&  )rO   r¦   r  Úuse_return_dictr�   Ú%warn_if_padding_and_no_attention_maskr(   rY   r!   r"   r$   r[   rî   rI  rJ  r­   r  r  r  r  Úappendr   r7   r(  )r'   rè   r¥   ré   rÛ   rë   r¦   r  r   rì   rY   Úembedding_outputÚencoder_outputsÚencoded_layersr7   r  Úlayersr§   r¨   Úrel_posr  Úsequence_outputs                         r+   r;   zDebertaModel.forwardõ  sz  € ð" 2CÐ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆàÐ  ]Ð%>ÜÐcÓdÐdØÐ"Ø×6Ñ6°yÀ.ÔQØ#Ÿ.™.Ó*‰KØÐ&Ø'×,Ñ,Ó.¨s°Ð3‰KäÐTÓUÐUà%.Ð%:�×!Ò!À×@TÑ@TˆàÐ!Ü"ŸZ™Z¨¸FÔCˆNØÐ!Ü"Ÿ[™[¨¼E¿J¹JÈvÔVˆNàŸ?™?ØØ)Ø%ØØ'ð +ó 
Ðð Ÿ,™,ØØØ!%Ø/Ø#ð 'ó 
ˆð )¨Ñ+ˆà�<‰<˜!ÒØ*¨2Ñ.ˆMÜ6;¸D¿L¹LÓ6IÖJ°�d—l‘l×(Ñ(¨Ó,ÐJˆFÐJØ)¨"Ñ-ˆLØ!Ÿ\™\×;Ñ;Ó=ˆNØ!Ÿ\™\×<Ñ<¸^ÓLˆNØ—l‘l×.Ñ.Ð/?Ó@ˆGØ  ˜ò 	4�Ù$Ø!Ø"Ø&+Ø!-Ø!(Ø#1ô �ð ×%Ñ% lÕ3ð	4ð )¨Ñ,ˆáØ#Ð%¨Ñ>R¸Ð8\Ð(]Ñ]Ð]ÐXYÐ8\Ð(]Ñ]Ð]äØ-Ù;O˜/×7Ò7ÐUYØ&×1Ñ1ô
ð 	
ùò+ Ks   Å H9)NNNNNNNN)r=   r>   r?   r   rO  rS  rW  r   ÚDEBERTA_INPUTS_DOCSTRINGÚformatr   Ú_CHECKPOINT_FOR_DOCr   Ú_CONFIG_FOR_DOCr   r!   rÓ   r´   r   r   r;   rA   rB   s   @r+   rF  rF  Ù  s  ø„ ô
ò/ò9ò]ñ +Ð+C×+JÑ+JÐKhÓ+iÓjÙØ&Ø#Ø$ôð -1Ø15Ø15Ø/3Ø04Ø,0Ø/3Ø&*ñN
à˜EŸL™LÑ)ðN
ð ! §¡Ñ.ðN
ð ! §¡Ñ.ð	N
ð
 ˜uŸ|™|Ñ,ðN
ð   §¡Ñ-ðN
ð $ D™>ðN
ð ' t™nðN
ð ˜d‘^ðN
ð 
ˆu�oÐ%Ñ	&òN
óó kôN
r,   rF  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú$LegacyDebertaPredictionHeadTransformc                 ó   •— t         ‰| �  «        t        |d|j                  «      | _        t        j                  |j                  | j                  «      | _        t        |j                  t        «      rt        |j                     | _        n|j                  | _        t        j                  | j                  |j                  ¬«      | _        y )NrØ   )r)   )r   r   r˜   rG   rØ   r   rF   rH   rü   rý   rþ   r   Útransform_act_fnrJ   rI   rN   s     €r+   r   z-LegacyDebertaPredictionHeadTransform.__init__M  s“   ø€ Ü‰ÑÔÜ% fÐ.>À×@RÑ@RÓSˆÔä—Y‘Y˜v×1Ñ1°4×3FÑ3FÓGˆŒ
Ü�f×'Ñ'¬Ô-Ü$*¨6×+<Ñ+<Ñ$=ˆDÕ!à$*×$5Ñ$5ˆDÔ!ÜŸ™ d×&9Ñ&9¸v×?TÑ?TÔUˆ�r,   c                 ól   — | j                  |«      }| j                  |«      }| j                  |«      }|S r   )rH   rm  rJ   r  s     r+   r;   z,LegacyDebertaPredictionHeadTransform.forwardX  s4   € ØŸ
™
 =Ó1ˆØ×-Ñ-¨mÓ<ˆØŸ™ }Ó5ˆØÐr,   rU   rB   s   @r+   rk  rk  L  s   ø„ ô	Vör,   rk  c                   ó*   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zˆ xZS )r=  c                 ó€  •— t         ‰| �  «        t        |«      | _        t	        |d|j
                  «      | _        t        j                  | j                  |j                  d¬«      | _
        t        j                  t        j                  |j                  «      «      | _        | j                  | j                  _        y )NrØ   FrŠ   )r   r   rk  Ú	transformr˜   rG   rØ   r   rF   rÞ   Údecoderr    r!   r$   r%   rN   s     €r+   r   z&LegacyDebertaLMPredictionHead.__init__`  s…   ø€ Ü‰ÑÔÜ=¸fÓEˆŒä% fÐ.>À×@RÑ@RÓSˆÔô —y‘y ×!4Ñ!4°f×6GÑ6GÈeÔTˆŒä—L‘L¤§¡¨V×->Ñ->Ó!?Ó@ˆŒ	ð !ŸI™Iˆ�‰Õr,   c                 ó:   — | j                   | j                  _         y r   )r%   rr  rN  s    r+   Ú_tie_weightsz*LegacyDebertaLMPredictionHead._tie_weightsn  s   € Ø ŸI™Iˆ�‰Õr,   c                 óJ   — | j                  |«      }| j                  |«      }|S r   )rq  rr  r  s     r+   r;   z%LegacyDebertaLMPredictionHead.forwardq  s$   € ØŸ™ }Ó5ˆØŸ™ ]Ó3ˆØÐr,   )r=   r>   r?   r   rt  r;   rA   rB   s   @r+   r=  r=  _  s   ø„ ô&ò&ör,   r=  c                   óV   ‡ — e Zd Zˆ fd„Zdej
                  dej
                  fd„Zˆ xZS )ÚLegacyDebertaOnlyMLMHeadc                 óB   •— t         ‰| �  «        t        |«      | _        y r   )r   r   r=  ÚpredictionsrN   s     €r+   r   z!LegacyDebertaOnlyMLMHead.__init__y  s   ø€ Ü‰ÑÔÜ8¸Ó@ˆÕr,   re  r©   c                 ó(   — | j                  |«      }|S r   )ry  )r'   re  Úprediction_scoress      r+   r;   z LegacyDebertaOnlyMLMHead.forward}  s   € Ø ×,Ñ,¨_Ó=ÐØ Ð r,   r  rB   s   @r+   rw  rw  x  s$   ø„ ôAð! u§|¡|ð !¸¿¹÷ !r,   rw  c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )r>  zMhttps://github.com/microsoft/DeBERTa/blob/master/DeBERTa/deberta/bert.py#L270c                 óØ  •— t         ‰| �  «        t        j                  |j                  |j                  «      | _        t        |j                  t        «      rt        |j                     | _
        n|j                  | _
        t        j                  |j                  |j                  d¬«      | _        t        j                  t        j                  |j                   «      «      | _        y )NT)r)   Úelementwise_affine)r   r   r   rF   rG   rH   rü   rý   rþ   r   rm  rJ   rI   r    r!   r$   rÞ   r%   rN   s     €r+   r   z DebertaLMPredictionHead.__init__…  s�   ø€ Ü‰ÑÔÜ—Y‘Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
ä�f×'Ñ'¬Ô-Ü$*¨6×+<Ñ+<Ñ$=ˆDÕ!à$*×$5Ñ$5ˆDÔ!äŸ™ f×&8Ñ&8¸f×>SÑ>SÐhlÔmˆŒä—L‘L¤§¡¨V×->Ñ->Ó!?Ó@ˆ�	r,   c                 óâ   — | j                  |«      }| j                  |«      }| j                  |«      }t        j                  ||j
                  j                  «       «      | j                  z   }|S r   )rH   rm  rJ   r!   r¯   r#   r°   r%   )r'   r7   rß   s      r+   r;   zDebertaLMPredictionHead.forward“  sd   € ØŸ
™
 =Ó1ˆØ×-Ñ-¨mÓ<ˆØŸ™Øó
ˆô Ÿ™ ]°O×4JÑ4J×4LÑ4LÓ4NÓOÐRV×R[ÑR[Ñ[ˆØÐr,   r<   rB   s   @r+   r>  r>  ‚  s   ø„ ÙWôAör,   r>  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚDebertaOnlyMLMHeadc                 óB   •— t         ‰| �  «        t        |«      | _        y r   )r   r   r>  Úlm_headrN   s     €r+   r   zDebertaOnlyMLMHead.__init__ž  s   ø€ Ü‰ÑÔÜ.¨vÓ6ˆ�r,   c                 ó*   — | j                  ||«      }|S r   )rƒ  )r'   re  rß   r{  s       r+   r;   zDebertaOnlyMLMHead.forward£  s   € Ø ŸL™L¨¸/ÓJÐØ Ð r,   rU   rB   s   @r+   r�  r�  �  s   ø„ ô7ö
!r,   r�  z5DeBERTa Model with a `language modeling` head on top.c                   ó„  ‡ — e Zd ZddgZˆ fd„Zd„ Zd„ Z eej                  d«      «       e
eeedee¬«      	 	 	 	 	 	 	 	 	 dd	eej$                     d
eej$                     deej$                     deej$                     deej$                     deej$                     dee   dee   dee   deeef   fd„«       «       Zˆ xZS )ÚDebertaForMaskedLMzcls.predictions.decoder.weightzcls.predictions.decoder.biasc                 óò   •— t         ‰| �  |«       |j                  | _        t        |«      | _        | j                  rt        |«      | _        nddg| _        t        |«      | _	        | j                  «        y )Nzlm_predictions.lm_head.weightz)deberta.embeddings.word_embeddings.weight)r   r   ÚlegacyrF  r5  rw  ÚclsÚ_tied_weights_keysr�  Úlm_predictionsrK  rN   s     €r+   r   zDebertaForMaskedLM.__init__¬  sa   ø€ Ü‰Ñ˜Ô Ø—m‘mˆŒÜ# FÓ+ˆŒØ�;Š;Ü/°Ó7ˆD�Hà'FÐHsÐ&tˆDÔ#Ü"4°VÓ"<ˆDÔð 	�‰Õr,   c                 óš   — | j                   r | j                  j                  j                  S | j                  j
                  j                  S r   )rˆ  r‰  ry  rr  r‹  rƒ  rH   rN  s    r+   Úget_output_embeddingsz(DebertaForMaskedLM.get_output_embeddings¹  s7   € Ø�;Š;Ø—8‘8×'Ñ'×/Ñ/Ð/à×&Ñ&×.Ñ.×4Ñ4Ð4r,   c                 ó  — | j                   rA|| j                  j                  _        |j                  | j                  j                  _        y || j
                  j                  _        |j                  | j
                  j                  _        y r   )rˆ  r‰  ry  rr  r%   r‹  rƒ  rH   rQ  s     r+   Úset_output_embeddingsz(DebertaForMaskedLM.set_output_embeddings¿  sa   € Ø�;Š;Ø+9ˆD�H‰H× Ñ Ô(Ø(6×(;Ñ(;ˆD�H‰H× Ñ Õ%à0>ˆD×Ñ×'Ñ'Ô-Ø/=×/BÑ/BˆD×Ñ×'Ñ'Õ,r,   rX  z[MASK])rZ  r[  rA  rê   Úexpected_outputÚexpected_lossrè   r¥   ré   rÛ   rë   Úlabelsr¦   r  r   r©   c
           
      ó  — |	�|	n| j                   j                  }	| j                  ||||||||	¬«      }
|
d   }| j                  r| j	                  |«      }n0| j                  || j                  j                  j                  «      }d}|�Ft        «       } ||j                  d| j                   j                  «      |j                  d«      «      }|	s|f|
dd z   }|�|f|z   S |S t        |||
j                  |
j                  ¬«      S )a¢  
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the masked language modeling loss. Indices should be in `[-100, 0, ...,
            config.vocab_size]` (see `input_ids` docstring) Tokens with indices set to `-100` are ignored (masked), the
            loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`
        N©r¥   ré   rÛ   rë   r¦   r  r   r   r.   r   ©ÚlossÚlogitsr7   r(  )rO   r]  r5  rˆ  r‰  r‹  rî   rß   r   r\   rÞ   r   r7   r(  )r'   rè   r¥   ré   rÛ   rë   r’  r¦   r  r   Úoutputsre  r{  Úmasked_lm_lossÚloss_fctrò   s                   r+   r;   zDebertaForMaskedLM.forwardÇ  s!  € ð8 &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà—,‘,ØØ)Ø)Ø%Ø'Ø/Ø!5Ø#ð ó 	
ˆð " !™*ˆØ�;Š;Ø $§¡¨Ó 9Ñà $× 3Ñ 3°OÀTÇ\Á\×E\ÑE\×ElÑElÓ mÐàˆØÐÜ'Ó)ˆHÙ%Ð&7×&<Ñ&<¸RÀÇÁ×AWÑAWÓ&XÐZ`×ZeÑZeÐfhÓZiÓjˆNáØ'Ð)¨G°A°B¨KÑ7ˆFØ3AÐ3M�^Ð%¨Ñ.ÐYÐSYÐYäØØ$Ø!×/Ñ/Ø×)Ñ)ô	
ð 	
r,   ©	NNNNNNNNN)r=   r>   r?   rŠ  r   r�  r�  r   rf  rg  r   Ú_CHECKPOINT_FOR_MASKED_LMr   ri  Ú_MASKED_LM_EXPECTED_OUTPUTÚ_MASKED_LM_EXPECTED_LOSSr   r!   rÓ   r´   r   r   r;   rA   rB   s   @r+   r†  r†  ¨  s0  ø„ à:Ð<ZÐ[Ðôò5òCñ +Ð+C×+JÑ+JÐKhÓ+iÓjÙØ,Ø"Ø$ØØ2Ø.ôð -1Ø15Ø15Ø/3Ø04Ø)-Ø,0Ø/3Ø&*ñ4
à˜EŸL™LÑ)ð4
ð ! §¡Ñ.ð4
ð ! §¡Ñ.ð	4
ð
 ˜uŸ|™|Ñ,ð4
ð   §¡Ñ-ð4
ð ˜Ÿ™Ñ&ð4
ð $ D™>ð4
ð ' t™nð4
ð ˜d‘^ð4
ð 
ˆu�nÐ$Ñ	%ò4
óó kô4
r,   r†  c                   ó4   ‡ — e Zd Zˆ fd„Zd„ Zed„ «       Zˆ xZS )ÚContextPoolerc                 óÖ   •— t         ‰| �  «        t        j                  |j                  |j                  «      | _        t        j                  |j                  «      | _        || _	        y r   )
r   r   r   rF   Úpooler_hidden_sizerH   rK   Úpooler_dropoutrM   rO   rN   s     €r+   r   zContextPooler.__init__  sI   ø€ Ü‰ÑÔÜ—Y‘Y˜v×8Ñ8¸&×:SÑ:SÓTˆŒ
Ü—z‘z &×"7Ñ"7Ó8ˆŒØˆ�r,   c                 ó    — |d d …df   }| j                  |«      }| j                  |«      }t        | j                  j                     |«      }|S rH  )rM   rH   r   rO   Úpooler_hidden_act)r'   r7   Úcontext_tokenÚpooled_outputs       r+   r;   zContextPooler.forward  sM   € ð &¢a¨ dÑ+ˆØŸ™ ]Ó3ˆØŸ
™
 =Ó1ˆÜ˜tŸ{™{×<Ñ<Ñ=¸mÓLˆØÐr,   c                 ó.   — | j                   j                  S r   )rO   rG   rN  s    r+   Ú
output_dimzContextPooler.output_dim  s   € à�{‰{×&Ñ&Ð&r,   )r=   r>   r?   r   r;   Úpropertyr©  rA   rB   s   @r+   r   r     s!   ø„ ôòð ñ'ó ô'r,   r   zŸ
    DeBERTa Model transformer with a sequence classification/regression head on top (a linear layer on top of the
    pooled output) e.g. for GLUE tasks.
    c                   óv  ‡ — e Zd Zˆ fd„Zd„ Zd„ Z eej                  d«      «       e	e
ee¬«      	 	 	 	 	 	 	 	 	 ddeej                     deej                     deej                     d	eej                     d
eej                     deej                     dee   dee   dee   deeef   fd„«       «       Zˆ xZS )Ú DebertaForSequenceClassificationc                 ó�  •— t         ‰| �  |«       t        |dd«      }|| _        t	        |«      | _        t        |«      | _        | j                  j                  }t        j                  ||«      | _        t        |dd «      }|€| j                  j                  n|}t        j                  |«      | _        | j!                  «        y )NÚ
num_labelsr0   Úcls_dropout)r   r   r˜   r®  rF  r5  r   Úpoolerr©  r   rF   Ú
classifierrO   rL   rK   rM   rK  )r'   rO   r®  r©  Údrop_outr*   s        €r+   r   z)DebertaForSequenceClassification.__init__%  sž   ø€ Ü‰Ñ˜Ô ä˜V \°1Ó5ˆ
Ø$ˆŒä# FÓ+ˆŒÜ# FÓ+ˆŒØ—[‘[×+Ñ+ˆ
äŸ)™) J°
Ó;ˆŒÜ˜6 =°$Ó7ˆØ6>Ð6F�4—;‘;×2Ò2ÈHˆÜ—z‘z (Ó+ˆŒð 	�‰Õr,   c                 ó6   — | j                   j                  «       S r   )r5  rO  rN  s    r+   rO  z5DebertaForSequenceClassification.get_input_embeddings7  s   € Ø�|‰|×0Ñ0Ó2Ð2r,   c                 ó:   — | j                   j                  |«       y r   )r5  rS  rQ  s     r+   rS  z5DebertaForSequenceClassification.set_input_embeddings:  s   € Ø�‰×)Ñ)¨.Õ9r,   rX  rY  rè   r¥   ré   rÛ   rë   r’  r¦   r  r   r©   c
           
      ó  — |	�|	n| j                   j                  }	| j                  ||||||||	¬«      }
|
d   }| j                  |«      }| j	                  |«      }| j                  |«      }d}|��Ý| j                   j                  �€â| j                  dk(  rXt        j                  «       }|j                  d«      j                  |j                  «      } |||j                  d«      «      }�n_|j                  «       dk(  s|j                  d«      dk(  �r|dk\  j                  «       }|j!                  «       }|j                  d«      dkD  r·t#        j$                  |d|j'                  |j                  d«      |j                  d«      «      «      }t#        j$                  |d|j                  d«      «      }t)        «       } ||j                  d| j                  «      j+                  «       |j                  d«      «      }�nIt#        j,                  d«      j                  |«      }�n#t        j.                  d«      } ||«      |z  j1                  d«      j3                  «        }nä| j                   j                  dk(  rIt        «       }| j                  dk(  r& ||j5                  «       |j5                  «       «      }nŒ |||«      }n‚| j                   j                  dk(  r=t)        «       } ||j                  d| j                  «      |j                  d«      «      }n,| j                   j                  dk(  rt7        «       } |||«      }|	s|f|
dd z   }|�|f|z   S |S t9        |||
j:                  |
j<                  ¬	«      S )
a�  
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the sequence classification/regression loss. Indices should be in `[0, ...,
            config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
            `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
        N)ré   r¥   rÛ   rë   r¦   r  r   r   r   r.   Ú
regressionÚsingle_label_classificationÚmulti_label_classificationr•  )rO   r]  r5  r°  rM   r±  Úproblem_typer®  r   r	   r\   r6   r1   r‚   r(   Únonzeror[   r!   r„   ri   r   r2   rv   Ú
LogSoftmaxÚsumr3   rç   r   r   r7   r(  )r'   rè   r¥   ré   rÛ   rë   r’  r¦   r  r   r˜  Úencoder_layerr§  r—  r–  Úloss_fnÚlabel_indexÚlabeled_logitsrš  Úlog_softmaxrò   s                        r+   r;   z(DebertaForSequenceClassification.forward=  s  € ð0 &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà—,‘,ØØ)Ø)Ø%Ø'Ø/Ø!5Ø#ð ó 	
ˆð   ™
ˆØŸ™ MÓ2ˆØŸ™ ]Ó3ˆØ—‘ Ó/ˆàˆØÑØ�{‰{×'Ñ'Ñ/Ø—?‘? aÒ'ä Ÿj™j›l�GØ#Ÿ[™[¨›_×/Ñ/°·±Ó=�FÙ" 6¨6¯;©;°r«?Ó;’DØ—Z‘Z“\ QÒ&¨&¯+©+°b«/¸QÓ*>Ø#)¨Q¡;×"7Ñ"7Ó"9�KØ#Ÿ[™[›]�FØ"×'Ñ'¨Ó*¨QÒ.Ü).¯©Ø" A {×'9Ñ'9¸+×:JÑ:JÈ1Ó:MÈvÏ{É{Ð[\Ë~Ó'^ó*˜ô "'§¡¨f°a¸×9IÑ9IÈ"Ó9MÓ!N˜Ü#3Ó#5˜Ù'¨×(;Ñ(;¸BÀÇÁÓ(P×(VÑ(VÓ(XÐZ`×ZeÑZeÐfhÓZiÓjšä$Ÿ|™|¨A›×1Ñ1°&Ó9šä"$§-¡-°Ó"3�KÙ)¨&Ó1°FÑ:×?Ñ?ÀÓC×IÑIÓKÐK‘DØ—‘×)Ñ)¨\Ò9Ü"›9�Ø—?‘? aÒ'Ù# F§N¡NÓ$4°f·n±nÓ6FÓG‘Dá# F¨FÓ3‘DØ—‘×)Ñ)Ð-JÒJÜ+Ó-�Ù §¡¨B°·±Ó @À&Ç+Á+ÈbÃ/ÓR‘Ø—‘×)Ñ)Ð-IÒIÜ,Ó.�Ù ¨Ó/�ÙØ�Y ¨¨ Ñ,ˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEä'Ø˜f°G×4IÑ4IÐV]×VhÑVhô
ð 	
r,   r›  )r=   r>   r?   r   rO  rS  r   rf  rg  r   rh  r   ri  r   r!   rÓ   r´   r   r   r;   rA   rB   s   @r+   r¬  r¬    s'  ø„ ôò$3ò:ñ +Ð+C×+JÑ+JÐKhÓ+iÓjÙØ&Ø,Ø$ôð -1Ø15Ø15Ø/3Ø04Ø)-Ø,0Ø/3Ø&*ñM
à˜EŸL™LÑ)ðM
ð ! §¡Ñ.ðM
ð ! §¡Ñ.ð	M
ð
 ˜uŸ|™|Ñ,ðM
ð   §¡Ñ-ðM
ð ˜Ÿ™Ñ&ðM
ð $ D™>ðM
ð ' t™nðM
ð ˜d‘^ðM
ð 
ˆuÐ.Ð.Ñ	/òM
óó kôM
r,   r¬  z¦
    DeBERTa Model with a token classification head on top (a linear layer on top of the hidden-states output) e.g. for
    Named-Entity-Recognition (NER) tasks.
    c                   ój  ‡ — e Zd Zˆ fd„Z eej                  d«      «       eee	e
¬«      	 	 	 	 	 	 	 	 	 ddeej                     deej                     deej                     deej                     deej                     d	eej                     d
ee   dee   dee   deee	f   fd„«       «       Zˆ xZS )ÚDebertaForTokenClassificationc                 ó,  •— t         ‰| �  |«       |j                  | _        t        |«      | _        t        j                  |j                  «      | _        t        j                  |j                  |j                  «      | _        | j                  «        y r   )r   r   r®  rF  r5  r   rK   rL   rM   rF   rG   r±  rK  rN   s     €r+   r   z&DebertaForTokenClassification.__init__›  si   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒä# FÓ+ˆŒÜ—z‘z &×"<Ñ"<Ó=ˆŒÜŸ)™) F×$6Ñ$6¸×8IÑ8IÓJˆŒð 	�‰Õr,   rX  rY  rè   r¥   ré   rÛ   rë   r’  r¦   r  r   r©   c
           
      ó¦  — |	�|	n| j                   j                  }	| j                  ||||||||	¬«      }
|
d   }| j                  |«      }| j	                  |«      }d}|�<t        «       } ||j                  d| j                  «      |j                  d«      «      }|	s|f|
dd z   }|�|f|z   S |S t        |||
j                  |
j                  ¬«      S )zÛ
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the token classification loss. Indices should be in `[0, ..., config.num_labels - 1]`.
        Nr”  r   r.   r   r•  )rO   r]  r5  rM   r±  r   r\   r®  r   r7   r(  )r'   rè   r¥   ré   rÛ   rë   r’  r¦   r  r   r˜  re  r—  r–  rš  rò   s                   r+   r;   z%DebertaForTokenClassification.forward¦  sñ   € ð, &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà—,‘,ØØ)Ø)Ø%Ø'Ø/Ø!5Ø#ð ó 	
ˆð " !™*ˆàŸ,™, Ó7ˆØ—‘ Ó1ˆàˆØÐÜ'Ó)ˆHÙ˜FŸK™K¨¨D¯O©OÓ<¸f¿k¹kÈ"»oÓNˆDáØ�Y ¨¨ Ñ,ˆFØ)-Ð)9�T�G˜fÑ$ÐE¸vÐEä$Ø˜f°G×4IÑ4IÐV]×VhÑVhô
ð 	
r,   r›  )r=   r>   r?   r   r   rf  rg  r   rh  r   ri  r   r!   rÓ   r´   r   r   r;   rA   rB   s   @r+   rÃ  rÃ  “  s  ø„ ô	ñ +Ð+C×+JÑ+JÐKhÓ+iÓjÙØ&Ø)Ø$ôð -1Ø15Ø15Ø/3Ø04Ø)-Ø,0Ø/3Ø&*ñ-
à˜EŸL™LÑ)ð-
ð ! §¡Ñ.ð-
ð ! §¡Ñ.ð	-
ð
 ˜uŸ|™|Ñ,ð-
ð   §¡Ñ-ð-
ð ˜Ÿ™Ñ&ð-
ð $ D™>ð-
ð ' t™nð-
ð ˜d‘^ð-
ð 
ˆuÐ+Ð+Ñ	,ò-
óó kô-
r,   rÃ  zà
    DeBERTa Model with a span classification head on top for extractive question-answering tasks like SQuAD (a linear
    layers on top of the hidden-states output to compute `span start logits` and `span end logits`).
    c                   ó’  ‡ — e Zd Zˆ fd„Z eej                  d«      «       eee	e
eeee¬«      	 	 	 	 	 	 	 	 	 	 ddeej"                     deej"                     deej"                     deej"                     deej"                     d	eej"                     d
eej"                     dee   dee   dee   deee	f   fd„«       «       Zˆ xZS )ÚDebertaForQuestionAnsweringc                 óä   •— t         ‰| �  |«       |j                  | _        t        |«      | _        t        j                  |j                  |j                  «      | _        | j                  «        y r   )
r   r   r®  rF  r5  r   rF   rG   Ú
qa_outputsrK  rN   s     €r+   r   z$DebertaForQuestionAnswering.__init__ä  sS   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒä# FÓ+ˆŒÜŸ)™) F×$6Ñ$6¸×8IÑ8IÓJˆŒð 	�‰Õr,   rX  )rZ  r[  rA  r�  r‘  Úqa_target_start_indexÚqa_target_end_indexrè   r¥   ré   rÛ   rë   Ústart_positionsÚend_positionsr¦   r  r   r©   c           
      ó&  — |
�|
n| j                   j                  }
| j                  |||||||	|
¬«      }|d   }| j                  |«      }|j	                  dd¬«      \  }}|j                  d«      j                  «       }|j                  d«      j                  «       }d}|�·|�µt        |j                  «       «      dkD  r|j                  d«      }t        |j                  «       «      dkD  r|j                  d«      }|j                  d«      }|j                  d|«      }|j                  d|«      }t        |¬«      } |||«      } |||«      }||z   dz  }|
s||f|dd z   }|�|f|z   S |S t        ||||j                  |j                  ¬	«      S )
a  
        start_positions (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for position (index) of the start of the labelled span for computing the token classification loss.
            Positions are clamped to the length of the sequence (`sequence_length`). Position outside of the sequence
            are not taken into account for computing the loss.
        end_positions (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for position (index) of the end of the labelled span for computing the token classification loss.
            Positions are clamped to the length of the sequence (`sequence_length`). Position outside of the sequence
            are not taken into account for computing the loss.
        Nr”  r   r   r.   r«   )Úignore_indexr0   )r–  Ústart_logitsÚ
end_logitsr7   r(  )rO   r]  r5  rÉ  Úsplitrç   r¹   r±   r(   rÊ   r   r   r7   r(  )r'   rè   r¥   ré   rÛ   rë   rÌ  rÍ  r¦   r  r   r˜  re  r—  rÐ  rÑ  Ú
total_lossÚignored_indexrš  Ú
start_lossÚend_lossrò   s                         r+   r;   z#DebertaForQuestionAnswering.forwardî  sÀ  € ðB &1Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà—,‘,ØØ)Ø)Ø%Ø'Ø/Ø!5Ø#ð ó 	
ˆð " !™*ˆà—‘ Ó1ˆØ#)§<¡<°°r <Ó#:Ñ ˆ�jØ#×+Ñ+¨BÓ/×:Ñ:Ó<ˆØ×'Ñ'¨Ó+×6Ñ6Ó8ˆ
àˆ
ØÐ&¨=Ð+Dä�?×'Ñ'Ó)Ó*¨QÒ.Ø"1×"9Ñ"9¸"Ó"=�Ü�=×%Ñ%Ó'Ó(¨1Ò,Ø -× 5Ñ 5°bÓ 9�à(×-Ñ-¨aÓ0ˆMØ-×3Ñ3°A°}ÓEˆOØ)×/Ñ/°°=ÓAˆMä'°]ÔCˆHÙ! ,°Ó@ˆJÙ 
¨MÓ:ˆHØ$ xÑ/°1Ñ4ˆJáØ" JÐ/°'¸!¸"°+Ñ=ˆFØ/9Ð/E�Z�M FÑ*ÐQÈ6ÐQä+ØØ%Ø!Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r,   )
NNNNNNNNNN)r=   r>   r?   r   r   rf  rg  r   Ú_CHECKPOINT_FOR_QAr   ri  Ú_QA_EXPECTED_OUTPUTÚ_QA_EXPECTED_LOSSÚ_QA_TARGET_START_INDEXÚ_QA_TARGET_END_INDEXr   r!   rÓ   r´   r   r   r;   rA   rB   s   @r+   rÇ  rÇ  Ü  s@  ø„ ôñ +Ð+C×+JÑ+JÐKhÓ+iÓjÙØ%Ø0Ø$Ø+Ø'Ø4Ø0ôð -1Ø15Ø15Ø/3Ø04Ø26Ø04Ø,0Ø/3Ø&*ñF
à˜EŸL™LÑ)ðF
ð ! §¡Ñ.ðF
ð ! §¡Ñ.ð	F
ð
 ˜uŸ|™|Ñ,ðF
ð   §¡Ñ-ðF
ð " %§,¡,Ñ/ðF
ð   §¡Ñ-ðF
ð $ D™>ðF
ð ' t™nðF
ð ˜d‘^ðF
ð 
ˆuÐ2Ð2Ñ	3òF
óó kôF
r,   rÇ  )r†  rÇ  r¬  rÃ  rF  r4  )Or@   Útypingr   r   r   r!   Útorch.utils.checkpointr   Útorch.nnr   r   r	   Úactivationsr   Úmodeling_outputsr   r   r   r   r   Úmodeling_utilsr   Úutilsr   r   r   r   Úconfiguration_debertar   Ú
get_loggerr=   Úloggerri  rh  rœ  r�  rž  r×  rØ  rÙ  rÚ  rÛ  ÚModuler   rD   ÚjitÚscriptrf   rl   rn   rr   rÓ   r‘   rw   rz   r   r…   r‡   rÕ   rð   rù   r  r  r  r4  ÚDEBERTA_START_DOCSTRINGrf  rF  rk  r=  rw  r>  r�  r†  r   r¬  rÃ  rÇ  Ú__all__r"  r,   r+   ú<module>rë     sè  ðñ ç )Ñ )ã Û Ý ß AÑ Aå !÷õ õ .ß uÓ uÝ 0ð 
ˆ×	Ñ	˜HÓ	%€Ø!€Ø.Ð ð @Ð Ø'Ð Ø!Ð ð ;Ð Ø(Ð ØÐ ØÐ ØÐ ô�r—y‘yô ô(˜Ÿ	™	ô ð ‡�×Ññó ðð8 ‡�×Ññró ðrð ‡�×Ññnó ðnð ‡�×Ññ[ó ð[ð ‡�×Ñð\ %§,¡,ð \¸cò \ó ð\ð ‡�×Ñð˜EŸL™Lð °U·\±\ò ó ðð ‡�×Ñðd¨¯©ð dÀÇÁð dÐgjò dó ðdð ‡�×Ñð°·±ð ÈÏÉò ó ðôC §	¡	ô CôLN˜Ÿ	™	ô Nôb,�r—y‘yô ,ôF˜"Ÿ)™)ô ô�B—I‘Iô ô(�2—9‘9ô (ôBZ
�R—Y‘Yô Z
ôz%˜_ô %ðBÐ ð")Ð ñX ØgØóôl
Ð)ó l
ó	ðl
ô^¨2¯9©9ô ô& B§I¡Iô ô2!˜rŸy™yô !ô˜bŸi™iô ô6!˜Ÿ™ô !ñ ÐQÐSjÓkô[
Ð/ó [
ó lð[
ô|'�B—I‘Iô 'ñ, ðð óôl
Ð'=ó l
óðl
ñ^ ðð óô?
Ð$:ó ?
óð?
ñD ðð óô[
Ð"8ó [
óð[
ò|�r,   