
    9i                         S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJr  \R                  " \R                   S9 " S	 S
\5      5       rg)    )Hooks)HOOKS)Hook)Priority)DistributedParallelType)create_device)get_local_rank	init_dist)module_namec                   J    \ rS rSr\R
                  rS rS rS r	S r
S rSrg)	DDPHook   c                 (    Uc   eXl         SU l        g)z{The DDP Hook for data parallel

Args:
    launcher(str, required): The launcher info, can be 'pytorch' or 'mpi' or 'slurm'
NFlauncherwrapped)selfr   s     n/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/trainers/hooks/distributed/ddp_hook.py__init__DDPHook.__init__   s     ###     c                     [        U R                  5        [        5       n[        SU 35      Ul        UR
                  R                  UR                  5        S UR                  [        R                  '   g )Nzcuda:)
r
   r   r	   r   devicemodeltoparallel_groupsr   DP)r   trainer
local_ranks      r   
after_initDDPHook.after_init   sV    $-- #%
&zl';<(>B 7 : :;r   c                 &    U R                  U5        g Nwrap_moduler   r   s     r   
before_runDDPHook.before_run"       !r   c                 &    U R                  U5        g r#   r$   r&   s     r   
before_valDDPHook.before_val%   r)   r   c                 v    U R                   (       d(  UR                  UR                  5      Ul        SU l         g g )NT)r   to_parallelr   r&   s     r   r%   DDPHook.wrap_module(   s+    ||#//>GMDL r   r   N)__name__
__module____qualname____firstlineno__r   LOWPRIORITYr   r    r'   r+   r%   __static_attributes__ r   r   r   r      s'     ||HC"" r   r   N)modelscope.metainfor   !modelscope.trainers.hooks.builderr   modelscope.trainers.hooks.hookr   "modelscope.trainers.hooks.priorityr   modelscope.utils.constantr   modelscope.utils.devicer   modelscope.utils.torch_utilsr	   r
   register_moduler   r7   r   r   <module>r@      sD    % 3 / 7 = 1 B 5==1 d   2 r   