ó
    pyüi¢Ú  ã                   ó  • S r SSKJr  SSKJr  SSKrSSKJr  SSKJrJ	r	J
r
  SSKJr  SS	KJr  SS
KJrJrJr  SSKJr  SSKJrJr  SSKJr  SSKJrJrJrJrJ r J!r!J"r"J#r#J$r$  SSK%J&r&J'r'  SSK(J)r)  SSK*J+r+  SSK,J-r-J.r.J/r/J0r0  SSK1J2r2J3r3  SSK4J5r5  SSK6J7r7  \0Rp                  " \95      r: " S S\Rv                  5      r<  S\S\Rv                  S\Rz                  S\Rz                  S\Rz                  S\Rz                  S-  S\>S-  S\>S \)\.   4S! jjr? " S" S#\Rv                  5      r@ " S$ S%\Rv                  5      rA " S& S'\Rv                  5      rB " S( S)\Rv                  5      rC " S* S+\Rv                  5      rD " S, S-\Rv                  5      rE " S. S/\5      rF " S0 S1\Rv                  5      rG " S2 S3\Rv                  5      rH " S4 S5\Rv                  5      rI " S6 S7\Rv                  5      rJ " S8 S9\Rv                  5      rK " S: S;\Rv                  5      rL " S< S=\Rv                  5      rM\/ " S> S?\'5      5       rN\/" S@SA9\ " SB SC\-5      5       5       rO\/" SDSA9 " SE SF\N5      5       rP\/" SGSA9 " SH SI\N5      5       rQ\/" SJSA9 " SK SL\N\5      5       rR\/ " SM SN\N5      5       rS\/" SOSA9 " SP SQ\N5      5       rT\/" SRSA9 " SS ST\N5      5       rU\/ " SU SV\N5      5       rV\/ " SW SX\N5      5       rW\/ " SY SZ\N5      5       rX/ S[QrYg)]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                   óØ   ^ • \ rS rSrSrU 4S jr     SS\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S	\	S
\R                  4S jjrSrU =r$ )ÚBertEmbeddingsé5   zGConstruct the embeddings from word, position and token_type embeddings.c                 ó
  >• [         TU ]  5         [        R                  " UR                  UR
                  UR                  S9U l        [        R                  " UR                  UR
                  5      U l	        [        R                  " UR                  UR
                  5      U l        [        R                  " UR
                  UR                  S9U l        [        R                  " UR                  5      U l        U R#                  S[$        R&                  " UR                  5      R)                  S5      SS9  U R#                  S[$        R*                  " U R,                  R/                  5       [$        R0                  S9SS9  g )	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Úzerosr0   ÚsizeÚlong©ÚselfÚconfigÚ	__class__s     €Úc/home/mande/repo/quber/.venv/lib/python3.13/site-packages/transformers/models/bert/modeling_bert.pyr7   ÚBertEmbeddings.__init__8   s  ø€ Ü‰ÑÔÜ!Ÿ|š|¨F×,=Ñ,=¸v×?QÑ?QÐ_e×_rÑ_rÑsˆÔÜ#%§<¢<°×0NÑ0NÐPV×PbÑPbÓ#cˆÔ Ü%'§\¢\°&×2HÑ2HÈ&×J\ÑJ\Ó%]ˆÔ"äŸš f×&8Ñ&8¸f×>SÑ>SÑTˆŒÜ—z’z &×"<Ñ"<Ó=ˆŒà×ÑØœEŸLšL¨×)GÑ)GÓH×OÑOÐPWÓXÐejð 	ñ 	
ð 	×ÑØœeŸkšk¨$×*;Ñ*;×*@Ñ*@Ó*BÌ%Ï*É*ÑUÐbgð 	ò 	
ó    NÚ	input_idsr4   r0   Úinputs_embedsÚpast_key_values_lengthÚreturnc                 óŠ  • Ub  UR                  5       nOUR                  5       S S nUu  pxUc  U R                  S S 2XXU-   24   nUcš  [        U S5      (       aQ  U R                  R	                  UR
                  S   S5      n	[        R                  " U	SUS9n	U	R	                  Xx5      nO8[        R                  " U[        R                  U R                  R                  S9nUc  U R                  U5      nU R                  U5      n
XJ-   nU R                  U5      nX¼-   nU R                  U5      nU R                  U5      nU$ )Nr2   r4   r   r'   )ÚdimÚindex)r5   Údevice)rK   r0   Úhasattrr4   rI   ÚshaperG   ÚgatherrJ   rL   r[   r<   r@   r>   rA   rE   )rN   rT   r4   r0   rU   rV   Úinput_shapeÚ
batch_sizeÚ
seq_lengthÚbuffered_token_type_idsr@   Ú
embeddingsr>   s                rQ   ÚforwardÚBertEmbeddings.forwardH   sG  € ð Ñ Ø#Ÿ.™.Ó*‰Kà'×,Ñ,Ó.¨s°Ð3ˆKà!,Ñˆ
àÑØ×,Ñ,ªQÐ0FÐVlÑIlÐ0lÐ-lÑmˆLð
 Ñ!Ü�tÐ-×.Ñ.à*.×*=Ñ*=×*DÑ*DÀ\×EWÑEWÐXYÑEZÐ\^Ó*_Ð'Ü*/¯,ª,Ð7NÐTUÐ]iÑ*jÐ'Ø!8×!?Ñ!?À
Ó!W‘ä!&§¢¨[ÄÇ
Á
ÐSW×SdÑSd×SkÑSkÑ!l�àÑ Ø ×0Ñ0°Ó;ˆMØ $× :Ñ :¸>Ó JÐØ"Ñ:ˆ
à"×6Ñ6°|ÓDÐØÑ5ˆ
à—^‘^ JÓ/ˆ
Ø—\‘\ *Ó-ˆ
ØÐrS   )rA   rE   r>   r@   r<   )NNNNr   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r7   rG   Ú
LongTensorÚFloatTensorÚintÚTensorrd   Ú__static_attributes__Ú__classcell__©rP   s   @rQ   r*   r*   5   s�   ø† ÙQõ
ð$ .2Ø26Ø04Ø26Ø&'ñ(à×#Ñ# dÑ*ð(ð ×(Ñ(¨4Ñ/ð(ð ×&Ñ&¨Ñ-ð	(ð
 ×(Ñ(¨4Ñ/ð(ð !$ð(ð 
�‰÷(ó (rS   r*   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskÚscalingrE   Úkwargsc                 óŽ  • Uc  UR                  S5      S-  n[        R                  " XR                  SS5      5      U-  nUb  X„-   n[        R
                  R                  USS9n[        R
                  R                  X†U R                  S9n[        R                  " Xƒ5      n	U	R                  SS5      R                  5       n	X˜4$ )Nr2   ç      à¿é   r	   ©rY   )ÚpÚtrainingr'   )
rK   rG   ÚmatmulÚ	transposer   Ú
functionalÚsoftmaxrE   r~   Ú
contiguous)
rr   rs   rt   ru   rv   rw   rE   rx   Úattn_weightsÚattn_outputs
             rQ   Úeager_attention_forwardr†   s   s±   € ð �Ø—*‘*˜R“. DÑ(ˆô —<’< §}¡}°Q¸Ó':Ó;¸gÑE€LàÑ!Ø#Ñ4ˆä—=‘=×(Ñ(¨¸2Ð(Ð>€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ð[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$rS   c                   ó¦   ^ • \ rS rSrSU 4S jjr  SS\R                  S\R                  S-  S\S-  S\	\
   S\\R                     4
S	 jjrS
rU =r$ )ÚBertSelfAttentioné�   Nc                 óN  >• [         TU ]  5         UR                  UR                  -  S:w  a7  [	        US5      (       d&  [        SUR                   SUR                   S35      eXl        UR                  U l        [        UR                  UR                  -  5      U l        U R                  U R                  -  U l	        U R                  S-  U l
        [        R                  " UR                  U R                  5      U l        [        R                  " UR                  U R                  5      U l        [        R                  " UR                  U R                  5      U l        [        R                   " UR"                  5      U l        UR&                  U l        X l        X0l        g ©Nr   Úembedding_sizezThe hidden size (z6) is not a multiple of the number of attention heads (Ú)rz   )r6   r7   r:   Únum_attention_headsr\   Ú
ValueErrorrO   rm   Úattention_head_sizeÚall_head_sizerw   r   ÚLinearrs   rt   ru   rC   Úattention_probs_dropout_probrE   Ú
is_decoderÚ	is_causalÚ	layer_idx©rN   rO   r•   r–   rP   s       €rQ   r7   ÚBertSelfAttention.__init__�   sM  ø€ Ü‰ÑÔØ×Ñ × :Ñ :Ñ:¸aÓ?ÌÐPVÐXh×HiÑHiÜØ# F×$6Ñ$6Ð#7ð 8Ø ×4Ñ4Ð5°Qð8óð ð Œà#)×#=Ñ#=ˆÔ Ü#& v×'9Ñ'9¸F×<VÑ<VÑ'VÓ#WˆÔ Ø!×5Ñ5¸×8PÑ8PÑPˆÔØ×/Ñ/°Ñ5ˆŒä—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
Ü—9’9˜V×/Ñ/°×1CÑ1CÓDˆŒÜ—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
ä—z’z &×"EÑ"EÓFˆŒà ×+Ñ+ˆŒØ"ŒØ"�rS   Úhidden_statesrv   Úpast_key_valuesrx   rW   c                 ó  • UR                   S S n/ UQSPU R                  P7nU R                  U5      R                  " U6 R	                  SS5      nU R                  U5      R                  " U6 R	                  SS5      nU R                  U5      R                  " U6 R	                  SS5      n	UbA  Un
[        U[        5      (       a  UR                  n
U
R                  X‰U R                  5      u  p‰[        R                  " U R                  R                  [         5      nU" U UUU	U4U R"                  (       d  SOU R$                  R&                  U R(                  S.UD6u  pÍUR*                  " / UQSP76 R-                  5       nXÍ4$ )Nr2   r'   r{   ç        ©rE   rw   )r]   r�   rs   Úviewr€   rt   ru   Ú
isinstancer   Úself_attention_cacheÚupdater–   r   Úget_interfacerO   Ú_attn_implementationr†   r~   rE   r}   rw   Úreshaperƒ   )rN   r™   rv   rš   rx   r_   Úhidden_shapeÚquery_layerÚ	key_layerÚvalue_layerÚcurrent_past_key_valuesÚattention_interfacer…   r„   s                 rQ   rd   ÚBertSelfAttention.forward¨   s€  € ð $×)Ñ)¨#¨2Ð.ˆØC˜ÐC bÐC¨$×*BÑ*BÑCˆð —j‘j Ó/×4Ò4°lÐC×MÑMÈaÐQRÓSˆØ—H‘H˜]Ó+×0Ò0°,Ð?×IÑIÈ!ÈQÓOˆ	Ø—j‘j Ó/×4Ò4°lÐC×MÑMÈaÐQRÓSˆàÑ&à&5Ð#Ü˜/Ô+>×?Ñ?Ø*9×*NÑ*NÐ'ð &=×%CÑ%CÀIÐ\`×\jÑ\jÓ%kÑ"ˆIä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØð	%
ð  $Ÿ}Ÿ}‘C°$·,±,·.±.Ø—L‘Lñ	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ò;×FÑFÓHˆØÐ(Ð(rS   )r‘   r�   rO   rE   r•   r”   rt   r–   rŽ   rs   rw   ru   ©FN)NN©rf   rg   rh   ri   r7   rG   rn   rl   r   r   r!   Útuplerd   ro   rp   rq   s   @rQ   rˆ   rˆ   �   sl   ø† ÷#ð6 48Ø(,ñ	')à—|‘|ð')ð ×)Ñ)¨DÑ0ð')ð  ™ð	')ð
 Ð+Ñ,ð')ð 
ˆu�|‰|Ñ	÷')ó ')rS   rˆ   c                   óÆ   ^ • \ rS rSrSU 4S jjr   SS\R                  S\R                  S-  S\R                  S-  S\S-  S\	\
   S	\\R                     4S
 jjrSrU =r$ )ÚBertCrossAttentionéÒ   Nc                 ó,  >• [         TU ]  5         UR                  UR                  -  S:w  a7  [	        US5      (       d&  [        SUR                   SUR                   S35      eXl        UR                  U l        [        UR                  UR                  -  5      U l        U R                  U R                  -  U l	        U R                  S-  U l
        [        R                  " UR                  U R                  5      U l        [        R                  " UR                  U R                  5      U l        [        R                  " UR                  U R                  5      U l        [        R                   " UR"                  5      U l        X l        X0l        g r‹   )r6   r7   r:   rŽ   r\   r�   rO   rm   r�   r‘   rw   r   r’   rs   rt   ru   rC   r“   rE   r•   r–   r—   s       €rQ   r7   ÚBertCrossAttention.__init__Ó   s@  ø€ Ü‰ÑÔØ×Ñ × :Ñ :Ñ:¸aÓ?ÌÐPVÐXh×HiÑHiÜØ# F×$6Ñ$6Ð#7ð 8Ø ×4Ñ4Ð5°Qð8óð ð Œà#)×#=Ñ#=ˆÔ Ü#& v×'9Ñ'9¸F×<VÑ<VÑ'VÓ#WˆÔ Ø!×5Ñ5¸×8PÑ8PÑPˆÔØ×/Ñ/°Ñ5ˆŒä—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
Ü—9’9˜V×/Ñ/°×1CÑ1CÓDˆŒÜ—Y’Y˜v×1Ñ1°4×3EÑ3EÓFˆŒ
ä—z’z &×"EÑ"EÓFˆŒà"ŒØ"�rS   r™   Úencoder_hidden_statesrv   rš   rx   rW   c                 óz  • UR                   S S n/ UQSPU R                  P7nU R                  U5      R                  U5      R	                  SS5      nUb%  UR
                  R                  U R                  5      OSn	Ubb  U	(       a[  UR                  R                  U R                     R                  n
UR                  R                  U R                     R                  nOÄ/ UR                   S S QSPU R                  P7nU R                  U5      R                  U5      R	                  SS5      n
U R                  U5      R                  U5      R	                  SS5      nUbA  UR                  R                  X«U R                  5      u  p«SUR
                  U R                  '   [        R                   " U R"                  R$                  [&        5      nU" U UU
UU4U R(                  (       d  SOU R*                  R,                  U R.                  S.UD6u  pïUR0                  " / UQSP76 R3                  5       nXï4$ )Nr2   r'   r{   FTrœ   r�   )r]   r�   rs   rž   r€   Ú
is_updatedÚgetr–   Úcross_attention_cacheÚlayersÚkeysÚvaluesrt   ru   r¡   r   r¢   rO   r£   r†   r~   rE   r}   rw   r¤   rƒ   )rN   r™   r´   rv   rš   rx   r_   r¥   r¦   r¶   r§   r¨   Úkv_shaperª   r…   r„   s                   rQ   rd   ÚBertCrossAttention.forwardê   s  € ð $×)Ñ)¨#¨2Ð.ˆàC˜ÐC bÐC¨$×*BÑ*BÑCˆð —j‘j Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆàGVÑGb�_×/Ñ/×3Ñ3°D·N±NÔCÐhmˆ
ØÑ&®:à'×=Ñ=×DÑDÀTÇ^Á^ÑT×YÑYˆIØ)×?Ñ?×FÑFÀtÇ~Á~ÑV×]Ñ]‰KàXÐ.×4Ñ4°S°bÐ9ÐX¸2ÐX¸t×?WÑ?WÑXˆHØŸ™Ð!6Ó7×<Ñ<¸XÓF×PÑPÐQRÐTUÓVˆIØŸ*™*Ð%:Ó;×@Ñ@ÀÓJ×TÑTÐUVÐXYÓZˆKàÑ*à)8×)NÑ)N×)UÑ)UØ¨D¯N©Nó*Ñ&�	ð >B�×*Ñ*¨4¯>©>Ñ:ä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØð	%
ð  $Ÿ}Ÿ}‘C°$·,±,·.±.Ø—L‘Lñ	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ò;×FÑFÓHˆØÐ(Ð(rS   )r‘   r�   rO   rE   r•   rt   r–   rŽ   rs   rw   ru   r¬   )NNN)rf   rg   rh   ri   r7   rG   rn   rl   r   r   r!   r®   rd   ro   rp   rq   s   @rQ   r°   r°   Ò   s…   ø† ÷#ð4 ;?Ø37Ø6:ñ1)à—|‘|ð1)ð  %×0Ñ0°4Ñ7ð1)ð ×)Ñ)¨DÑ0ð	1)ð
 -¨tÑ3ð1)ð Ð+Ñ,ð1)ð 
ˆu�|‰|Ñ	÷1)ó 1)rS   r°   c                   óz   ^ • \ rS rSrU 4S jrS\R                  S\R                  S\R                  4S jrSrU =r	$ )ÚBertSelfOutputi  c                 ó(  >• [         TU ]  5         [        R                  " UR                  UR                  5      U l        [        R                  " UR                  UR                  S9U l        [        R                  " UR                  5      U l
        g ©Nr.   )r6   r7   r   r’   r:   ÚdenserA   rB   rC   rD   rE   rM   s     €rQ   r7   ÚBertSelfOutput.__init__  s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
ÜŸš f×&8Ñ&8¸f×>SÑ>SÑTˆŒÜ—z’z &×"<Ñ"<Ó=ˆ�rS   r™   Úinput_tensorrW   c                 óp   • U R                  U5      nU R                  U5      nU R                  X-   5      nU$ ©N©rÂ   rE   rA   ©rN   r™   rÄ   s      rQ   rd   ÚBertSelfOutput.forward%  ó5   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØŸ™ }Ñ'CÓDˆØÐrS   ©rA   rÂ   rE   ©
rf   rg   rh   ri   r7   rG   rn   rd   ro   rp   rq   s   @rQ   r¿   r¿     ó6   ø† õ>ð U§\¡\ð ÀÇÁð ÐRW×R^ÑR^÷ ò rS   r¿   c                   óæ   ^ • \ rS rSrSU 4S jjr    SS\R                  S\R                  S-  S\R                  S-  S\R                  S-  S\S-  S	\	\
   S
\\R                     4S jjrSrU =r$ )ÚBertAttentioni,  Nc                 óŒ   >• [         TU ]  5         X@l        U(       a  [        O[        nU" XUS9U l        [        U5      U l        g )N©r•   r–   )r6   r7   Úis_cross_attentionr°   rˆ   rN   r¿   Úoutput)rN   rO   r•   r–   rÒ   Úattention_classrP   s         €rQ   r7   ÚBertAttention.__init__-  s9   ø€ Ü‰ÑÔØ"4ÔÞ0BÕ,ÔHYˆÙ# FÈ9ÑUˆŒ	Ü$ VÓ,ˆ�rS   r™   rv   r´   Úencoder_attention_maskrš   rx   rW   c                 ó†   • U R                   (       d  UOUnU R                  " U4UUUS.UD6u  pxU R                  Xq5      nXx4$ )N)r´   rv   rš   )rÒ   rN   rÓ   )	rN   r™   rv   r´   rÖ   rš   rx   Úattention_outputr„   s	            rQ   rd   ÚBertAttention.forward4  s\   € ð 04×/F×/F™ÐLbˆØ)-¯ªØð*
à"7Ø)Ø+ñ	*
ð
 ñ*
Ñ&Ðð  Ÿ;™;Ð'7ÓGÐØÐ-Ð-rS   )rÒ   rÓ   rN   )FNF©NNNNr­   rq   s   @rQ   rÏ   rÏ   ,  sœ   ø† ÷-ð 48Ø:>Ø;?Ø(,ñ.à—|‘|ð.ð ×)Ñ)¨DÑ0ð.ð  %×0Ñ0°4Ñ7ð	.ð
 !&× 1Ñ 1°DÑ 8ð.ð  ™ð.ð Ð+Ñ,ð.ð 
ˆu�|‰|Ñ	÷.ó .rS   rÏ   c                   ób   ^ • \ rS rSrU 4S jrS\R                  S\R                  4S jrSrU =r	$ )ÚBertIntermediateiI  c                 ó  >• [         TU ]  5         [        R                  " UR                  UR
                  5      U l        [        UR                  [        5      (       a  [        UR                     U l        g UR                  U l        g rÆ   )r6   r7   r   r’   r:   Úintermediate_sizerÂ   rŸ   Ú
hidden_actÚstrr   Úintermediate_act_fnrM   s     €rQ   r7   ÚBertIntermediate.__init__J  s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3KÑ3KÓLˆŒ
Ü�f×'Ñ'¬×-Ñ-Ü'-¨f×.?Ñ.?Ñ'@ˆDÕ$à'-×'8Ñ'8ˆDÕ$rS   r™   rW   c                 óJ   • U R                  U5      nU R                  U5      nU$ rÆ   ©rÂ   rá   ©rN   r™   s     rQ   rd   ÚBertIntermediate.forwardR  s&   € ØŸ
™
 =Ó1ˆØ×0Ñ0°Ó?ˆØÐrS   rä   rÌ   rq   s   @rQ   rÜ   rÜ   I  s(   ø† õ9ð U§\¡\ð °e·l±l÷ ò rS   rÜ   c                   óz   ^ • \ rS rSrU 4S jrS\R                  S\R                  S\R                  4S jrSrU =r	$ )Ú
BertOutputiX  c                 ó(  >• [         TU ]  5         [        R                  " UR                  UR
                  5      U l        [        R                  " UR
                  UR                  S9U l        [        R                  " UR                  5      U l        g rÁ   )r6   r7   r   r’   rÞ   r:   rÂ   rA   rB   rC   rD   rE   rM   s     €rQ   r7   ÚBertOutput.__init__Y  s`   ø€ Ü‰ÑÔÜ—Y’Y˜v×7Ñ7¸×9KÑ9KÓLˆŒ
ÜŸš f×&8Ñ&8¸f×>SÑ>SÑTˆŒÜ—z’z &×"<Ñ"<Ó=ˆ�rS   r™   rÄ   rW   c                 óp   • U R                  U5      nU R                  U5      nU R                  X-   5      nU$ rÆ   rÇ   rÈ   s      rQ   rd   ÚBertOutput.forward_  rÊ   rS   rË   rÌ   rq   s   @rQ   rè   rè   X  rÍ   rS   rè   c                   óæ   ^ • \ rS rSrSU 4S jjr    SS\R                  S\R                  S-  S\R                  S-  S\R                  S-  S\S-  S	\	\
   S
\R                  4S jjrS rSrU =r$ )Ú	BertLayerif  Nc                 óŠ  >• [         TU ]  5         UR                  U l        SU l        [	        XR
                  US9U l        UR
                  U l        UR                  U l        U R                  (       a0  U R
                  (       d  [        U  S35      e[	        USUSS9U l	        [        U5      U l        [        U5      U l        g )Nr'   rÑ   z> should be used as a decoder model if cross attention is addedFT)r•   r–   rÒ   )r6   r7   Úchunk_size_feed_forwardÚseq_len_dimrÏ   r”   Ú	attentionÚadd_cross_attentionr�   ÚcrossattentionrÜ   Úintermediaterè   rÓ   )rN   rO   r–   rP   s      €rQ   r7   ÚBertLayer.__init__g  s«   ø€ Ü‰ÑÔØ'-×'EÑ'EˆÔ$ØˆÔÜ& v×9JÑ9JÐV_Ñ`ˆŒØ ×+Ñ+ˆŒØ#)×#=Ñ#=ˆÔ Ø×#×#Ø—?—?Ü  D 6Ð)gÐ!hÓiÐiÜ"/ØØØ#Ø#'ñ	#ˆDÔô -¨VÓ4ˆÔÜ  Ó(ˆ�rS   r™   rv   r´   rÖ   rš   rx   rW   c                 ó2  • U R                   " UU4SU0UD6u  pxUn	U R                  (       a?  Ub<  [        U S5      (       d  [        SU  S35      eU R                  " US UU4SU0UD6u  p¨U
n	[        U R                  U R                  U R                  U	5      nU$ )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”   r\   r�   rô   r   Úfeed_forward_chunkrð   rñ   )rN   r™   rv   r´   rÖ   rš   rx   Úself_attention_outputÚ_rØ   Úcross_attention_outputÚlayer_outputs               rQ   rd   ÚBertLayer.forwardz  sà   € ð $(§>¢>ØØñ$
ð ,ð$
ð ñ	$
Ñ Ðð 1Ðà�?�?Ð4Ñ@Ü˜4Ð!1×2Ñ2Ü Ø=¸d¸Vð DDð Dóð ð
 )-×(;Ò(;Ø%ØØ%Ø&ñ	)ð
 !0ð)ð ñ)Ñ%Ð"ð  6Ðä0Ø×#Ñ# T×%AÑ%AÀ4×CSÑCSÐUeó
ˆð ÐrS   c                 óJ   • U R                  U5      nU R                  X!5      nU$ rÆ   )rõ   rÓ   )rN   rØ   Úintermediate_outputrü   s       rQ   rø   ÚBertLayer.feed_forward_chunk¡  s)   € Ø"×/Ñ/Ð0@ÓAÐØ—{‘{Ð#6ÓIˆØÐrS   )ró   rò   rð   rô   rõ   r”   rÓ   rñ   rÆ   rÚ   )rf   rg   rh   ri   r7   rG   rn   rl   r   r   r!   rd   rø   ro   rp   rq   s   @rQ   rî   rî   f  s�   ø† ÷)ð, 48Ø:>Ø;?Ø(,ñ%à—|‘|ð%ð ×)Ñ)¨DÑ0ð%ð  %×0Ñ0°4Ñ7ð	%ð
 !&× 1Ñ 1°DÑ 8ð%ð  ™ð%ð Ð+Ñ,ð%ð 
�‰õ%÷Nð rS   rî   c                   óô   ^ • \ rS rSrU 4S jr     SS\R                  S\R                  S-  S\R                  S-  S\R                  S-  S\S-  S	\	S-  S
\
\   S\\R                     \-  4S jjrSrU =r$ )ÚBertEncoderi§  c           
      óÄ   >• [         TU ]  5         Xl        [        R                  " [        UR                  5       Vs/ s H  n[        XS9PM     sn5      U l        g s  snf )N)r–   )	r6   r7   rO   r   Ú
ModuleListÚrangeÚnum_hidden_layersrî   Úlayer)rN   rO   ÚirP   s      €rQ   r7   ÚBertEncoder.__init__¨  sH   ø€ Ü‰ÑÔØŒÜ—]’]ÌEÐRX×RjÑRjÔLkÓ#lÒLkÀq¤I¨fÔ$BÑLkÑ#lÓmˆ�
ùÒ#ls   ½ANr™   rv   r´   rÖ   rš   Ú	use_cacherx   rW   c                 ó„   • [        U R                  5       H  u  p‰U	" UUU4UUS.UD6nM     [        UU(       a  US9$ S S9$ )N)rÖ   rš   )Úlast_hidden_staterš   )Ú	enumerater  r   )
rN   r™   rv   r´   rÖ   rš   r
  rx   r  Úlayer_modules
             rQ   rd   ÚBertEncoder.forward­  sg   € ô  )¨¯©Ö4‰OˆAÙ(ØØØ%ðð (>Ø /ñð ñŠMñ  5ô 9Ø+Þ/8˜Oñ
ð 	
à>Bñ
ð 	
rS   )rO   r  )NNNNN)rf   rg   rh   ri   r7   rG   rn   rl   r   Úboolr   r!   r®   r   rd   ro   rp   rq   s   @rQ   r  r  §  s´   ø† õnð 48Ø:>Ø;?Ø(,Ø!%ñ
à—|‘|ð
ð ×)Ñ)¨DÑ0ð
ð  %×0Ñ0°4Ñ7ð	
ð
 !&× 1Ñ 1°DÑ 8ð
ð  ™ð
ð ˜$‘;ð
ð Ð+Ñ,ð
ð 
ˆu�|‰|Ñ	ÐHÑ	H÷
ó 
rS   r  c                   ób   ^ • \ rS rSrU 4S jrS\R                  S\R                  4S jrSrU =r	$ )Ú
BertPooleriÇ  c                 ó¶   >• [         TU ]  5         [        R                  " UR                  UR                  5      U l        [        R                  " 5       U l        g rÆ   )r6   r7   r   r’   r:   rÂ   ÚTanhÚ
activationrM   s     €rQ   r7   ÚBertPooler.__init__È  s9   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
ÜŸ'š'›)ˆ�rS   r™   rW   c                 ó\   • US S 2S4   nU R                  U5      nU R                  U5      nU$ )Nr   )rÂ   r  )rN   r™   Úfirst_token_tensorÚpooled_outputs       rQ   rd   ÚBertPooler.forwardÍ  s6   € ð +ª1¨a¨4Ñ0ÐØŸ
™
Ð#5Ó6ˆØŸ™¨Ó6ˆØÐrS   )r  rÂ   rÌ   rq   s   @rQ   r  r  Ç  s(   ø† õ$ð
 U§\¡\ð °e·l±l÷ ò rS   r  c                   ób   ^ • \ rS rSrU 4S jrS\R                  S\R                  4S jrSrU =r	$ )ÚBertPredictionHeadTransformiÖ  c                 óp  >• [         TU ]  5         [        R                  " UR                  UR                  5      U l        [        UR                  [        5      (       a  [        UR                     U l
        OUR                  U l
        [        R                  " UR                  UR                  S9U l        g rÁ   )r6   r7   r   r’   r:   rÂ   rŸ   rß   rà   r   Útransform_act_fnrA   rB   rM   s     €rQ   r7   Ú$BertPredictionHeadTransform.__init__×  s~   ø€ Ü‰ÑÔÜ—Y’Y˜v×1Ñ1°6×3EÑ3EÓFˆŒ
Ü�f×'Ñ'¬×-Ñ-Ü$*¨6×+<Ñ+<Ñ$=ˆDÕ!à$*×$5Ñ$5ˆDÔ!ÜŸš f×&8Ñ&8¸f×>SÑ>SÑTˆ�rS   r™   rW   c                 ól   • U R                  U5      nU R                  U5      nU R                  U5      nU$ rÆ   )rÂ   r  rA   rå   s     rQ   rd   Ú#BertPredictionHeadTransform.forwardà  s4   € ØŸ
™
 =Ó1ˆØ×-Ñ-¨mÓ<ˆØŸ™ }Ó5ˆØÐrS   )rA   rÂ   r  rÌ   rq   s   @rQ   r  r  Ö  s)   ø† õUð U§\¡\ð °e·l±l÷ ò rS   r  c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )ÚBertLMPredictionHeadiç  c                 ó  >• [         TU ]  5         [        U5      U l        [        R
                  " UR                  UR                  SS9U l        [        R                  " [        R                  " UR                  5      5      U l        g )NT)Úbias)r6   r7   r  Ú	transformr   r’   r:   r9   ÚdecoderÚ	ParameterrG   rJ   r%  rM   s     €rQ   r7   ÚBertLMPredictionHead.__init__è  s[   ø€ Ü‰ÑÔÜ4°VÓ<ˆŒô —y’y ×!3Ñ!3°V×5FÑ5FÈTÑRˆŒÜ—L’L¤§¢¨V×->Ñ->Ó!?Ó@ˆ�	rS   c                 óJ   • U R                  U5      nU R                  U5      nU$ rÆ   )r&  r'  rå   s     rQ   rd   ÚBertLMPredictionHead.forwardñ  s$   € ØŸ™ }Ó5ˆØŸ™ ]Ó3ˆØÐrS   )r%  r'  r&  ©rf   rg   rh   ri   r7   rd   ro   rp   rq   s   @rQ   r#  r#  ç  s   ø† õA÷ð rS   r#  c                   ób   ^ • \ rS rSrU 4S jrS\R                  S\R                  4S jrSrU =r	$ )ÚBertOnlyMLMHeadi÷  c                 óB   >• [         TU ]  5         [        U5      U l        g rÆ   )r6   r7   r#  ÚpredictionsrM   s     €rQ   r7   ÚBertOnlyMLMHead.__init__ø  s   ø€ Ü‰ÑÔÜ/°Ó7ˆÕrS   Úsequence_outputrW   c                 ó(   • U R                  U5      nU$ rÆ   ©r0  )rN   r2  Úprediction_scoress      rQ   rd   ÚBertOnlyMLMHead.forwardü  s   € Ø ×,Ñ,¨_Ó=ÐØ Ð rS   r4  rÌ   rq   s   @rQ   r.  r.  ÷  s(   ø† õ8ð! u§|¡|ð !¸¿¹÷ !ò !rS   r.  c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )ÚBertOnlyNSPHeadi  c                 ón   >• [         TU ]  5         [        R                  " UR                  S5      U l        g ©Nr{   )r6   r7   r   r’   r:   Úseq_relationshiprM   s     €rQ   r7   ÚBertOnlyNSPHead.__init__  s'   ø€ Ü‰ÑÔÜ "§	¢	¨&×*<Ñ*<¸aÓ @ˆÕrS   c                 ó(   • U R                  U5      nU$ rÆ   ©r;  )rN   r  Úseq_relationship_scores      rQ   rd   ÚBertOnlyNSPHead.forward  s   € Ø!%×!6Ñ!6°}Ó!EÐØ%Ð%rS   r>  r,  rq   s   @rQ   r8  r8    s   ø† õA÷&ð &rS   r8  c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )ÚBertPreTrainingHeadsi  c                 óŽ   >• [         TU ]  5         [        U5      U l        [        R
                  " UR                  S5      U l        g r:  )r6   r7   r#  r0  r   r’   r:   r;  rM   s     €rQ   r7   ÚBertPreTrainingHeads.__init__  s4   ø€ Ü‰ÑÔÜ/°Ó7ˆÔÜ "§	¢	¨&×*<Ñ*<¸aÓ @ˆÕrS   c                 óL   • U R                  U5      nU R                  U5      nX44$ rÆ   ©r0  r;  )rN   r2  r  r5  r?  s        rQ   rd   ÚBertPreTrainingHeads.forward  s-   € Ø ×,Ñ,¨_Ó=ÐØ!%×!6Ñ!6°}Ó!EÐØ Ð8Ð8rS   rF  r,  rq   s   @rQ   rB  rB    s   ø† õA÷
9ð 9rS   rB  c                   óx   ^ • \ rS rSr\rSrSrSrSr	Sr
Sr\\\S.r\R"                  " 5       U 4S j5       rSrU =r$ )ÚBertPreTrainedModeli  ÚbertT)r™   Ú
attentionsÚcross_attentionsc                 ó²  >• [         TU ]  U5        [        U[        5      (       a!  [        R
                  " UR                  5        g[        U[        5      (       a|  [        R                  " UR                  [        R                  " UR                  R                  S   5      R                  S5      5        [        R
                  " UR                  5        gg)zInitialize the weightsr2   r1   N)r6   Ú_init_weightsrŸ   r#  ÚinitÚzeros_r%  r*   Úcopy_r0   rG   rH   r]   rI   r4   )rN   rr   rP   s     €rQ   rN  Ú!BertPreTrainedModel._init_weights&  s�   ø€ ô 	‰Ñ˜fÔ%Ü�fÔ2×3Ñ3Ü�KŠK˜Ÿ™Õ$Ü˜¤×/Ñ/Ü�JŠJ�v×*Ñ*¬E¯LªL¸×9LÑ9L×9RÑ9RÐSUÑ9VÓ,W×,^Ñ,^Ð_fÓ,gÔhÜ�KŠK˜×-Ñ-Õ.ð 0rS   © )rf   rg   rh   ri   r(   Úconfig_classÚbase_model_prefixÚsupports_gradient_checkpointingÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_supports_attention_backendrî   rˆ   r°   Ú_can_record_outputsrG   Úno_gradrN  ro   rp   rq   s   @rQ   rI  rI    sV   ø† à€LØÐØ&*Ð#ØÐØ€NØÐØ"&Ðà"Ø'Ø.ñÐð ‡]‚]ƒ_ô/ó ö/rS   rI  z0
    Output type of [`BertForPreTraining`].
    )Úcustom_introc                   óî   • \ rS rSr% SrSr\R                  S-  \S'   Sr	\R                  S-  \S'   Sr
\R                  S-  \S'   Sr\\R                     S-  \S'   Sr\\R                     S-  \S'   S	rg)
ÚBertForPreTrainingOutputi1  ar  
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™   rK  rS  )rf   rg   rh   ri   rj   r`  rG   rl   Ú__annotations__ra  rb  r™   r®   rK  ro   rS  rS   rQ   r_  r_  1  s~   ‡ ñ	ð &*€Dˆ%×
Ñ
˜dÑ
"Ó)Ø26Ð�u×(Ñ(¨4Ñ/Ó6Ø8<Ð˜U×.Ñ.°Ñ5Ó<Ø59€M�5˜×*Ñ*Ñ+¨dÑ2Ó9Ø26€J��e×'Ñ'Ñ(¨4Ñ/Ö6rS   r_  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                   ó˜  ^ • \ rS rSrSS/rSU 4S jjrS rS r\\	\
         SS\R                  S-  S	\R                  S-  S
\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S\S-  S\S-  S\\   S\\R                     \-  4S jj5       5       5       rS rSrU =r$ )Ú	BertModeliJ  r*   rî   c                 óÐ   >• [         TU ]  U5        Xl        SU l        [	        U5      U l        [        U5      U l        U(       a  [        U5      OSU l	        U R                  5         g)z^
add_pooling_layer (bool, *optional*, defaults to `True`):
    Whether to add a pooling layer
FN)r6   r7   rO   Úgradient_checkpointingr*   rc   r  Úencoderr  ÚpoolerÚ	post_init)rN   rO   Úadd_pooling_layerrP   s      €rQ   r7   ÚBertModel.__init__Y  sS   ø€ ô
 	‰Ñ˜Ô ØŒØ&+ˆÔ#ä(¨Ó0ˆŒÜ" 6Ó*ˆŒæ,=”j Ô(À4ˆŒð 	�‰ÕrS   c                 ó.   • U R                   R                  $ rÆ   ©rc   r<   ©rN   s    rQ   Úget_input_embeddingsÚBertModel.get_input_embeddingsj  s   € Ø�‰×.Ñ.Ð.rS   c                 ó$   • XR                   l        g rÆ   rn  )rN   ru   s     rQ   Úset_input_embeddingsÚBertModel.set_input_embeddingsm  s   € Ø*/�‰Õ'rS   NrT   rv   r4   r0   rU   r´   rÖ   rš   r
  rx   rW   c
           
      ó¨  • US L US L-  (       a  [        S5      eU R                  R                  (       a  U	b  U	OU R                  R                  n	OSn	U	(       ab  Uc_  Uc  U R                  R                  (       a.  [        [        U R                  S9[        U R                  S95      O[        U R                  S9nUb  UR                  5       OSnU R                  UUUUUS9nU R                  UUUUUS9u  p'U R                  " U4UUUUU	US.U
D6nUR                  nU R                  b  U R                  U5      OS n[        UUUR                  S9$ )	Nz:You must specify exactly one of input_ids or inputs_embedsF)rO   r   )rT   r0   r4   rU   rV   )rv   rÖ   Úembedding_outputr´   rš   )rv   r´   rÖ   rš   r
  r0   )r  Úpooler_outputrš   )r�   rO   r”   r
  Úis_encoder_decoderr   r   Úget_seq_lengthrc   Ú_create_attention_masksrh  r  ri  r   rš   )rN   rT   rv   r4   r0   rU   r´   rÖ   rš   r
  rx   rV   rv  Úencoder_outputsr2  r  s                   rQ   rd   ÚBertModel.forwardp  sw  € ð  ˜Ð -°tÐ";×<ÜÐYÓZÐZà�;‰;×!×!Ø%.Ñ%:™	ÀÇÁ×@UÑ@U‰IàˆIæ˜Ñ0ð )Ñ4¸¿¹×8V×8Vô $¤L¸¿¹Ñ$DÄlÐZ^×ZeÑZeÑFfÔgä!¨¯©Ñ5ð ð FUÑE` ×!?Ñ!?Ô!AÐfgÐàŸ?™?ØØ%Ø)Ø'Ø#9ð +ð 
Ðð 26×1MÑ1MØ)Ø#9Ø-Ø"7Ø+ð 2Nð 2
Ñ.ˆð Ÿ,š,Øð	
à)Ø"7Ø#9Ø+ØØ%ñ	
ð ñ	
ˆð *×;Ñ;ˆØ8<¿¹Ñ8O˜Ÿ™ OÔ4ÐUYˆä;Ø-Ø'Ø+×;Ñ;ñ
ð 	
rS   c                 óÈ   • U R                   R                  (       a  [        U R                   UUUS9nO[        U R                   UUS9nUb  [        U R                   UUUS9nX4$ )N)rO   rU   rv   rš   )rO   rU   rv   )rO   rU   rv   r´   )rO   r”   r   r   )rN   rv   rÖ   rv  r´   rš   s         rQ   rz  Ú!BertModel._create_attention_masks´  sr   € ð �;‰;×!×!Ü/Ø—{‘{Ø.Ø-Ø /ñ	‰Nô 7Ø—{‘{Ø.Ø-ñˆNð "Ñ-Ü%>Ø—{‘{Ø.Ø5Ø&;ñ	&Ð"ð Ð5Ð5rS   )rO   rc   rh  rg  ri  )T)	NNNNNNNNN)rf   rg   rh   ri   Ú_no_split_modulesr7   rp  rs  r%   r&   r"   rG   rn   r   r  r   r!   r®   r   rd   rz  ro   rp   rq   s   @rQ   re  re  J  s3  ø† ð *¨;Ð7Ð÷ò"/ò0ð  ØØð *.Ø.2Ø.2Ø,0Ø-1Ø59Ø6:Ø(,Ø!%ñ?
à—<‘< $Ñ&ð?
ð Ÿ™ tÑ+ð?
ð Ÿ™ tÑ+ð	?
ð
 —l‘l TÑ)ð?
ð —|‘| dÑ*ð?
ð  %Ÿ|™|¨dÑ2ð?
ð !&§¡¨tÑ 3ð?
ð  ™ð?
ð ˜$‘;ð?
ð Ð+Ñ,ð?
ð 
ˆu�|‰|Ñ	ÐKÑ	Kô?
ó ó ó  ð?
÷B6ð 6rS   re  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                   ón  ^ • \ rS rSrSSS.rU 4S jrS rS r\\	       SS	\
R                  S-  S
\
R                  S-  S\
R                  S-  S\
R                  S-  S\
R                  S-  S\
R                  S-  S\
R                  S-  S\\   S\\
R                     \-  4S jj5       5       rSrU =r$ )ÚBertForPreTrainingiÕ  ú&bert.embeddings.word_embeddings.weightúcls.predictions.bias©zcls.predictions.decoder.weightzcls.predictions.decoder.biasc                 ó„   >• [         TU ]  U5        [        U5      U l        [	        U5      U l        U R                  5         g rÆ   )r6   r7   re  rJ  rB  Úclsrj  rM   s     €rQ   r7   ÚBertForPreTraining.__init__á  s4   ø€ Ü‰Ñ˜Ô ä˜fÓ%ˆŒ	Ü'¨Ó/ˆŒð 	�‰ÕrS   c                 óB   • U R                   R                  R                  $ rÆ   ©r†  r0  r'  ro  s    rQ   Úget_output_embeddingsÚ(BertForPreTraining.get_output_embeddingsê  ó   € Ø�x‰x×#Ñ#×+Ñ+Ð+rS   c                 ó‚   • XR                   R                  l        UR                  U R                   R                  l        g rÆ   ©r†  r0  r'  r%  ©rN   Únew_embeddingss     rQ   Úset_output_embeddingsÚ(BertForPreTraining.set_output_embeddingsí  ó*   € Ø'5�‰×ÑÔ$Ø$2×$7Ñ$7ˆ�‰×ÑÕ!rS   NrT   rv   r4   r0   rU   ÚlabelsÚnext_sentence_labelrx   rW   c           	      ó   • U R                   " U4UUUUSS.UD6n	U	SS u  p«U R                  X«5      u  pÍSnUbv  Ubs  [        5       nU" UR                  SU R                  R
                  5      UR                  S5      5      nU" UR                  SS5      UR                  S5      5      nUU-   n[        UUUU	R                  U	R                  S9$ )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]`
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©rv   r4   r0   rU   Úreturn_dictNr{   r2   )r`  ra  rb  r™   rK  )	rJ  r†  r   rž   rO   r9   r_  r™   rK  )rN   rT   rv   r4   r0   rU   r”  r•  rx   Úoutputsr2  r  r5  r?  Ú
total_lossÚloss_fctÚmasked_lm_lossÚnext_sentence_losss                     rQ   rd   ÚBertForPreTraining.forwardñ  sû   € ðR —)’)Øð
à)Ø)Ø%Ø'Øñ
ð ñ
ˆð *1°°!¨Ñ&ˆØ48·H±H¸_Ó4\Ñ1Ðàˆ
ØÑÐ"5Ñ"AÜ'Ó)ˆHÙ%Ð&7×&<Ñ&<¸RÀÇÁ×AWÑAWÓ&XÐZ`×ZeÑZeÐfhÓZiÓjˆNÙ!)Ð*@×*EÑ*EÀbÈ!Ó*LÐNa×NfÑNfÐgiÓNjÓ!kÐØ'Ð*<Ñ<ˆJä'ØØ/Ø$:Ø!×/Ñ/Ø×)Ñ)ñ
ð 	
rS   ©rJ  r†  ©NNNNNNN)rf   rg   rh   ri   Ú_tied_weights_keysr7   rŠ  r‘  r$   r"   rG   rn   r   r!   r®   r_  rd   ro   rp   rq   s   @rQ   r�  r�  Õ  s  ø† ð +SØ(>ñÐõ
ò,ò8ð Øð *.Ø.2Ø.2Ø,0Ø-1Ø&*Ø37ñA
à—<‘< $Ñ&ðA
ð Ÿ™ tÑ+ðA
ð Ÿ™ tÑ+ð	A
ð
 —l‘l TÑ)ðA
ð —|‘| dÑ*ðA
ð —‘˜tÑ#ðA
ð #Ÿ\™\¨DÑ0ðA
ð Ð+Ñ,ðA
ð 
ˆu�|‰|Ñ	Ð7Ñ	7ôA
ó ó öA
rS   r�  zP
    Bert Model with a `language modeling` head on top for CLM fine-tuning.
    c                   óÆ  ^ • \ rS rSrSSS.rU 4S jrS rS r\\	           SS	\
R                  S-  S
\
R                  S-  S\
R                  S-  S\
R                  S-  S\
R                  S-  S\
R                  S-  S\
R                  S-  S\
R                  S-  S\S-  S\S-  S\\
R                  -  S\\   S\\
R                     \-  4S jj5       5       rSrU =r$ )ÚBertLMHeadModeli7  r‚  rƒ  r„  c                 óÎ   >• [         TU ]  U5        UR                  (       d  [        R	                  S5        [        USS9U l        [        U5      U l        U R                  5         g )NzLIf you want to use `BertLMHeadModel` as a standalone, add `is_decoder=True.`F©rk  ©
r6   r7   r”   ÚloggerÚwarningre  rJ  r.  r†  rj  rM   s     €rQ   r7   ÚBertLMHeadModel.__init__B  sL   ø€ Ü‰Ñ˜Ô à× × Ü�N‰NÐiÔjä˜f¸Ñ>ˆŒ	Ü" 6Ó*ˆŒð 	�‰ÕrS   c                 óB   • U R                   R                  R                  $ rÆ   r‰  ro  s    rQ   rŠ  Ú%BertLMHeadModel.get_output_embeddingsN  rŒ  rS   c                 ó‚   • XR                   R                  l        UR                  U R                   R                  l        g rÆ   rŽ  r�  s     rQ   r‘  Ú%BertLMHeadModel.set_output_embeddingsQ  r“  rS   NrT   rv   r4   r0   rU   r´   rÖ   r”  rš   r
  Úlogits_to_keeprx   rW   c                 ó¤  • Ub  Sn
U R                   " U4UUUUUUU	U
SS.	UD6nUR                  n[        U[        5      (       a  [	        U* S5      OUnU R                  USS2USS24   5      nSnUb)  U R                  " SUX€R                  R                  S.UD6n[        UUUR                  UR                  UR                  UR                  S9$ )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)	rv   r4   r0   rU   r´   rÖ   rš   r
  r˜  )Úlogitsr”  r9   )r`  r°  rš   r™   rK  rL  rS  )rJ  r  rŸ   rm   Úslicer†  Úloss_functionrO   r9   r   rš   r™   rK  rL  )rN   rT   rv   r4   r0   rU   r´   rÖ   r”  rš   r
  r®  rx   r™  r™   Úslice_indicesr°  r`  s                     rQ   rd   ÚBertLMHeadModel.forwardU  sù   € ð. ÑØˆIà@DÇ	Â	ØðA
à)Ø)Ø%Ø'Ø"7Ø#9Ø+ØØñA
ð ñA
ˆð  ×1Ñ1ˆä8BÀ>ÔSV×8WÑ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜-ª¨=º!Ð(;Ñ<Ó=ˆàˆØÑØ×%Ò%Ðp¨V¸FÏ{É{×OeÑOeÑpÐioÑpˆDä0ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø$×5Ñ5ñ
ð 	
rS   rŸ  )NNNNNNNNNNr   )rf   rg   rh   ri   r¡  r7   rŠ  r‘  r$   r"   rG   rn   r   r  rm   r   r!   r®   r   rd   ro   rp   rq   s   @rQ   r£  r£  7  sP  ø† ð +SØ(>ñÐõ

ò,ò8ð Øð *.Ø.2Ø.2Ø,0Ø-1Ø59Ø6:Ø&*Ø(,Ø!%Ø-.ñ6
à—<‘< $Ñ&ð6
ð Ÿ™ tÑ+ð6
ð Ÿ™ tÑ+ð	6
ð
 —l‘l TÑ)ð6
ð —|‘| dÑ*ð6
ð  %Ÿ|™|¨dÑ2ð6
ð !&§¡¨tÑ 3ð6
ð —‘˜tÑ#ð6
ð  ™ð6
ð ˜$‘;ð6
ð ˜eŸl™lÑ*ð6
ð Ð+Ñ,ð6
ð 
ˆu�|‰|Ñ	Ð@Ñ	@ô6
ó ó ö6
rS   r£  c                   óŽ  ^ • \ rS rSrSSS.rU 4S jrS rS r\\	        SS	\
R                  S-  S
\
R                  S-  S\
R                  S-  S\
R                  S-  S\
R                  S-  S\
R                  S-  S\
R                  S-  S\
R                  S-  S\\   S\\
R                     \-  4S jj5       5       rSrU =r$ )ÚBertForMaskedLMi�  r‚  rƒ  r„  c                 óÎ   >• [         TU ]  U5        UR                  (       a  [        R	                  S5        [        USS9U l        [        U5      U l        U R                  5         g )NzkIf you want to use `BertForMaskedLM` make sure `config.is_decoder=False` for bi-directional self-attention.Fr¥  r¦  rM   s     €rQ   r7   ÚBertForMaskedLM.__init__—  sR   ø€ Ü‰Ñ˜Ô à××Ü�N‰Nð1ôô
 ˜f¸Ñ>ˆŒ	Ü" 6Ó*ˆŒð 	�‰ÕrS   c                 óB   • U R                   R                  R                  $ rÆ   r‰  ro  s    rQ   rŠ  Ú%BertForMaskedLM.get_output_embeddings¦  rŒ  rS   c                 ó‚   • XR                   R                  l        UR                  U R                   R                  l        g rÆ   rŽ  r�  s     rQ   r‘  Ú%BertForMaskedLM.set_output_embeddings©  r“  rS   NrT   rv   r4   r0   rU   r´   rÖ   r”  rx   rW   c	                 ó:  • U R                   " U4UUUUUUSS.U	D6n
U
S   nU R                  U5      nSnUbF  [        5       nU" UR                  SU R                  R
                  5      UR                  S5      5      n[        UUU
R                  U
R                  S9$ )az  
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)rv   r4   r0   rU   r´   rÖ   r˜  r   Nr2   ©r`  r°  r™   rK  )	rJ  r†  r   rž   rO   r9   r   r™   rK  )rN   rT   rv   r4   r0   rU   r´   rÖ   r”  rx   r™  r2  r5  rœ  r›  s                  rQ   rd   ÚBertForMaskedLM.forward­  s¼   € ð( —)’)Øð

à)Ø)Ø%Ø'Ø"7Ø#9Øñ

ð ñ

ˆð " !™*ˆØ ŸH™H _Ó5ÐàˆØÑÜ'Ó)ˆHÙ%Ð&7×&<Ñ&<¸RÀÇÁ×AWÑAWÓ&XÐZ`×ZeÑZeÐfhÓZiÓjˆNäØØ$Ø!×/Ñ/Ø×)Ñ)ñ	
ð 	
rS   rŸ  )NNNNNNNN)rf   rg   rh   ri   r¡  r7   rŠ  r‘  r$   r"   rG   rn   r   r!   r®   r   rd   ro   rp   rq   s   @rQ   r¶  r¶  �  s  ø† ð +SØ(>ñÐõ
ò,ò8ð Øð *.Ø.2Ø.2Ø,0Ø-1Ø59Ø6:Ø&*ñ+
à—<‘< $Ñ&ð+
ð Ÿ™ tÑ+ð+
ð Ÿ™ tÑ+ð	+
ð
 —l‘l TÑ)ð+
ð —|‘| dÑ*ð+
ð  %Ÿ|™|¨dÑ2ð+
ð !&§¡¨tÑ 3ð+
ð —‘˜tÑ#ð+
ð Ð+Ñ,ð+
ð 
ˆu�|‰|Ñ	˜~Ñ	-ô+
ó ó ö+
rS   r¶  zT
    Bert Model with a `next sentence prediction (classification)` head on top.
    c                   ó8  ^ • \ rS rSrU 4S jr\\      SS\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S	\R                  S-  S
\	\
   S\\R                     \-  4S jj5       5       rSrU =r$ )ÚBertForNextSentencePredictioniÝ  c                 ó„   >• [         TU ]  U5        [        U5      U l        [	        U5      U l        U R                  5         g rÆ   )r6   r7   re  rJ  r8  r†  rj  rM   s     €rQ   r7   Ú&BertForNextSentencePrediction.__init__ã  s4   ø€ Ü‰Ñ˜Ô ä˜fÓ%ˆŒ	Ü" 6Ó*ˆŒð 	�‰ÕrS   NrT   rv   r4   r0   rU   r”  rx   rW   c           	      ó  • U R                   " U4UUUUSS.UD6nUS   n	U R                  U	5      n
SnUb2  [        5       nU" U
R                  SS5      UR                  S5      5      n[	        UU
UR
                  UR                  S9$ )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
```
Tr—  r'   Nr2   r{   r¾  )rJ  r†  r   rž   r   r™   rK  )rN   rT   rv   r4   r0   rU   r”  rx   r™  r  Úseq_relationship_scoresr�  r›  s                rQ   rd   Ú%BertForNextSentencePrediction.forwardì  s«   € ðN —)’)Øð
à)Ø)Ø%Ø'Øñ
ð ñ
ˆð   ™
ˆà"&§(¡(¨=Ó"9Ðà!ÐØÑÜ'Ó)ˆHÙ!)Ð*A×*FÑ*FÀrÈ1Ó*MÈvÏ{É{Ð[]ËÓ!_Ðä*Ø#Ø*Ø!×/Ñ/Ø×)Ñ)ñ	
ð 	
rS   rŸ  ©NNNNNN)rf   rg   rh   ri   r7   r$   r"   rG   rn   r   r!   r®   r   rd   ro   rp   rq   s   @rQ   rÁ  rÁ  Ý  sÑ   ø† õð Øð *.Ø.2Ø.2Ø,0Ø-1Ø&*ñ=
à—<‘< $Ñ&ð=
ð Ÿ™ tÑ+ð=
ð Ÿ™ tÑ+ð	=
ð
 —l‘l TÑ)ð=
ð —|‘| dÑ*ð=
ð —‘˜tÑ#ð=
ð Ð+Ñ,ð=
ð 
ˆu�|‰|Ñ	Ð:Ñ	:ô=
ó ó ö=
rS   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                   ó8  ^ • \ rS rSrU 4S jr\\      SS\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S	\R                  S-  S
\	\
   S\\R                     \-  4S jj5       5       rSrU =r$ )ÚBertForSequenceClassificationi.  c                 ór  >• [         TU ]  U5        UR                  U l        Xl        [	        U5      U l        UR                  b  UR                  OUR                  n[        R                  " U5      U l
        [        R                  " UR                  UR                  5      U l        U R                  5         g rÆ   )r6   r7   Ú
num_labelsrO   re  rJ  Úclassifier_dropoutrD   r   rC   rE   r’   r:   Ú
classifierrj  ©rN   rO   rÌ  rP   s      €rQ   r7   Ú&BertForSequenceClassification.__init__5  s�   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒØŒä˜fÓ%ˆŒ	à)/×)BÑ)BÑ)NˆF×%Ò%ÐTZ×TnÑTnð 	ô —z’zÐ"4Ó5ˆŒÜŸ)š) F×$6Ñ$6¸×8IÑ8IÓJˆŒð 	�‰ÕrS   NrT   rv   r4   r0   rU   r”  rx   rW   c           	      óê  • U R                   " U4UUUUSS.UD6nUS   n	U R                  U	5      n	U R                  U	5      n
SnUGbŽ  U R                  R                  c‘  U R
                  S:X  a  SU R                  l        OoU R
                  S:”  aN  UR                  [        R                  :X  d  UR                  [        R                  :X  a  SU R                  l        OSU R                  l        U R                  R                  S:X  aI  [        5       nU R
                  S:X  a&  U" U
R                  5       UR                  5       5      nOŒU" X¦5      nOƒU R                  R                  S:X  a=  [        5       nU" U
R                  SU R
                  5      UR                  S5      5      nO,U R                  R                  S:X  a  [        5       nU" X¦5      n[        UU
UR                   UR"                  S	9$ )
ae  
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).
Tr—  r'   NÚ
regressionÚsingle_label_classificationÚmulti_label_classificationr2   r¾  )rJ  rE   rÍ  rO   Úproblem_typerË  r5   rG   rL   rm   r   Úsqueezer   rž   r   r   r™   rK  )rN   rT   rv   r4   r0   rU   r”  rx   r™  r  r°  r`  r›  s                rQ   rd   Ú%BertForSequenceClassification.forwardD  s£  € ð$ —)’)Øð
à)Ø)Ø%Ø'Øñ
ð ñ
ˆð   ™
ˆàŸ™ ]Ó3ˆØ—‘ Ó/ˆàˆØÒØ�{‰{×'Ñ'Ñ/Ø—?‘? aÓ'Ø/;�D—K‘KÕ,Ø—_‘_ qÓ(¨f¯l©l¼e¿j¹jÓ.HÈFÏLÉLÔ\a×\eÑ\eÓLeØ/L�D—K‘KÕ,à/K�D—K‘KÔ,à�{‰{×'Ñ'¨<Ó7Ü"›9�Ø—?‘? aÓ'Ù# F§N¡NÓ$4°f·n±nÓ6FÓG‘Dá# FÓ3‘DØ—‘×)Ñ)Ð-JÓJÜ+Ó-�Ù §¡¨B°·±Ó @À&Ç+Á+ÈbÃ/ÓR‘Ø—‘×)Ñ)Ð-IÓIÜ,Ó.�Ù Ó/�ä'ØØØ!×/Ñ/Ø×)Ñ)ñ	
ð 	
rS   )rJ  rÍ  rO   rE   rË  rÇ  )rf   rg   rh   ri   r7   r$   r"   rG   rn   r   r!   r®   r   rd   ro   rp   rq   s   @rQ   rÉ  rÉ  .  sÑ   ø† õð Øð *.Ø.2Ø.2Ø,0Ø-1Ø&*ñ;
à—<‘< $Ñ&ð;
ð Ÿ™ tÑ+ð;
ð Ÿ™ tÑ+ð	;
ð
 —l‘l TÑ)ð;
ð —|‘| dÑ*ð;
ð —‘˜tÑ#ð;
ð Ð+Ñ,ð;
ð 
ˆu�|‰|Ñ	Ð7Ñ	7ô;
ó ó ö;
rS   rÉ  c                   ó8  ^ • \ rS rSrU 4S jr\\      SS\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S	\R                  S-  S
\	\
   S\\R                     \-  4S jj5       5       rSrU =r$ )ÚBertForMultipleChoicei„  c                 ó0  >• [         TU ]  U5        [        U5      U l        UR                  b  UR                  OUR
                  n[        R                  " U5      U l        [        R                  " UR                  S5      U l        U R                  5         g )Nr'   )r6   r7   re  rJ  rÌ  rD   r   rC   rE   r’   r:   rÍ  rj  rÎ  s      €rQ   r7   ÚBertForMultipleChoice.__init__†  su   ø€ Ü‰Ñ˜Ô ä˜fÓ%ˆŒ	à)/×)BÑ)BÑ)NˆF×%Ò%ÐTZ×TnÑTnð 	ô —z’zÐ"4Ó5ˆŒÜŸ)š) F×$6Ñ$6¸Ó:ˆŒð 	�‰ÕrS   NrT   rv   r4   r0   rU   r”  rx   rW   c           	      óò  • Ub  UR                   S   OUR                   S   nUb!  UR                  SUR                  S5      5      OSnUb!  UR                  SUR                  S5      5      OSnUb!  UR                  SUR                  S5      5      OSnUb!  UR                  SUR                  S5      5      OSnUb1  UR                  SUR                  S5      UR                  S5      5      OSnU R                  " U4UUUUSS.UD6n	U	S   n
U R	                  U
5      n
U R                  U
5      nUR                  SU5      nSnUb  [        5       nU" XÆ5      n[        UUU	R                  U	R                  S9$ )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'   r2   éþÿÿÿTr—  r¾  )
r]   rž   rK   rJ  rE   rÍ  r   r   r™   rK  )rN   rT   rv   r4   r0   rU   r”  rx   Únum_choicesr™  r  r°  Úreshaped_logitsr`  r›  s                  rQ   rd   ÚBertForMultipleChoice.forward“  sš  € ðT -6Ñ,A�i—o‘o aÒ(À}×GZÑGZÐ[\ÑG]ˆà>GÑ>S�I—N‘N 2 y§~¡~°bÓ'9Ô:ÐY]ˆ	ØM[ÑMg˜×,Ñ,¨R°×1DÑ1DÀRÓ1HÔIÐmqˆØM[ÑMg˜×,Ñ,¨R°×1DÑ1DÀRÓ1HÔIÐmqˆØGSÑG_�|×(Ñ(¨¨\×->Ñ->¸rÓ-BÔCÐeiˆð Ñ(ð ×Ñ˜r =×#5Ñ#5°bÓ#9¸=×;MÑ;MÈbÓ;QÔRàð 	ð —)’)Øð
à)Ø)Ø%Ø'Øñ
ð ñ
ˆð   ™
ˆàŸ™ ]Ó3ˆØ—‘ Ó/ˆØ Ÿ+™+ b¨+Ó6ˆàˆØÑÜ'Ó)ˆHÙ˜OÓ4ˆDä(ØØ"Ø!×/Ñ/Ø×)Ñ)ñ	
ð 	
rS   )rJ  rÍ  rE   rÇ  )rf   rg   rh   ri   r7   r$   r"   rG   rn   r   r!   r®   r   rd   ro   rp   rq   s   @rQ   rØ  rØ  „  sÛ   ø† õð Øð *.Ø.2Ø.2Ø,0Ø-1Ø&*ñN
à—<‘< $Ñ&ðN
ð Ÿ™ tÑ+ðN
ð Ÿ™ tÑ+ð	N
ð
 —l‘l TÑ)ðN
ð —|‘| dÑ*ðN
ð —‘˜tÑ#ðN
ð Ð+Ñ,ðN
ð 
ˆu�|‰|Ñ	Ð8Ñ	8ôN
ó ó öN
rS   rØ  c                   ó8  ^ • \ rS rSrU 4S jr\\      SS\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S	\R                  S-  S
\	\
   S\\R                     \-  4S jj5       5       rSrU =r$ )ÚBertForTokenClassificationiæ  c                 ód  >• [         TU ]  U5        UR                  U l        [        USS9U l        UR
                  b  UR
                  OUR                  n[        R                  " U5      U l	        [        R                  " UR                  UR                  5      U l        U R                  5         g ©NFr¥  )r6   r7   rË  re  rJ  rÌ  rD   r   rC   rE   r’   r:   rÍ  rj  rÎ  s      €rQ   r7   Ú#BertForTokenClassification.__init__è  sŠ   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒä˜f¸Ñ>ˆŒ	à)/×)BÑ)BÑ)NˆF×%Ò%ÐTZ×TnÑTnð 	ô —z’zÐ"4Ó5ˆŒÜŸ)š) F×$6Ñ$6¸×8IÑ8IÓJˆŒð 	�‰ÕrS   NrT   rv   r4   r0   rU   r”  rx   rW   c           	      óD  • U R                   " U4UUUUSS.UD6nUS   n	U R                  U	5      n	U R                  U	5      n
SnUb<  [        5       nU" U
R	                  SU R
                  5      UR	                  S5      5      n[        UU
UR                  UR                  S9$ )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]`.
Tr—  r   Nr2   r¾  )	rJ  rE   rÍ  r   rž   rË  r   r™   rK  )rN   rT   rv   r4   r0   rU   r”  rx   r™  r2  r°  r`  r›  s                rQ   rd   Ú"BertForTokenClassification.forwardö  sµ   € ð  —)’)Øð
à)Ø)Ø%Ø'Øñ
ð ñ
ˆð " !™*ˆàŸ,™, Ó7ˆØ—‘ Ó1ˆàˆØÑÜ'Ó)ˆHÙ˜FŸK™K¨¨D¯O©OÓ<¸f¿k¹kÈ"»oÓNˆDä$ØØØ!×/Ñ/Ø×)Ñ)ñ	
ð 	
rS   )rJ  rÍ  rE   rË  rÇ  )rf   rg   rh   ri   r7   r$   r"   rG   rn   r   r!   r®   r   rd   ro   rp   rq   s   @rQ   rá  rá  æ  sÑ   ø† õð Øð *.Ø.2Ø.2Ø,0Ø-1Ø&*ñ'
à—<‘< $Ñ&ð'
ð Ÿ™ tÑ+ð'
ð Ÿ™ tÑ+ð	'
ð
 —l‘l TÑ)ð'
ð —|‘| dÑ*ð'
ð —‘˜tÑ#ð'
ð Ð+Ñ,ð'
ð 
ˆu�|‰|Ñ	Ð4Ñ	4ô'
ó ó ö'
rS   rá  c                   óX  ^ • \ rS rSrU 4S jr\\       SS\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S\R                  S-  S	\R                  S-  S
\R                  S-  S\	\
   S\\R                     \-  4S jj5       5       rSrU =r$ )ÚBertForQuestionAnsweringi"  c                 óä   >• [         TU ]  U5        UR                  U l        [        USS9U l        [
        R                  " UR                  UR                  5      U l        U R                  5         g rã  )
r6   r7   rË  re  rJ  r   r’   r:   Ú
qa_outputsrj  rM   s     €rQ   r7   Ú!BertForQuestionAnswering.__init__$  sU   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒä˜f¸Ñ>ˆŒ	ÜŸ)š) F×$6Ñ$6¸×8IÑ8IÓJˆŒð 	�‰ÕrS   NrT   rv   r4   r0   rU   Ústart_positionsÚend_positionsrx   rW   c           	      ó¶  • U R                   " U4UUUUSS.UD6n	U	S   n
U R                  U
5      nUR                  SSS9u  pÍUR                  S5      R	                  5       nUR                  S5      R	                  5       nS nUbµ  Ub²  [        UR                  5       5      S:”  a  UR                  S5      n[        UR                  5       5      S:”  a  UR                  S5      nUR                  S5      nUR                  SU5      nUR                  SU5      n[        US9nU" XÆ5      nU" X×5      nUU-   S-  n[        UUUU	R                  U	R                  S	9$ )
NTr—  r   r'   r2   r|   )Úignore_indexr{   )r`  Ústart_logitsÚ
end_logitsr™   rK  )rJ  rê  ÚsplitrÕ  rƒ   ÚlenrK   Úclampr   r   r™   rK  )rN   rT   rv   r4   r0   rU   rì  rí  rx   r™  r2  r°  rð  rñ  rš  Úignored_indexr›  Ú
start_lossÚend_losss                      rQ   rd   Ú BertForQuestionAnswering.forward.  sx  € ð —)’)Øð
à)Ø)Ø%Ø'Øñ
ð ñ
ˆð " !™*ˆà—‘ Ó1ˆØ#)§<¡<°°r <Ð#:Ñ ˆØ#×+Ñ+¨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Ù 
Ó:ˆHØ$ xÑ/°1Ñ4ˆJä+ØØ%Ø!Ø!×/Ñ/Ø×)Ñ)ñ
ð 	
rS   )rJ  rË  rê  r   )rf   rg   rh   ri   r7   r$   r"   rG   rn   r   r!   r®   r   rd   ro   rp   rq   s   @rQ   rè  rè  "  sç   ø† õð Øð *.Ø.2Ø.2Ø,0Ø-1Ø/3Ø-1ñ3
à—<‘< $Ñ&ð3
ð Ÿ™ tÑ+ð3
ð Ÿ™ tÑ+ð	3
ð
 —l‘l TÑ)ð3
ð —|‘| dÑ*ð3
ð Ÿ™¨Ñ,ð3
ð —|‘| dÑ*ð3
ð Ð+Ñ,ð3
ð 
ˆu�|‰|Ñ	Ð;Ñ	;ô3
ó ó ö3
rS   rè  )r¶  rØ  rÁ  r�  rè  rÉ  rá  rî   r£  re  rI  )Nrœ   )Zrj   Úcollections.abcr   Údataclassesr   rG   r   Útorch.nnr   r   r   Ú r
   rO  Ú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_loggerrf   r§  ÚModuler*   rn   Úfloatr†   rˆ   r°   r¿   rÏ   rÜ   rè   rî   r  r  r  r#  r.  r8  rB  rI  r_  re  r�  r£  r¶  rÁ  rÉ  rØ  rá  rè  Ú__all__rS  rS   rQ   Ú<module>r     s�  ðñ å $Ý !ã Ý ß AÑ Aå &Ý !ß CÑ CÝ )ß JÝ 9÷
÷ 
õ 
÷ GÝ &Ý 6ß MÓ Mß IÝ 5Ý *ð 
×	Ò	˜HÓ	%€ô;�R—Y‘Yô ;ðH !Øñ%Ø�I‰Ið%à�<‰<ð%ð 
�‰ð%ð �<‰<ð	%ð
 —L‘L 4Ñ'ð%ð �T‰\ð%ð ð%ð Ð'Ñ(õ%ô8@)˜Ÿ	™	ô @)ôFI)˜Ÿ™ô I)ôX�R—Y‘Yô ô.�B—I‘Iô .ô:�r—y‘yô ô�—‘ô ô>Ð*ô >ôB
�"—)‘)ô 
ô@�—‘ô ô "§)¡)ô ô"˜2Ÿ9™9ô ô !�b—i‘iô !ô&�b—i‘iô &ô	9˜2Ÿ9™9ô 	9ð ô/˜/ó /ó ð/ñ2 ðñð
 ô7˜{ó 7ó óð7ñ& ð	ñô|6Ð#ó |6óð|6ñ~ ðñôY
Ð,ó Y
óðY
ñx ðñô
Q
Ð)¨?ó Q
óð
Q
ðh ôI
Ð)ó I
ó ðI
ñX ðñô
I
Ð$7ó I
óð
I
ñX ðñôM
Ð$7ó M
óðM
ð` ô^
Ð/ó ^
ó ð^
ðB ô8
Ð!4ó 8
ó ð8
ðv ô@
Ð2ó @
ó ð@
òF�rS   