o
    "j                     @   s0   d dl mZ ddlmZ g ZG dd deZdS )    )	ASPHelper   )MetaOptimizerBasec                       sL   e Zd Z fddZ fddZdd Zdd Zd	d
 Z	dddZ  Z	S )ASPOptimizerc                    s&   t  | || _g d| _g | _d S )N)ZAMPOptimizerZLarsOptimizerZLambOptimizerZRecomputeOptimizerZGradientMergeOptimizer)super__init__	inner_optZmeta_optimizers_white_listZmeta_optimizers_black_list)selfZ	optimizer	__class__ w/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddle/distributed/fleet/meta_optimizers/asp_optimizer.pyr      s   

zASPOptimizer.__init__c                    s   t  |||| d S )N)r   _set_basic_info)r	   loss
role_makerZuser_defined_optimizeruser_defined_strategyr
   r   r   r   %   s   zASPOptimizer._set_basic_infoc                 C   s   | j jsdS | jjrdS dS )NFT)r   Z_is_collectiver   asp)r	   r   r   r   
_can_apply,   s
   zASPOptimizer._can_applyc                 C   
   d|_ d S )NFr   )r	   dist_strategyr   r   r   _disable_strategy5      
zASPOptimizer._disable_strategyc                 C   r   )NTr   )r	   r   contextr   r   r   _enable_strategy8   r   zASPOptimizer._enable_strategyNc                 C   s"   t j| j||||d\}}||fS )N)startup_programparameter_listno_grad_set)r   Z	_minimizer   )r	   r   r   r   r   Zoptimize_opsZparams_gradsr   r   r   minimize_impl;   s   
zASPOptimizer.minimize_impl)NNN)
__name__
__module____qualname__r   r   r   r   r   r   __classcell__r   r   r
   r   r      s    	r   N)Zpaddle.incubate.aspr   Zmeta_optimizer_baser   __all__r   r   r   r   r   <module>   s   