
    zj                     \    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 ZdS )	    )
MethodTypeN)_C_ops_legacy_C_ops)fleet)core   )ParallelModec                     d }t           j         }|j                                        t          j        urt          ||           | _        | S )Nc                 \	   | j         sd S g }g }g }g }t          |dd           rt          |j        d         t                    r|j        D ]}|d         D ]}d }t          |d          r|j        |j        }n|j        |j        }||                    |           |j	        t          j        j        j        t          j        fv r|                    |           |j	        t          j        fv r|                    |           |                    |           ǌҐn_t"          j        j        }	|	j        d         j        }
|
rjt          |d          sJ t          |d          sJ |j        rd|_        |j        D ]}|                                 t          |d	          sJ |j        }n|j        }|D ]}d }t          |d          r|j        |j        }n|j        |j        }||                    |           |j	        t          j        j        j        t          j        fv r|                    |           |j	        t          j        fv r|                    |           |                    |           t          j        t7          j        dg                              t6          j                            }t          j        t7          j        dg                              t6          j                            }t          j        t7          j        dg                              t6          j                            }| j        | _         tC          |          r;tE          j#        || j$        ||           tK          j&        | j         |          | _         tC          |          r;tE          j#        || j$        ||           tK          j&        | j         |          | _         tC          |          r;tE          j#        || j$        ||           tK          j&        | j         |          | _         | j         '                    d
          | _         t          j(        )                    | j         t          j(        j*        j+        d            | j         '                    d          | _         d S )N_param_groupsr   params	main_gradsharding_configs_comm_buffers_sharding_enableF_local_parameter_listint32)opgroupbool),_enablegetattr
isinstancer   dicthasattrr   gradappenddtyper   VarDescVarTypeFP16paddlefloat16bfloat16r   _user_defined_strategyhybrid_configscomm_overlapr   r   scale_gradsr   _parameter_list	to_tensornparrayastypebool__temp_found_inf_value_false
_found_inflenr   check_finite_and_unscale_scaler   
bitwise_orcastdistributed
all_reduceReduceOpMAX)self	optimizerparam_gradsparam_grads_bf16param_grads_fp16param_grads_fp32r   paramtgt_gradstrategysharding_stage_1_overlapbuffer
parameterstemp_found_inf_fp16temp_found_inf_bf16temp_found_inf_fp32s                   o/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/paddle/distributed/fleet/scaler.pyunscale_methodz*distributed_scaler.<locals>.unscale_method   s   | 	F9ot44 B	:#A&:
 :
 B	: #0 > >"8_ > >E#H{33.!O7#(?/#(:+#**8444#> L05"N.   -33H====%^"O0   -33H====,33H===+>>0 {9H'/'>"( % ( 7 y/:::::y*<=====- 716I.'5 ) )F&&(((( y*ABBBBB&<

&6
# : :5+.. *5?3N$HHZ+$zH'&&x000~,1*   )//9999!,   )//9999(//999$.rx}}/C/CBH/M/MNN$.rx}}/C/CBH/M/MNN$.rx}}/C/CBH/M/MNN:   		2  #	   %/!4 DO    		2  #	   %/!4 DO    		2  #	   %/!4 DO /..w77
 	%%O 2 ; ?t 	& 	
 	
 	
 /..v66    )r   _hcgget_parallel_moder	   DATA_PARALLELr   _unscale)scalerrJ   	fleet_envs      rI   distributed_scalerrR      sP    w7 w7 w7t I~''))1KKK$^V<<MrK   )typesr   numpyr+   r"   r   r   paddle.distributedr   paddle.frameworkr   base.topologyr	   rR    rK   rI   <module>rY      s               ( ( ( ( ( ( ( ( $ $ $ $ $ $ ! ! ! ! ! ! ' ' ' ' ' '    rK   