
    IЦi3
                     @   S SK r S SKJr  S SKJrJrJr  S SKrS SKJr  \ R                  " \
5      rS rS r " S S\5      rS	 rS
\\\R"                     \\R"                  S4   4   S\\\R"                     \\R"                  S4   4   4S jr\ " S S5      5       rg)    N)	dataclass)ListTupleUnion)fxc                 \   ^ / mU4S jn[         R                  R                  U U5      nUT4$ )zT
Flatten the args into a list form and detach the tensors from computational graph.
c                    > [        U [        R                  5      (       a<  U R                  5       R	                  U R
                  5      nTR                  U5        U$ TR                  U 5        U $ N)
isinstancetorchTensordetachrequires_grad_requires_gradappend)avalflat_detached_argss     b/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/distributed/pipelining/_utils.pyextract_tensor_args0flatten_args_detach.<locals>.extract_tensor_args   sT    a&&((*++AOO<C%%c*J%%a(H    r   nodemap_aggregate)argsr   new_argsr   s      @r   flatten_args_detachr      s:      ww$$H
 '''r   c                 X   ^ / mU4S jn[         R                  R                  U U5        T$ )z$
Flatten the args into a list form.
c                 *   > TR                  U 5        U $ r
   )r   )r   	flat_argss    r   r   )flatten_args.<locals>.extract_tensor_args,   s    r   r   )r   r   r!   s     @r   flatten_argsr#   &   s1     I
 GG
 r   c                       \ rS rSrSrSrg)PipeliningShapeError9   z5Shape mismatch between configured and runtime values. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r'   r   r   r%   r%   9   s    ?r   r%   c                    UR                   UR                   :X  d'  [        U  SUR                    SUR                    35      eUR                  UR                  :X  d'  [        U  SUR                   SUR                   35      eUR                  5       UR                  5       :X  d/  [        U  SUR                  5        SUR                  5        35      eg )Nz  has a shape mismatch: expected z actual z  has a dtype mismatch: expected z! has a stride mismatch: expected )shaper%   dtypestride)descexpectedgivens      r   validate_tensor_metadatar5   =   s    >>U[[("f4X^^4DHU[[MZ
 	
 >>U[[("f4X^^4DHU[[MZ
 	
 ??."f5hoo6G5HQVQ]Q]Q_P`a
 	
 /r   expected_tensors.actual_tensorsc           	          [        U5      [        U5      :w  a&  [        U  S[        U5       S[        U5       S35      e[        [        U5      5       H  n[        U  SU 3X   X#   5        M     g )Nz: Number of values (z") does not match expected number ()z: value )lenr%   ranger5   )r2   r6   r7   is       r   validate_tensors_metadatar=   L   s    
 N 33"f(^)<(==_`cdt`u_vvwx
 	
 3'() fHQC "2"5~7H	
 *r   c                   L    \ rS rSr% Sr\R                  \S'   \\S'   \	\S'   Sr
g)PipeInfo[   z6
Captures information for a pipeline (`Pipe` object).
graph
num_stageshas_loss_and_backwardr'   N)r(   r)   r*   r+   r,   r   Graph__annotations__intboolr-   r'   r   r   r?   r?   [   s     88OOr   r?   )loggingdataclassesr   typingr   r   r   r   r   	getLoggerr(   loggerr   r#   RuntimeErrorr%   r5   r   r=   r?   r'   r   r   <module>rN      s     ! % %   
		8	$(0&@< @

D.ellC6G0HHI
 $u||,eELL#4E.FFG
      r   