o
    *j                     @   s$  d 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mZmZmZmZ ddlmZmZmZ ddlmZ defd	efgd
efgd
efgd
efgd
efgd
efgd
efdefgde	fdefdefgd
efgd
efgd
efgd
efgd
efgd
efgd
efgdZdddZdd Zdd ZdS )zRace.    )OrderedDict)finetune)accuracy_func_provideraccuracy_metricf1_macro_metric	f1_metric)CLASSIFICATION_DATASETSMULTI_CHOICE_DATASETS
PROCESSORSSuperGlueDatasetget_output_func)
multirc_emqa_exact_matchqa_f1)PVPSZEMZF1Zaccuracyzf1-macroZf1aZemacc)recordZcopaZrteZboolqZwicwsccbZmultircZmnliZsst2ZqnliZqqpZmrpcZcolasquadFc              
   C   sJ   | j  }| j}t| ||| jd||d}t| ||| jd|d|d}||fS )z&Provide train and validation datasets.train)pattern_textdevT)Z	for_trainr   )tasklowerdata_dirr   
seq_length)args	tokenizerr   Z	task_namer   Ztrain_datasetZvalid_dataset r   t/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/models/nlp/mglm/tasks/superglue/finetune.pytrain_valid_datasets_provider/   s,   

r!   c              
      sv    fdd}t  j  }d} j dv r& jr& js&ddlm} |}tt j  }t	|| |||ddS )	z"Provide metrics callback function.c                    s   t   j  j j| S )N)r   r   r   r   r   )splitr   r   r   r    single_dataset_providerK   s   z6metrics_func_provider.<locals>.single_dataset_providerNr   r   r   )classify_evaluateF)is_test	eval_funcoutput_funcZ
only_rank0r   )
r   r   r   
cloze_evalwsc_negativetasks.language_model.finetuner&   r   DEFAULT_METRICSr   )r   r   r'   r$   r)   r(   r&   Zmetric_dictr   r#   r    metrics_func_providerH   s*   r.   c              	   C   s  i }t | j  | }t| j  | d | | j| j| j| jd}| j	r)|j
|d< | j dv rG| jrG| jsGddlm} t| t|t|d d S | jrN|j}n| j tv }|| _|sp| jr_dnd|d	< d
|d< t| |d< nd|d	< d|d< d|d< t| t|td d S )N)
pattern_idis_multi_tokennum_prompt_tokensspell_lengthr%   r   )lm_forward_step)end_of_epoch_callback_providerZforward_stepZmultiple_choiceZclassificationZ
model_typeFmulti_tokenZ
num_labelsT   )r4   )r
   r   r   r   Z
get_labelsr   r/   r5   r1   Zcontinuous_promptr2   r*   r+   r,   r3   r   r!   r.   r0   r	   len)r   Zmodel_kwargs	processorZpvpr3   r5   r   r   r    maina   s\   


r9   N)F)__doc__collectionsr   Zfinetune_glmr   Ztasks.eval_utilsr   r   r   r   Ztasks.superglue.datasetr   r	   r
   r   r   Ztasks.superglue.evaluater   r   r   Ztasks.superglue.pvpr   r-   r!   r.   r9   r   r   r   r    <module>   s8   
