
    Αi#                       S SK Jr  S SKrS SKJr  SSKJr  \(       a  S SKJr   " S S5      r	 " S	 S
\	5      r
 " S S\	5      r " S S\	5      r " S S\	5      r " S S\	5      r " S S\	5      r " S S\	5      r " S S\	5      r " S S\	5      r " S S\	5      r " S S\	5      r " S S \	5      r " S! S"\	5      r " S# S$\	5      rg)%    )annotationsN)TYPE_CHECKING   )	constants)_DTypeLiteralc                  @    \ rS rSrS
S jrS rS rS rS rS
S jr	S	r
g)
BaseConfig   Nc                \   Xl         S U l        Ub*  [        U[        5      (       a  X l        O[	        SU 35      e[
        R                  " U R                   5      nUR                  5        H  u  pE[        XU5        M     U R                  (       a  U R                  U R                  5        g g Nz%Expected a dictionary. But received: )
	_category_config_dict
isinstancedict
ValueErrorr   get_category_default_configitemssetattr	from_dict)selfcategoryconfig_dictconfigfielddefault_values         i/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/distributed/auto_parallel/strategy.py__init__BaseConfig.__init__   s    ! "+t,,$/! ;K=I  66t~~F$*LLN ED/ %3 NN4,,-     c                    [         R                  " U R                  5      nUR                  5        HE  nUR	                  U[         R
                  5      nU[         R
                  :w  d  M9  [        XU5        MG     g N)r   r   r   keysget	NOT_FOUNDr   )r   r   r   r   values        r   r   BaseConfig.from_dict-   sT    66t~~F[[]EOOE9+>+>?E	+++U+	 #r   c                .   0 n[         R                  " U R                  5      nUR                  5        H  n[	        X5      nXAU'   M     U R
                  R                  5        H.  u  p4[        U[        5      (       d  M  UR                  5       X'   M0     U$ r!   )
r   r   r   r"   getattr__dict__r   r   r	   to_dict)r   result_dictr   r   r%   s        r   r*   BaseConfig.to_dict5   s{    66t~~F[[]ED(E!& # !MM//1LE%,,%*]]_" 2 r   c                z    U R                  5       nSnUR                  5        H  u  p4USU SU S3-  nM     US-   $ )N{"z":"z",})r*   r   )r   r+   stringkvs        r   __repr__BaseConfig.__repr__@   sI    lln%%'DA!Cs"o%F (|r   c           	         U R                   nUR                  U5      nX1[        U 5      '   U R                  R	                  5        H%  u  pE[        X4[        R                  " XQ5      5        M'     U$ r!   )	__class____new__idr)   r   r   copydeepcopy)r   memoclsresultr2   r3   s         r   __deepcopy__BaseConfig.__deepcopy__G   sU    nnS!RXMM'')DAFt}}Q56 *r   c                D    U R                  5       nUR                  X5      $ r!   )r*   r#   )r   r2   dr+   s       r   r#   BaseConfig.getO   s    llnq$$r   )r   r   r!   )__name__
__module____qualname____firstlineno__r   r   r*   r4   r?   r#   __static_attributes__ r   r   r	   r	      s     .&,	%r   r	   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )RecomputeConfigT   c                D   > [         R                  n[        TU ]  X!5        g r!   )r   	RECOMPUTEsuperr   r   r   r   r7   s      r   r   RecomputeConfig.__init__U   s    &&/r   rI   r!   rD   rE   rF   rG   r   rH   __classcell__r7   s   @r   rK   rK   T       0 0r   rK   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )FusedLinearPromotionConfigZ   c                D   > [         R                  n[        TU ]  X!5        g r!   )r   FUSEDLINEARPROMOTIONrO   r   rP   s      r   r   #FusedLinearPromotionConfig.__init__[   s    11/r   rI   r!   rR   rT   s   @r   rW   rW   Z   rU   r   rW   c                     ^  \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
\S'   S
\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   SU 4S jjrSrU =r$ )	AMPConfig`   boolenabler   dtypestrlevelfloatinit_loss_scalingintincr_every_n_stepsdecr_every_n_nan_or_inf
incr_ratio
decr_ratiouse_dynamic_loss_scalingz	list[str]custom_white_listcustom_black_listcustom_black_varnamesuse_fp16_guarduse_bf16_guarduse_master_gradc                D   > [         R                  n[        TU ]  X!5        g r!   )r   AMPrO   r   rP   s      r   r   AMPConfig.__init__q       ==/r   rI   r!   rD   rE   rF   rG   __annotations__r   rH   rS   rT   s   @r   r]   r]   `   se    LJ  ""    $$0 0r   r]   c                  L   ^  \ rS rSr% S\S'   S\S'   S\S'   S	U 4S jjrSrU =r$ )
ShardingConfigv   r_   r`   rf   stagedegreec                D   > [         R                  n[        TU ]  X!5        g r!   )r   SHARDINGrO   r   rP   s      r   r   ShardingConfig.__init__{       %%/r   rI   r!   rv   rT   s   @r   ry   ry   v   s    LJK0 0r   ry   c                  L   ^  \ rS rSr% S\S'   S\S'   S\S'   S	U 4S jjrSrU =r$ )
GradientMergeConfig   r_   r`   rf   k_stepsavgc                D   > [         R                  n[        TU ]  X!5        g r!   )r   GRADIENT_MERGErO   r   rP   s      r   r   GradientMergeConfig.__init__   s    ++/r   rI   r!   rv   rT   s   @r   r   r      s    LL	I0 0r   r   c                  V   ^  \ rS rSr% S\S'   S\S'   S\S'   S\S'   SU 4S	 jjrS
rU =r$ )PipelineConfig   r_   r`   rb   schedule_moderf   micro_batch_sizeaccumulate_stepsc                D   > [         R                  n[        TU ]  X!5        g r!   )r   PIPELINErO   r   rP   s      r   r   PipelineConfig.__init__   r   r   rI   r!   rv   rT   s   @r   r   r      s$    L0 0r   r   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )	QATConfig   c                D   > [         R                  n[        TU ]  X!5        g r!   )r   QATrO   r   rP   s      r   r   QATConfig.__init__   ru   r   rI   r!   rR   rT   s   @r   r   r      rU   r   r   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )TuningConfig   c                D   > [         R                  n[        TU ]  X!5        g r!   )r   TUNINGrO   r   rP   s      r   r   TuningConfig.__init__   s    ##/r   rI   r!   rR   rT   s   @r   r   r      rU   r   r   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )DatasetConfig   c                D   > [         R                  n[        TU ]  X!5        g r!   )r   DATASETrO   r   rP   s      r   r   DatasetConfig.__init__   s    $$/r   rI   r!   rR   rT   s   @r   r   r      rU   r   r   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )FusedPassesConfig   c                D   > [         R                  n[        TU ]  X!5        g r!   )r   FUSED_PASSESrO   r   rP   s      r   r   FusedPassesConfig.__init__   s    ))/r   rI   r!   rR   rT   s   @r   r   r      rU   r   r   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )DPOptimizationConfig   c                D   > [         R                  n[        TU ]  X!5        g r!   )r   DP_OPTIMIZATIONrO   r   rP   s      r   r   DPOptimizationConfig.__init__       ,,/r   rI   r!   rR   rT   s   @r   r   r      rU   r   r   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )MPOptimizationConfig   c                D   > [         R                  n[        TU ]  X!5        g r!   )r   MP_OPTIMIZATIONrO   r   rP   s      r   r   MPOptimizationConfig.__init__   r   r   rI   r!   rR   rT   s   @r   r   r      rU   r   r   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )SPOptimizationConfig   c                D   > [         R                  n[        TU ]  X!5        g r!   )r   SP_OPTIMIZATIONrO   r   rP   s      r   r   SPOptimizationConfig.__init__   r   r   rI   r!   rR   rT   s   @r   r   r      rU   r   r   c                  0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )Strategy   a-  
The `Strategy` object is used to configure the parallelization and optimization for static graph.

Args:
    config (dict|string, optional): If this is None, the default configurations will used.
    If this is a dictionary, the recognized key-value of it will be used to override the default
    configurations while other default configurations are left unchanged. If this is a string,
    it is interpreted as the path to a YAML configuration and will be loaded to override the
    corresponding default configurations.

Examples:
    .. code-block:: python

        >>> import paddle
        >>> from paddle.distributed.fleet import auto

        >>> strategy = auto.Strategy()
        >>> sharding = strategy.sharding
        >>> assert sharding.enable == False
        >>> assert sharding.stage == 1
        >>> assert sharding.degree == 8

        >>> sharding.enable = True
        >>> sharding.stage = 2
        >>> sharding.degree = 2
        >>> assert sharding.enable == True
        >>> assert sharding.stage == 2
        >>> assert sharding.degree == 2

c                  > Ub?  [        U[        5      (       a  [        R                  " U5      U l        O[        SU 35      e0 U l        [        R                  n[        TU ]%  X R                  5        U R                  R                  [        R                  S 5      n[        U5      U l        U R                  R                  [        R                  S 5      n[        U5      U l        U R                  R                  [        R"                  S 5      n[%        U5      U l        U R                  R                  [        R(                  S 5      n[+        U5      U l        U R                  R                  [        R.                  S 5      n[1        U5      U l        U R                  R                  [        R4                  S 5      n[7        U5      U l        U R                  R                  [        R:                  S 5      n[=        U5      U l        U R                  R                  [        R@                  S 5      n[C        U5      U l"        U R                  R                  [        RF                  S 5      n[I        U5      U l%        U R                  R                  [        RL                  S 5      n[O        U5      U l(        U R                  R                  [        RR                  S 5      n[U        U5      U l+        U R                  R                  [        RX                  S 5      n[[        U5      U l.        U R                  R                  [        R^                  S 5      n[a        U5      U l1        g r   )2r   r   r:   r;   r   r   r   BASErO   r   r#   rN   rK   	recomputers   r]   ampr~   ry   shardingr   r   gradient_merger   r   pipeliner   r   qatr   r   tuningr   r   datasetr   r   fused_passesrZ   rW   fused_linear_promotionr   r   dp_optimizationr   r   mp_optimizationr   r   sp_optimization)r   r   r   r   r7   s       r   r   Strategy.__init__   s   &$''$(MM&$9!
 !;F8D  !#D>>#4#45''++I,?,?F(5''++IMM4@[)''++I,>,>E&{3''++I,D,DdK1+>''++I,>,>E&{3''++IMM4@[)''++I,<,<dC";/''++I,=,=tD$[1''++I,B,BDI-k:''++**D
 'A&M#''++I,E,EtL3K@''++I,E,EtL3K@''++I,E,EtL3K@r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   )rD   rE   rF   rG   __doc__r   rH   rS   rT   s   @r   r   r      s    >8A 8Ar   r   )
__future__r   r:   typingr    r   paddle._typing.dtype_liker   r	   rK   rW   r]   ry   r   r   r   r   r   r   r   r   r   r   rI   r   r   <module>r      s    #    78% 8%v0j 00 00
 0,0Z 00* 00Z 00
 00: 00J 00
 00: 00: 00: 0XAz XAr   