
    9i                     l    d dl mZ d dlZddlmZmZ ddlmZmZ ddl	m
Z
 dZd	ed
fdedefdZd Zd Zy)    )PathN   )is_npu_availableis_xpu_available   )ClusterConfigdefault_json_config_file)SubcommandHelpFormatterzFCreate a default config file for Accelerate with only a few flags set.noFsave_locationuse_xpuc                    t        |      }|j                  j                  dd       |j                         rt	        d| d       y| j                         } | dvrt        d|        d| d	}t        j                  j                         r9t        j                  j                         }||d
<   d|d<   |dkD  rd|d<   nd|d<   nt               r;|r9t        j                  j                         }||d
<   d|d<   |dkD  rd|d<   nZd|d<   nTt               r9t        j                  j                         }||d
<   d|d<   |dkD  rd|d<   nd|d<   nd}d|d<   d|d
<   d|d<   d|d<   t        di |}|j!                  |       |S )aA  
    Creates and saves a basic cluster config to be used on a local machine with potentially multiple GPUs. Will also
    set CPU if it is a CPU-only machine.

    Args:
        mixed_precision (`str`, *optional*, defaults to "no"):
            Mixed Precision to use. Should be one of "no", "fp16", or "bf16"
        save_location (`str`, *optional*, defaults to `default_json_config_file`):
            Optional custom save location. Should be passed to `--config_file` when using `accelerate launch`. Default
            location is inside the huggingface cache folder (`~/.cache/huggingface`) but can be overriden by setting
            the `HF_HOME` environmental variable, followed by `accelerate/default_config.yaml`.
        use_xpu (`bool`, *optional*, defaults to `False`):
            Whether to use XPU if available.
    T)parentsexist_okz Configuration already exists at zZ, will not override. Run `accelerate config` manually or pass a different `save_location`.F)r   fp16bf16fp8zL`mixed_precision` should be one of 'no', 'fp16', 'bf16', or 'fp8'. Received LOCAL_MACHINE)compute_environmentmixed_precisionnum_processesuse_cpur   	MULTI_GPUdistributed_typeNO	MULTI_XPU	MULTI_NPUr   debug )r   parentmkdirexistsprintlower
ValueErrortorchcudais_availabledevice_countr   xpur   npur   to_json_file)r   r   r   pathconfignum_gpusnum_xpusnum_npuss           l/var/www/html/backtest/airagagent/rag_env/lib/python3.12/site-packages/accelerate/commands/config/default.pywrite_basic_configr3      s    DKKdT2{{}.}o  >X  Y	
 %++-O;;Z[jZkl
 	
  /*F zz ::**,"*!ya<)4F%&)-F%&		99))+"*!ya<)4F%&)-F%&		99))+"*!ya<)4F%&)-F%& y"#%)!"F7O$V$F
K    c                     | j                  d|t        t              } | j                  dt        dd       | j                  dg dt
        d	d
       | j                  t               | S )Ndefault)r   helpformatter_classz--config_fileaT  The path to use to store the config file. Will default to a file named default_config.yaml in the cache location, which is the content of the environment `HF_HOME` suffixed with 'accelerate', or if you don't have such an environment variable, your cache directory ('~/.cache' or the content of `XDG_CACHE_HOME`) suffixed with 'huggingface'.r   )r6   r7   destz--mixed_precision)r   r   r   zWhether or not to use mixed precision training. Choose between FP16 and BF16 (bfloat16) training. BF16 training is only supported on Nvidia Ampere GPUs and PyTorch 1.10 or later.r   )choicestyper7   r6   )func)
add_parserdescriptionr
   add_argumentr	   strset_defaultsdefault_config_command)parserr   s     r2   default_command_parserrD   _   s    y']tuF
("
   
 &[    34Mr4   c                 f    t        | j                  | j                        }|rt        d|        y y )Nz"accelerate configuration saved at )r3   r   r   r#   )argsconfig_files     r2   rB   rB   z   s2    $T%9%94;M;MNK2;-@A r4   )pathlibr   r&   utilsr   r   config_argsr   r	   config_utilsr
   r>   r@   boolr3   rD   rB   r   r4   r2   <module>rM      sI   "   7 @ 1 W (,BZlq ?C ?ei ?D6Br4   