o
    pi$1                     @  sv  d dl mZ d dlmZ d dlmZmZ er"d dlmZ d dl	m
Z
 eeZdd Zdd	 Zd
d Zdd ZdZdZeedd eedd eedd eedd eedd eedd eedd eedd eedd er|G dd deddZd Zeed!d eed"g  eed#g  eed$d  eed%g  eed&d erG d'd( d(eddZG d)d* d*eddZd+Zeed!d eed,d- eed.d/ eed0d1 eed2d3 eed4d5 eed6d7 eed8d9 eed:d eed;g  eed<g  eed=g  eed>d eed?d eed@d eedAd er'G dBdC dCeddZdDZeed!d eedEdF eedGdH eedId eedJdF eedKdF eedLdF eedMdF eedNd eedOdP eed&d eedQg  eedRd eedSdT eedUd eedVd erG dWdX dXeddZdYZeed!d eedZdF eed[d erG d\d] d]eddZd^Zeed!d eed_d` eedadF eedbdF eedcdd eededF eedfdF eedgdF eedhd eedidj eedkdj eedlg dm eedndj eedod eedpd er"G dqdr dreddZdsZeed!d eedtd eedudH eedvdH eedwdxg eedyd eedzd er\G d{d| d|eddZ d}Z!ee!d!d ee!d~dF ee!ddF ee!dd ee!dd erG dd deddZ"dZ#ee#d!d ee#ddF erG dd deddZ$dZ%ee%d!d erG dd deddZ&dZ'ee'd!d ee'dg  erG dd deddZ(dZ)ee)d!d ee)dd ee)dd ee)dd ee)dd erG dd deddZ*dZ+ee+dd ee+dd ee+dd er"G dd deddZ,dZ-ee-d!d er9G dd deddZ.dS dS )    )annotations)defaultdict)TYPE_CHECKING	TypedDict)Tensor)_DTypeLiteralc                 C  s   t |  S N_g_default_config)category r   q/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/paddle/distributed/auto_parallel/constants.pyget_category_default_config   s   r   c                 C  s   |t | < d S r   r	   )r   default_valuer   r   r   set_category_default_config       r   c                 C  s   t |  | S r   r	   )r   fieldr   r   r   get_field_default_config$   r   r   c                 C  s   |t |  |< d S r   r	   )r   r   r   r   r   r   set_field_default_config(   s   r   	not_foundbase	auto_modesemigradient_scaleT"gradient_scale_using_allreduce_avgF	use_cachereturn_numpy	all_ranks
split_dataseedNreinitc                   @  sV   e Zd ZU ded< ded< ded< ded< ded< ded< ded	< d
ed< ded< dS )_BaseConfigstrr   boolr   r   r   r   r   r   z
int | Noner   r    N__name__
__module____qualname____annotations__r   r   r   r   r!   >   s   
 r!   )totalZ	recomputeenablecheckpointsno_recompute_segmentssrrefined_ops_patternsenable_tuningc                   @  s.   e Zd ZU ded< ded< ded< ded< dS )_RefinedOpsPatterns	list[str]Zmain_opsintnumZpre_opsZsuf_opsNr$   r   r   r   r   r0   W   s
   
 r0   c                   @  s>   e Zd ZU ded< ded< ded< ded< d	ed
< ded< dS )_RecomputeConfigr#   r*   zlist[Tensor]r+   z	list[int]r,   r2   r-   zlist[_RefinedOpsPatterns]r.   r/   Nr$   r   r   r   r   r4   ]   s   
 r4   ampdtypeZfloat16levelZo1init_loss_scalingg      @incr_every_n_stepsi  decr_every_n_nan_or_inf   
incr_ratiog       @
decr_ratiog?use_dynamic_loss_scalingcustom_white_listcustom_black_listcustom_black_varnamesuse_fp16_guarduse_bf16_guarduse_master_graduse_promotec                   @  s   e Zd ZU ded< ded< ded< ded< d	ed
< d	ed< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< dS )
_AMPConfigr#   r*   r   r6   r"   r7   floatr8   r2   r9   r:   r<   r=   r>   r1   r?   r@   rA   rB   rC   rD   rE   Nr$   r   r   r   r   rF   }   s"   
 rF   Zshardingstage   degree   enable_overlapparam_comm_stream_numgrad_comm_stream_numparam_bucket_size_numelgrad_bucket_size_numelenable_hierarchical_commpartition_algorZgreedy_eventuning_rangeZrelease_gradientsZcomm_buffer_size_MB   Zenable_tensor_fusionZsave_unbalanced_paramc                   @  sn   e Zd ZU ded< ded< ded< ded< ded< ded< ded	< ded
< ded< ded< ded< ded< dS )_ShardingConfigr#   r*   r2   rH   rJ   rL   rM   rN   rO   rP   rQ   r"   rR   r/   zlist[int] | tuple[int, int]rS   Nr$   r   r   r   r   rU      s   
 rU   Zgradient_mergek_stepsavgc                   @  s&   e Zd ZU ded< ded< ded< dS )_GradientMergeConfigr#   r*   r2   rV   rW   Nr$   r   r   r   r   rX      s   
 rX   Zpipelineschedule_modeZ1F1B	pp_degree
vpp_degreevpp_seg_method micro_batch_sizeaccumulate_stepsgeneration_batch_sizeenable_send_recv_overlapjob_schedule_profiler_startjob_schedule_profiler_stopZprogram_runtimes)=   H   G   "      Zmemory_limit_timessplit_backward auto_parallel_sync_shared_paramsc                   @  sv   e Zd ZU ded< ded< ded< ded< ded< ded	< ded
< ded< ded< ded< ded< ded< ded< dS )_PipelineConfigr#   r*   r"   rY   r2   rZ   r[   r\   r^   r_   r`   ra   rb   rd   rj   rk   Nr$   r   r   r   r   rl      s   
 rl   Zqatchannel_wise_abs_maxweight_bitsactivation_bitsnot_quant_patternZ
skip_quantalgoonnx_formatc                   @  sF   e Zd ZU ded< ded< ded< ded< ded< d	ed
< ded< dS )
_QATConfigr#   r*   rm   r2   rn   ro   r1   rp   z
str | Nonerq   rr   Nr$   r   r   r   r   rs      s   
 rs   Ztuningprofile_start_stepprofile_end_steprun_after_tuningdebugc                   @  s6   e Zd ZU ded< ded< ded< ded< ded< dS )	_TuningConfigr#   r*   r2   rt   ru   rv   rw   Nr$   r   r   r   r   rx        
 rx   Zdataset
num_shardsc                   @     e Zd ZU ded< ded< dS )_DatasetConfigr#   r*   r2   rz   Nr$   r   r   r   r   r|   "     
 r|   Zfused_linear_promotionc                   @     e Zd ZU ded< dS )_FusedLinearPromotionConfigr#   r*   Nr$   r   r   r   r   r   /     
 r   Zfused_passesfused_passes_listc                   @  r{   )_FusedPassesConfigr#   r*   r1   r   Nr$   r   r   r   r   r   <  r}   r   Zdp_optimizationfuse_all_reduce_opsfuse_grad_size_in_MB    overlap_comm_caclgradient_sync_after_accumulatec                   @  s6   e Zd ZU ded< ded< ded< ded< ded< dS )	_DPOptimizationConfigr#   r*   r   r2   r   r   r   Nr$   r   r   r   r   r   O  ry   r   Zmp_optimization!allreduce_matmul_grad_overlappingZreplace_with_c_embeddingZ#replace_with_parallel_cross_entropyc                   @  r~   )_MPOptimizationConfigr#   r   Nr$   r   r   r   r   r   e  r   r   Zsp_optimizationc                   @  r~   )_SPOptimizationConfigr#   r*   Nr$   r   r   r   r   r   q  r   r   )/
__future__r   collectionsr   typingr   r   Zpaddler   Zpaddle._typing.dtype_liker   dictr
   r   r   r   r   	NOT_FOUNDZBASEr!   Z	RECOMPUTEr0   r4   AMPrF   ZSHARDINGrU   ZGRADIENT_MERGErX   ZPIPELINErl   ZQATrs   ZTUNINGrx   ZDATASETr|   ZFUSEDLINEARPROMOTIONr   ZFUSED_PASSESr   ZDP_OPTIMIZATIONr   ZMP_OPTIMIZATIONr   ZSP_OPTIMIZATIONr   r   r   r   r   <module>   s2  	