o
    *j                     @   sn   d dl mZmZ d dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ ejejdG dd	 d	e
ZdS )
    )AnyDictN)MetricsTrainers)ModelOutputBase)NlpEpochBasedTrainer)TRAINERS)module_namec                   @   s2   e Zd Zdd Zdd Zdeeef fddZdS )	TextGenerationTrainerc                 C   s   | j j| ddS )NT)Zskip_special_tokens)Zeval_preprocessordecodetolist)selftokens r   p/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/trainers/nlp/text_generation_trainer.py_decode   s   zTextGenerationTrainer._decodec                 C   s   | j r| jjn| j}|  t }t 7 tj| j	v r%|
| || tj| j	v s1tj| j	v rD|
|jdi | W d    |S W d    |S 1 sOw   Y  |S )Nr   )_distmodelmoduleevaldicttorchZno_gradr   Ztext_gen_metricZmetricsupdate_eval_genarateZPPLZloss_metricforward)r   datar   outputr   r   r   evaluation_step   s   


z%TextGenerationTrainer.evaluation_stepreturnc                    sp   | |}t|tr| } fdd|d D |d<  fdd|d D |d< t|d t|d ks6J |S )Nc                       g | ]}  |qS r   r   .0seqr   r   r   
<listcomp>$       z8TextGenerationTrainer._eval_genarate.<locals>.<listcomp>	sequencespredsc                    r   r   r    r!   r$   r   r   r%   %   r&   labelsZtgts)generate
isinstancer   to_dictlen)r   r   r   resultr   r$   r   r       s   

z$TextGenerationTrainer._eval_genarateN)	__name__
__module____qualname__r   r   r   strr   r   r   r   r   r   r
      s    r
   )typingr   r   r   Zmodelscope.metainfor   r   Zmodelscope.outputs.outputsr   Zmodelscope.trainersr   Zmodelscope.trainers.builderr   Zregister_moduleZtext_generation_trainerr
   r   r   r   r   <module>   s   