
    9i                         S SK r S SKJrJr  S SKrS SKJr  S SKJrJ	r	J
r
  \" S5      r SS\\R                  R                  \\R                  R                  R                     4   S\S\4S	 jjrS
 r\" 5         g)    N)IterableUnion)
ConfigDict)Registrybuild_from_cfgdefault_group	optimizermodelcfgdefault_argsc                 x   Uc  0 n[        U [        R                  R                  5      (       dD  [	        U S5      (       ad  [        U R
                  [        R                  R                  5      (       a1  [	        U S5      (       a  U R
                  n U R                  5       US'   OXS'   [        U[        [        US9$ )zbuild 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.
moduleparams)	group_keyr   )

isinstancetorchnnModulehasattrr   
parametersr   
OPTIMIZERSr   )r
   r   r   s      e/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/trainers/optimizer/builder.pybuild_optimizerr      s     %))g8/ /!+ELL%((//!J!J5(##LLE!&!1!1!3X "'XZ=|M M    c                  N   [         R                  " [        R                  5       H}  u  pU R	                  S5      (       a  M  [         R
                  " U5      (       d  M:  [        U[        R                  R                  5      (       d  Me  [        R                  [        XS9  M     g )N__)module_name
module_cls)inspect
getmembersr   optim
startswithisclass
issubclass	Optimizerr   register_moduler   )namer   s     r   register_torch_optimizersr(   )   st    **5;;7??4  ??6""z&27++2G2G(I (I&&4 ' D 8r   )N)r   typingr   r   r   modelscope.utils.configr   modelscope.utils.registryr   r   r   r   r   r   	parameter	Parameterdictr   r(    r   r   <module>r0      s     "  . M Mk"
 *.M5!)%((*<*<*F*F!G"H I M#M #'M8D  r   