o
    0i#(                     @   s$  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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sjejesmeZneZdd ZeG dd dZeG dd deZeG dd deZ dS )    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                 C   s   | d urt j| std|  dnt} t| ddD}| dr@t|	dt
jt
jkr1t}nt}|j| dW  d    S t|	dt
jt
jkrPt}nt}|j| dW  d    S 1 sbw   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_class r+   h/sda-disk/www/egybert/egybert_env/lib/python3.10/site-packages/accelerate/commands/config/config_args.pyload_config_from_file+   s.   



$r-   c                   @   s   e Zd ZU eed< eeef ed< eed< e	ed< e	ed< dd Z
edd	 ZedddZdd ZedddZdd Zdd Zd
S )
BaseConfigr   distributed_typemixed_precisionuse_cpudebugc                    sF   | j } fdd | D ]
\}} |||< qdd | D }|S )Nc                    sH   t | tr| jS t | tr"t| sd S |  D ]
\}} || |< q| S N)
isinstancer   valuedictboolitems)r5   key1value1_convert_enumsr+   r,   r<   W   s   

z*BaseConfig.to_dict.<locals>._convert_enumsc                 S   s   i | ]\}}|d ur||qS r3   r+   ).0kvr+   r+   r,   
<dictcomp>c   s    z&BaseConfig.to_dict.<locals>.<dictcomp>)__dict__r8   )selfresultkeyr5   r+   r;   r,   to_dictS   s   
zBaseConfig.to_dictc                 C   s   d| vr	t j| d< d| vrtdd| vr | d tjkr d| d< d| vr2d| v r.| d r.dnd| d< d| v r9| d= d	| v rN| d	}|d
krHi nd	|i| d< d| vrVd| d< d| vr^d| d< d| vrfd| d< | S )zV
        Processes `config_dict` and sets default values for any missing keys
        r   r/   z:A `distributed_type` must be specified in the config file.num_processes   r0   fp16Ndynamo_backendNOdynamo_configr1   Fr2   enable_cpu_affinity)r   r!   
ValueErrorr   rJ   pop)config_dictrI   r+   r+   r,   process_configf   s(   

zBaseConfig.process_configNc                 C      |d u rt n|}t|dd}t|}W d    n1 sw   Y  | |}tt| t| j  }t	|dkrHt
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.r+   )default_json_config_filer   r   r   rP   sortedsetkeys__dataclass_fields__lenrM   )clsr   r)   rO   
extra_keysr+   r+   r,   r$      s   
zBaseConfig.from_json_filec                 C   sV   t |ddd}tj|  dddd }|| W d    d S 1 s$w   Y  d S )Nwr   r      T)indent	sort_keys
)r   r   dumpsrE   write)rB   r   r)   contentr+   r+   r,   to_json_file   s   "zBaseConfig.to_json_filec                 C   rQ   rR   )default_yaml_config_filer   r%   r&   rP   rT   rU   rV   rW   rX   rM   )rY   r   r)   rO   rZ   r+   r+   r,   r'      s   
zBaseConfig.from_yaml_filec                 C   sD   t |ddd}t|  | W d    d S 1 sw   Y  d S )Nr[   r   r   )r   r%   	safe_dumprE   )rB   r   r)   r+   r+   r,   to_yaml_file   s   "zBaseConfig.to_yaml_filec                 C   sh   t | jtrt| j| _t | jtr%| jtjkrt| j| _nt| j| _t| dd d u r2i | _	d S d S )NrK   )
r4   r   strr   r/   AMAZON_SAGEMAKERr	   r   getattrrK   rB   r+   r+   r,   __post_init__   s   
zBaseConfig.__post_init__r3   )__name__
__module____qualname__r   __annotations__r   r   r	   rg   r7   rE   staticmethodrP   classmethodr$   rc   r'   rf   rk   r+   r+   r+   r,   r.   K   s    
 
r.   c                       s  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 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 ed< dZ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
 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"<  fd#d$Z%  Z&S )%r"   rF   r   machine_rankrG   num_machinesNgpu_idsmain_process_ipmain_process_portstaticrdzv_backendFsame_networkmainmain_training_functionrL   
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_envrK   c                    sz   | j d u ri | _ | jd u ri | _| jd u ri | _| jd u r i | _| jd u r(i | _| jd u r0i | _| jd u r8i | _t  S r3   )	r~   r   r   r   r   r}   r   superrk   rj   	__class__r+   r,   rk      s   







zClusterConfig.__post_init__)'rl   rm   rn   rF   intro   rs   rt   ru   r   rg   rv   rw   ry   rz   r7   r|   rL   r}   r6   r~   r   r   r   r   r   r   r   r   r   r   r   r   listr   r   rK   rk   __classcell__r+   r+   r   r,   r"      s:   
 r"   c                   @   s   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 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S )r#   ec2_instance_typeiam_role_nameN	image_uriprofilez	us-east-1regionrG   rt   allru   zaccelerate-sagemaker-base_job_namepytorch_versiontransformers_version
py_versionsagemaker_inputs_filesagemaker_metrics_fileadditional_argsrK   FrL   )rl   rm   rn   rg   ro   r   r   r   r   rt   r   ru   r   r   r   r   r   r
   r   r   r   r   r6   rK   rL   r7   r+   r+   r+   r,   r#      s"   
 r#   )!r   r   dataclassesr   enumr   typingr   r   r%   utilsr   r   r	   utils.constantsr
   r   r   r   
expanduserenvironr    joinhf_cache_home	cache_dirrS   rd   r   r   r-   r.   r"   r#   r+   r+   r+   r,   <module>   s0     f<