§
    ‚ŠtjgO  ã                   óx  — d Z ddlZddlZddlmZ ddlmZmZmZ ddlm	Z	 ddl
mZmZ ddlmZ ddlmZ dd	lmZ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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*  G d„ de(¦  «        Z+ G d„ de&¦  «        Z, G d„ de$¦  «        Z- G d„ de%¦  «        Z.e G d„ de¦  «        ¦   «         Z/e G d„ de/¦  «        ¦   «         Z0 ed ¬!¦  «         G d"„ d#e/e¦  «        ¦   «         Z1e G d$„ d%e/¦  «        ¦   «         Z2 ed&¬!¦  «         G d'„ d(e/¦  «        ¦   «         Z3g d)¢Z4dS )*zPyTorch BioGPT model.é    N)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELossé   )ÚACT2FN)ÚCacheÚDynamicCache)ÚGenerationMixin)Úcreate_causal_mask)Ú)BaseModelOutputWithPastAndCrossAttentionsÚ!CausalLMOutputWithCrossAttentionsÚ SequenceClassifierOutputWithPastÚTokenClassifierOutput)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tupleÚlogger)Úmerge_with_config_defaults)Úcapture_outputsé   )ÚBartAttentionÚBartDecoderLayerÚBartScaledWordEmbedding)ÚOPTLearnedPositionalEmbeddingé   )ÚBioGptConfigc                   óL   ‡ — e Zd Z	 	 ddej        dedej        dz  fˆ fd„Zˆ xZS )Ú BioGptLearnedPositionalEmbeddingr   NÚattention_maskÚpast_key_values_lengthÚposition_idsc                 óJ   •— t          ¦   «                              |||¦  «        S )z3`input_ids_shape` is expected to be [bsz x seqlen].)ÚsuperÚforward)Úselfr!   r"   r#   Ú	__class__s       €úg/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/biogpt/modular_biogpt.pyr&   z(BioGptLearnedPositionalEmbedding.forward4   s    ø€ õ ‰wŒw�Š˜~Ð/EÀ|ÑTÔTÐTó    )r   N)Ú__name__Ú
__module__Ú__qualname__ÚtorchÚ
LongTensorÚintr&   Ú__classcell__©r(   s   @r)   r    r    3   s   ø€ € € € € ð '(Ø04ð	Uð UàÔ(ðUð !$ðUð Ô&¨Ñ-ð	Uð Uð Uð Uð Uð Uð Uð Uð Uð Ur*   r    c                   ó   — e Zd ZdS )ÚBioGptScaledWordEmbeddingN©r+   r,   r-   © r*   r)   r4   r4   >   ó   € € € € € Ø€Dr*   r4   c                   ó   — e Zd ZdS )ÚBioGptAttentionNr5   r6   r*   r)   r9   r9   B   r7   r*   r9   c                   óª   ‡ — e Zd Zddededz  fˆ fd„Z	 	 	 	 ddej        dej        dz  dedz  d	e	dz  d
ej
        dz  dee         dej        fd„Zˆ xZS )ÚBioGptDecoderLayerNÚconfigÚ	layer_idxc           	      ó”  •— t          ¦   «                              |¦  «         |j        | _        t	          | j        |j        |j        dd||¬¦  «        | _        |j        | _	        t          |j                 | _        t          j        | j        |j        ¦  «        | _        t          j        |j        | j        ¦  «        | _        | `| `d S )NT)Ú	embed_dimÚ	num_headsÚdropoutÚ
is_decoderÚ	is_causalr<   r=   )r%   Ú__init__Úhidden_sizer?   r9   Únum_attention_headsÚattention_probs_dropout_probÚ	self_attnÚhidden_dropout_probrA   r   Ú
hidden_actÚactivation_fnÚnnÚLinearÚintermediate_sizeÚfc1Úfc2Úencoder_attnÚencoder_attn_layer_norm)r'   r<   r=   r(   s      €r)   rD   zBioGptDecoderLayer.__init__G   s¶   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØÔ+ˆŒå(Ø”nØÔ0ØÔ7ØØØØð
ñ 
ô 
ˆŒð Ô1ˆŒÝ# FÔ$5Ô6ˆÔå”9˜Tœ^¨VÔ-EÑFÔFˆŒÝ”9˜VÔ5°t´~ÑFÔFˆŒàÐØÐ(Ð(Ð(r*   TÚhidden_statesr!   Úpast_key_valuesÚ	use_cacher#   ÚkwargsÚreturnc                 ó&  — |}|                       |¦  «        } | j        d||||dœ|¤Ž\  }}t          j                             || j        | j        ¬¦  «        }||z   }|}|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }t          j                             || j	        | j        ¬¦  «        }|  
                    |¦  «        }t          j                             || j        | j        ¬¦  «        }||z   }|S )a‘  
        Args:
            hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)`
            attention_mask (`torch.FloatTensor`): attention mask of size
                `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values.
            past_key_values (`Cache`): cached past key and value projection states
        )rS   rT   r!   r#   ©ÚpÚtrainingr6   )Úself_attn_layer_normrH   rL   Ú
functionalrA   r[   Úfinal_layer_normrO   rK   Úactivation_dropoutrP   )	r'   rS   r!   rT   rU   r#   rV   ÚresidualÚ_s	            r)   r&   zBioGptDecoderLayer.forward]   s(  € ð  !ˆà×1Ò1°-Ñ@Ô@ˆð *˜4œ>ð 
Ø'Ø+Ø)Ø%ð	
ð 
ð
 ð
ð 
Ñˆ�qõ œ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆØ  =Ñ0ˆð !ˆØ×-Ò-¨mÑ<Ô<ˆØŸš Ñ/Ô/ˆØ×*Ò*¨=Ñ9Ô9ˆÝœ×-Ò-¨m¸tÔ?VÐaeÔanÐ-ÑoÔoˆØŸš Ñ/Ô/ˆÝœ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆØ  =Ñ0ˆàÐr*   ©N)NNTN)r+   r,   r-   r   r0   rD   r.   ÚTensorr   Úboolr/   r   r   r&   r1   r2   s   @r)   r;   r;   F   sà   ø€ € € € € ð)ð )˜|ð )¸¸d¹
ð )ð )ð )ð )ð )ð )ð2 /3Ø(,Ø!%Ø04ð)ð )à”|ð)ð œ tÑ+ð)ð  ™ð	)ð
 ˜$‘;ð)ð Ô&¨Ñ-ð)ð Ð+Ô,ð)ð 
Œð)ð )ð )ð )ð )ð )ð )ð )r*   r;   c                   ó<   — e Zd ZU eed<   dZdZdZdZdZ	dZ
eedœZdS )ÚBioGptPreTrainedModelr<   ÚbiogptT)rS   Ú
attentionsN)r+   r,   r-   r   Ú__annotations__Úbase_model_prefixÚsupports_gradient_checkpointingÚ_supports_flash_attnÚ_supports_sdpaÚ_supports_flex_attnÚ_can_compile_fullgraphr;   r9   Ú_can_record_outputsr6   r*   r)   rf   rf   ‰   sT   € € € € € € àÐÐÑØ ÐØ&*Ð#ØÐØ€NØÐØ!Ðà+Ø%ðð ÐÐÐr*   rf   c                   óè   ‡ — e Zd Zdefˆ fd„Zeee	 	 	 	 	 	 d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j	        dz  d
ee         deez  fd„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚBioGptModelr<   c                 ój  •‡— t          ¦   «                              ‰¦  «         ‰| _        ‰j        | _        ‰j        | _        ‰j        | _        ‰j        | _	        ‰j
        rt          j        ‰j        ¦  «        nd}t          ‰j        | j        | j	        |¬¦  «        | _        t!          ‰j        | j        ¦  «        | _        t'          j        ˆfd„t+          ‰j        ¦  «        D ¦   «         ¦  «        | _        t'          j        | j        ¦  «        | _        d| _        |                      ¦   «          d S )Ng      ð?)Úembed_scalec                 ó2   •— g | ]}t          ‰|¬ ¦  «        ‘ŒS ))r=   )r;   )Ú.0Úir<   s     €r)   ú
<listcomp>z(BioGptModel.__init__.<locals>.<listcomp>¨   s(   ø€ Ð$vÐ$vÐ$vÐQRÕ%7¸È!Ð%LÑ%LÔ%LÐ$vÐ$vÐ$vr*   F)r%   rD   r<   Ú	layerdroprI   rA   rE   r?   Úpad_token_idÚpadding_idxÚscale_embeddingÚmathÚsqrtr4   Ú
vocab_sizeÚembed_tokensr    Úmax_position_embeddingsÚembed_positionsrL   Ú
ModuleListÚrangeÚnum_hidden_layersÚlayersÚ	LayerNormÚ
layer_normÚgradient_checkpointingÚ	post_init)r'   r<   rt   r(   s    ` €r)   rD   zBioGptModel.__init__š   s  øø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒØÔ)ˆŒØÔ1ˆŒØÔ+ˆŒØ!Ô.ˆÔØ7=Ô7MÐV•d”i Ô 2Ñ3Ô3Ð3ÐSVˆå5ØÔ˜tœ~¨tÔ/?È[ð
ñ 
ô 
ˆÔõ  @ÀÔ@^Ð`dÔ`nÑoÔoˆÔå”mÐ$vÐ$vÐ$vÐ$vÕV[Ð\bÔ\tÑVuÔVuÐ$vÑ$vÔ$vÑwÔwˆŒÝœ, t¤~Ñ6Ô6ˆŒà&+ˆÔ#à�ŠÑÔÐÐÐr*   NÚ	input_idsr!   Úinputs_embedsrT   rU   r#   rV   rW   c           	      ó`  — |d u |d uz  rt          d¦  «        ‚|€|                      |¦  «        }|r|€t          | j        ¬¦  «        }|                     ¦   «         d d…         \  }}	|�|                     ¦   «         nd}
|€!|
|	z   }t          j        |||j        ¬¦  «        }|}t          | j        |||¬¦  «        }|€3t          j
        |	|j        ¬¦  «        |
z   }|                     d¦  «        }|                      ||
|¬¦  «        }||z   }t          j                             || j        | j        ¬¦  «        }t#          | j        ¦  «        D ]:\  }}| j        r t          j        g ¦  «        }|| j        k     rŒ, ||f||||d	œ|¤Ž}Œ;|                      |¦  «        }t-          ||¬
¦  «        S )NzTYou cannot specify both decoder_input_ids and decoder_inputs_embeds at the same time)r<   éÿÿÿÿr   ©Údevice)r<   rŒ   r!   rT   )r#   rY   )r!   rT   rU   r#   )Úlast_hidden_staterT   )Ú
ValueErrorr€   r	   r<   ÚsizeÚget_seq_lengthr.   Úonesr�   r   ÚarangeÚ	unsqueezer‚   rL   r]   rA   r[   Ú	enumerater†   Úrandry   rˆ   r   )r'   r‹   r!   rŒ   rT   rU   r#   rV   Ú
batch_sizeÚ
seq_lengthr"   Úmask_seq_lengthÚself_attn_cacheÚcausal_maskÚ	positionsrS   ÚidxÚdecoder_layerÚdropout_probabilitys                      r)   r&   zBioGptModel.forward¯   s  € ð ˜Ð -°tÐ";Ñ<ð 	uÝÐsÑtÔtÐtàÐ Ø ×-Ò-¨iÑ8Ô8ˆMð ð 	?˜Ð0Ý*°$´+Ð>Ñ>Ô>ˆOà!.×!3Ò!3Ñ!5Ô!5°c°r°cÔ!:Ñˆ
�JØETÐE` ×!?Ò!?Ñ!AÔ!AÐ!AÐfgÐàÐ!à4°zÑAˆOÝ"œZ¨
°OÈMÔL`ÐaÑaÔaˆNà)ˆå(Ø”;Ø'Ø)Ø+ð	
ñ 
ô 
ˆð ÐÝ œ<¨
¸=Ô;OÐPÑPÔPÐSiÑiˆLØ'×1Ò1°!Ñ4Ô4ˆLà×(Ò(¨Ð9OÐ^jÐ(ÑkÔkˆ	Ø%¨	Ñ1ˆÝœ×-Ò-¨m¸t¼|ÐVZÔVcÐ-ÑdÔdˆå"+¨D¬KÑ"8Ô"8ð 	ð 	ÑˆC�ØŒ}ð Ý&+¤j°¡n¤nÐ#Ø&¨¬Ò7Ð7Øà)˜MØðà*Ø /Ø#Ø)ðð ð ðð ˆMˆMð Ÿš¨Ñ6Ô6ˆå8Ø+Ø+ð
ñ 
ô 
ð 	
r*   )NNNNNN)r+   r,   r-   r   rD   r   r   r   r.   r/   ÚFloatTensorr   rd   r   r   Útupler   r&   r1   r2   s   @r)   rr   rr   ˜   s%  ø€ € € € € ð˜|ð ð ð ð ð ð ð*  ØØð .2Ø37Ø26Ø(,Ø!%Ø04ðB
ð B
àÔ# dÑ*ðB
ð Ô)¨DÑ0ðB
ð Ô(¨4Ñ/ð	B
ð
  ™ðB
ð ˜$‘;ðB
ð Ô&¨Ñ-ðB
ð Ð+Ô,ðB
ð 
Ð:Ñ	:ðB
ð B
ð B
ñ „^ñ „_ñ  ÔðB
ð B
ð B
ð B
ð B
r*   rr   zR
    BioGPT Model with a `language modeling` head on top for CLM fine-tuning.
    )Úcustom_introc                   ó  ‡ — e Zd Zddi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dz  de	j
        dz  dedz  de	j
        dz  dee	j        z  dee         deez  fd„¦   «         ¦   «         Zˆ xZS )ÚBioGptForCausalLMzoutput_projection.weightzbiogpt.embed_tokens.weightc                 óæ   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          j        |j        |j        d¬¦  «        | _        |  	                    ¦   «          d S ©NF)Úbias)
r%   rD   rr   rg   rL   rM   rE   r   Úoutput_projectionrŠ   ©r'   r<   r(   s     €r)   rD   zBioGptForCausalLM.__init__ÿ   sb   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å! &Ñ)Ô)ˆŒÝ!#¤¨6Ô+=¸vÔ?PÐW\Ð!]Ñ!]Ô!]ˆÔð 	�ŠÑÔÐÐÐr*   c                 ó   — | j         S rb   ©r«   ©r'   s    r)   Úget_output_embeddingsz'BioGptForCausalLM.get_output_embeddings  s   € ØÔ%Ð%r*   c                 ó   — || _         d S rb   r®   )r'   Únew_embeddingss     r)   Úset_output_embeddingsz'BioGptForCausalLM.set_output_embeddings  s   € Ø!/ˆÔÐÐr*   Nr   r‹   r!   rŒ   rT   ÚlabelsrU   r#   Úlogits_to_keeprV   rW   c	           	      ó^  —  | j         |f|||||dœ|	¤Ž}
|
d         }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 language modeling. Note that the labels **are shifted** inside the model, i.e. you can set
            `labels = input_ids` Indices are selected in `[-100, 0, ..., config.vocab_size]` All labels set to `-100`
            are ignored (masked), the loss is only computed for labels in `[0, ..., config.vocab_size]`
        )r!   rŒ   rT   rU   r#   r   N)Úlogitsr´   r   )Úlossr·   rT   rS   rh   Úcross_attentionsr6   )rg   Ú
isinstancer0   Úslicer«   Úloss_functionr<   r   r   rT   rS   rh   r¹   )r'   r‹   r!   rŒ   rT   r´   rU   r#   rµ   rV   ÚoutputsrS   Úslice_indicesr·   r¸   s                  r)   r&   zBioGptForCausalLM.forward  sý   € ð( �$”+Øð
à)Ø'Ø+ØØ%ð
ð 
ð ð
ð 
ˆð   œ
ˆÝ8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ×'Ò'¨°a°a°a¸ÈÈÈÐ6IÔ(JÑKÔKˆàˆØÐØ%�4Ô%Ðp¨V¸FÈtÌ{ÔOeÐpÐpÐioÐpÐpˆDå0ØØØ#Ô3Ø!Ô/ØÔ)Ø$Ô5ð
ñ 
ô 
ð 	
r*   ©NNNNNNNr   )r+   r,   r-   Ú_tied_weights_keysrD   r°   r³   r   r   r.   r/   r£   r   rd   r0   rc   r   r   r¤   r   r&   r1   r2   s   @r)   r§   r§   ÷   sS  ø€ € € € € ð 5Ð6RÐSÐðð ð ð ð ð&ð &ð &ð0ð 0ð 0ð Øð .2Ø37Ø26Ø(,Ø*.Ø!%Ø04Ø-.ð+
ð +
àÔ# dÑ*ð+
ð Ô)¨DÑ0ð+
ð Ô(¨4Ñ/ð	+
ð
  ™ð+
ð Ô  4Ñ'ð+
ð ˜$‘;ð+
ð Ô&¨Ñ-ð+
ð ˜eœlÑ*ð+
ð Ð+Ô,ð+
ð 
Ð2Ñ	2ð+
ð +
ð +
ñ „^ñ Ôð+
ð +
ð +
ð +
ð +
r*   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	dz  dej        dz  dej        dz  d	e
dz  d
ej        dz  deez  fd„¦   «         ¦   «         Zˆ xZS )ÚBioGptForTokenClassificationc                 óx  •— t          ¦   «                              |¦  «         |j        | _        t          |¦  «        | _        t          |d¦  «        r|j        �|j        }n|j        }t          j	        |¦  «        | _
        t          j        |j        |j        ¦  «        | _        |                      ¦   «          d S )NÚclassifier_dropout)r%   rD   Ú
num_labelsrr   rg   ÚhasattrrÄ   rI   rL   ÚDropoutrA   rM   rE   Ú
classifierrŠ   )r'   r<   rÄ   r(   s      €r)   rD   z%BioGptForTokenClassification.__init__@  s¥   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒå! &Ñ)Ô)ˆŒÝ�6Ð/Ñ0Ô0ð 	<°VÔ5NÐ5ZØ!'Ô!:ÐÐà!'Ô!;ÐÝ”zÐ"4Ñ5Ô5ˆŒÝœ) FÔ$6¸Ô8IÑJÔJˆŒà�ŠÑÔÐÐÐr*   Nr‹   Útoken_type_idsr!   rT   rŒ   r´   rU   r#   rW   c	           	      óˆ  —  | j         |f|||||dœ|	¤Ž}
|
d         }|                      |¦  «        }|                      |¦  «        }d}|�Üt          ¦   «         }|�”|                     d¦  «        dk    }|                     d| j        ¦  «        }t          j        ||                     d¦  «        t          j        |j	        ¦  «         
                    |¦  «        ¦  «        } |||¦  «        }n8 ||                     d| j        ¦  «        |                     d¦  «        ¦  «        }t          |||
j        |
j        ¬¦  «        S )á�  
        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).
        ©rT   r!   rŒ   rU   r#   r   NrŽ   r   )r¸   r·   rS   rh   )rg   rA   rÈ   r   ÚviewrÅ   r.   ÚwhereÚtensorÚignore_indexÚtype_asr   rS   rh   )r'   r‹   rÉ   r!   rT   rŒ   r´   rU   r#   rV   Útransformer_outputsrS   r·   r¸   Úloss_fctÚactive_lossÚactive_logitsÚactive_labelss                     r)   r&   z$BioGptForTokenClassification.forwardN  s\  € ð( *˜dœkØð
à+Ø)Ø'ØØ%ð
ð 
ð ð
ð 
Ðð ,¨AÔ.ˆØŸš ]Ñ3Ô3ˆØ—’ Ñ/Ô/ˆàˆØÐÝ'Ñ)Ô)ˆHØÐ)Ø,×1Ò1°"Ñ5Ô5¸Ò:�Ø &§¢¨B°´Ñ @Ô @�Ý %¤Ø §¢¨R¡¤µ%´,¸xÔ?TÑ2UÔ2U×2]Ò2]Ð^dÑ2eÔ2eñ!ô !�ð  �x ¨}Ñ=Ô=��à�x §¢¨B°´Ñ @Ô @À&Ç+Â+ÈbÁ/Ä/ÑRÔR�å$ØØØ-Ô;Ø*Ô5ð	
ñ 
ô 
ð 	
r*   )NNNNNNNN)r+   r,   r-   rD   r   r   r.   r/   r£   r   rd   r¤   r   r&   r1   r2   s   @r)   rÂ   rÂ   >  s  ø€ € € € € ðð ð ð ð ð Øð .2Ø26Ø37Ø(,Ø26Ø*.Ø!%Ø04ð2
ð 2
àÔ# dÑ*ð2
ð Ô(¨4Ñ/ð2
ð Ô)¨DÑ0ð	2
ð
  ™ð2
ð Ô(¨4Ñ/ð2
ð Ô  4Ñ'ð2
ð ˜$‘;ð2
ð Ô&¨Ñ-ð2
ð 
Ð&Ñ	&ð2
ð 2
ð 2
ñ „^ñ Ôð2
ð 2
ð 2
ð 2
ð 2
r*   rÂ   aÛ  
    The BioGpt Model transformer with a sequence classification head on top (linear layer).

    [`BioGptForSequenceClassification`] uses the last token in order to do the classification, as other causal models
    (e.g. GPT-2) do.

    Since it does classification on the last token, it is required to know the position of the last token. If a
    `pad_token_id` is defined in the configuration, it finds the last token that is not a padding token in each row. If
    no `pad_token_id` is defined, it simply takes the last value in each row of the batch. Since it cannot guess the
    padding tokens when `inputs_embeds` are passed instead of `input_ids`, it does the same (take the last value in
    each row of the batch).
    c                   ó   ‡ — e Zd Zdefˆ fd„Zee	 	 	 	 	 	 	 	 ddej        dz  dej	        dz  de
dz  dej	        dz  d	ej        dz  d
edz  dej        dz  deej        z  deez  fd„¦   «         ¦   «         Zd„ Zd„ Zˆ xZS )ÚBioGptForSequenceClassificationr<   c                 óþ   •— t          ¦   «                              |¦  «         |j        | _        t          |¦  «        | _        t          j        |j        | j        d¬¦  «        | _        |  	                    ¦   «          d S r©   )
r%   rD   rÅ   rr   rg   rL   rM   rE   ÚscorerŠ   r¬   s     €r)   rD   z(BioGptForSequenceClassification.__init__”  si   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒÝ! &Ñ)Ô)ˆŒÝ”Y˜vÔ1°4´?ÈÐOÑOÔOˆŒ
ð 	�ŠÑÔÐÐÐr*   Nr   r‹   r!   rT   rŒ   r´   rU   r#   rµ   rW   c	           	      ó
  —  | j         |f|||||dœ|	¤Ž}
|
d         }t          |t          ¦  «        rt          | d¦  «        n|}|                      |dd…|dd…f         ¦  «        }|�|j        dd…         \  }}n|j        dd…         \  }}| j        j        €|dk    rt          d¦  «        ‚| j        j        €d}n¢|�}|| j        j        k     	                    |j
        t          j        ¦  «        }t          j        |j        d         |j
        t          j        ¬¦  «        }||z                       d¦  «        }n#d}t          j        | j        j        › d	�¦  «         |t          j        ||j
        ¬
¦  «        |f         }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    rGt3          ¦   «         } ||                     d| j        ¦  «        |                     d¦  «        ¦  «        }n*| j        j        dk    rt7          ¦   «         } |||¦  «        }t9          |||
j        |
j        |
j        ¬¦  «        S )rË   rÌ   r   Nr   r   z=Cannot handle batch sizes > 1 if no padding token is defined.rŽ   )r�   ÚdtypezŠ will not detect padding tokens in `inputs_embeds`. Results may be unexpected if using padding tokens in conjunction with `inputs_embeds.`r�   Ú
regressionÚsingle_label_classificationÚmulti_label_classification)r¸   r·   rT   rS   rh   ) rg   rº   r0   r»   rÚ   Úshaper<   rz   r’   Útor�   r.   Úint32r–   Úargmaxr   Úwarning_oncer(   r+   Úproblem_typerÅ   rÜ   Úlongr   Úsqueezer   rÍ   r   r   rT   rS   rh   )r'   r‹   r!   rT   rŒ   r´   rU   r#   rµ   rV   rÒ   rS   r¾   r·   rš   Úsequence_lengthÚlast_non_pad_tokenÚnon_pad_maskÚtoken_indicesÚpooled_logitsr¸   rÓ   s                         r)   r&   z'BioGptForSequenceClassification.forward�  s=  € ð( *˜dœkØð
à+Ø)Ø'ØØ%ð
ð 
ð ð
ð 
Ðð ,¨AÔ.ˆÝ8BÀ>ÕSVÑ8WÔ8WÐk�˜~˜o¨tÑ4Ô4Ð4Ð]kˆØ—’˜M¨!¨!¨!¨]¸A¸A¸AÐ*=Ô>Ñ?Ô?ˆàÐ Ø*3¬/¸"¸1¸"Ô*=Ñ'ˆJ˜˜à*7Ô*=¸b¸q¸bÔ*AÑ'ˆJ˜àŒ;Ô#Ð+°
¸a²°ÝÐ\Ñ]Ô]Ð]ØŒ;Ô#Ð+Ø!#ÐÐØÐ"à%¨¬Ô)AÒA×EÒEÀfÄmÕUZÔU`ÑaÔaˆLÝ!œL¨¬¸Ô)<ÀVÄ]ÕZ_ÔZeÐfÑfÔfˆMØ"/°,Ñ">×!FÒ!FÀrÑ!JÔ!JÐÐà!#ÐÝÔØ”>Ô*ð Zð Zð Zñô ð ð
 �uœ|¨J¸v¼}ÐMÑMÔMÐOaÐaÔbˆàˆØÑØŒ{Ô'Ð/Ø”? 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 M×$9Ò$9Ñ$;Ô$;¸V¿^º^Ñ=MÔ=MÑNÔN�D�Dà#˜8 M°6Ñ:Ô:�D�DØ”Ô)Ð-JÒJÐJÝ+Ñ-Ô-�Ø�x × 2Ò 2°2°t´Ñ GÔ GÈÏÊÐUWÉÌÑYÔY��Ø”Ô)Ð-IÒIÐIÝ,Ñ.Ô.�Ø�x ¨vÑ6Ô6�å/ØØ Ø/Ô?Ø-Ô;Ø*Ô5ð
ñ 
ô 
ð 	
r*   c                 ó   — | j         j        S rb   ©rg   r€   r¯   s    r)   Úget_input_embeddingsz4BioGptForSequenceClassification.get_input_embeddingsô  s   € ØŒ{Ô'Ð'r*   c                 ó   — || j         _        d S rb   rî   )r'   Úvalues     r)   Úset_input_embeddingsz4BioGptForSequenceClassification.set_input_embeddings÷  s   € Ø#(ˆŒÔ Ð Ð r*   r¿   )r+   r,   r-   r   rD   r   r   r.   r/   r£   r   rd   r0   rc   r¤   r   r&   rï   rò   r1   r2   s   @r)   rØ   rØ   …  sP  ø€ € € € € ð˜|ð ð ð ð ð ð ð Øð .2Ø37Ø(,Ø26Ø*.Ø!%Ø04Ø-.ðS
ð S
àÔ# dÑ*ðS
ð Ô)¨DÑ0ðS
ð  ™ð	S
ð
 Ô(¨4Ñ/ðS
ð Ô  4Ñ'ðS
ð ˜$‘;ðS
ð Ô&¨Ñ-ðS
ð ˜eœlÑ*ðS
ð 
Ð1Ñ	1ðS
ð S
ð S
ñ „^ñ ÔðS
ðj(ð (ð (ð)ð )ð )ð )ð )ð )ð )r*   rØ   )r§   rÂ   rØ   rr   rf   )5Ú__doc__r}   r.   Útorch.nnrL   r   r   r   Úactivationsr   Úcache_utilsr   r	   Ú
generationr
   Úmasking_utilsr   Úmodeling_outputsr   r   r   r   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.genericr   Úutils.output_capturingr   Úbart.modeling_bartr   r   r   Úopt.modeling_optr   Úconfiguration_biogptr   r    r4   r9   r;   rf   rr   r§   rÂ   rØ   Ú__all__r6   r*   r)   ú<module>r     sì  ðð Ð à €€€à €€€Ø Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà !Ð !Ð !Ð !Ð !Ð !Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø )Ð )Ð )Ð )Ð )Ð )Ø /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð
 =Ð <Ð <Ð <Ð <Ð <Ø .Ð .Ð .Ð .Ð .Ð .ðUð Uð Uð Uð UÐ'Dñ Uô Uð Uð	ð 	ð 	ð 	ð 	Ð 7ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�mñ 	ô 	ð 	ð@ð @ð @ð @ð @Ð)ñ @ô @ð @ðF ðð ð ð ð ˜Oñ ô ñ „ðð ð[
ð [
ð [
ð [
ð [
Ð'ñ [
ô [
ñ „ð[
ð| €ððñ ô ð
?
ð ?
ð ?
ð ?
ð ?
Ð-¨ñ ?
ô ?
ñô ð
?
ðD ðC
ð C
ð C
ð C
ð C
Ð#8ñ C
ô C
ñ „ðC
ðL €ððñ ô ðe)ð e)ð e)ð e)ð e)Ð&;ñ e)ô e)ñô ðe)ðPð ð €€€r*   