o
    rqi                     @   s   d dl Z d dlmZmZ d dlZd dlmZ d dlmZm	Z	m
Z
 edZ	ddeejjeejjj f dedefd	d
Zdd Ze  dS )    N)IterableUnion)
ConfigDict)Registrybuild_from_cfgdefault_groupZ	optimizermodelcfgdefault_argsc                 C   sj   |du ri }t | tjjst| dr)t | jtjjr)t| dr"| j} |  |d< n| |d< t|tt	|dS )a   build optimizer from optimizer config dict

    Args:
        model: A torch.nn.Module or an iterable of parameters.
        cfg (:obj:`ConfigDict`): config dict for optimizer object.
        default_args (dict, optional): Default initialization arguments.
    Nmoduleparams)Z	group_keyr
   )

isinstancetorchnnModulehasattrr   
parametersr   
OPTIMIZERSr   )r   r	   r
    r   l/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/modelscope/trainers/optimizer/builder.pybuild_optimizer   s   
r   c                  C   sN   t tjD ]\} }| drqt |r$t|tjjr$tj	t
| |d qd S )N__)module_nameZ
module_cls)inspect
getmembersr   Zoptim
startswithisclass
issubclassZ	Optimizerr   Zregister_moduler   )namer   r   r   r   register_torch_optimizers)   s   
r   )N)r   typingr   r   r   Zmodelscope.utils.configr   Zmodelscope.utils.registryr   r   r   r   r   r   Z	parameter	Parameterdictr   r   r   r   r   r   <module>   s    


