Ë
    T^(h  ã                   óè   — d dl Zd dlZd dlZd dlZd dlmZmZ d dlZddl	m
Z
 ddlmZmZmZ  ej                  e«      Zd„ Z e«       rd dlmc mZ  ej,                  «        e G d„ de
«      «       Zy)	é    N)Ú	dataclassÚfieldé   )ÚTrainingArguments)Úcached_propertyÚis_sagemaker_dp_enabledÚloggingc                  óŒ  — t        j                  dd«      } 	 t        j                  | «      } d| vry	 t        j                  dd«      }	 t        j                  |«      }|j                  dd«      sy	 t        j                  j                  d«      d uS # t        j                  $ r Y yw xY w# t        j                  $ r Y yw xY w)NÚSM_HP_MP_PARAMETERSz{}Ú
partitionsFÚSM_FRAMEWORK_PARAMSÚsagemaker_mpi_enabledÚsmdistributed)	ÚosÚgetenvÚjsonÚloadsÚJSONDecodeErrorÚgetÚ	importlibÚutilÚ	find_spec)Úsmp_optionsÚmpi_optionss     úe/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/sagemaker/training_args_sm.pyÚ%is_sagemaker_model_parallel_availabler       sÂ   € ä—)‘)Ð1°4Ó8€Kðä—j‘j Ó-ˆØ˜{Ñ*Øð +ô —)‘)Ð1°4Ó8€Kðä—j‘j Ó-ˆØ�‰Ð6¸Ô>Øð ?ô
 �>‰>×#Ñ# OÓ4¸DÐ@Ð@øô ×Ñò Ùðûô ×Ñò Ùðús#   ˜B Á
'B- ÂB*Â)B*Â-CÃCc                   óˆ   ‡ — e Zd ZU  edddi¬«      Zeed<   ˆ fd„Zedd„«       Z	e
ˆ fd„«       Ze
d	„ «       Ze
d
„ «       Zˆ xZS )ÚSageMakerTrainingArgumentsÚ ÚhelpzTUsed by the SageMaker launcher to send mp-specific args. Ignored in SageMakerTrainer)ÚdefaultÚmetadataÚmp_parametersc                 óV   •— t         ‰| �  «        t        j                  dt        «       y )Nz~`SageMakerTrainingArguments` is deprecated and will be removed in v5 of Transformers. You can use `TrainingArguments` instead.)ÚsuperÚ__post_init__ÚwarningsÚwarnÚFutureWarning©ÚselfÚ	__class__s    €r   r&   z(SageMakerTrainingArguments.__post_init__E   s"   ø€ Ü‰ÑÔÜ�‰ð+äõ	
ó    c                 óÒ  — t         j                  d«       t        j                  j	                  «       rBt        j                  j                  «       r$| j                  dk(  rt         j                  d«       | j                  rt        j                  d«      }d| _
        �n™t        «       r3t        j                  «       }t        j                  d|«      }d| _
        �n\t        «       rzdd l}t        j                  j                  d| j                   ¬	«       t#        t%        j&                  d
«      «      | _        t        j                  d| j                  «      }d| _
        nØ| j                  dk(  rYt        j                  t        j(                  j	                  «       rdnd«      }t        j(                  j+                  «       | _
        npt        j                  j                  «       s+t        j                  j                  d| j                   ¬	«       t        j                  d| j                  «      }d| _
        |j,                  dk(  rt        j(                  j/                  |«       |S )NzPyTorch: setting up deviceséÿÿÿÿzœtorch.distributed process group is initialized, but local_rank == -1. In order to use Torch DDP, launch your script with `python -m torch.distributed.launchÚcpur   Úcudaé   Úsmddp)ÚbackendÚtimeoutÚSMDATAPARALLEL_LOCAL_RANKzcuda:0Únccl)ÚloggerÚinfoÚtorchÚdistributedÚis_availableÚis_initializedÚ
local_rankÚwarningÚno_cudaÚdeviceÚ_n_gpur   Úsmpr   Ú,smdistributed.dataparallel.torch.torch_smddpÚinit_process_groupÚddp_timeout_deltaÚintr   r   r1   Údevice_countÚtypeÚ
set_device)r+   rA   r>   r   s       r   Ú_setup_devicesz)SageMakerTrainingArguments._setup_devicesM   s§  € ä�‰Ð1Ô2Ü×Ñ×)Ñ)Ô+´×0AÑ0A×0PÑ0PÔ0RÐW[×WfÑWfÐjlÒWlÜ�N‰Nðiôð �<Š<Ü—\‘\ %Ó(ˆFØˆDŽKÜ2Ô4ÜŸ™Ó)ˆJÜ—\‘\ &¨*Ó5ˆFØˆDŽKÜ$Ô&Û?ä×Ñ×0Ñ0¸È$×J`ÑJ`Ð0ÔaÜ!¤"§)¡)Ð,GÓ"HÓIˆDŒOÜ—\‘\ &¨$¯/©/Ó:ˆFØˆD�KØ�_‰_ Ò"ô —\‘\¬e¯j©j×.EÑ.EÔ.G¡(ÈUÓSˆFô  Ÿ*™*×1Ñ1Ó3ˆD�Kô ×$Ñ$×3Ñ3Ô5Ü×!Ñ!×4Ñ4¸VÈT×McÑMcÐ4ÔdÜ—\‘\ &¨$¯/©/Ó:ˆFØˆDŒKà�;‰;˜&Ò Ü�J‰J×!Ñ! &Ô)àˆr-   c                 óT   •— t        «       rt        j                  «       S t        ‰| �  S ©N)r   rC   Údp_sizer%   Ú
world_sizer*   s    €r   rO   z%SageMakerTrainingArguments.world_size{   s    ø€ ä0Ô2Ü—;‘;“=Ð ä‰wÑ!Ð!r-   c                 ó   — t        «        S rM   )r   ©r+   s    r   Úplace_model_on_devicez0SageMakerTrainingArguments.place_model_on_device‚   s   € ä8Ó:Ð:Ð:r-   c                  ó   — y)NF© rQ   s    r   Ú!_no_sync_in_gradient_accumulationz<SageMakerTrainingArguments._no_sync_in_gradient_accumulation†   s   € àr-   )Úreturnztorch.device)Ú__name__Ú
__module__Ú__qualname__r   r#   ÚstrÚ__annotations__r&   r   rK   ÚpropertyrO   rR   rU   Ú__classcell__)r,   s   @r   r   r   >   sv   ø… áØØÐpÐqô€M�3ó ô

ð ò+ó ð+ðZ ó"ó ð"ð ñ;ó ð;ð ñó ôr-   r   )Úimportlib.utilr   r   r   r'   Údataclassesr   r   r:   Útraining_argsr   Úutilsr   r   r	   Ú
get_loggerrW   r8   r   Ú!smdistributed.modelparallel.torchÚmodelparallelrC   Úinitr   rT   r-   r   ú<module>rf      st   ðó Û Û 	Û ß (ã å -ß EÑ Eð 
ˆ×	Ñ	˜HÓ	%€ò
Añ0 )Ô*ß3Ð3à€C‡H�H„Jð ôIÐ!2ó Ió ñIr-   