o
    ॵ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_group	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)	group_keyr   )

isinstancetorchnnModulehasattrr   
parametersr   
OPTIMIZERSr   )r	   r
   r    r   Y/home/ubuntu/.local/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_name
module_cls)inspect
getmembersr   optim
startswithisclass
issubclass	Optimizerr   register_moduler   )namer   r   r   r   register_torch_optimizers)   s   
r%   )N)r   typingr   r   r   modelscope.utils.configr   modelscope.utils.registryr   r   r   r   r   r   	parameter	Parameterdictr   r%   r   r   r   r   <module>   s    


