§
    ‚Štj¢Ú  ã                   óp  — d Z ddlmZ ddlm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 dd
lmZmZmZ ddlmZ ddlmZmZ ddlmZ ddlmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7  e0j8        e9¦  «        Z: G d„ dej;        ¦  «        Z<	 	 d]dej;        dej=        dej=        dej=        dej=        dz  de>dz  d e>d!e)e.         fd"„Z? G d#„ d$ej;        ¦  «        Z@ G d%„ d&ej;        ¦  «        ZA G d'„ d(ej;        ¦  «        ZB G d)„ d*ej;        ¦  «        ZC G d+„ d,ej;        ¦  «        ZD G d-„ d.ej;        ¦  «        ZE G d/„ d0e¦  «        ZF G d1„ d2ej;        ¦  «        ZG G d3„ d4ej;        ¦  «        ZH G d5„ d6ej;        ¦  «        ZI G d7„ d8ej;        ¦  «        ZJ G d9„ d:ej;        ¦  «        ZK G d;„ d<ej;        ¦  «        ZL G d=„ d>ej;        ¦  «        ZMe/ G d?„ d@e'¦  «        ¦   «         ZN e/dA¬B¦  «        e G dC„ dDe-¦  «        ¦   «         ¦   «         ZO e/dE¬B¦  «         G dF„ dGeN¦  «        ¦   «         ZP e/dH¬B¦  «         G dI„ dJeN¦  «        ¦   «         ZQ e/dK¬B¦  «         G dL„ dMeNe¦  «        ¦   «         ZRe/ G dN„ dOeN¦  «        ¦   «         ZS e/dP¬B¦  «         G dQ„ dReN¦  «        ¦   «         ZT e/dS¬B¦  «         G dT„ dUeN¦  «        ¦   «         ZUe/ G dV„ dWeN¦  «        ¦   «         ZVe/ G dX„ dYeN¦  «        ¦   «         ZWe/ G dZ„ d[eN¦  «        ¦   «         ZXg d\¢ZYdS )^zPyTorch BERT model.é    )ÚCallable)Ú	dataclassN)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELossé   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCacheÚEncoderDecoderCache)ÚGenerationMixin)Úcreate_bidirectional_maskÚcreate_causal_mask)ÚGradientCheckpointingLayer)	Ú)BaseModelOutputWithPastAndCrossAttentionsÚ,BaseModelOutputWithPoolingAndCrossAttentionsÚ!CausalLMOutputWithCrossAttentionsÚMaskedLMOutputÚMultipleChoiceModelOutputÚNextSentencePredictorOutputÚQuestionAnsweringModelOutputÚSequenceClassifierOutputÚTokenClassifierOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)Úapply_chunking_to_forward)ÚModelOutputÚTransformersKwargsÚauto_docstringÚlogging)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputsé   )Ú
BertConfigc                   ó˜   ‡ — e Zd ZdZˆ fd„Z	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  d	ed
ej	        fd„Z
ˆ xZS )ÚBertEmbeddingszGConstruct the embeddings from word, position and token_type embeddings.c                 óÒ  •— t          ¦   «                              ¦   «          t          j        |j        |j        |j        ¬¦  «        | _        t          j        |j        |j        ¦  «        | _	        t          j        |j
        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j        |j        ¦  «        | _        |                      dt%          j        |j        ¦  «                             d¦  «        d¬¦  «         |                      dt%          j        | j                             ¦   «         t$          j        ¬¦  «        d¬¦  «         d S )	N)Úpadding_idx©ÚepsÚposition_ids©r'   éÿÿÿÿF)Ú
persistentÚtoken_type_ids)Údtype)ÚsuperÚ__init__r   Ú	EmbeddingÚ
vocab_sizeÚhidden_sizeÚpad_token_idÚword_embeddingsÚmax_position_embeddingsÚposition_embeddingsÚtype_vocab_sizeÚtoken_type_embeddingsÚ	LayerNormÚlayer_norm_epsÚDropoutÚhidden_dropout_probÚdropoutÚregister_bufferÚtorchÚarangeÚexpandÚzerosr/   ÚsizeÚlong©ÚselfÚconfigÚ	__class__s     €úd/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/bert/modeling_bert.pyr6   zBertEmbeddings.__init__8   s3  ø€ Ý‰Œ×ÒÑÔÐÝ!œ|¨FÔ,=¸vÔ?QÐ_eÔ_rÐsÑsÔsˆÔÝ#%¤<°Ô0NÐPVÔPbÑ#cÔ#cˆÔ Ý%'¤\°&Ô2HÈ&ÔJ\Ñ%]Ô%]ˆÔ"åœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒà×ÒØ�EœL¨Ô)GÑHÔH×OÒOÐPWÑXÔXÐejð 	ñ 	
ô 	
ð 	
ð 	×ÒØ�eœk¨$Ô*;×*@Ò*@Ñ*BÔ*BÍ%Ì*ÐUÑUÔUÐbgð 	ñ 	
ô 	
ð 	
ð 	
ð 	
ó    Nr   Ú	input_idsr3   r/   Úinputs_embedsÚpast_key_values_lengthÚreturnc                 ó²  — |�|                      ¦   «         }n|                      ¦   «         d d…         }|\  }}|€| j        d d …|||z   …f         }|€�t          | d¦  «        rT| j                             |j        d         d¦  «        }	t          j        |	d|¬¦  «        }	|	                     ||¦  «        }n+t          j        |t          j	        | j        j
        ¬¦  «        }|€|                      |¦  «        }|                      |¦  «        }
||
z   }|                      |¦  «        }||z   }|                      |¦  «        }|                      |¦  «        }|S )Nr1   r3   r   r'   )ÚdimÚindex)r4   Údevice)rJ   r/   Úhasattrr3   rH   ÚshaperF   ÚgatherrI   rK   rY   r;   r?   r=   r@   rD   )rM   rR   r3   r/   rS   rT   Úinput_shapeÚ
batch_sizeÚ
seq_lengthÚbuffered_token_type_idsr?   Ú
embeddingsr=   s                rP   ÚforwardzBertEmbeddings.forwardH   su  € ð Ð Ø#Ÿ.š.Ñ*Ô*ˆKˆKà'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKà!,Ñˆ
�JàÐØÔ,¨Q¨Q¨QÐ0FÈÐVlÑIlÐ0lÐ-lÔmˆLð
 Ð!Ý�tÐ-Ñ.Ô.ð mà*.Ô*=×*DÒ*DÀ\ÔEWÐXYÔEZÐ\^Ñ*_Ô*_Ð'Ý*/¬,Ð7NÐTUÐ]iÐ*jÑ*jÔ*jÐ'Ø!8×!?Ò!?À
ÈJÑ!WÔ!W��å!&¤¨[ÅÄ
ÐSWÔSdÔSkÐ!lÑ!lÔ!l�àÐ Ø ×0Ò0°Ñ;Ô;ˆMØ $× :Ò :¸>Ñ JÔ JÐØ"Ð%:Ñ:ˆ
à"×6Ò6°|ÑDÔDÐØÐ"5Ñ5ˆ
à—^’^ JÑ/Ô/ˆ
Ø—\’\ *Ñ-Ô-ˆ
ØÐrQ   )NNNNr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r6   rF   Ú
LongTensorÚFloatTensorÚintÚTensorrb   Ú__classcell__©rO   s   @rP   r*   r*   5   sÄ   ø€ € € € € ØQÐQð
ð 
ð 
ð 
ð 
ð$ .2Ø26Ø04Ø26Ø&'ð(ð (àÔ# dÑ*ð(ð Ô(¨4Ñ/ð(ð Ô&¨Ñ-ð	(ð
 Ô(¨4Ñ/ð(ð !$ð(ð 
Œð(ð (ð (ð (ð (ð (ð (ð (rQ   r*   ç        ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingrD   Úkwargsc                 ó®  — |€|                      d¦  «        dz  }t          j        ||                     dd¦  «        ¦  «        |z  }|�||z   }t          j                             |d¬¦  «        }t          j                             ||| j        ¬¦  «        }t          j        ||¦  «        }	|	                     dd¦  «         	                    ¦   «         }	|	|fS )Nr1   ç      à¿é   r	   ©rW   )ÚpÚtrainingr'   )
rJ   rF   ÚmatmulÚ	transposer   Ú
functionalÚsoftmaxrD   rz   Ú
contiguous)
rn   ro   rp   rq   rr   rs   rD   rt   Úattn_weightsÚattn_outputs
             rP   Úeager_attention_forwardr‚   s   sÈ   € ð €Ø—*’*˜R‘.”. DÑ(ˆõ ”<  s§}¢}°Q¸Ñ':Ô':Ñ;Ô;¸gÑE€LàÐ!Ø# nÑ4ˆå”=×(Ò(¨¸2Ð(Ñ>Ô>€LÝ”=×(Ò(¨¸È6Ì?Ð(Ñ[Ô[€Lå”,˜|¨UÑ3Ô3€KØ×'Ò'¨¨1Ñ-Ô-×8Ò8Ñ:Ô:€Kà˜Ð$Ð$rQ   c                   ó„   ‡ — e Zd Zd
ˆ fd„	Z	 	 ddej        dej        dz  dedz  dee	         de
ej                 f
d	„Zˆ xZS )ÚBertSelfAttentionFNc                 óÄ  •— t          ¦   «                              ¦   «          |j        |j        z  dk    r0t	          |d¦  «        s t          d|j        › d|j        › d�¦  «        ‚|| _        |j        | _        t          |j        |j        z  ¦  «        | _        | j        | j        z  | _	        | j        dz  | _
        t          j        |j        | j	        ¦  «        | _        t          j        |j        | j	        ¦  «        | _        t          j        |j        | j	        ¦  «        | _        t          j        |j        ¦  «        | _        |j        | _        || _        || _        d S ©Nr   Úembedding_sizezThe hidden size (z6) is not a multiple of the number of attention heads (ú)rv   )r5   r6   r9   Únum_attention_headsrZ   Ú
ValueErrorrN   ri   Úattention_head_sizeÚall_head_sizers   r   ÚLinearro   rp   rq   rB   Úattention_probs_dropout_probrD   Ú
is_decoderÚ	is_causalÚ	layer_idx©rM   rN   r�   r‘   rO   s       €rP   r6   zBertSelfAttention.__init__�   sG  ø€ Ý‰Œ×ÒÑÔÐØÔ Ô :Ñ:¸aÒ?Ð?ÍÐPVÐXhÑHiÔHiÐ?Ýð8 FÔ$6ð 8ð 8Ø Ô4ð8ð 8ð 8ñô ð ð ˆŒà#)Ô#=ˆÔ Ý#& vÔ'9¸FÔ<VÑ'VÑ#WÔ#WˆÔ Ø!Ô5¸Ô8PÑPˆÔØÔ/°Ñ5ˆŒå”Y˜vÔ1°4Ô3EÑFÔFˆŒ
Ý”9˜VÔ/°Ô1CÑDÔDˆŒÝ”Y˜vÔ1°4Ô3EÑFÔFˆŒ
å”z &Ô"EÑFÔFˆŒà Ô+ˆŒØ"ˆŒØ"ˆŒˆˆrQ   Úhidden_statesrr   Úpast_key_valuesrt   rU   c                 óÈ  — |j         d d…         }g |¢d‘| j        ‘R } |                      |¦  «        j        |Ž                      dd¦  «        } |                      |¦  «        j        |Ž                      dd¦  «        } |                      |¦  «        j        |Ž                      dd¦  «        }	|�=|}
t          |t          ¦  «        r|j	        }
|
 
                    ||	| j        ¦  «        \  }}	t          j        | j        j        t           ¦  «        } || |||	|f| j        sdn| j        j        | j        dœ|¤Ž\  }} |j        g |¢d‘R Ž                      ¦   «         }||fS )Nr1   r'   rw   rm   ©rD   rs   )r[   r‹   ro   Úviewr|   rp   rq   Ú
isinstancer   Úself_attention_cacheÚupdater‘   r   Úget_interfacerN   Ú_attn_implementationr‚   rz   rD   ry   rs   Úreshaper   )rM   r“   rr   r”   rt   r]   Úhidden_shapeÚquery_layerÚ	key_layerÚvalue_layerÚcurrent_past_key_valuesÚattention_interfacer�   r€   s                 rP   rb   zBertSelfAttention.forward¨   s¨  € ð $Ô)¨#¨2¨#Ô.ˆØC˜ÐC bÐC¨$Ô*BÐCÐCˆð 5�d—j’j Ñ/Ô/Ô4°lÐC×MÒMÈaÐQRÑSÔSˆØ0�D—H’H˜]Ñ+Ô+Ô0°,Ð?×IÒIÈ!ÈQÑOÔOˆ	Ø4�d—j’j Ñ/Ô/Ô4°lÐC×MÒMÈaÐQRÑSÔSˆàÐ&à&5Ð#Ý˜/Õ+>Ñ?Ô?ð OØ*9Ô*NÐ'ð &=×%CÒ%CÀIÈ{Ð\`Ô\jÑ%kÔ%kÑ"ˆI�{å(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð	%
ð  $œ}Ð@�C�C°$´,´.Ø”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ˜LÐ(Ð(rQ   ©FN)NN©rc   rd   re   r6   rF   rj   rh   r   r   r!   Útuplerb   rk   rl   s   @rP   r„   r„   �   s©   ø€ € € € € ð#ð #ð #ð #ð #ð #ð6 48Ø(,ð	')ð ')à”|ð')ð Ô)¨DÑ0ð')ð  ™ð	')ð
 Ð+Ô,ð')ð 
ˆuŒ|Ô	ð')ð ')ð ')ð ')ð ')ð ')ð ')ð ')rQ   r„   c                   óš   ‡ — e Zd Zdˆ fd„	Z	 	 	 ddej        dej        dz  dej        dz  dedz  dee	         d	e
ej                 fd
„Zˆ xZS )ÚBertCrossAttentionFNc                 ó¬  •— t          ¦   «                              ¦   «          |j        |j        z  dk    r0t	          |d¦  «        s t          d|j        › d|j        › d�¦  «        ‚|| _        |j        | _        t          |j        |j        z  ¦  «        | _        | j        | j        z  | _	        | j        dz  | _
        t          j        |j        | j	        ¦  «        | _        t          j        |j        | j	        ¦  «        | _        t          j        |j        | j	        ¦  «        | _        t          j        |j        ¦  «        | _        || _        || _        d S r†   )r5   r6   r9   r‰   rZ   rŠ   rN   ri   r‹   rŒ   rs   r   r�   ro   rp   rq   rB   rŽ   rD   r�   r‘   r’   s       €rP   r6   zBertCrossAttention.__init__Ó   s=  ø€ Ý‰Œ×ÒÑÔÐØÔ Ô :Ñ:¸aÒ?Ð?ÍÐPVÐXhÑHiÔHiÐ?Ýð8 FÔ$6ð 8ð 8Ø Ô4ð8ð 8ð 8ñô ð ð ˆŒà#)Ô#=ˆÔ Ý#& vÔ'9¸FÔ<VÑ'VÑ#WÔ#WˆÔ Ø!Ô5¸Ô8PÑPˆÔØÔ/°Ñ5ˆŒå”Y˜vÔ1°4Ô3EÑFÔFˆŒ
Ý”9˜VÔ/°Ô1CÑDÔDˆŒÝ”Y˜vÔ1°4Ô3EÑFÔFˆŒ
å”z &Ô"EÑFÔFˆŒà"ˆŒØ"ˆŒˆˆrQ   r“   Úencoder_hidden_statesrr   r”   rt   rU   c                 óì  — |j         d d…         }g |¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }|�|j                             | j        ¦  «        nd}	|�;|	r9|j        j	        | j                 j
        }
|j        j	        | j                 j        }nÈg |j         d d…         ¢d‘| j        ‘R }|                      |¦  «                             |¦  «                             dd¦  «        }
|                      |¦  «                             |¦  «                             dd¦  «        }|�3|j                             |
|| j        ¦  «        \  }
}d|j        | j        <   t          j        | j        j        t&          ¦  «        } || ||
||f| j        sdn| j        j        | j        dœ|¤Ž\  }} |j        g |¢d‘R Ž                      ¦   «         }||fS )Nr1   r'   rw   FTrm   r–   )r[   r‹   ro   r—   r|   Ú
is_updatedÚgetr‘   Úcross_attention_cacheÚlayersÚkeysÚvaluesrp   rq   rš   r   r›   rN   rœ   r‚   rz   rD   ry   rs   r�   r   )rM   r“   rª   rr   r”   rt   r]   rž   rŸ   r¬   r    r¡   Úkv_shaper£   r�   r€   s                   rP   rb   zBertCrossAttention.forwardê   s-  € ð $Ô)¨#¨2¨#Ô.ˆàC˜ÐC bÐC¨$Ô*BÐCÐCˆð —j’j Ñ/Ô/×4Ò4°\ÑBÔB×LÒLÈQÐPQÑRÔRˆàGVÐGb�_Ô/×3Ò3°D´NÑCÔCÐCÐhmˆ
ØÐ&¨:Ð&à'Ô=ÔDÀTÄ^ÔTÔYˆIØ)Ô?ÔFÀtÄ~ÔVÔ]ˆKˆKàXÐ.Ô4°S°b°SÔ9ÐX¸2ÐX¸tÔ?WÐXÐXˆHØŸšÐ!6Ñ7Ô7×<Ò<¸XÑFÔF×PÒPÐQRÐTUÑVÔVˆIØŸ*š*Ð%:Ñ;Ô;×@Ò@ÀÑJÔJ×TÒTÐUVÐXYÑZÔZˆKàÐ*à)8Ô)N×)UÒ)UØ˜{¨D¬Nñ*ô *Ñ&�	˜;ð >B�Ô*¨4¬>Ñ:å(?Ô(MØŒKÔ,Õ.Eñ)
ô )
Ðð %8Ð$7ØØØØØð	%
ð  $œ}Ð@�C�C°$´,´.Ø”Lð	%
ð 	%
ð ð	%
ð 	%
Ñ!ˆ�\ð *�kÔ)Ð;¨;Ð;¸Ð;Ð;Ð;×FÒFÑHÔHˆØ˜LÐ(Ð(rQ   r¤   )NNN)rc   rd   re   r6   rF   rj   rh   r   r   r!   r¦   rb   rk   rl   s   @rP   r¨   r¨   Ò   s¿   ø€ € € € € ð#ð #ð #ð #ð #ð #ð4 ;?Ø37Ø6:ð1)ð 1)à”|ð1)ð  %Ô0°4Ñ7ð1)ð Ô)¨DÑ0ð	1)ð
 -¨tÑ3ð1)ð Ð+Ô,ð1)ð 
ˆuŒ|Ô	ð1)ð 1)ð 1)ð 1)ð 1)ð 1)ð 1)ð 1)rQ   r¨   c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )ÚBertSelfOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j        |j	        ¦  «        | _
        d S ©Nr-   )r5   r6   r   r�   r9   Údenser@   rA   rB   rC   rD   rL   s     €rP   r6   zBertSelfOutput.__init__  sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆrQ   r“   Úinput_tensorrU   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S ©N©r·   rD   r@   ©rM   r“   r¸   s      rP   rb   zBertSelfOutput.forward%  ó@   € ØŸ
š
 =Ñ1Ô1ˆØŸš ]Ñ3Ô3ˆØŸš }°|Ñ'CÑDÔDˆØÐrQ   ©rc   rd   re   r6   rF   rj   rb   rk   rl   s   @rP   r´   r´     ói   ø€ € € € € ð>ð >ð >ð >ð >ð U¤\ð ÀÄð ÐRWÔR^ð ð ð ð ð ð ð ð rQ   r´   c                   ó°   ‡ — e Zd Zdˆ fd„	Z	 	 	 	 ddej        dej        dz  dej        dz  dej        dz  dedz  d	ee	         d
e
ej                 fd„Zˆ xZS )ÚBertAttentionFNc                 óÄ   •— t          ¦   «                              ¦   «          || _        |rt          nt          } ||||¬¦  «        | _        t          |¦  «        | _        d S )N©r�   r‘   )r5   r6   Úis_cross_attentionr¨   r„   rM   r´   Úoutput)rM   rN   r�   r‘   rÄ   Úattention_classrO   s         €rP   r6   zBertAttention.__init__-  s]   ø€ Ý‰Œ×ÒÑÔÐØ"4ˆÔØ0BÐYÕ,Ð,ÕHYˆØ#�O F°iÈ9ÐUÑUÔUˆŒ	Ý$ VÑ,Ô,ˆŒˆˆrQ   r“   rr   rª   Úencoder_attention_maskr”   rt   rU   c                 óv   — | j         s|n|} | j        |f|||dœ|¤Ž\  }}|                      ||¦  «        }||fS )N)rª   rr   r”   )rÄ   rM   rÅ   )	rM   r“   rr   rª   rÇ   r”   rt   Úattention_outputr€   s	            rP   rb   zBertAttention.forward4  sq   € ð 04Ô/FÐb˜˜ÐLbˆØ)2¨¬Øð*
à"7Ø)Ø+ð	*
ð *
ð
 ð*
ð *
Ñ&Ð˜,ð  Ÿ;š;Ð'7¸ÑGÔGÐØ Ð-Ð-rQ   )FNF©NNNNr¥   rl   s   @rP   rÁ   rÁ   ,  sÓ   ø€ € € € € ð-ð -ð -ð -ð -ð -ð 48Ø:>Ø;?Ø(,ð.ð .à”|ð.ð Ô)¨DÑ0ð.ð  %Ô0°4Ñ7ð	.ð
 !&Ô 1°DÑ 8ð.ð  ™ð.ð Ð+Ô,ð.ð 
ˆuŒ|Ô	ð.ð .ð .ð .ð .ð .ð .ð .rQ   rÁ   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚBertIntermediatec                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          |j        t          ¦  «        rt          |j                 | _        d S |j        | _        d S rº   )r5   r6   r   r�   r9   Úintermediate_sizer·   r˜   Ú
hidden_actÚstrr   Úintermediate_act_fnrL   s     €rP   r6   zBertIntermediate.__init__J  sn   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3KÑLÔLˆŒ
Ý�fÔ'­Ñ-Ô-ð 	9Ý'-¨fÔ.?Ô'@ˆDÔ$Ð$Ð$à'-Ô'8ˆDÔ$Ð$Ð$rQ   r“   rU   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S rº   )r·   rÑ   ©rM   r“   s     rP   rb   zBertIntermediate.forwardR  s,   € ØŸ
š
 =Ñ1Ô1ˆØ×0Ò0°Ñ?Ô?ˆØÐrQ   r¾   rl   s   @rP   rÌ   rÌ   I  s^   ø€ € € € € ð9ð 9ð 9ð 9ð 9ð U¤\ð °e´lð ð ð ð ð ð ð ð rQ   rÌ   c                   óP   ‡ — e Zd Zˆ fd„Zdej        dej        dej        fd„Zˆ xZS )Ú
BertOutputc                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        |j        |j        ¬¦  «        | _        t          j	        |j
        ¦  «        | _        d S r¶   )r5   r6   r   r�   rÎ   r9   r·   r@   rA   rB   rC   rD   rL   s     €rP   r6   zBertOutput.__init__Y  sf   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ7¸Ô9KÑLÔLˆŒ
Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒÝ”z &Ô"<Ñ=Ô=ˆŒˆˆrQ   r“   r¸   rU   c                 óŠ   — |                       |¦  «        }|                      |¦  «        }|                      ||z   ¦  «        }|S rº   r»   r¼   s      rP   rb   zBertOutput.forward_  r½   rQ   r¾   rl   s   @rP   rÕ   rÕ   X  r¿   rQ   rÕ   c                   óª   ‡ — e Zd Zdˆ fd„	Z	 	 	 	 ddej        dej        dz  dej        dz  dej        dz  dedz  dee	         d	ej        fd
„Z
d„ Zˆ xZS )Ú	BertLayerNc                 ó–  •— t          ¦   «                              ¦   «          |j        | _        d| _        t	          ||j        |¬¦  «        | _        |j        | _        |j        | _        | j        r1| j        st          | › d�¦  «        ‚t	          |d|d¬¦  «        | _	        t          |¦  «        | _        t          |¦  «        | _        d S )Nr'   rÃ   z> should be used as a decoder model if cross attention is addedFT)r�   r‘   rÄ   )r5   r6   Úchunk_size_feed_forwardÚseq_len_dimrÁ   r�   Ú	attentionÚadd_cross_attentionrŠ   ÚcrossattentionrÌ   ÚintermediaterÕ   rÅ   )rM   rN   r‘   rO   s      €rP   r6   zBertLayer.__init__g  sÐ   ø€ Ý‰Œ×ÒÑÔÐØ'-Ô'EˆÔ$ØˆÔÝ& v¸Ô9JÐV_Ð`Ñ`Ô`ˆŒØ Ô+ˆŒØ#)Ô#=ˆÔ ØÔ#ð 	Ø”?ð jÝ  DÐ!hÐ!hÐ!hÑiÔiÐiÝ"/ØØØ#Ø#'ð	#ñ #ô #ˆDÔõ -¨VÑ4Ô4ˆÔÝ  Ñ(Ô(ˆŒˆˆrQ   r“   rr   rª   rÇ   r”   rt   rU   c                 óü   —  | j         ||fd|i|¤Ž\  }}|}	| j        r=|�;t          | d¦  «        st          d| › d�¦  «        ‚ | j        |d ||fd|i|¤Ž\  }
}|
}	t          | j        | j        | j        |	¦  «        }|S )Nr”   rß   z'If `encoder_hidden_states` are passed, z` has to be instantiated with cross-attention layers by setting `config.add_cross_attention=True`)	rÝ   r�   rZ   rŠ   rß   r   Úfeed_forward_chunkrÛ   rÜ   )rM   r“   rr   rª   rÇ   r”   rt   Úself_attention_outputÚ_rÉ   Úcross_attention_outputÚlayer_outputs               rP   rb   zBertLayer.forwardz  s  € ð $2 4¤>ØØð$
ð $
ð ,ð$
ð ð	$
ð $
Ñ Ð˜qð 1ÐàŒ?ð 	6Ð4Ð@Ý˜4Ð!1Ñ2Ô2ð Ý ðD¸dð Dð Dð Dñô ð ð
 )<¨Ô(;Ø%ØØ%Ø&ð	)ð )ð
 !0ð)ð ð)ð )Ñ%Ð" Að  6Ðå0ØÔ# TÔ%AÀ4ÔCSÐUeñ
ô 
ˆð ÐrQ   c                 ó\   — |                       |¦  «        }|                      ||¦  «        }|S rº   )rà   rÅ   )rM   rÉ   Úintermediate_outputræ   s       rP   râ   zBertLayer.feed_forward_chunk¡  s2   € Ø"×/Ò/Ð0@ÑAÔAÐØ—{’{Ð#6Ð8HÑIÔIˆØÐrQ   rº   rÊ   )rc   rd   re   r6   rF   rj   rh   r   r   r!   rb   râ   rk   rl   s   @rP   rÙ   rÙ   f  sÞ   ø€ € € € € ð)ð )ð )ð )ð )ð )ð, 48Ø:>Ø;?Ø(,ð%ð %à”|ð%ð Ô)¨DÑ0ð%ð  %Ô0°4Ñ7ð	%ð
 !&Ô 1°DÑ 8ð%ð  ™ð%ð Ð+Ô,ð%ð 
Œð%ð %ð %ð %ðNð ð ð ð ð ð rQ   rÙ   c                   óÀ   ‡ — e Zd Zˆ fd„Z	 	 	 	 	 ddej        dej        dz  dej        dz  dej        dz  dedz  dedz  d	e	e
         d
eej                 ez  fd„Zˆ xZS )ÚBertEncoderc                 óÆ   •‡— t          ¦   «                              ¦   «          ‰| _        t          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        d S )Nc                 ó2   •— g | ]}t          ‰|¬ ¦  «        ‘ŒS ))r‘   )rÙ   )Ú.0ÚirN   s     €rP   ú
<listcomp>z(BertEncoder.__init__.<locals>.<listcomp>«  s&   ø€ Ð#lÐ#lÐ#lÀq¥I¨fÀÐ$BÑ$BÔ$BÐ#lÐ#lÐ#lrQ   )r5   r6   rN   r   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayerrL   s    `€rP   r6   zBertEncoder.__init__¨  sW   øø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”]Ð#lÐ#lÐ#lÐ#lÍEÐRXÔRjÑLkÔLkÐ#lÑ#lÔ#lÑmÔmˆŒ
ˆ
ˆ
rQ   Nr“   rr   rª   rÇ   r”   Ú	use_cachert   rU   c                 ó|   — t          | j        ¦  «        D ]\  }}	 |	|||f||dœ|¤Ž}Œt          ||r|nd ¬¦  «        S )N)rÇ   r”   )Úlast_hidden_stater”   )Ú	enumerateró   r   )
rM   r“   rr   rª   rÇ   r”   rô   rt   rî   Úlayer_modules
             rP   rb   zBertEncoder.forward­  s�   € õ  )¨¬Ñ4Ô4ð 	ð 	‰OˆAˆ|Ø(˜LØØØ%ðð (>Ø /ðð ð ðð ˆMˆMõ 9Ø+Ø/8ÐB˜O˜O¸dð
ñ 
ô 
ð 	
rQ   )NNNNN)rc   rd   re   r6   rF   rj   rh   r   Úboolr   r!   r¦   r   rb   rk   rl   s   @rP   rê   rê   §  sê   ø€ € € € € ðnð nð nð nð nð 48Ø:>Ø;?Ø(,Ø!%ð
ð 
à”|ð
ð Ô)¨DÑ0ð
ð  %Ô0°4Ñ7ð	
ð
 !&Ô 1°DÑ 8ð
ð  ™ð
ð ˜$‘;ð
ð Ð+Ô,ð
ð 
ˆuŒ|Ô	ÐHÑ	Hð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
rQ   rê   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )Ú
BertPoolerc                 óÀ   •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          j        ¦   «         | _        d S rº   )r5   r6   r   r�   r9   r·   ÚTanhÚ
activationrL   s     €rP   r6   zBertPooler.__init__È  sC   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ýœ'™)œ)ˆŒˆˆrQ   r“   rU   c                 ór   — |d d …df         }|                       |¦  «        }|                      |¦  «        }|S )Nr   )r·   rþ   )rM   r“   Úfirst_token_tensorÚpooled_outputs       rP   rb   zBertPooler.forwardÍ  s@   € ð +¨1¨1¨1¨a¨4Ô0ÐØŸ
š
Ð#5Ñ6Ô6ˆØŸš¨Ñ6Ô6ˆØÐrQ   r¾   rl   s   @rP   rû   rû   Ç  s^   ø€ € € € € ð$ð $ð $ð $ð $ð
 U¤\ð °e´lð ð ð ð ð ð ð ð rQ   rû   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚBertPredictionHeadTransformc                 óV  •— t          ¦   «                              ¦   «          t          j        |j        |j        ¦  «        | _        t          |j        t          ¦  «        rt          |j                 | _
        n|j        | _
        t          j        |j        |j        ¬¦  «        | _        d S r¶   )r5   r6   r   r�   r9   r·   r˜   rÏ   rÐ   r   Útransform_act_fnr@   rA   rL   s     €rP   r6   z$BertPredictionHeadTransform.__init__×  s…   ø€ Ý‰Œ×ÒÑÔÐÝ”Y˜vÔ1°6Ô3EÑFÔFˆŒ
Ý�fÔ'­Ñ-Ô-ð 	6Ý$*¨6Ô+<Ô$=ˆDÔ!Ð!à$*Ô$5ˆDÔ!Ýœ fÔ&8¸fÔ>SÐTÑTÔTˆŒˆˆrQ   r“   rU   c                 ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S rº   )r·   r  r@   rÓ   s     rP   rb   z#BertPredictionHeadTransform.forwardà  s=   € ØŸ
š
 =Ñ1Ô1ˆØ×-Ò-¨mÑ<Ô<ˆØŸš }Ñ5Ô5ˆØÐrQ   r¾   rl   s   @rP   r  r  Ö  sc   ø€ € € € € ðUð Uð Uð Uð Uð U¤\ð °e´lð ð ð ð ð ð ð ð rQ   r  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚBertLMPredictionHeadc                 ó  •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          j        |j        |j        d¬¦  «        | _        t	          j	        t          j        |j        ¦  «        ¦  «        | _        d S )NT)Úbias)r5   r6   r  Ú	transformr   r�   r9   r8   ÚdecoderÚ	ParameterrF   rI   r
  rL   s     €rP   r6   zBertLMPredictionHead.__init__è  sj   ø€ Ý‰Œ×ÒÑÔÐÝ4°VÑ<Ô<ˆŒõ ”y Ô!3°VÔ5FÈTÐRÑRÔRˆŒÝ”L¥¤¨VÔ->Ñ!?Ô!?Ñ@Ô@ˆŒ	ˆ	ˆ	rQ   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S rº   )r  r  rÓ   s     rP   rb   zBertLMPredictionHead.forwardñ  s*   € ØŸš }Ñ5Ô5ˆØŸš ]Ñ3Ô3ˆØÐrQ   ©rc   rd   re   r6   rb   rk   rl   s   @rP   r  r  ç  sL   ø€ € € € € ðAð Að Að Að Aðð ð ð ð ð ð rQ   r  c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚBertOnlyMLMHeadc                 óp   •— t          ¦   «                              ¦   «          t          |¦  «        | _        d S rº   )r5   r6   r  ÚpredictionsrL   s     €rP   r6   zBertOnlyMLMHead.__init__ø  s/   ø€ Ý‰Œ×ÒÑÔÐÝ/°Ñ7Ô7ˆÔÐÐrQ   Úsequence_outputrU   c                 ó0   — |                       |¦  «        }|S rº   )r  )rM   r  Úprediction_scoress      rP   rb   zBertOnlyMLMHead.forwardü  s   € Ø ×,Ò,¨_Ñ=Ô=ÐØ Ð rQ   r¾   rl   s   @rP   r  r  ÷  s^   ø€ € € € € ð8ð 8ð 8ð 8ð 8ð! u¤|ð !¸¼ð !ð !ð !ð !ð !ð !ð !ð !rQ   r  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚBertOnlyNSPHeadc                 ó†   •— t          ¦   «                              ¦   «          t          j        |j        d¦  «        | _        d S ©Nrw   )r5   r6   r   r�   r9   Úseq_relationshiprL   s     €rP   r6   zBertOnlyNSPHead.__init__  s6   ø€ Ý‰Œ×ÒÑÔÐÝ "¤	¨&Ô*<¸aÑ @Ô @ˆÔÐÐrQ   c                 ó0   — |                       |¦  «        }|S rº   )r  )rM   r  Úseq_relationship_scores      rP   rb   zBertOnlyNSPHead.forward  s   € Ø!%×!6Ò!6°}Ñ!EÔ!EÐØ%Ð%rQ   r  rl   s   @rP   r  r    sL   ø€ € € € € ðAð Að Að Að Að&ð &ð &ð &ð &ð &ð &rQ   r  c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚBertPreTrainingHeadsc                 ó®   •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          j        |j        d¦  «        | _        d S r  )r5   r6   r  r  r   r�   r9   r  rL   s     €rP   r6   zBertPreTrainingHeads.__init__  sF   ø€ Ý‰Œ×ÒÑÔÐÝ/°Ñ7Ô7ˆÔÝ "¤	¨&Ô*<¸aÑ @Ô @ˆÔÐÐrQ   c                 ó^   — |                       |¦  «        }|                      |¦  «        }||fS rº   )r  r  )rM   r  r  r  r  s        rP   rb   zBertPreTrainingHeads.forward  s6   € Ø ×,Ò,¨_Ñ=Ô=ÐØ!%×!6Ò!6°}Ñ!EÔ!EÐØ Ð"8Ð8Ð8rQ   r  rl   s   @rP   r  r    sL   ø€ € € € € ðAð Að Að Að Að
9ð 9ð 9ð 9ð 9ð 9ð 9rQ   r  c                   óp   ‡ — e Zd ZeZdZdZdZdZdZ	dZ
eeedœZ ej        ¦   «         ˆ fd„¦   «         Zˆ xZS )ÚBertPreTrainedModelÚbertT)r“   Ú
attentionsÚcross_attentionsc                 ó¨  •— t          ¦   «                              |¦  «         t          |t          ¦  «        rt	          j        |j        ¦  «         dS t          |t          ¦  «        rjt	          j        |j	        t          j        |j	        j        d         ¦  «                             d¦  «        ¦  «         t	          j        |j        ¦  «         dS dS )zInitialize the weightsr1   r0   N)r5   Ú_init_weightsr˜   r  ÚinitÚzeros_r
  r*   Úcopy_r/   rF   rG   r[   rH   r3   )rM   rn   rO   s     €rP   r(  z!BertPreTrainedModel._init_weights&  s·   ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ý�fÕ2Ñ3Ô3ð 	/ÝŒK˜œÑ$Ô$Ð$Ð$Ð$Ý˜¥Ñ/Ô/ð 	/ÝŒJ�vÔ*­E¬L¸Ô9LÔ9RÐSUÔ9VÑ,WÔ,W×,^Ò,^Ð_fÑ,gÔ,gÑhÔhÐhÝŒK˜Ô-Ñ.Ô.Ð.Ð.Ð.ð	/ð 	/rQ   )rc   rd   re   r(   Úconfig_classÚbase_model_prefixÚsupports_gradient_checkpointingÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_supports_attention_backendrÙ   r„   r¨   Ú_can_record_outputsrF   Úno_gradr(  rk   rl   s   @rP   r#  r#    sŠ   ø€ € € € € à€LØÐØ&*Ð#ØÐØ€NØÐØ"&Ðà"Ø'Ø.ðð Ðð €U„]�_„_ð/ð /ð /ð /ñ „_ð/ð /ð /ð /ð /rQ   r#  z0
    Output type of [`BertForPreTraining`].
    )Úcustom_introc                   óÂ   — e Zd ZU dZdZej        dz  ed<   dZej        dz  ed<   dZ	ej        dz  ed<   dZ
eej                 dz  ed<   dZeej                 dz  ed<   dS )ÚBertForPreTrainingOutputa–  
    loss (*optional*, returned when `labels` is provided, `torch.FloatTensor` of shape `(1,)`):
        Total loss as the sum of the masked language modeling loss and the next sequence prediction
        (classification) loss.
    prediction_logits (`torch.FloatTensor` of shape `(batch_size, sequence_length, config.vocab_size)`):
        Prediction scores of the language modeling head (scores for each vocabulary token before SoftMax).
    seq_relationship_logits (`torch.FloatTensor` of shape `(batch_size, 2)`):
        Prediction scores of the next sequence prediction (classification) head (scores of True/False continuation
        before SoftMax).
    NÚlossÚprediction_logitsÚseq_relationship_logitsr“   r%  )rc   rd   re   rf   r8  rF   rh   Ú__annotations__r9  r:  r“   r¦   r%  © rQ   rP   r7  r7  1  s¢   € € € € € € ð	ð 	ð &*€Dˆ%Ô
˜dÑ
"Ð)Ð)Ñ)Ø26Ð�uÔ(¨4Ñ/Ð6Ð6Ñ6Ø8<Ð˜UÔ.°Ñ5Ð<Ð<Ñ<Ø59€M�5˜Ô*Ô+¨dÑ2Ð9Ð9Ñ9Ø26€J��eÔ'Ô(¨4Ñ/Ð6Ð6Ñ6Ð6Ð6rQ   r7  a
  
    The model can behave as an encoder (with only self-attention) as well as a decoder, in which case a layer of
    cross-attention is added between the self-attention layers, following the architecture described in [Attention is
    all you need](https://huggingface.co/papers/1706.03762) by Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit,
    Llion Jones, Aidan N. Gomez, Lukasz Kaiser and Illia Polosukhin.

    To behave as an decoder the model needs to be initialized with the `is_decoder` argument of the configuration set
    to `True`. To be used in a Seq2Seq model, the model needs to initialized with both `is_decoder` argument and
    `add_cross_attention` set to `True`; an `encoder_hidden_states` is then expected as an input to the forward pass.
    c                   óV  ‡ — e Zd ZddgZdˆ fd„	Zd„ Zd„ Zeee		 	 	 	 	 	 	 	 	 dde
j        dz  d	e
j        dz  d
e
j        dz  de
j        dz  de
j        dz  de
j        dz  de
j        dz  dedz  dedz  dee         dee
j                 ez  fd„¦   «         ¦   «         ¦   «         Zd„ Zˆ xZS )Ú	BertModelr*   rÙ   Tc                 ó  •— t          ¦   «                              |¦  «         || _        d| _        t	          |¦  «        | _        t          |¦  «        | _        |rt          |¦  «        nd| _	        |  
                    ¦   «          dS )zv
        add_pooling_layer (bool, *optional*, defaults to `True`):
            Whether to add a pooling layer
        FN)r5   r6   rN   Úgradient_checkpointingr*   ra   rê   Úencoderrû   ÚpoolerÚ	post_init)rM   rN   Úadd_pooling_layerrO   s      €rP   r6   zBertModel.__init__Y  s{   ø€ õ
 	‰Œ×Ò˜Ñ Ô Ð ØˆŒØ&+ˆÔ#å(¨Ñ0Ô0ˆŒÝ" 6Ñ*Ô*ˆŒà,=ÐG•j Ñ(Ô(Ð(À4ˆŒð 	�ŠÑÔÐÐÐrQ   c                 ó   — | j         j        S rº   ©ra   r;   ©rM   s    rP   Úget_input_embeddingszBertModel.get_input_embeddingsj  s   € ØŒÔ.Ð.rQ   c                 ó   — || j         _        d S rº   rF  )rM   rq   s     rP   Úset_input_embeddingszBertModel.set_input_embeddingsm  s   € Ø*/ˆŒÔ'Ð'Ð'rQ   NrR   rr   r3   r/   rS   rª   rÇ   r”   rô   rt   rU   c
           
      ój  — |d u |d uz  rt          d¦  «        ‚| j        j        r|	�|	n| j        j        }	nd}	|	r[|€Y|€| j        j        r6t          t          | j        ¬¦  «        t          | j        ¬¦  «        ¦  «        nt          | j        ¬¦  «        }|�|                     ¦   «         nd}|                      |||||¬¦  «        }|  	                    |||||¬¦  «        \  }} | j
        |f|||||	|dœ|
¤Ž}|j        }| j        �|                      |¦  «        nd }t          |||j        ¬¦  «        S )	Nz:You must specify exactly one of input_ids or inputs_embedsF)rN   r   )rR   r/   r3   rS   rT   )rr   rÇ   Úembedding_outputrª   r”   )rr   rª   rÇ   r”   rô   r/   )rö   Úpooler_outputr”   )rŠ   rN   r�   rô   Úis_encoder_decoderr   r   Úget_seq_lengthra   Ú_create_attention_masksrA  rö   rB  r   r”   )rM   rR   rr   r3   r/   rS   rª   rÇ   r”   rô   rt   rT   rL  Úencoder_outputsr  r  s                   rP   rb   zBertModel.forwardp  s¸  € ð  ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàŒ;Ô!ð 	Ø%.Ð%:˜	˜	ÀÄÔ@UˆIˆIàˆIàð 	˜Ð0ð )Ð4¸¼Ô8VÐ4õ $¥L¸¼Ð$DÑ$DÔ$DÅlÐZ^ÔZeÐFfÑFfÔFfÑgÔgÐgå!¨¬Ð5Ñ5Ô5ð ð FUÐE` ×!?Ò!?Ñ!AÔ!AÐ!AÐfgÐàŸ?š?ØØ%Ø)Ø'Ø#9ð +ñ 
ô 
Ðð 26×1MÒ1MØ)Ø#9Ø-Ø"7Ø+ð 2Nñ 2
ô 2
Ñ.ˆÐ.ð '˜$œ,Øð	
à)Ø"7Ø#9Ø+ØØ%ð	
ð 	
ð ð	
ð 	
ˆð *Ô;ˆØ8<¼Ð8O˜Ÿš OÑ4Ô4Ð4ÐUYˆå;Ø-Ø'Ø+Ô;ð
ñ 
ô 
ð 	
rQ   c                 ó¶   — | j         j        rt          | j         |||¬¦  «        }nt          | j         ||¬¦  «        }|�t          | j         |||¬¦  «        }||fS )N)rN   rS   rr   r”   )rN   rS   rr   )rN   rS   rr   rª   )rN   r�   r   r   )rM   rr   rÇ   rL  rª   r”   s         rP   rP  z!BertModel._create_attention_masks´  s�   € ð Œ;Ô!ð 	Ý/Ø”{Ø.Ø-Ø /ð	ñ ô ˆNˆNõ 7Ø”{Ø.Ø-ðñ ô ˆNð "Ð-Ý%>Ø”{Ø.Ø5Ø&;ð	&ñ &ô &Ð"ð Ð5Ð5Ð5rQ   )T)	NNNNNNNNN)rc   rd   re   Ú_no_split_modulesr6   rH  rJ  r%   r&   r"   rF   rj   r   rù   r   r!   r¦   r   rb   rP  rk   rl   s   @rP   r>  r>  J  s‡  ø€ € € € € ð *¨;Ð7Ððð ð ð ð ð ð"/ð /ð /ð0ð 0ð 0ð  ØØð *.Ø.2Ø.2Ø,0Ø-1Ø59Ø6:Ø(,Ø!%ð?
ð ?
à”< $Ñ&ð?
ð œ tÑ+ð?
ð œ tÑ+ð	?
ð
 ”l TÑ)ð?
ð ”| dÑ*ð?
ð  %œ|¨dÑ2ð?
ð !&¤¨tÑ 3ð?
ð  ™ð?
ð ˜$‘;ð?
ð Ð+Ô,ð?
ð 
ˆuŒ|Ô	ÐKÑ	Kð?
ð ?
ð ?
ñ „^ñ „_ñ  Ôð?
ðB6ð 6ð 6ð 6ð 6ð 6ð 6rQ   r>  z¨
    Bert Model with two heads on top as done during the pretraining: a `masked language modeling` head and a `next
    sentence prediction (classification)` head.
    c                   ó(  ‡ — e Zd ZdddœZˆ fd„Zd„ Zd„ Zee	 	 	 	 	 	 	 dde	j
        dz  d	e	j
        dz  d
e	j
        dz  de	j
        dz  de	j
        dz  de	j
        dz  de	j
        dz  dee         dee	j
                 ez  fd„¦   «         ¦   «         Zˆ xZS )ÚBertForPreTrainingú&bert.embeddings.word_embeddings.weightúcls.predictions.bias©zcls.predictions.decoder.weightzcls.predictions.decoder.biasc                 óÂ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          |¦  «        | _        |                      ¦   «          d S rº   )r5   r6   r>  r$  r  ÚclsrC  rL   s     €rP   r6   zBertForPreTraining.__init__á  sQ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å˜fÑ%Ô%ˆŒ	Ý'¨Ñ/Ô/ˆŒð 	�ŠÑÔÐÐÐrQ   c                 ó$   — | j         j        j        S rº   ©rZ  r  r  rG  s    rP   Úget_output_embeddingsz(BertForPreTraining.get_output_embeddingsê  ó   € ØŒxÔ#Ô+Ð+rQ   c                 óT   — || j         j        _        |j        | j         j        _        d S rº   ©rZ  r  r  r
  ©rM   Únew_embeddingss     rP   Úset_output_embeddingsz(BertForPreTraining.set_output_embeddingsí  ó%   € Ø'5ˆŒÔÔ$Ø$2Ô$7ˆŒÔÔ!Ð!Ð!rQ   NrR   rr   r3   r/   rS   ÚlabelsÚnext_sentence_labelrt   rU   c           	      óÄ  —  | j         |f||||ddœ|¤Ž}	|	dd…         \  }
}|                      |
|¦  «        \  }}d}|�…|�ƒt          ¦   «         } ||                     d| j        j        ¦  «        |                     d¦  «        ¦  «        } ||                     dd¦  «        |                     d¦  «        ¦  «        }||z   }t          ||||	j        |	j        ¬¦  «        S )am  
        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]`
        next_sentence_label (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the next sequence prediction (classification) loss. Input should be a sequence
            pair (see `input_ids` docstring) Indices should be in `[0, 1]`:

            - 0 indicates sequence B is a continuation of sequence A,
            - 1 indicates sequence B is a random sequence.

        Example:

        ```python
        >>> from transformers import AutoTokenizer, BertForPreTraining
        >>> import torch

        >>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
        >>> model = BertForPreTraining.from_pretrained("google-bert/bert-base-uncased")

        >>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
        >>> outputs = model(**inputs)

        >>> prediction_logits = outputs.prediction_logits
        >>> seq_relationship_logits = outputs.seq_relationship_logits
        ```
        T©rr   r3   r/   rS   Úreturn_dictNrw   r1   )r8  r9  r:  r“   r%  )	r$  rZ  r   r—   rN   r8   r7  r“   r%  )rM   rR   rr   r3   r/   rS   re  rf  rt   Úoutputsr  r  r  r  Ú
total_lossÚloss_fctÚmasked_lm_lossÚnext_sentence_losss                     rP   rb   zBertForPreTraining.forwardñ  s)  € ðR �$”)Øð
à)Ø)Ø%Ø'Øð
ð 
ð ð
ð 
ˆð *1°°!°¬Ñ&ˆ˜Ø48·H²H¸_ÈmÑ4\Ô4\Ñ1ÐÐ1àˆ
ØÐÐ"5Ð"AÝ'Ñ)Ô)ˆHØ%˜XÐ&7×&<Ò&<¸RÀÄÔAWÑ&XÔ&XÐZ`×ZeÒZeÐfhÑZiÔZiÑjÔjˆNØ!) Ð*@×*EÒ*EÀbÈ!Ñ*LÔ*LÐNa×NfÒNfÐgiÑNjÔNjÑ!kÔ!kÐØ'Ð*<Ñ<ˆJå'ØØ/Ø$:Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
rQ   ©NNNNNNN)rc   rd   re   Ú_tied_weights_keysr6   r]  rc  r$   r"   rF   rj   r   r!   r¦   r7  rb   rk   rl   s   @rP   rU  rU  Õ  sa  ø€ € € € € ð +SØ(>ðð Ðð
ð ð ð ð ð,ð ,ð ,ð8ð 8ð 8ð Øð *.Ø.2Ø.2Ø,0Ø-1Ø&*Ø37ðA
ð A
à”< $Ñ&ðA
ð œ tÑ+ðA
ð œ tÑ+ð	A
ð
 ”l TÑ)ðA
ð ”| dÑ*ðA
ð ”˜tÑ#ðA
ð #œ\¨DÑ0ðA
ð Ð+Ô,ðA
ð 
ˆuŒ|Ô	Ð7Ñ	7ðA
ð A
ð A
ñ „^ñ ÔðA
ð A
ð A
ð A
ð A
rQ   rU  zP
    Bert Model with a `language modeling` head on top for CLM fine-tuning.
    c                   ól  ‡ — e Zd ZdddœZˆ fd„Zd„ Zd„ Zee	 	 	 	 	 	 	 	 	 	 	 dd	e	j
        dz  d
e	j
        dz  de	j
        dz  de	j
        dz  de	j
        dz  de	j
        dz  de	j
        dz  de	j
        dz  dedz  dedz  dee	j
        z  dee         dee	j
                 ez  fd„¦   «         ¦   «         Zˆ xZS )ÚBertLMHeadModelrV  rW  rX  c                 ó  •— t          ¦   «                              |¦  «         |j        st                               d¦  «         t          |d¬¦  «        | _        t          |¦  «        | _        |  	                    ¦   «          d S )NzLIf you want to use `BertLMHeadModel` as a standalone, add `is_decoder=True.`F©rD  ©
r5   r6   r�   ÚloggerÚwarningr>  r$  r  rZ  rC  rL   s     €rP   r6   zBertLMHeadModel.__init__B  su   ø€ Ý‰Œ×Ò˜Ñ Ô Ð àÔ ð 	kÝ�NŠNÐiÑjÔjÐjå˜f¸Ð>Ñ>Ô>ˆŒ	Ý" 6Ñ*Ô*ˆŒð 	�ŠÑÔÐÐÐrQ   c                 ó$   — | j         j        j        S rº   r\  rG  s    rP   r]  z%BertLMHeadModel.get_output_embeddingsN  r^  rQ   c                 óT   — || j         j        _        |j        | j         j        _        d S rº   r`  ra  s     rP   rc  z%BertLMHeadModel.set_output_embeddingsQ  rd  rQ   Nr   rR   rr   r3   r/   rS   rª   rÇ   re  r”   rô   Úlogits_to_keeprt   rU   c                 ól  — |�d}
 | j         |f|||||||	|
ddœ	|¤Ž}|j        }t          |t          ¦  «        rt	          | d¦  «        n|}|                      |dd…|dd…f         ¦  «        }d}|� | j        d||| j        j        dœ|¤Ž}t          |||j
        |j        |j        |j        ¬¦  «        S )a¿  
        labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
            Labels for computing the left-to-right language modeling loss (next word prediction). 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 n `[0, ..., config.vocab_size]`
        NFT)	rr   r3   r/   rS   rª   rÇ   r”   rô   ri  )Úlogitsre  r8   )r8  r|  r”   r“   r%  r&  r<  )r$  rö   r˜   ri   ÚslicerZ  Úloss_functionrN   r8   r   r”   r“   r%  r&  )rM   rR   rr   r3   r/   rS   rª   rÇ   re  r”   rô   rz  rt   rj  r“   Úslice_indicesr|  r8  s                     rP   rb   zBertLMHeadModel.forwardU  s  € ð. ÐØˆIà@IÀÄ	ØðA
à)Ø)Ø%Ø'Ø"7Ø#9Ø+ØØðA
ð A
ð ðA
ð A
ˆð  Ô1ˆå8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜-¨¨¨¨=¸!¸!¸!Ð(;Ô<Ñ=Ô=ˆàˆØÐØ%�4Ô%Ðp¨V¸FÈtÌ{ÔOeÐpÐpÐioÐpÐpˆDå0ØØØ#Ô3Ø!Ô/ØÔ)Ø$Ô5ð
ñ 
ô 
ð 	
rQ   )NNNNNNNNNNr   )rc   rd   re   rp  r6   r]  rc  r$   r"   rF   rj   r   rù   ri   r   r!   r¦   r   rb   rk   rl   s   @rP   rr  rr  7  s™  ø€ € € € € ð +SØ(>ðð Ðð

ð 
ð 
ð 
ð 
ð,ð ,ð ,ð8ð 8ð 8ð Øð *.Ø.2Ø.2Ø,0Ø-1Ø59Ø6:Ø&*Ø(,Ø!%Ø-.ð6
ð 6
à”< $Ñ&ð6
ð œ tÑ+ð6
ð œ tÑ+ð	6
ð
 ”l TÑ)ð6
ð ”| dÑ*ð6
ð  %œ|¨dÑ2ð6
ð !&¤¨tÑ 3ð6
ð ”˜tÑ#ð6
ð  ™ð6
ð ˜$‘;ð6
ð ˜eœlÑ*ð6
ð Ð+Ô,ð6
ð 
ˆuŒ|Ô	Ð@Ñ	@ð6
ð 6
ð 6
ñ „^ñ Ôð6
ð 6
ð 6
ð 6
ð 6
rQ   rr  c                   ó>  ‡ — e Zd ZdddœZˆ fd„Zd„ Zd„ Zee	 	 	 	 	 	 	 	 dde	j
        dz  d	e	j
        dz  d
e	j
        dz  de	j
        dz  de	j
        dz  de	j
        dz  de	j
        dz  de	j
        dz  dee         dee	j
                 ez  fd„¦   «         ¦   «         Zˆ xZS )ÚBertForMaskedLMrV  rW  rX  c                 ó  •— t          ¦   «                              |¦  «         |j        rt                               d¦  «         t          |d¬¦  «        | _        t          |¦  «        | _        |  	                    ¦   «          d S )NzkIf you want to use `BertForMaskedLM` make sure `config.is_decoder=False` for bi-directional self-attention.Frt  ru  rL   s     €rP   r6   zBertForMaskedLM.__init__—  s~   ø€ Ý‰Œ×Ò˜Ñ Ô Ð àÔð 	Ý�NŠNð1ñô ð õ
 ˜f¸Ð>Ñ>Ô>ˆŒ	Ý" 6Ñ*Ô*ˆŒð 	�ŠÑÔÐÐÐrQ   c                 ó$   — | j         j        j        S rº   r\  rG  s    rP   r]  z%BertForMaskedLM.get_output_embeddings¦  r^  rQ   c                 óT   — || j         j        _        |j        | j         j        _        d S rº   r`  ra  s     rP   rc  z%BertForMaskedLM.set_output_embeddings©  rd  rQ   NrR   rr   r3   r/   rS   rª   rÇ   re  rt   rU   c	                 ó@  —  | j         |f||||||ddœ|	¤Ž}
|
d         }|                      |¦  «        }d}|�Kt          ¦   «         } ||                     d| j        j        ¦  «        |                     d¦  «        ¦  «        }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]`
        T)rr   r3   r/   rS   rª   rÇ   ri  r   Nr1   ©r8  r|  r“   r%  )	r$  rZ  r   r—   rN   r8   r   r“   r%  )rM   rR   rr   r3   r/   rS   rª   rÇ   re  rt   rj  r  r  rm  rl  s                  rP   rb   zBertForMaskedLM.forward­  sÖ   € ð( �$”)Øð

à)Ø)Ø%Ø'Ø"7Ø#9Øð

ð 

ð ð

ð 

ˆð " !œ*ˆØ ŸHšH _Ñ5Ô5ÐàˆØÐÝ'Ñ)Ô)ˆHØ%˜XÐ&7×&<Ò&<¸RÀÄÔAWÑ&XÔ&XÐZ`×ZeÒZeÐfhÑZiÔZiÑjÔjˆNåØØ$Ø!Ô/ØÔ)ð	
ñ 
ô 
ð 	
rQ   )NNNNNNNN)rc   rd   re   rp  r6   r]  rc  r$   r"   rF   rj   r   r!   r¦   r   rb   rk   rl   s   @rP   r�  r�  �  sb  ø€ € € € € ð +SØ(>ðð Ðð
ð ð ð ð ð,ð ,ð ,ð8ð 8ð 8ð Øð *.Ø.2Ø.2Ø,0Ø-1Ø59Ø6:Ø&*ð+
ð +
à”< $Ñ&ð+
ð œ tÑ+ð+
ð œ tÑ+ð	+
ð
 ”l TÑ)ð+
ð ”| dÑ*ð+
ð  %œ|¨dÑ2ð+
ð !&¤¨tÑ 3ð+
ð ”˜tÑ#ð+
ð Ð+Ô,ð+
ð 
ˆuŒ|Ô	˜~Ñ	-ð+
ð +
ð +
ñ „^ñ Ôð+
ð +
ð +
ð +
ð +
rQ   r�  zT
    Bert Model with a `next sentence prediction (classification)` head on top.
    c                   óü   ‡ — e Zd Zˆ fd„Zee	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  d	ee	         d
e
ej                 ez  fd„¦   «         ¦   «         Zˆ xZS )ÚBertForNextSentencePredictionc                 óÂ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          |¦  «        | _        |                      ¦   «          d S rº   )r5   r6   r>  r$  r  rZ  rC  rL   s     €rP   r6   z&BertForNextSentencePrediction.__init__ã  sQ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å˜fÑ%Ô%ˆŒ	Ý" 6Ñ*Ô*ˆŒð 	�ŠÑÔÐÐÐrQ   NrR   rr   r3   r/   rS   re  rt   rU   c           	      ó(  —  | j         |f||||ddœ|¤Ž}|d         }	|                      |	¦  «        }
d}|�At          ¦   «         } ||
                     dd¦  «        |                     d¦  «        ¦  «        }t	          ||
|j        |j        ¬¦  «        S )aº  
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the next sequence prediction (classification) loss. Input should be a sequence pair
            (see `input_ids` docstring). Indices should be in `[0, 1]`:

            - 0 indicates sequence B is a continuation of sequence A,
            - 1 indicates sequence B is a random sequence.

        Example:

        ```python
        >>> from transformers import AutoTokenizer, BertForNextSentencePrediction
        >>> import torch

        >>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
        >>> model = BertForNextSentencePrediction.from_pretrained("google-bert/bert-base-uncased")

        >>> prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
        >>> next_sentence = "The sky is blue due to the shorter wavelength of blue light."
        >>> encoding = tokenizer(prompt, next_sentence, return_tensors="pt")

        >>> outputs = model(**encoding, labels=torch.LongTensor([1]))
        >>> logits = outputs.logits
        >>> assert logits[0, 0] < logits[0, 1]  # next sentence was random
        ```
        Trh  r'   Nr1   rw   r†  )r$  rZ  r   r—   r   r“   r%  )rM   rR   rr   r3   r/   rS   re  rt   rj  r  Úseq_relationship_scoresrn  rl  s                rP   rb   z%BertForNextSentencePrediction.forwardì  sÉ   € ðN �$”)Øð
à)Ø)Ø%Ø'Øð
ð 
ð ð
ð 
ˆð   œ
ˆà"&§(¢(¨=Ñ"9Ô"9Ðà!ÐØÐÝ'Ñ)Ô)ˆHØ!) Ð*A×*FÒ*FÀrÈ1Ñ*MÔ*MÈvÏ{Ê{Ð[]ÉÌÑ!_Ô!_Ðå*Ø#Ø*Ø!Ô/ØÔ)ð	
ñ 
ô 
ð 	
rQ   ©NNNNNN)rc   rd   re   r6   r$   r"   rF   rj   r   r!   r¦   r   rb   rk   rl   s   @rP   rˆ  rˆ  Ý  s  ø€ € € € € ðð ð ð ð ð Øð *.Ø.2Ø.2Ø,0Ø-1Ø&*ð=
ð =
à”< $Ñ&ð=
ð œ tÑ+ð=
ð œ tÑ+ð	=
ð
 ”l TÑ)ð=
ð ”| dÑ*ð=
ð ”˜tÑ#ð=
ð Ð+Ô,ð=
ð 
ˆuŒ|Ô	Ð:Ñ	:ð=
ð =
ð =
ñ „^ñ Ôð=
ð =
ð =
ð =
ð =
rQ   rˆ  zœ
    Bert 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                   óü   ‡ — e Zd Zˆ fd„Zee	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  d	ee	         d
e
ej                 ez  fd„¦   «         ¦   «         Zˆ xZS )ÚBertForSequenceClassificationc                 ód  •— t          ¦   «                              |¦  «         |j        | _        || _        t	          |¦  «        | _        |j        �|j        n|j        }t          j	        |¦  «        | _
        t          j        |j        |j        ¦  «        | _        |                      ¦   «          d S rº   )r5   r6   Ú
num_labelsrN   r>  r$  Úclassifier_dropoutrC   r   rB   rD   r�   r9   Ú
classifierrC  ©rM   rN   r‘  rO   s      €rP   r6   z&BertForSequenceClassification.__init__5  sœ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒØˆŒå˜fÑ%Ô%ˆŒ	à)/Ô)BÐ)NˆFÔ%Ð%ÐTZÔTnð 	õ ”zÐ"4Ñ5Ô5ˆŒÝœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐrQ   NrR   rr   r3   r/   rS   re  rt   rU   c           	      ó†  —  | j         |f||||ddœ|¤Ž}|d         }	|                      |	¦  «        }	|                      |	¦  «        }
d}|��Z| j        j        €f| j        dk    rd| j        _        nN| j        dk    r7|j        t          j        k    s|j        t          j	        k    rd| j        _        nd| j        _        | j        j        dk    rWt          ¦   «         }| j        dk    r1 ||
                     ¦   «         |                     ¦   «         ¦  «        }nŽ ||
|¦  «        }n�| j        j        dk    rGt          ¦   «         } ||
                     d| j        ¦  «        |                     d¦  «        ¦  «        }n*| j        j        dk    rt          ¦   «         } ||
|¦  «        }t          ||
|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).
        Trh  r'   NÚ
regressionÚsingle_label_classificationÚmulti_label_classificationr1   r†  )r$  rD   r’  rN   Úproblem_typer�  r4   rF   rK   ri   r   Úsqueezer   r—   r   r   r“   r%  )rM   rR   rr   r3   r/   rS   re  rt   rj  r  r|  r8  rl  s                rP   rb   z%BertForSequenceClassification.forwardD  sÛ  € ð$ �$”)Øð
à)Ø)Ø%Ø'Øð
ð 
ð ð
ð 
ˆð   œ
ˆàŸš ]Ñ3Ô3ˆØ—’ Ñ/Ô/ˆàˆØÑØŒ{Ô'Ð/Ø”? aÒ'Ð'Ø/;�D”KÔ,Ð,Ø”_ qÒ(Ð(¨f¬l½e¼jÒ.HÐ.HÈFÌLÕ\aÔ\eÒLeÐLeØ/L�D”KÔ,Ð,à/K�D”KÔ,àŒ{Ô'¨<Ò7Ð7Ý"™9œ9�Ø”? aÒ'Ð'Ø#˜8 F§N¢NÑ$4Ô$4°f·n²nÑ6FÔ6FÑGÔG�D�Dà#˜8 F¨FÑ3Ô3�D�DØ”Ô)Ð-JÒJÐJÝ+Ñ-Ô-�Ø�x §¢¨B°´Ñ @Ô @À&Ç+Â+ÈbÁ/Ä/ÑRÔR��Ø”Ô)Ð-IÒIÐIÝ,Ñ.Ô.�Ø�x ¨Ñ/Ô/�å'ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
rQ   rŒ  )rc   rd   re   r6   r$   r"   rF   rj   r   r!   r¦   r   rb   rk   rl   s   @rP   rŽ  rŽ  .  s  ø€ € € € € ðð ð ð ð ð Øð *.Ø.2Ø.2Ø,0Ø-1Ø&*ð;
ð ;
à”< $Ñ&ð;
ð œ tÑ+ð;
ð œ tÑ+ð	;
ð
 ”l TÑ)ð;
ð ”| dÑ*ð;
ð ”˜tÑ#ð;
ð Ð+Ô,ð;
ð 
ˆuŒ|Ô	Ð7Ñ	7ð;
ð ;
ð ;
ñ „^ñ Ôð;
ð ;
ð ;
ð ;
ð ;
rQ   rŽ  c                   óü   ‡ — e Zd Zˆ fd„Zee	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  d	ee	         d
e
ej                 ez  fd„¦   «         ¦   «         Zˆ xZS )ÚBertForMultipleChoicec                 ó4  •— t          ¦   «                              |¦  «         t          |¦  «        | _        |j        �|j        n|j        }t          j        |¦  «        | _        t          j	        |j
        d¦  «        | _        |                      ¦   «          d S )Nr'   )r5   r6   r>  r$  r‘  rC   r   rB   rD   r�   r9   r’  rC  r“  s      €rP   r6   zBertForMultipleChoice.__init__†  sˆ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å˜fÑ%Ô%ˆŒ	à)/Ô)BÐ)NˆFÔ%Ð%ÐTZÔTnð 	õ ”zÐ"4Ñ5Ô5ˆŒÝœ) FÔ$6¸Ñ:Ô:ˆŒð 	�ŠÑÔÐÐÐrQ   NrR   rr   r3   r/   rS   re  rt   rU   c           	      óR  — |�|j         d         n|j         d         }|�)|                     d|                     d¦  «        ¦  «        nd}|�)|                     d|                     d¦  «        ¦  «        nd}|�)|                     d|                     d¦  «        ¦  «        nd}|�)|                     d|                     d¦  «        ¦  «        nd}|�=|                     d|                     d¦  «        |                     d¦  «        ¦  «        nd} | j        |f||||ddœ|¤Ž}	|	d         }
|                      |
¦  «        }
|                      |
¦  «        }|                     d|¦  «        }d}|�t          ¦   «         } |||¦  «        }t          |||	j        |	j	        ¬¦  «        S )a[  
        input_ids (`torch.LongTensor` of shape `(batch_size, num_choices, sequence_length)`):
            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)
        token_type_ids (`torch.LongTensor` of shape `(batch_size, num_choices, sequence_length)`, *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 `(batch_size, num_choices, sequence_length)`, *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 `(batch_size, num_choices, sequence_length, 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.
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the multiple choice classification loss. Indices should be in `[0, ...,
            num_choices-1]` where `num_choices` is the size of the second dimension of the input tensors. (See
            `input_ids` above)
        Nr'   r1   éþÿÿÿTrh  r†  )
r[   r—   rJ   r$  rD   r’  r   r   r“   r%  )rM   rR   rr   r3   r/   rS   re  rt   Únum_choicesrj  r  r|  Úreshaped_logitsr8  rl  s                  rP   rb   zBertForMultipleChoice.forward“  sé  € ðT -6Ð,A�i”o aÔ(Ð(À}ÔGZÐ[\ÔG]ˆà>GÐ>S�I—N’N 2 y§~¢~°bÑ'9Ô'9Ñ:Ô:Ð:ÐY]ˆ	ØM[ÐMg˜×,Ò,¨R°×1DÒ1DÀRÑ1HÔ1HÑIÔIÐIÐmqˆØM[ÐMg˜×,Ò,¨R°×1DÒ1DÀRÑ1HÔ1HÑIÔIÐIÐmqˆØGSÐG_�|×(Ò(¨¨\×->Ò->¸rÑ-BÔ-BÑCÔCÐCÐeiˆð Ð(ð ×Ò˜r =×#5Ò#5°bÑ#9Ô#9¸=×;MÒ;MÈbÑ;QÔ;QÑRÔRÐRàð 	ð �$”)Øð
à)Ø)Ø%Ø'Øð
ð 
ð ð
ð 
ˆð   œ
ˆàŸš ]Ñ3Ô3ˆØ—’ Ñ/Ô/ˆØ Ÿ+š+ b¨+Ñ6Ô6ˆàˆØÐÝ'Ñ)Ô)ˆHØ�8˜O¨VÑ4Ô4ˆDå(ØØ"Ø!Ô/ØÔ)ð	
ñ 
ô 
ð 	
rQ   rŒ  )rc   rd   re   r6   r$   r"   rF   rj   r   r!   r¦   r   rb   rk   rl   s   @rP   r›  r›  „  s  ø€ € € € € ðð ð ð ð ð Øð *.Ø.2Ø.2Ø,0Ø-1Ø&*ðN
ð N
à”< $Ñ&ðN
ð œ tÑ+ðN
ð œ tÑ+ð	N
ð
 ”l TÑ)ðN
ð ”| dÑ*ðN
ð ”˜tÑ#ðN
ð Ð+Ô,ðN
ð 
ˆuŒ|Ô	Ð8Ñ	8ðN
ð N
ð N
ñ „^ñ ÔðN
ð N
ð N
ð N
ð N
rQ   r›  c                   óü   ‡ — e Zd Zˆ fd„Zee	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  d	ee	         d
e
ej                 ez  fd„¦   «         ¦   «         Zˆ xZS )ÚBertForTokenClassificationc                 óZ  •— t          ¦   «                              |¦  «         |j        | _        t          |d¬¦  «        | _        |j        �|j        n|j        }t          j        |¦  «        | _	        t          j
        |j        |j        ¦  «        | _        |                      ¦   «          d S ©NFrt  )r5   r6   r�  r>  r$  r‘  rC   r   rB   rD   r�   r9   r’  rC  r“  s      €rP   r6   z#BertForTokenClassification.__init__è  sš   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå˜f¸Ð>Ñ>Ô>ˆŒ	à)/Ô)BÐ)NˆFÔ%Ð%ÐTZÔTnð 	õ ”zÐ"4Ñ5Ô5ˆŒÝœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐrQ   NrR   rr   r3   r/   rS   re  rt   rU   c           	      ó\  —  | j         |f||||ddœ|¤Ž}|d         }	|                      |	¦  «        }	|                      |	¦  «        }
d}|�Ft          ¦   «         } ||
                     d| j        ¦  «        |                     d¦  «        ¦  «        }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]`.
        Trh  r   Nr1   r†  )	r$  rD   r’  r   r—   r�  r   r“   r%  )rM   rR   rr   r3   r/   rS   re  rt   rj  r  r|  r8  rl  s                rP   rb   z"BertForTokenClassification.forwardö  sÔ   € ð  �$”)Øð
à)Ø)Ø%Ø'Øð
ð 
ð ð
ð 
ˆð " !œ*ˆàŸ,š, Ñ7Ô7ˆØ—’ Ñ1Ô1ˆàˆØÐÝ'Ñ)Ô)ˆHØ�8˜FŸKšK¨¨D¬OÑ<Ô<¸f¿kºkÈ"¹o¼oÑNÔNˆDå$ØØØ!Ô/ØÔ)ð	
ñ 
ô 
ð 	
rQ   rŒ  )rc   rd   re   r6   r$   r"   rF   rj   r   r!   r¦   r   rb   rk   rl   s   @rP   r¢  r¢  æ  s  ø€ € € € € ðð ð ð ð ð Øð *.Ø.2Ø.2Ø,0Ø-1Ø&*ð'
ð '
à”< $Ñ&ð'
ð œ tÑ+ð'
ð œ tÑ+ð	'
ð
 ”l TÑ)ð'
ð ”| dÑ*ð'
ð ”˜tÑ#ð'
ð Ð+Ô,ð'
ð 
ˆuŒ|Ô	Ð4Ñ	4ð'
ð '
ð '
ñ „^ñ Ôð'
ð '
ð '
ð '
ð '
rQ   r¢  c                   ó  ‡ — e Zd Zˆ fd„Zee	 	 	 	 	 	 	 ddej        dz  dej        dz  dej        dz  dej        dz  dej        dz  dej        dz  d	ej        dz  d
ee	         de
ej                 ez  fd„¦   «         ¦   «         Zˆ xZS )ÚBertForQuestionAnsweringc                 óþ   •— t          ¦   «                              |¦  «         |j        | _        t          |d¬¦  «        | _        t          j        |j        |j        ¦  «        | _        |  	                    ¦   «          d S r¤  )
r5   r6   r�  r>  r$  r   r�   r9   Ú
qa_outputsrC  rL   s     €rP   r6   z!BertForQuestionAnswering.__init__$  sj   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå˜f¸Ð>Ñ>Ô>ˆŒ	Ýœ) FÔ$6¸Ô8IÑJÔJˆŒð 	�ŠÑÔÐÐÐrQ   NrR   rr   r3   r/   rS   Ústart_positionsÚend_positionsrt   rU   c           	      óF  —  | j         |f||||ddœ|¤Ž}	|	d         }
|                      |
¦  «        }|                     dd¬¦  «        \  }}|                     d¦  «                             ¦   «         }|                     d¦  «                             ¦   «         }d }|�ç|�åt          |                     ¦   «         ¦  «        dk    r|                     d¦  «        }t          |                     ¦   «         ¦  «        dk    r|                     d¦  «        }|                     d¦  «        }|                     d|¦  «        }|                     d|¦  «        }t          |¬¦  «        } |||¦  «        } |||¦  «        }||z   dz  }t          ||||	j
        |	j        ¬	¦  «        S )
NTrh  r   r'   r1   rx   )Úignore_indexrw   )r8  Ústart_logitsÚ
end_logitsr“   r%  )r$  r©  Úsplitr™  r   ÚlenrJ   Úclampr   r   r“   r%  )rM   rR   rr   r3   r/   rS   rª  r«  rt   rj  r  r|  r®  r¯  rk  Úignored_indexrl  Ú
start_lossÚend_losss                      rP   rb   z BertForQuestionAnswering.forward.  sÏ  € ð �$”)Øð
à)Ø)Ø%Ø'Øð
ð 
ð ð
ð 
ˆð " !œ*ˆà—’ Ñ1Ô1ˆØ#)§<¢<°°r <Ñ#:Ô#:Ñ ˆ�jØ#×+Ò+¨BÑ/Ô/×:Ò:Ñ<Ô<ˆØ×'Ò'¨Ñ+Ô+×6Ò6Ñ8Ô8ˆ
àˆ
ØÐ&¨=Ð+Då�?×'Ò'Ñ)Ô)Ñ*Ô*¨QÒ.Ð.Ø"1×"9Ò"9¸"Ñ"=Ô"=�Ý�=×%Ò%Ñ'Ô'Ñ(Ô(¨1Ò,Ð,Ø -× 5Ò 5°bÑ 9Ô 9�à(×-Ò-¨aÑ0Ô0ˆMØ-×3Ò3°A°}ÑEÔEˆOØ)×/Ò/°°=ÑAÔAˆMå'°]ÐCÑCÔCˆHØ!˜ ,°Ñ@Ô@ˆJØ�x 
¨MÑ:Ô:ˆHØ$ xÑ/°1Ñ4ˆJå+ØØ%Ø!Ø!Ô/ØÔ)ð
ñ 
ô 
ð 	
rQ   ro  )rc   rd   re   r6   r$   r"   rF   rj   r   r!   r¦   r   rb   rk   rl   s   @rP   r§  r§  "  s  ø€ € € € € ðð ð ð ð ð Øð *.Ø.2Ø.2Ø,0Ø-1Ø/3Ø-1ð3
ð 3
à”< $Ñ&ð3
ð œ tÑ+ð3
ð œ tÑ+ð	3
ð
 ”l TÑ)ð3
ð ”| dÑ*ð3
ð œ¨Ñ,ð3
ð ”| dÑ*ð3
ð Ð+Ô,ð3
ð 
ˆuŒ|Ô	Ð;Ñ	;ð3
ð 3
ð 3
ñ „^ñ Ôð3
ð 3
ð 3
ð 3
ð 3
rQ   r§  )r�  r›  rˆ  rU  r§  rŽ  r¢  rÙ   rr  r>  r#  )Nrm   )Zrf   Úcollections.abcr   Údataclassesr   rF   r   Útorch.nnr   r   r   Ú r
   r)  Úactivationsr   Úcache_utilsr   r   r   Ú
generationr   Úmasking_utilsr   r   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   r   r   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úpytorch_utilsr   Úutilsr    r!   r"   r#   Úutils.genericr$   r%   Úutils.output_capturingr&   Úconfiguration_bertr(   Ú
get_loggerrc   rv  ÚModuler*   rj   Úfloatr‚   r„   r¨   r´   rÁ   rÌ   rÕ   rÙ   rê   rû   r  r  r  r  r  r#  r7  r>  rU  rr  r�  rˆ  rŽ  r›  r¢  r§  Ú__all__r<  rQ   rP   ú<module>rË     s”  ðð Ð à $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !à €€€Ø Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ )Ð )Ð )Ð )Ð )Ð )Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ 9Ð 9Ð 9Ð 9Ð 9Ð 9ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ &Ð &Ð &Ð &Ð &Ð &Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø *Ð *Ð *Ð *Ð *Ð *ð 
ˆÔ	˜HÑ	%Ô	%€ð;ð ;ð ;ð ;ð ;�R”Yñ ;ô ;ð ;ðH !Øð%ð %ØŒIð%àŒ<ð%ð 
Œð%ð Œ<ð	%ð
 ”L 4Ñ'ð%ð �T‰\ð%ð ð%ð Ð'Ô(ð%ð %ð %ð %ð8@)ð @)ð @)ð @)ð @)˜œ	ñ @)ô @)ð @)ðFI)ð I)ð I)ð I)ð I)˜œñ I)ô I)ð I)ðXð ð ð ð �R”Yñ ô ð ð.ð .ð .ð .ð .�B”Iñ .ô .ð .ð:ð ð ð ð �r”yñ ô ð ðð ð ð ð �”ñ ô ð ð>ð >ð >ð >ð >Ð*ñ >ô >ð >ðB
ð 
ð 
ð 
ð 
�"”)ñ 
ô 
ð 
ð@ð ð ð ð �”ñ ô ð ðð ð ð ð  "¤)ñ ô ð ð"ð ð ð ð ˜2œ9ñ ô ð ð !ð !ð !ð !ð !�b”iñ !ô !ð !ð&ð &ð &ð &ð &�b”iñ &ô &ð &ð	9ð 	9ð 	9ð 	9ð 	9˜2œ9ñ 	9ô 	9ð 	9ð ð/ð /ð /ð /ð /˜/ñ /ô /ñ „ð/ð2 €ððñ ô ð
 ð7ð 7ð 7ð 7ð 7˜{ñ 7ô 7ñ „ñô ð7ð& €ð	ðñ ô ð|6ð |6ð |6ð |6ð |6Ð#ñ |6ô |6ñô ð|6ð~ €ððñ ô ðY
ð Y
ð Y
ð Y
ð Y
Ð,ñ Y
ô Y
ñô ðY
ðx €ððñ ô ð
Q
ð Q
ð Q
ð Q
ð Q
Ð)¨?ñ Q
ô Q
ñô ð
Q
ðh ðI
ð I
ð I
ð I
ð I
Ð)ñ I
ô I
ñ „ðI
ðX €ððñ ô ð
I
ð I
ð I
ð I
ð I
Ð$7ñ I
ô I
ñô ð
I
ðX €ððñ ô ðM
ð M
ð M
ð M
ð M
Ð$7ñ M
ô M
ñô ðM
ð` ð^
ð ^
ð ^
ð ^
ð ^
Ð/ñ ^
ô ^
ñ „ð^
ðB ð8
ð 8
ð 8
ð 8
ð 8
Ð!4ñ 8
ô 8
ñ „ð8
ðv ð@
ð @
ð @
ð @
ð @
Ð2ñ @
ô @
ñ „ð@
ðFð ð €€€rQ   