Ë
    g^(hË  ã                   ó\  — d dl Z d dlmZ d dlmZ d dlZd dlmZ  e j                  e«      Z	d„ Z
d„ Z G d„ de«      Zd	„ Zd
eeej                      eej                   df   f   deeej                      eej                   df   f   fd„Z	 ddedededeeef   fd„Ze G d„ d«      «       Zy)é    N)Ú	dataclass)ÚUnion)Úfxc                 óZ   ‡— g Šˆfd„}t         j                  j                  | |«      }|‰fS )z\
    Flatten the args into a list form and detach the tensors from computational graph.
    c                 óÖ   •— t        | t        j                  «      r<| j                  «       j	                  | j
                  «      }‰j                  |«       |S ‰j                  | «       | S ©N)Ú
isinstanceÚtorchÚTensorÚdetachÚrequires_grad_Úrequires_gradÚappend)ÚaÚvalÚflat_detached_argss     €úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/distributed/pipelining/_utils.pyÚextract_tensor_argsz0flatten_args_detach.<locals>.extract_tensor_args   sQ   ø€ ä�aœŸ™Ô&Ø—(‘(“*×+Ñ+¨A¯O©OÓ<ˆCØ×%Ñ% cÔ*ØˆJà×%Ñ% aÔ(ØˆHó    ©r   ÚnodeÚmap_aggregate)Úargsr   Únew_argsr   s      @r   Úflatten_args_detachr      s:   ø€ ð Ðôô �w‰w×$Ñ$ØØó€Hð
 Ð'Ð'Ð'r   c                 óV   ‡— g Šˆfd„}t         j                  j                  | |«       ‰S )z,
    Flatten the args into a list form.
    c                 ó*   •— ‰j                  | «       | S r   )r   )r   Ú	flat_argss    €r   r   z)flatten_args.<locals>.extract_tensor_args,   s   ø€ à×Ñ˜ÔØˆr   r   )r   r   r   s     @r   Úflatten_argsr   &   s1   ø€ ð €Iôô
 ‡G�G×ÑØØôð
 Ðr   c                   ó   — e Zd ZdZy)ÚPipeliningShapeErrorz5Shape mismatch between configured and runtime values.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   r!   r!   9   s   „ Ú?r   r!   c                 ó¤  — |j                   |j                   k(  s't        | › d|j                   › d|j                   › �«      ‚|j                  |j                  k(  s't        | › d|j                  › d|j                  › �«      ‚|j                  «       |j                  «       k(  s/t        | › d|j                  «       › d|j                  «       › �«      ‚y )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_metadatar.   =   sË   € Ø�>‰>˜UŸ[™[Ò(Ü"ØˆfÐ4°X·^±^Ð4DÀHÈUÏ[É[ÈMÐZó
ð 	
ð �>‰>˜UŸ[™[Ò(Ü"ØˆfÐ4°X·^±^Ð4DÀHÈUÏ[É[ÈMÐZó
ð 	
ð �?‰?Ó §¡£Ò.Ü"ØˆfÐ5°h·o±oÓ6GÐ5HÈÐQV×Q]ÑQ]ÓQ_ÐP`Ðaó
ð 	
ð /r   Úexpected_tensors.Úactual_tensorsc           	      óà   — t        |«      t        |«      k7  r&t        | › dt        |«      › dt        |«      › d�«      ‚t        t        |«      «      D ]  }t        | › d|› �||   ||   «       Œ y )Nz: Number of values (z") does not match expected number (ú)z: value )Úlenr!   Úranger.   )r+   r/   r0   Úis       r   Úvalidate_tensors_metadatar6   L   sŒ   € ô
 ÐÓ¤ NÓ 3Ò3Ü"ØˆfÐ(¬¨^Ó)<Ð(=Ð=_Ô`cÐdtÓ`uÐ_vÐvwÐxó
ð 	
ô ”3Ð'Ó(Ó)ò 
ˆÜ Øˆf�H˜Q˜CÐ Ð"2°1Ñ"5°~ÀaÑ7Hõ	
ñ
r   Úpp_sizeÚ
num_stagesÚstyleÚreturnc                 ó  — i }|dk(  rt        |«      D ]
  }|| z  ||<   Œ |S |dk(  rU|| z  dk7  rt        d|› d| › d�«      ‚d}t        |«      D ])  }|||<   |dz   | z  dk(  rŒ|| z  dz  dk(  r|dz  }Œ%|dz  }Œ+ |S t        d	|› d
�«      ‚)zá
    Compute the stage id to rank mapping for either a looped or V-style schedule.

    Most commonly num_stages == pp_size * 2, but this function can be used to
    compute the mapping for any number of stages per rank.
    ÚloopÚvr   znum_stages z% must be evenly divisible by pp_size z for V schedulesé   é   zStyle z is not supported.)r4   Ú
ValueError)r7   r8   r9   ÚmappingÚstage_indexÚ
rank_indexs         r   Úgenerate_stage_to_rank_mappingrD   [   sì   € ð €GØ�‚Ü  Ó,ò 	9ˆKØ#.°Ñ#8ˆG�KÒ ð	9ð( €Nð% 
�#ŠØ˜Ñ 1Ò$ÜØ˜j˜\Ð)NÈwÈiÐWgÐhóð ð ˆ
Ü  Ó,ò 	 ˆKØ#-ˆG�KÑ à˜a‘ 7Ñ*¨aÒ/ØØ˜wÑ&¨!Ñ+¨qÒ0Ø˜a‘‘
à˜a‘‘
ð	 ð €Nô ˜6 % Ð(:Ð;Ó<Ð<r   c                   óD   — e Zd ZU dZej
                  ed<   eed<   eed<   y)ÚPipeInfoz>
    Captures information for a pipeline (`Pipe` object).
    Úgraphr8   Úhas_loss_and_backwardN)	r"   r#   r$   r%   r   ÚGraphÚ__annotations__ÚintÚboolr&   r   r   rF   rF   }   s   … ñð �8‰8ƒOØƒOØÔr   rF   )r<   )ÚloggingÚdataclassesr   Útypingr   r
   r   Ú	getLoggerr"   Úloggerr   r   ÚRuntimeErrorr!   r.   Úlistr   Útupler6   rK   ÚstrÚdictrD   rF   r&   r   r   ú<module>rW      sì   ðó Ý !Ý ã Ý ð 
ˆ×	Ñ	˜8Ó	$€ò(ò0ô&@˜<ô @ò
ð
à˜D §¡Ñ.°°e·l±lÀCÐ6GÑ0HÐHÑIð
ð ˜$˜uŸ|™|Ñ,¨e°E·L±LÀ#Ð4EÑ.FÐFÑGó
ð  17ñØðØ!ðØ*-ðà	ˆ#ˆsˆ(�^óðD ÷ ð  ó ñ r   