
    fTh                         S SK rS SKrS SKrS SKrS SKJrJr  S SKrSSK	J
r
  SSKJrJrJr  \R                  " \5      rS r\" 5       (       a  S SKJs  Jr  \R,                  " 5         \ " S S\
5      5       rg)	    N)	dataclassfield   )TrainingArguments)cached_propertyis_sagemaker_dp_enabledloggingc                     [         R                  " SS5      n  [        R                  " U 5      n SU ;  a  g [         R                  " SS5      n [        R                  " U5      nUR                  SS5      (       d  g [        R                  R                  S5      S L$ ! [        R                   a     gf = f! [        R                   a     gf = f)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     _/var/www/auris/envauris/lib/python3.13/site-packages/transformers/sagemaker/training_args_sm.py%is_sagemaker_model_parallel_availabler       s    ))148Kjj-{* + ))148Kjj-6>> ?
 >>##O4D@@    s#   B -B9 B65B69CCc                      ^  \ rS rSr% \" SSS0S9r\\S'   U 4S jr\	SS j5       r
\U 4S	 j5       r\S
 5       r\S 5       rSrU =r$ )SageMakerTrainingArguments>    helpzTUsed by the SageMaker launcher to send mp-specific args. Ignored in SageMakerTrainer)defaultmetadatamp_parametersc                 X   > [         TU ]  5         [        R                  " S[        5        g )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'   (SageMakerTrainingArguments.__post_init__E   s"    +	
    c                     [         R                  S5        [        R                  R	                  5       (       aH  [        R                  R                  5       (       a%  U R                  S:X  a  [         R                  S5        U R                  (       a  [        R                  " S5      nSU l
        GO[        5       (       a5  [        R                  " 5       n[        R                  " SU5      nSU l
        GOj[        5       (       ay  SS Kn[        R                  R                  SU R                   S	9  [#        [$        R&                  " S
5      5      U l        [        R                  " SU R                  5      nSU l
        OU R                  S:X  a_  [        R                  " [        R(                  R	                  5       (       a  SOS5      n[        R(                  R+                  5       U l
        Os[        R                  R                  5       (       d(  [        R                  R                  SU R                   S	9  [        R                  " SU R                  5      nSU l
        UR,                  S:X  a  [        R(                  R/                  U5        U$ )NzPyTorch: setting up devicesztorch.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   r3   device_counttype
set_device)r,   rC   r@   r   s       r   _setup_devices)SageMakerTrainingArguments._setup_devicesM   s   12))++0A0A0P0P0R0RW[WfWfjlWlNNi <<\\%(FDK244)J\\&*5FDK$&&?00$J`J`0a!")),G"HIDO\\&$//:FDK__" \\ejj.E.E.G.G(USF  **113DK $$3355!!44VTMcMc4d\\&$//:FDK;;& JJ!!&)r/   c                 `   > [        5       (       a  [        R                  " 5       $ [        TU ]  $ N)r   rE   dp_sizer&   
world_sizer+   s    r   rR   %SageMakerTrainingArguments.world_size{   s#    022;;= w!!r/   c                      [        5       (       + $ rP   )r   r,   s    r   place_model_on_device0SageMakerTrainingArguments.place_model_on_device   s    8:::r/   c                     g)NF rU   s    r   !_no_sync_in_gradient_accumulation<SageMakerTrainingArguments._no_sync_in_gradient_accumulation   s    r/   )rD   r@   )returnztorch.device)__name__
__module____qualname____firstlineno__r   r$   str__annotations__r'   r   rM   propertyrR   rV   rZ   __static_attributes____classcell__)r-   s   @r   r   r   >   sv    pqM3 

 + +Z " " ; ;  r/   r   )importlib.utilr   r   r   r(   dataclassesr   r   r<   training_argsr   utilsr   r   r	   
get_loggerr]   r:   r   !smdistributed.modelparallel.torchmodelparallelrE   initr   rY   r/   r   <module>rn      ss      	  (  - E E 
		H	%
A0 )**33HHJ I!2 I Ir/   