
    g&                        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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                            ej                            dej                            ej                            d	d
          d                              Zej                            ed          Zej                            ed          Zej                            ed          Zej                            e          sej                            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!dS )    N)	dataclass)Enum)List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                    | 3t           j                            |           st          d|  d          nt          } t          | d          5 }|                     d          rqt          j        |          	                    dt          j                  t          j        k    rt          }nt          }|                    |           cd d d            S t          j        |          	                    dt          j                  t          j        k    rt          }nt          }|                    |           cd d d            S # 1 swxY w Y   d S )	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      b/var/www/html/ai-engine/env/lib/python3.11/site-packages/accelerate/commands/config/config_args.pyload_config_from_filer/   +   s   w~~k** 	#8+ 8 8 8  	 *	kG	,	,	, F(( 	F	!  !68J8XYY%34 4  -....EEF F F F F F F F q!!%%&;=O=]^^%34 4  -....EE%F F F F F F F F F F F F F F F F F Fs   A:EA$EE
E
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dS )
BaseConfigr   distributed_typemixed_precisionuse_cpudebugc                     | j         }fd|                                D ]\  }} |          ||<   d |                                D             }|S )Nc                     t          | t                    r| j        S t          | t                    r9t	          |           sd S |                                 D ]\  }} |          | |<   | S N)
isinstancer   valuedictboolitems)r:   key1value1_convert_enumss      r.   r@   z*BaseConfig.to_dict.<locals>._convert_enumsW   sw    %&& #{"%&& 9E{{  4$)KKMM 9 9LD&"0."8"8E$KKL    c                     i | ]
\  }}|||S r8    ).0kvs      r.   
<dictcomp>z&BaseConfig.to_dict.<locals>.<dictcomp>c   s    CCC41aQ]!Q]]]rA   )__dict__r=   )selfresultkeyr:   r@   s       @r.   to_dictzBaseConfig.to_dictS   su    	 	 	 	 	 !,,.. 	0 	0JC(.//F3KKCC6<<>>CCCrA   c                 R   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$|                     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   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
   rR   pop)config_dictrQ   s     r.   process_configzBaseConfig.process_configf   s&   
 !331C1QK-.[00YZZZ+--+>P2QUdUg2g2g+,K(K//8>+8M8MR]^dRe8MVVlpK)*[  F#{**(__-=>>N1?41G1G22N^`nMoK(K''%*K	"+%%#(K  3316K-.rA   Nc                    |t           n|}t          |d          5 }t          j        |          }d d d            n# 1 swxY w Y   |                     |          }t          t          |                                          t          | j                                                  z
            }t          |          dk    rt          d| d| d           | di |S 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.rC   )default_json_config_filer   r!   r"   rX   sortedsetkeys__dataclass_fields__lenrU   )clsr   r,   rW   
extra_keyss        r.   r'   zBaseConfig.from_json_file   s7   090A,,y	)g... 	'!)A,,K	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'((55C 0 0 2 233c#:R:W:W:Y:Y6Z6ZZ[[
z??Q]i ] ]J ] ] ]  
 s!![!!!   >AAc                     t          |dd          5 }t          j        |                                 dd          dz   }|                    |           d d d            d S # 1 swxY w Y   d S )Nwr   r      T)indent	sort_keys
)r   r!   dumpsrL   write)rI   r   r,   contents       r.   to_json_filezBaseConfig.to_json_file   s    )S7333 	qjTJJJTQGGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA""A&)A&c                    |t           n|}t          |d          5 }t          j        |          }d d d            n# 1 swxY w Y   |                     |          }t          t          |                                          t          | j                                                  z
            }t          |          dk    rt          d| d| d           | di |S rZ   )default_yaml_config_filer   r(   r)   rX   r\   r]   r^   r_   r`   rU   )ra   r   r,   rW   rb   s        r.   r*   zBaseConfig.from_yaml_file   s9   090A,,y	)g... 	,!.++K	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,((55C 0 0 2 233c#:R:W:W:Y:Y6Z6ZZ[[
z??Q]i ] ]J ] ] ]   s!![!!!rc   c                     t          |dd          5 }t          j        |                                 |           d d d            d S # 1 swxY w Y   d S )Nre   r   r   )r   r(   	safe_dumprL   )rI   r   r,   s      r.   to_yaml_filezBaseConfig.to_yaml_file   s    )S7333 	.qN4<<>>1---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   (AAAc                 d   t          | j        t                    rt          | j                  | _        t          | j        t                    rH| j        t          j        k    rt          | j                  | _        nt          | j                  | _        t          | dd           	i | _	        d S d S )NrS   )
r9   r   strr	   r2   AMAZON_SAGEMAKERr   r
   getattrrS   )rI   s    r.   __post_init__zBaseConfig.__post_init__   s    d.44 	T'9$:R'S'SD$d+S11 	O'+=+NNN(@AV(W(W%%(78M(N(N%4$//7!#D 87rA   r8   )__name__
__module____qualname__r	   __annotations__r   r
   r   rt   r<   rL   staticmethodrX   classmethodr'   rm   r*   rr   rw   rC   rA   r.   r1   r1   K   s         ++++O-EEFFFFMMMKKK  &   \2 " " " ["  
 " " " [". . .	$ 	$ 	$ 	$ 	$rA   r1   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
         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%   rN   r   machine_rankrO   num_machinesNgpu_idsmain_process_ipmain_process_portstaticrdzv_backendFsame_networkmainmain_training_functionrT   
fp8_configdeepspeed_configfsdp_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_envrS   c                     | j         i | _         | j        i | _        | j        i | _        | j        i | _        | j        i | _        | j        i | _        t                                                      S r8   )r   r   r   r   r   r   superrw   )rI   	__class__s    r.   rw   zClusterConfig.__post_init__   s}     ($&D!#!D"*&(D##!D%!#D?" DOww$$&&&rA   )&rx   ry   rz   rN   intr{   r   r   r   r   rt   r   r   r   r   r<   r   rT   r   r;   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rS   rw   __classcell__)r   s   @r.   r%   r%      s        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' ' ' ' ' ' ' ' 'rA   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<   dS )r&   ec2_instance_typeiam_role_nameN	image_uriprofilez	us-east-1regionrO   r   allr   zaccelerate-sagemaker-base_job_namepytorch_versiontransformers_version
py_versionsagemaker_inputs_filesagemaker_metrics_fileadditional_argsrS   FrT   )rx   ry   rz   rt   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   rS   rT   r<   rC   rA   r.   r&   r&      s        #Ix}###!GXc]!!!FCL#GS???M3???4OS444 >#>>>.J...!%3%%%"&C&&& OT   M4 %%%%%%rA   r&   )"r!   r   dataclassesr   enumr   typingr   r   r   r(   utilsr	   r
   r   utils.constantsr   r   r   r   
expanduserenvironr#   joinhf_cache_home	cache_dirr[   ro   r   r   r/   r1   r%   r&   rC   rA   r.   <module>r      s8  "  				 ! ! ! ! ! !       ( ( ( ( ( ( ( ( ( (  R R R R R R R R R R r r r r r r r r r r ""JNN9bgll2:>>:JJ+W+WYfgghh  GLL55	7<<	3HII 7<<	3HII  7>>*++ 327>>BZ3[3[ 322F F F@ c$ c$ c$ c$ c$ c$ c$ c$L 5' 5' 5' 5' 5'J 5' 5' 5'p & & & & &j & & & & &rA   