
    bi'                        d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dl	Z	ddl
mZmZmZ ddlmZmZmZ ej$                  j'                  ej(                  j+                  dej$                  j-                  ej(                  j+                  d	d
      d                  Zej$                  j-                  ed      Zej$                  j-                  ed      Zej$                  j-                  ed      Zej$                  j7                  e      sej$                  j7                  e      seZneZd Ze G d d             Ze G d de             Ze G d de             Z y)    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                 t   | .t         j                  j                  |       st        d|  d      t        } t        | d      5 }| j                  d      rlt        j                  |      j                  dt        j                        t        j                  k(  rt        }nt        }|j                  |       cd d d        S t        j                   |      j                  dt        j                        t        j                  k(  rt        }nt        }|j#                  |       cd d d        S # 1 sw Y   y xY w)	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      a/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/accelerate/commands/config/config_args.pyload_config_from_filer.   +   s   ww~~k*#1+ ?8 8  *	kG	, F(		!  !68J8X8XY%334  -....EF F q!%%&;=O=]=]^%334  -....E%F F Fs   A4D.A"D..D7c                       e Zd ZU eed<   eeef   ed<   eed<   e	ed<   e	ed<   d Z
ed        Zedd	       Zd
 Zedd       Zd Zd Zy)
BaseConfigr   distributed_typemixed_precisionuse_cpudebugc                     | j                   }fd|j                         D ]  \  }} |      ||<    |j                         D ci c]  \  }}|	|| }}}|S c c}}w )Nc                     t        | t              r| j                  S t        | t              r/t	        |       sy | j                         D ]  \  }} |      | |<    | S N)
isinstancer   valuedictboolitems)r9   key1value1_convert_enumss      r-   r?   z*BaseConfig.to_dict.<locals>._convert_enumsW   sW    %&{{"%&E{$)KKM 9LD&"0"8E$K9L    )__dict__r<   )selfresultkeyr9   kvr?   s         @r-   to_dictzBaseConfig.to_dictS   sj    	 !,,. 	0JC(/F3K	0#)<<>C41aQ]!Q$CC Ds   	
AAc                 B   d| vrt         j                  | d<   d| vrt        d      d| vr| d   t        j                  k(  rd| d<   d| vrd| v r| d   rdnd| d<   d| v r| d= d	| v r| j                  d	      }|d
k(  ri nd	|i| d<   d| vrd| d<   d| vrd| d<   d| vrd| d<   | S )zV
        Processes `config_dict` and sets default values for any missing keys
        r   r1   z:A `distributed_type` must be specified in the config file.num_processes   r2   fp16Ndynamo_backendNOdynamo_configr3   Fr4   enable_cpu_affinity)r   r#   
ValueErrorr	   rM   pop)config_dictrL   s     r-   process_configzBaseConfig.process_configf   s    
 !31C1Q1QK-.[0YZZ+-+>P2QUdUgUg2g+,K(K/8>+8MR]^dReVlpK)*[ F#{*(__-=>N1?41G2N^`nMoK(K'%*K	"+%#(K  316K-.r@   Nc                    |t         n|}t        |d      5 }t        j                  |      }d d d        | j	                        }t        t        |j                               t        | j                  j                               z
        }t        |      dkD  rt        d| d| d       | di |S # 1 sw Y   xY w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!   rS   sortedsetkeys__dataclass_fields__lenrP   )clsr   r+   rR   
extra_keyss        r-   r&   z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B>c                     t        |dd      5 }t        j                  | j                         dd      dz   }|j	                  |       d d d        y # 1 sw Y   y xY w)Nwr   r      T)indent	sort_keys
)r   r    dumpsrG   write)rB   r   r+   contents       r-   to_json_filezBaseConfig.to_json_file   sN    )S73 	qjjTJTQGGGG	 	 	s   ;AAc                    |t         n|}t        |d      5 }t        j                  |      }d d d        | j	                        }t        t        |j                               t        | j                  j                               z
        }t        |      dkD  rt        d| d| d       | di |S # 1 sw Y   xY wrU   )default_yaml_config_filer   r'   r(   rS   rX   rY   rZ   r[   r\   rP   )r]   r   r+   rR   r^   s        r-   r)   z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] ]  ![!!	, 	,r_   c                     t        |dd      5 }t        j                  | j                         |       d d d        y # 1 sw Y   y xY w)Nra   r   r   )r   r'   	safe_dumprG   )rB   r   r+   s      r-   to_yaml_filezBaseConfig.to_yaml_file   s9    )S73 	.qNN4<<>1-	. 	. 	.s	   %=Ac                 n   t        | j                  t              rt        | j                        | _        t        | j                  t              rR| j                  t        j
                  k(  rt        | j                        | _        nt        | j                        | _        t        | dd       i | _	        y y )NrN   )
r8   r   strr   r1   AMAZON_SAGEMAKERr
   r	   getattrrN   )rB   s    r-   __post_init__zBaseConfig.__post_init__   s    d..4'9$:R:R'SD$d++S1''+=+N+NN(@AVAV(W%(78M8M(N%4$/7!#D 8r@   r7   )__name__
__module____qualname__r   __annotations__r   r	   r
   rp   r;   rG   staticmethodrS   classmethodr&   ri   r)   rn   rs   rV   r@   r-   r0   r0   K   sy    ++O-EEFFMK&  2 " "
 " ".	$r@   r0   c                       e Zd ZU dZeed<   dZeed<   dZeed<   dZe	e
   ed<   dZe	e
   ed	<   dZe	e   ed
<   dZe	e
   ed<   dZe	e   ed<   dZe
ed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZe
ed<   dZe
ed<   dZeed<   dZeed<   dZe
ed<   dZ e!e
   ed<   dZ"e!e
   ed <   dZ#e!e
   ed!<   dZ$eed"<    fd#Z% xZ&S )$r$   rI   r   machine_rankrJ   num_machinesNgpu_idsmain_process_ipmain_process_portstaticrdzv_backendFsame_networkmainmain_training_functionrO   
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_envrN   c                 *   | j                   i | _         | j                  i | _        | j                  i | _        | j                  i | _        | j                  i | _        | j
                  i | _        | j                  i | _        t        | !         S r7   )	r   r   r   r   r   r   r   superrs   )rB   	__class__s    r-   rs   zClusterConfig.__post_init__   s      ($&D!#!D""*&(D##!D%!#D??" DO""*&(D#w$&&r@   )'rt   ru   rv   rI   intrw   r|   r}   r~   r   rp   r   r   r   r   r;   r   rO   r   r:   r   r   r   r   r   r   r   r   r   r   r   r   r   listr   r   rN   rs   __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' 'r@   r$   c                       e Zd ZU eed<   eed<   dZee   ed<   dZee   ed<   dZeed<   dZ	e
ed	<   d
Zeed<   de	 Zeed<   eZeed<   eZeed<   eZeed<   dZeed<   dZeed<   dZeed<   dZeed<   dZeed<   y)r%   ec2_instance_typeiam_role_nameN	image_uriprofilez	us-east-1regionrJ   r}   allr~   zaccelerate-sagemaker-base_job_namepytorch_versiontransformers_version
py_versionsagemaker_inputs_filesagemaker_metrics_fileadditional_argsrN   FrO   )rt   ru   rv   rp   rw   r   r   r   r   r}   r   r~   r   r   r   r   r   r   r   r   r   r   r:   rN   rO   r;   rV   r@   r-   r%   r%      s    #Ix}#!GXc]!FCL#GS0?M3?4OS4 >#>.J.!%3%"&C& OT M4 %%r@   r%   )!r    r   dataclassesr   enumr   typingr   r   r'   utilsr   r	   r
   utils.constantsr   r   r   r   
expanduserenvironr"   joinhf_cache_home	cache_dirrW   rk   r   r   r.   r0   r$   r%   rV   r@   r-   <module>r      s9  "  	 !  "  R R r r ""JJNN9bggll2::>>:JJ+WYfgh GGLL5	77<<	3HI 77<<	3HI  77>>*+277>>BZ3[22F@ c$ c$ c$L 9'J 9' 9'x &j & &r@   