o
    *ÎjØ  ã                   @   s6   d dl Z d dlmZ d dlmZ G dd„ dejƒZdS )é    N)Ú	ModelFilec                       s”   e Zd ZdZeƒ Zedd„ ƒZedd„ ƒZ	edd„ ƒZ
‡ fdd	„Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Z			ddd„Z				ddd„Z‡  ZS )ÚSpaceModelBasez;
    Basic model wrapper for static graph and dygrpah.
    c                 C   s   | t j|< d S ©N©r   Ú	_registry)ÚclsÚname© r	   úm/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/models/nlp/space/model/model_base.pyÚregister   s   
zSpaceModelBase.registerc                 C   s
   t j|  S r   r   )r   r	   r	   r
   Úby_name   s   
zSpaceModelBase.by_namec                 O   s&   t  |jj¡}|| |g|¢R i |¤ŽS r   )r   r   ZModelÚmodel)Ú	model_dirÚconfigÚargsÚkwargsZ	model_clsr	   r	   r
   Úcreate   s   zSpaceModelBase.createc                    s@   t t| ƒ ¡  tj |tj¡| _|j	j
| _
|j| _|jj| _d S r   )Úsuperr   Ú__init__ÚosÚpathÚjoinr   ZTORCH_MODEL_BIN_FILEZinit_checkpointZDatasetÚabandon_labelZuse_gpuZTrainerZgpu)Úselfr   r   ©Ú	__class__r	   r
   r      s   ÿ

zSpaceModelBase.__init__c                 C   ó   t ‚)z Create model's parameters. ©ÚNotImplementedError)r   r	   r	   r
   Ú_create_parameters'   ó   z!SpaceModelBase._create_parametersc                 C   r   )zH NO LABEL: Real forward process of model in different mode(train/test). r   )r   ÚinputsÚis_trainingÚ
with_labelr	   r	   r
   Ú_forward+   r    zSpaceModelBase._forwardc                 C   r   )z@ NO LABEL: Calculate loss function by using inputs and outputs. r   )r   r!   Úoutputsr#   Ú	data_filer	   r	   r
   Ú_collect_metrics/   r    zSpaceModelBase._collect_metricsc                 C   r   )z* Optimize loss function and update model. r   )r   ZlossZ	optimizerZlr_schedulerr	   r	   r
   Ú	_optimize3   r    zSpaceModelBase._optimizec                 C   r   )z" Real inference process of model. r   )r   r!   Ústart_idÚeos_idÚmax_gen_lenÚ
prev_inputr	   r	   r
   Ú_infer7   r    zSpaceModelBase._inferFNc                 C   sJ   |r|   ¡  n|  ¡  | jrdn|}| j|||d}| j||||d}|S )z¶
        Forward process, include real forward, collect metrices and optimize(optional)

        Args:
            inputs(`dict` of numpy.ndarray/int/float/...) : input data
        F)r#   )r#   r&   )ÚtrainÚevalr   r$   r'   )r   r!   r"   r#   r&   r%   Zmetricsr	   r	   r
   Úforward;   s   
ÿzSpaceModelBase.forwardc                 C   s    |   ¡  | j|||||d}|S )zqInference process.

        Args:
            inputs(`dict` of numpy.ndarray/int/float/...) : input data
        )r)   r*   r+   r,   )r/   r-   )r   r!   r)   r*   r+   r,   Úresultsr	   r	   r
   ÚinferR   s   ûzSpaceModelBase.infer)FFN)NNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Údictr   Úclassmethodr   Ústaticmethodr   r   r   r   r$   r'   r(   r-   r0   r2   Ú__classcell__r	   r	   r   r
   r   
   s0    


	
üûr   )r   Ztorch.nnÚnnZmodelscope.utils.constantr   ÚModuler   r	   r	   r	   r
   Ú<module>   s   