o
    "Õj"  ã                   @   sh   d dl mZ d dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ ddlmZ d	d
„ ZdS )é    )Ú
MethodTypeN)Ú_C_opsÚ_legacy_C_ops)Úto_variable)Úfleet)Úcoreé   )ÚParallelModec                 C   s.   dd„ }t j }|j ¡ tjurt|| ƒ| _| S )Nc                 S   sê  | j sd S g }g }g }g }t|dd ƒrmt|jd tƒrm|jD ]M}|d D ]F}d }t|dƒr6|jd ur6|j}n|jd ur>|j}|d urj| |¡ |j	t
jjjtjfv rX| |¡ q$|j	tjfv re| |¡ q$| |¡ q$qntjj}	|	jd j}
|
r¢t|dƒs€J ‚t|dƒs‡J ‚|jrd|_|jD ]}| ¡  qt|d	ƒsžJ ‚|j}n|j}|D ]F}d }t|dƒr¹|jd ur¹|j}n|jd urÁ|j}|d urí| |¡ |j	t
jjjtjfv rÛ| |¡ q§|j	tjfv rè| |¡ q§| |¡ q§tt dg¡ tj¡ƒ}tt dg¡ tj¡ƒ}tt dg¡ tj¡ƒ}| j| _ t!|ƒr,t" #|| j$||¡ t% &| j |¡| _ t!|ƒrBt" #|| j$||¡ t% &| j |¡| _ t!|ƒrXt" #|| j$||¡ t% &| j |¡| _ | j  'd
¡| _ tj(j)| j tj(j*j+d d | j  'd¡| _ d S )NÚ_param_groupsr   ÚparamsÚ	main_gradZsharding_configsÚ_comm_buffersÚ_sharding_enableFÚ_local_parameter_listZint32)ÚopÚgroupÚbool),Z_enableÚgetattrÚ
isinstancer
   ÚdictÚhasattrr   ZgradÚappendZdtyper   ZVarDescZVarTypeZFP16ÚpaddleZfloat16Zbfloat16r   Z_user_defined_strategyZhybrid_configsZcomm_overlapr   r   Zscale_gradsr   Z_parameter_listr   ÚnpÚarrayZastypeZbool_Z_temp_found_inf_value_falseZ
_found_infÚlenr   Zcheck_finite_and_unscaleZ_scaler   Z
bitwise_orÚcastÚdistributedZ
all_reduceZReduceOpÚMAX)ÚselfZ	optimizerZparam_gradsZparam_grads_bf16Zparam_grads_fp16Zparam_grads_fp32r   ÚparamZtgt_gradZstrategyZsharding_stage_1_overlapÚbufferÚ
parametersZtemp_found_inf_fp16Ztemp_found_inf_bf16Ztemp_found_inf_fp32© r#   ú`/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddle/distributed/fleet/scaler.pyÚunscale_method   sÖ   
ÿ
ÿ


þÿ
€ëÿÿþ



þÿ
€
üÿ
üÿ
üÿÿz*distributed_scaler.<locals>.unscale_method)r   Z_hcgZget_parallel_moder	   ZDATA_PARALLELr   Z_unscale)Zscalerr%   Z	fleet_envr#   r#   r$   Údistributed_scaler   s
   zr&   )Útypesr   Únumpyr   r   r   r   Zpaddle.base.dygraphr   Zpaddle.distributedr   Zpaddle.frameworkr   Zbase.topologyr	   r&   r#   r#   r#   r$   Ú<module>   s   