
    /h'                        S SK r S SKrS SKJr  S SKJr  S SKJrJr  S SK	r	SSK
JrJrJr  SSKJrJrJr  \R$                  R'                  \R(                  R+                  S\R$                  R-                  \R(                  R+                  S	S
5      S5      5      5      r\R$                  R-                  \S5      r\R$                  R-                  \S5      r\R$                  R-                  \S5      r\R$                  R7                  \5      (       d   \R$                  R7                  \5      (       d  \rO\rS r\ " S S5      5       r\ " S S\5      5       r\ " S S\5      5       r g)    N)	dataclass)Enum)OptionalUnion   )ComputeEnvironmentDistributedTypeSageMakerDistributedType)SAGEMAKER_PYTHON_VERSIONSAGEMAKER_PYTORCH_VERSIONSAGEMAKER_TRANSFORMERS_VERSIONHF_HOMEXDG_CACHE_HOMEz~/.cachehuggingface
acceleratezdefault_config.yamlc                    U b4  [         R                  R                  U 5      (       d  [        SU  S35      eO[        n [        U SS9 nU R                  S5      (       ak  [        R                  " U5      R                  S[        R                  5      [        R                  :X  a  [        nO[        nUR                  U S9sS S S 5        $ [        R                   " U5      R                  S[        R                  5      [        R                  :X  a  [        nO[        nUR#                  U S9sS S S 5        $ ! , (       d  f       g = f)	NzThe passed configuration file `z` does not exist. Please pass an existing file to `accelerate launch`, or use the default one created through `accelerate config` and run `accelerate launch` without the `--config_file` argument.utf-8encodingz.jsoncompute_environment)	json_file)	yaml_file)ospathisfileFileNotFoundErrordefault_config_fileopenendswithjsonloadgetr   LOCAL_MACHINEClusterConfigSageMakerConfigfrom_json_fileyaml	safe_loadfrom_yaml_file)config_filefconfig_classs      `/home/james-whalen/.local/lib/python3.13/site-packages/accelerate/commands/config/config_args.pyload_config_from_filer.   +   s   ww~~k**#1+ ?8 8  + *	kG	,((		!  !68J8X8XY%334  -....E 
-	, q!%%&;=O=]=]^%334  -....E% 
-	,	,s   A8D5
A!D55
Ec                       \ rS rSr% \\S'   \\\4   \S'   \	\S'   \
\S'   \
\S'   S r\S 5       r\SS
 j5       rS r\SS j5       rS rS rSrg	)
BaseConfigK   r   distributed_typemixed_precisionuse_cpudebugc                    ^ U R                   nU4S jmUR                  5        H  u  p#T" U5      X'   M     UR                  5        VVs0 s H  u  pEUc  M
  XE_M     nnnU$ s  snnf )Nc                    > [        U [        5      (       a  U R                  $ [        U [        5      (       a4  [	        U 5      (       d  g U R                  5        H  u  pT" U5      X'   M     U $ N)
isinstancer   valuedictboolitems)r:   key1value1_convert_enumss      r-   r@   *BaseConfig.to_dict.<locals>._convert_enumsW   sV    %&&{{"%&&E{{$)KKMLD"0"8EK %2L    )__dict__r=   )selfresultkeyr:   kvr@   s         @r-   to_dictBaseConfig.to_dictS   s^    	 !,,.JC(/FK )#)<<>C>41Q$!$>C Ds   
	A"A"c                 x   SU ;  a  [         R                  U S'   SU ;  a  [        S5      eSU ;  a  U S   [        R                  :X  a  SU S'   SU ;  a  SU ;   a  U S   (       a  SOSU S'   SU ;   a  U S	 S	U ;   a   U R                  S	5      nUS
:X  a  0 OS	U0U S'   SU ;  a  SU S'   SU ;  a  SU S'   SU ;  a  SU S'   U $ )zF
Processes `config_dict` and sets default values for any missing keys
r   r2   z:A `distributed_type` must be specified in the config file.num_processes   r3   fp16Ndynamo_backendNOdynamo_configr4   Fr5   enable_cpu_affinity)r   r#   
ValueErrorr	   rP   pop)config_dictrO   s     r-   process_configBaseConfig.process_configf   s    
 !31C1Q1QK-.[0YZZ+-+>P2QUdUgUg2g+,K(K/8>+8MR]^dReVlpK)*[ F#{*(__-=>N1?41G2N^`nMoK(K'%*K	"+%#(K  316K-.rB   Nc                    Uc  [         OUn[        USS9 n[        R                  " U5      nS S S 5        U R	                  W5      n[        [        UR                  5       5      [        U R                  R                  5       5      -
  5      n[        U5      S:  a  [        SU SU S35      eU " S0 UD6$ ! , (       d  f       N= fNr   r   r   zThe config file at z had unknown keys (zs), please try upgrading your `accelerate` version or fix (and potentially remove) these keys from your config file. )default_json_config_filer   r    r!   rV   sortedsetkeys__dataclass_fields__lenrS   )clsr   r+   rU   
extra_keyss        r-   r&   BaseConfig.from_json_file   s    090A,y	)g.!))A,K /((5C 0 0 23c#:R:R:W:W:Y6ZZ[
z?Q%i[0CJ< P] ] 
 ![!! /.   B55
Cc                     [        USSS9 n[        R                  " U R                  5       SSS9S-   nUR	                  U5        S S S 5        g ! , (       d  f       g = f)Nwr   r      T)indent	sort_keys
)r   r    dumpsrI   write)rD   r   r+   contents       r-   to_json_fileBaseConfig.to_json_file   sE    )S73qjjTJTQGGGG 433s   9A
Ac                    Uc  [         OUn[        USS9 n[        R                  " U5      nS S S 5        U R	                  W5      n[        [        UR                  5       5      [        U R                  R                  5       5      -
  5      n[        U5      S:  a  [        SU SU S35      eU " S0 UD6$ ! , (       d  f       N= frY   )default_yaml_config_filer   r'   r(   rV   r\   r]   r^   r_   r`   rS   )ra   r   r+   rU   rb   s        r-   r)   BaseConfig.from_yaml_file   s    090A,y	)g.!..+K /((5C 0 0 23c#:R:R:W:W:Y6ZZ[
z?Q%i[0CJ< P] ]  ![!! /.rd   c                     [        USSS9 n[        R                  " U R                  5       U5        S S S 5        g ! , (       d  f       g = f)Nrf   r   r   )r   r'   	safe_dumprI   )rD   r   r+   s      r-   to_yaml_fileBaseConfig.to_yaml_file   s0    )S73qNN4<<>1- 433s	   &;
A	c                    [        U R                  [        5      (       a  [        U R                  5      U l        [        U R                  [        5      (       aS  U R                  [        R
                  :X  a  [        U R                  5      U l        O[        U R                  5      U l        [        U SS 5      c  0 U l	        g g )NrQ   )
r9   r   strr   r2   AMAZON_SAGEMAKERr
   r	   getattrrQ   )rD   s    r-   __post_init__BaseConfig.__post_init__   s    d..44'9$:R:R'SD$d++S11''+=+N+NN(@AVAV(W%(78M8M(N%4$/7!#D 8rB   )r   r2   rQ   r8   )__name__
__module____qualname____firstlineno__r   __annotations__r   r	   r
   rx   r<   rI   staticmethodrV   classmethodr&   rn   r)   ru   r{   __static_attributes__rZ   rB   r-   r0   r0   K   sy    ++O-EEFFMK&  2 " "
 " ".	$rB   r0   c                     ^  \ rS rSr% Sr\\S'   Sr\\S'   Sr\\S'   Sr	\
\   \S	'   Sr\
\   \S
'   Sr\
\   \S'   Sr\
\   \S'   Sr\
\   \S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr \\S'   Sr!\"\   \S '   Sr#\"\   \S!'   Sr$\"\   \S"'   Sr%\\S#'   U 4S$ jr&S%r'U =r($ )&r$      rL   r   machine_rankrM   num_machinesNgpu_idsmain_process_ipmain_process_portstaticrdzv_backendFsame_networkmainmain_training_functionrR   
fp8_configdeepspeed_configfsdp_configparallelism_configmegatron_lm_configipex_configmpirun_configdowncast_bf16tpu_nametpu_zonetpu_use_clustertpu_use_sudocommand_filecommandstpu_vmtpu_envrQ   c                 8  > U R                   c  0 U l         U R                  c  0 U l        U R                  c  0 U l        U R                  c  0 U l        U R                  c  0 U l        U R
                  c  0 U l        U R                  c  0 U l        [        TU ]!  5       $ r8   )	r   r   r   r   r   r   r   superr{   )rD   	__class__s    r-   r{   ClusterConfig.__post_init__   s      ($&D!#!D""*&(D##!D%!#D??" DO""*&(D#w$&&rB   )r   r   r   r   r   r   r   ))r}   r~   r   r   rL   intr   r   r   r   r   rx   r   r   r   r   r<   r   rR   r   r;   r   r   r   r   r   r   r   r   r   r   r   r   r   listr   r   rQ   r{   r   __classcell__)r   s   @r-   r$   r$      sG   M3L#L#!GXc]!%)OXc])'+x}+"*L(3-*#(L(4.("(C( %% J!d!K####KM4M4 HcHc!OT!L$L#Hd3iFDIGT#Y M4' 'rB   r$   c                       \ rS rSr% \\S'   \\S'   Sr\\   \S'   Sr\\   \S'   Sr	\\S'   S	r
\\S
'   Sr\\S'   S\
 3r\\S'   \r\\S'   \r\\S'   \r\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Sr\\S'   Srg)r%      ec2_instance_typeiam_role_nameN	image_uriprofilez	us-east-1regionrM   r   allr   zaccelerate-sagemaker-base_job_namepytorch_versiontransformers_version
py_versionsagemaker_inputs_filesagemaker_metrics_fileadditional_argsrQ   FrR   rZ   )r}   r~   r   r   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   rQ   rR   r<   r   rZ   rB   r-   r%   r%      s    #Ix}#!GXc]!FCL#GS0?M3?4OS4 >#>.J.!%3%"&C& OT M4 %%rB   r%   )!r    r   dataclassesr   enumr   typingr   r   r'   utilsr   r	   r
   utils.constantsr   r   r   r   
expanduserenvironr"   joinhf_cache_home	cache_dirr[   rq   r   r   r.   r0   r$   r%   rZ   rB   r-   <module>r      s?  "  	 !  "  R R r r ""JJNN9bggll2::>>:JJ+WYfgh GGLL5	77<<	3HI 77<<	3HI  77>>*++277>>BZ3[3[22F@ c$ c$ c$L 9'J 9' 9'x &j & &rB   