Ë
    ÛÓ^jgO  ã                   ó  — 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)¢Z4y)*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                   ó`   ‡ — e Zd Z	 	 ddej                  dedej                  dz  fˆ fd„Zˆ xZS )Ú BioGptLearnedPositionalEmbeddingNÚattention_maskÚpast_key_values_lengthÚposition_idsc                 ó&   •— t         ‰| �  |||«      S )z3`input_ids_shape` is expected to be [bsz x seqlen].)ÚsuperÚforward)Úselfr!   r"   r#   Ú	__class__s       €út/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/biogpt/modular_biogpt.pyr&   z(BioGptLearnedPositionalEmbedding.forward4   s   ø€ ô ‰w‰˜~Ð/EÀ|ÓTÐTó    )r   N)Ú__name__Ú
__module__Ú__qualname__ÚtorchÚ
LongTensorÚintr&   Ú__classcell__©r(   s   @r)   r    r    3   sG   ø„ ð '(Ø04ñ	Uà×(Ñ(ðUð !$ðUð ×&Ñ&¨Ñ-÷	Uñ Ur*   r    c                   ó   — e Zd Zy)ÚBioGptScaledWordEmbeddingN©r+   r,   r-   © r*   r)   r4   r4   >   ó   „ Ør*   r4   c                   ó   — e Zd Zy)Ú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                  «      | _        | `| `y )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‘nØ×0Ñ0Ø×7Ñ7ØØØØô
ˆŒð ×1Ñ1ˆŒÜ# F×$5Ñ$5Ñ6ˆÔä—9‘9˜TŸ^™^¨V×-EÑ-EÓFˆŒÜ—9‘9˜V×5Ñ5°t·~±~ÓFˆŒàÐØÑ(r*   Úhidden_statesr!   Úpast_key_valuesÚ	use_cacher#   ÚkwargsÚreturnc                 óD  — |}| j                  |«      } | j                  d||||dœ|¤Ž\  }}t        j                  j	                  || j                  | j
                  ¬«      }||z   }|}| j                  |«      }| j                  |«      }| j                  |«      }t        j                  j	                  || j                  | j
                  ¬«      }| j                  |«      }t        j                  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ÑVcÐ-ÓdˆØ  =Ñ0ˆð !ˆØ×-Ñ-¨mÓ<ˆØŸ™ Ó/ˆØ×*Ñ*¨=Ó9ˆÜŸ™×-Ñ-¨m¸t×?VÑ?VÐae×anÑanÐ-ÓoˆØŸ™ Ó/ˆÜŸ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-Ó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y)Ú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   ‰   s9   … àÓØ ÐØ&*Ð#ØÐØ€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           	      óÎ  •— t         ‰| �  |«       || _        |j                  | _        |j                  | _        |j                  | _        |j                  | _	        |j                  rt        j                  |j                  «      nd}t        |j                  | j                  | j                  |¬«      | _        t!        |j"                  | j                  «      | _        t'        j(                  t+        |j,                  «      D �cg c]  }t/        ||¬«      ‘Œ c}«      | _        t'        j2                  | j                  «      | _        d| _        | j9                  «        y c c}w )Ng      ð?)Úembed_scale)r=   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_layersr;   ÚlayersÚ	LayerNormÚ
layer_normÚgradient_checkpointingÚ	post_init)r'   r<   rt   Úir(   s       €r)   rD   zBioGptModel.__init__š   s  ø€ Ü‰Ñ˜Ô ØˆŒØ×)Ñ)ˆŒØ×1Ñ1ˆŒØ×+Ñ+ˆŒØ!×.Ñ.ˆÔØ7=×7MÒ7M”d—i‘i × 2Ñ 2Ô3ÐSVˆä5Ø×Ñ˜tŸ~™~¨t×/?Ñ/?È[ô
ˆÔô  @À×@^Ñ@^Ð`d×`nÑ`nÓoˆÔä—m‘mÔV[Ð\b×\tÑ\tÓVuÖ$vÐQRÔ%7¸È!Ö%LÒ$vÓwˆŒÜŸ,™, t§~¡~Ó6ˆŒà&+ˆÔ#à�‰Õùò %ws   ÄE"NÚ	input_idsr!   Úinputs_embedsrT   rU   r#   rV   rW   c           	      ó`  — |d u |d uz  rt        d«      ‚|€| j                  |«      }|r|€t        | j                  ¬«      }|j	                  «       d d \  }}	|�|j                  «       nd}
|€'|
|	z   }t        j                  |||j                  ¬«      }|}t        | j                  |||¬«      }|€5t        j                  |	|j                  ¬«      |
z   }|j                  d«      }| j                  ||
|¬«      }||z   }t        j                  j                  || j                  | j                   ¬«      }t#        | j$                  «      D ]D  \  }}| j                   r%t        j&                  g «      }|| j(                  k  rŒ7 ||f||||d	œ|¤Ž}ŒF | j+                  |«      }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‚   Úrandru   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Ð";Ò<ÜÐsÓtÐtàÐ Ø ×-Ñ-¨iÓ8ˆMñ ˜Ð0Ü*°$·+±+Ô>ˆOà!.×!3Ñ!3Ó!5°c°rÐ!:Ñˆ
�JØETÐE` ×!?Ñ!?Ô!AÐfgÐàÐ!à4°zÑAˆOÜ"ŸZ™Z¨
°OÈM×L`ÑL`ÔaˆNà)ˆä(Ø—;‘;Ø'Ø)Ø+ô	
ˆð ÐÜ Ÿ<™<¨
¸=×;OÑ;OÔPÐSiÑiˆLØ'×1Ñ1°!Ó4ˆLà×(Ñ(¨Ð9OÐ^jÐ(Ókˆ	Ø%¨	Ñ1ˆÜŸ™×-Ñ-¨m¸t¿|¹|ÐVZ×VcÑVcÐ-Ódˆä"+¨D¯K©KÓ"8ò 	ÑˆC�Ø�}Š}Ü&+§j¡j°£nÐ#Ø&¨¯©Ò7Øá)Øðà*Ø /Ø#Ø)ñð ñ‰Mð	ð Ÿ™¨Ó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
à×#Ñ# dÑ*ðB
ð ×)Ñ)¨DÑ0ðB
ð ×(Ñ(¨4Ñ/ð	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¬«      | _        | j                  «        y ©NF)Úbias)
r%   rD   rr   rg   rL   rM   rE   r{   Úoutput_projectionr†   ©r'   r<   r(   s     €r)   rD   zBioGptForCausalLM.__init__ÿ   sJ   ø€ Ü‰Ñ˜Ô ä! &Ó)ˆŒÜ!#§¡¨6×+=Ñ+=¸v×?PÑ?PÐW\Ô!]ˆÔð 	�‰Õr*   c                 ó   — | j                   S rb   ©r¨   ©r'   s    r)   Úget_output_embeddingsz'BioGptForCausalLM.get_output_embeddings  s   € Ø×%Ñ%Ð%r*   c                 ó   — || _         y rb   r«   )r'   Únew_embeddingss     r)   Úset_output_embeddingsz'BioGptForCausalLM.set_output_embeddings  s
   € Ø!/ˆÕr*   Nrˆ   r!   r‰   rT   ÚlabelsrU   r#   Úlogits_to_keeprV   rW   c	           	      ó€  —  | j                   |f|||||dœ|	¤Ž}
|
d   }t        |t        «      rt        | d«      n|}| j	                  |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œ˜~˜o¨tÔ4Ð]kˆØ×'Ñ'¨²a¸ÊÐ6IÑ(JÓKˆàˆØÐØ%�4×%Ñ%Ðp¨V¸FÈtÏ{É{×OeÑOeÑpÐioÑpˆDä0ØØØ#×3Ñ3Ø!×/Ñ/Ø×)Ñ)Ø$×5Ñ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¤   ÷   s  ø„ ð 5Ð6RÐSÐôò&ò0ð Øð .2Ø37Ø26Ø(,Ø*.Ø!%Ø04Ø-.ñ+
à×#Ñ# dÑ*ð+
ð ×)Ñ)¨DÑ0ð+
ð ×(Ñ(¨4Ñ/ð	+
ð
  ™ð+
ð × Ñ  4Ñ'ð+
ð ˜$‘;ð+
ð ×&Ñ&¨Ñ-ð+
ð ˜eŸl™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                 óz  •— t         ‰| �  |«       |j                  | _        t        |«      | _        t        |d«      r|j                  �|j                  }n|j                  }t        j                  |«      | _
        t        j                  |j                  |j                  «      | _        | j                  «        y )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°V×5NÑ5NÐ5ZØ!'×!:Ñ!:Ñà!'×!;Ñ!;ÐÜ—z‘zÐ"4Ó5ˆŒÜŸ)™) F×$6Ñ$6¸×8IÑ8IÓJˆŒà�‰Õr*   Nrˆ   Útoken_type_idsr!   rT   r‰   r±   rU   r#   rW   c	           	      ód  —  | j                   |f|||||dœ|	¤Ž}
|
d   }| j                  |«      }| j                  |«      }d}|�Êt        «       }|�Œ|j	                  d«      dk(  }|j	                  d| j
                  «      }t        j                  ||j	                  d«      t        j                  |j                  «      j                  |«      «      } |||«      }n2 ||j	                  d| j
                  «      |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™kØð
à+Ø)Ø'ØØ%ñ
ð ñ
Ðð ,¨AÑ.ˆØŸ™ ]Ó3ˆØ—‘ Ó/ˆàˆØÐÜ'Ó)ˆHØÐ)Ø,×1Ñ1°"Ó5¸Ñ:�Ø &§¡¨B°·±Ó @�Ü %§¡Ø §¡¨R£´%·,±,¸x×?TÑ?TÓ2U×2]Ñ2]Ð^dÓ2eó!�ñ   ¨}Ó=‘á §¡¨B°·±Ó @À&Ç+Á+ÈbÃ/ÓR�ä$ØØØ-×;Ñ;Ø*×5Ñ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
à×#Ñ# dÑ*ð2
ð ×(Ñ(¨4Ñ/ð2
ð ×)Ñ)¨DÑ0ð	2
ð
  ™ð2
ð ×(Ñ(¨4Ñ/ð2
ð × Ñ  4Ñ'ð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                   ó0  ‡ — 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¬«      | _        | j                  «        y r¦   )
r%   rD   rÂ   rr   rg   rL   rM   rE   Úscorer†   r©   s     €r)   rD   z(BioGptForSequenceClassification.__init__”  sS   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒÜ! &Ó)ˆŒÜ—Y‘Y˜v×1Ñ1°4·?±?ÈÔOˆŒ
ð 	�‰Õr*   Nrˆ   r!   rT   r‰   r±   rU   r#   r²   rW   c	           	      óÄ  —  | j                   |f|||||dœ|	¤Ž}
|
d   }t        |t        «      rt        | d«      n|}| j	                  |dd…|dd…f   «      }|�|j
                  dd \  }}n|j
                  dd \  }}| j                  j                  €|dk7  rt        d«      ‚| j                  j                  €d}nÃ|�“|| j                  j                  k7  j                  |j                  t        j                  «      }t        j                  |j
                  d   |j                  t        j                  ¬«      }||z  j                  d«      }n.d}t        j                   | j"                  j$                  › d	�«       |t        j                  ||j                  ¬
«      |f   }d}|��‡| j                  j&                  €�| j(                  dk(  rd| j                  _        nl| j(                  dkD  rL|j*                  t        j,                  k(  s|j*                  t        j                  k(  rd| j                  _        nd| j                  _        | j                  j&                  dk(  rIt/        «       }| j(                  dk(  r& ||j1                  «       |j1                  «       «      }nŒ |||«      }n‚| j                  j&                  dk(  r=t3        «       } ||j5                  d| j(                  «      |j5                  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<   rv   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™kØð
à+Ø)Ø'ØØ%ñ
ð ñ
Ðð ,¨AÑ.ˆÜ8BÀ>ÔSVÔ8Wœ˜~˜o¨tÔ4Ð]kˆØ—‘˜Mª!¨]ºAÐ*=Ñ>Ó?ˆàÐ Ø*3¯/©/¸"¸1Ð*=Ñ'ˆJ™à*7×*=Ñ*=¸b¸qÐ*AÑ'ˆJ˜à�;‰;×#Ñ#Ð+°
¸a²ÜÐ\Ó]Ð]Ø�;‰;×#Ñ#Ð+Ø!#ÑØÐ"à%¨¯©×)AÑ)AÑA×EÑEÀfÇmÁmÔUZ×U`ÑU`ÓaˆLÜ!ŸL™L¨¯©¸Ñ)<ÀVÇ]Á]ÔZ_×ZeÑZeÔfˆMØ"/°,Ñ">×!FÑ!FÀrÓ!JÑà!#ÐÜ×ÑØ—>‘>×*Ñ*Ð+ð ,Zð Zôð
 œuŸ|™|¨J¸v¿}¹}ÔMÐOaÐaÑbˆàˆØÑØ�{‰{×'Ñ'Ð/Ø—?‘? 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Ò'Ù# M×$9Ñ$9Ó$;¸V¿^¹^Ó=MÓN‘Dá# M°6Ó:‘DØ—‘×)Ñ)Ð-JÒJÜ+Ó-�Ù × 2Ñ 2°2°t·±Ó GÈÏÉÐUWËÓY‘Ø—‘×)Ñ)Ð-IÒIÜ,Ó.�Ù ¨vÓ6�ä/ØØ Ø/×?Ñ?Ø-×;Ñ;Ø*×5Ñ5ô
ð 	
r*   c                 ó.   — | j                   j                  S rb   ©rg   r|   r¬   s    r)   Úget_input_embeddingsz4BioGptForSequenceClassification.get_input_embeddingsô  s   € Ø�{‰{×'Ñ'Ð'r*   c                 ó&   — || j                   _        y 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Õ   …  s  ø„ ð˜|õ ð Øð .2Ø37Ø(,Ø26Ø*.Ø!%Ø04Ø-.ñS
à×#Ñ# dÑ*ðS
ð ×)Ñ)¨DÑ0ðS
ð  ™ð	S
ð
 ×(Ñ(¨4Ñ/ðS
ð × Ñ  4Ñ'ðS
ð ˜$‘;ðS
ð ×&Ñ&¨Ñ-ðS
ð ˜eŸl™lÑ*ðS
ð 
Ð1Ñ	1òS
ó ó ðS
òj(ö)r*   rÕ   )r¤   r¿   rÕ   rr   rf   )5Ú__doc__ry   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      sH  ðñ ã ã Ý ß AÑ Aå !ß .Ý )Ý /÷ó õ .Ý &÷ó õ 8Ý 5÷ñ õ
 =Ý .ôUÐ'Dô Uô	Ð 7ô 	ô	�mô 	ô@Ð)ô @ðF ô˜Oó ó ðð ô[
Ð'ó [
ó ð[
ñ| ðôô
?
Ð-¨ó ?
óð
?
ðD ôC
Ð#8ó C
ó ðC
ñL ðôôe)Ð&;ó e)óðe)òP�r*   