o
    ߥi                     @   s   d dl Z d dlmZ d dlZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ dd	lmZmZ e Ze	jejejd
G dd deZdS )    N)Models)Model)MODELS)&AttentionTextClassificationModelOutput)logger)Tasks   )MGeoMGeoPreTrainedModel)module_namec                       sT   e Zd Z		ddedef fddZ												ddefd	d
Z  ZS )MGeoForTextRankingsingle-modalr   finetune_modegis_numc           	   	      s   t  | |dd}|dd}|| _|| _t| | jt| j||dd |j	d ur.|j	n|j
}t|| _t|jd| _|   d S )N
neg_sample   eval_neg_sampleT)add_pooling_layerr   )super__init__getr   r   setattrbase_model_prefixr	   configclassifier_dropouthidden_dropout_probnnDropoutdropoutLinearhidden_size
classifier	post_init)	selfr   r   r   argskwargsr   r   r   	__class__ c/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/models/multi_modal/mgeo/text_ranking.pyr      s   zMGeoForTextRanking.__init__Nreturnc                 O   s   | j j||||||||	|
||d}|d }| |}| |}| j jrK|d| jd }|d}tj	
 }tj|tj|jd}|||}t||dS t|dS )N)	input_idsattention_masktoken_type_idsposition_ids	head_maskinputs_embedsoutput_attentionsoutput_hidden_statesreturn_dictgis_listgis_tpr   r   )dtypedevice)losslogits)r:   )
base_modelforwardr   r!   trainingviewr   sizetorchr   CrossEntropyLosszeroslongr8   r   )r#   r+   r,   r-   r.   r/   r0   labelsr1   r2   r3   r4   r5   r$   r%   outputspooled_outputr:   scores
batch_sizeloss_fcttarget_labelr9   r(   r(   r)   r<   ,   s:   






zMGeoForTextRanking.forward)r   r   )NNNNNNNNNNNN)	__name__
__module____qualname__strintr   r   r<   __classcell__r(   r(   r&   r)   r      s.    r   )r@   torch.nnr   torch.utils.checkpointmodelscope.metainfor   modelscope.modelsr   modelscope.models.builderr   modelscope.outputsr   modelscope.utilsr   loggingmodelscope.utils.constantr   backboner	   r
   
get_loggerregister_moduletext_rankingmgeor   r(   r(   r(   r)   <module>   s   