
    
9j>                        S SK r S SKr S SKrS SKrS SKrS SKJrJr  S SKrS SK	J
r
  S SKJr  SSKJrJrJr  SSKJrJr  \" SS	S
9rSr\(       a   S SKJs  Jr  S SKrS	r\r\R<                  R?                  5       r SKS jr!S\"4S jr#S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.S r/\SLS j5       r0S r1S r2S r3SMS jr4S  r5S! r6S" r7S# r8SKS$ jr9S% r:S& r;S' r<S( r=S) r>S* r?S+ r@S, rAS- rBS. rCS/ rDS0 rES1 rFS2 rGS3 rHS4 rIS5 rJS6 rKS7 rLS8 rMS9 rNS: rOSNS; jrP\SMS< j5       rQ\SMS= j5       rR\SMS> j5       rS\SMS? j5       rT\SMS@ j5       rUSA rV\SMSB j5       rW\SMSC j5       rXSD rYSE rZSF r[SG r\SH r]SI r^SOSJ jr_g! \ a     GN&f = f)P    N)	lru_cachewraps)version)parse   )parse_flag_from_envpatch_environmentstr_to_bool)compare_versionsis_torch_versionUSE_TORCH_XLAT)defaultFc                     [         R                  R                  U 5      S LnU(       a&   [         R                  R                  Uc  U OU5      ngg ! [         R                  R                   a     gf = f)NTF)	importlibutil	find_specmetadataPackageNotFoundError)pkg_namemetadata_namepackage_exists_s       R/home/wildlama/miniconda3/lib/python3.13/site-packages/accelerate/utils/imports.py_is_package_availabler   2   si    ^^--h7tCN	""++8MHS`aA	 
 !!66 		s   $A A10A1returnc                      [         $ N)_torch_distributed_available     r   is_torch_distributed_availabler!   >   s    ''r    c                  v    [        SS5      (       a(  [        R                  R                  R	                  5       $ g)N>=z2.7.0F)r   torchdistributeddistributed_c10dis_xccl_availabler   r    r   r'   r'   B   s-    g&&  11CCEEr    c                      [        S5      $ )Nimport_timerr   r   r    r   is_import_timer_availabler+   H        00r    c                  >    [        S5      =(       d    [        SS5      $ )Npynvmlznvidia-ml-pyr*   r   r    r   is_pynvml_availabler/   L   s     *].CHn.]]r    c                      [        S5      $ )Namdsmir*   r   r    r   is_amdsmi_availabler2   P        **r    c                      [         R                  R                  S L=(       a    [         R                  R	                  5       $ r   )r$   r   hipcudais_availabler   r    r   is_rocm_availabler8   T   s)    ==D(FUZZ-D-D-FFr    c                      [        S5      $ )Npytestr*   r   r    r   is_pytest_availabler;   X   r3   r    c                      [        SS5      $ )Nmsampzms-ampr*   r   r    r   is_msamp_availabler>   \   s     (33r    c                      [        S5      $ )Nschedulefreer*   r   r    r   is_schedulefree_availablerA   `   r,   r    c                  P    [        5       (       a  [        SS5      $ [        SS5      $ )Nintel_transformer_enginezintel-transformer-enginetransformer_enginetransformer-engine)is_hpu_availabler   r   r    r   is_transformer_engine_availablerG   d   s)    $%?A[\\$%9;OPPr    c                  F    [        SS5      (       a  SSKJn   U " 5       S   $ g)NrD   rE   r   check_mxfp8_supportF)r   transformer_engine.pytorch.fp8rJ   rI   s    r   %is_transformer_engine_mxfp8_availablerL   k   s%    13GHHF"$Q''r    c                      [        S5      $ )N
lomo_optimr*   r   r    r   is_lomo_availablerO   s        ..r    c                      [        SS9   [        R                  R                  5       n SSS5        U $ ! , (       d  f       W $ = f)zw
Checks if `cuda` is available via an `nvml-based` check which won't trigger the drivers and leave cuda
uninitialized.
1)PYTORCH_NVML_BASED_CUDA_CHECKN)r	   r$   r6   r7   )	availables    r   is_cuda_availablerU   w   s<    
 
	=JJ++-	 
>  
>	= s	   3
Ac                     U (       a  U(       a   S5       e[         (       d  gU(       a!  [        R                  R                  5       S;   $ U (       a!  [        R                  R                  5       S:H  $ g)z
Check if `torch_xla` is available. To train a native pytorch job in an environment with torch xla installed, set
the USE_TORCH_XLA to false.
z6The check_is_tpu and check_is_gpu cannot both be true.F)GPUCUDATPUT)_torch_xla_available	torch_xlaruntimedevice_type)check_is_tpucheck_is_gpus     r   is_torch_xla_availabler`      s[     h0hh.	  ,,./AA	  ,,.%77r    c                      [        S5      n U (       a@  [        R                  " [        R                  R                  S5      5      n[        USS5      $ g)Ntorchaor#   z0.6.1Fr   r   r   r   r   r   )r   torchao_versions     r   is_torchao_availablere      s@    *95N!--	(:(:(B(B9(MNw??r    c                      [        S5      $ )N	deepspeedr*   r   r    r   is_deepspeed_availablerh           --r    c                      [        SS5      $ Nr#   z2.4.0r   r   r    r   is_pippy_availablerm      s    D'**r    c                    [        SS9(       a  U (       + $ [        5       (       a  [        R                  R	                  5       $ [        5       (       a  [        R                  R	                  5       $ [        5       (       a  [        R                  R	                  5       $ [        5       (       a*  [        R                  R                  R                  SS5      $ g)z8Checks if bf16 is supported, optionally ignoring the TPUT)r^      r   )r`   rU   r$   r6   is_bf16_supportedis_mlu_availablemluis_xpu_availablexpuis_mps_availablebackendsmpsis_macos_or_newer)
ignore_tpus    r   is_bf16_availablerz      s    40~zz++--yy**,,yy**,,~~!!33B::r    c                  $    [        5       (       a  gg)zChecks if fp16 is supportedFT)is_habana_gaudi1r   r    r   is_fp16_availabler}      s    r    c                  Z    [        5       =(       d    [        5       =(       d
    [        5       $ )zChecks if fp8 is supported)r>   rG   re   r   r    r   is_fp8_availabler      s    ^#B#D^H\H^^r    c                      [        S5      n U (       a@  [        R                  " [        R                  R                  S5      5      n[        USS5      $ g)Nbitsandbytesr#   z0.39.0Frc   r   bnb_versions     r   is_4bit_bnb_availabler      @    *>:NmmI$6$6$>$>~$NOT8<<r    c                      [        S5      n U (       a@  [        R                  " [        R                  R                  S5      5      n[        USS5      $ g)Nr   r#   z0.37.2Frc   r   s     r   is_8bit_bnb_availabler      r   r    c                     [        S5      nU(       aC  U b@  [        R                  " [        R                  R                  S5      5      n[        USU 5      $ U$ )Nr   r#   rc   )min_versionr   r   s      r   is_bnb_availabler      sH    *>:N+1mmI$6$6$>$>~$NOT;??r    c                  Z    [        5       (       d  gSS Kn S[        U S[        5       5      ;   $ )NFr   multi_backendfeatures)r   r   getattrset)bnbs    r   'is_bitsandbytes_multi_backend_availabler      s'    gc:su===r    c                      [        S5      $ )Ntorchvisionr*   r   r    r   is_torchvision_availabler      s     //r    c                     [        [        R                  R                  SS5      5      S:X  a}  [        R
                  R                  S5      b\   [        [        R                  R                  S5      5      n [        U SS5      (       a   [        R
                  R                  SS5      $ g g g ! [         a#  n[        R                  " S	U 35         S nAg
S nAff = f)NACCELERATE_USE_MEGATRON_LMFalser   megatronzmegatron-corer#   0.8.0z	.trainingz)Parse Megatron version failed. Exception:F)r
   osenvirongetr   r   r   r   r   r   r   	Exceptionwarningswarn)megatron_versiones     r   is_megatron_lm_availabler      s    2::>>">HIQN>>##J/;#(););)C)CO)T#U #$4dGDD$>>33KLL E < O   I!MNs   AB, ,
C6CCc                      [        S5      $ )Ntransformersr*   r   r    r   is_transformers_availabler      r,   r    c                      [        S5      $ )Ndatasetsr*   r   r    r   is_datasets_availabler           ,,r    c                      [        S5      $ )Npeftr*   r   r    r   is_peft_availabler           ((r    c                      [        S5      $ )Ntimmr*   r   r    r   is_timm_availabler      r   r    c                  N    [        5       (       a  [        SS5      $ [        S5      $ )Ntritonz
triton-xpu)rs   r   r   r    r   is_triton_availabler     s#    $X|<< **r    c                      [        S5      n U (       a@  [        R                  " [        R                  R                  S5      5      n[        USS5      $ g)Naim<z4.0.0Frc   )r   aim_versions     r   is_aim_availabler     s@    *51NmmI$6$6$>$>u$EFS'::r    c                  <    [        S5      =(       d    [        S5      $ )NtensorboardtensorboardXr*   r   r    r   is_tensorboard_availabler     s     /X3H3XXr    c                      [        S5      $ )Nwandbr*   r   r    r   is_wandb_availabler          ))r    c                      [        S5      $ )Ncomet_mlr*   r   r    r   is_comet_ml_availabler     r   r    c                      [        S5      $ )Nswanlabr*   r   r    r   is_swanlab_availabler          ++r    c                  L    [         R                  S:  =(       a    [        S5      $ )N)   
   trackio)sysversion_infor   r   r    r   is_trackio_availabler     s    w&K+@+KKr    c                      [        S5      $ )Nboto3r*   r   r    r   is_boto3_availabler   #  r   r    c                  <    [        S5      (       a  [        SS5      $ g)NrichACCELERATE_ENABLE_RICHF)r   r   r   r    r   is_rich_availabler   '  s    V$$"#;UCCr    c                      [        S5      $ )N	sagemakerr*   r   r    r   is_sagemaker_availabler   -  ri   r    c                      [        S5      $ )Ntqdmr*   r   r    r   is_tqdm_availabler   1  r   r    c                      [        S5      $ )Nclearmlr*   r   r    r   is_clearml_availabler   5  r   r    c                      [        S5      $ )Npandasr*   r   r    r   is_pandas_availabler   9  r3   r    c                      [        S5      $ )N
matplotlibr*   r   r    r   is_matplotlib_availabler   =  rP   r    c                      [        S5      (       a  g[        R                  R                  S5      b!   [        R                  R	                  S5      n gg! [        R                  R
                   a     gf = f)NmlflowTzmlflow-skinnyF)r   r   r   r   r   r   )r   s    r   is_mlflow_availabler   A  sh    X&&~~)5	""++O<A  !!66 		s   A A54A5c                     [        SU 5      =(       aW    [        R                  R                  R	                  5       =(       a(    [        R                  R                  R                  5       $ )zHChecks if MPS device is available. The minimum version required is 1.12.r#   )r   r$   rv   rw   r7   is_built)r   s    r   ru   ru   N  sD     D+.v5>>3E3E3R3R3TvY^YgYgYkYkYtYtYvvr    c                     [         R                  R                  S5      c  gSSKn[	        SS9   [
        R                  R                  5       nSSS5        U$ ! , (       d  f       W$ = f)zv
Checks if `mlu` is available via an `cndev-based` check which won't trigger the drivers and leave mlu
uninitialized.
	torch_mluNFr   rR   )PYTORCH_CNDEV_BASED_MLU_CHECK)r   r   r   r   r	   r$   rr   r7   )check_devicer   rT   s      r   rq   rq   U  sW     ~~,4		=II**,	 
>  
>	= s   A
A'c                 ^   [         R                  R                  S5      c  gSSKnU (       a=   [        R
                  R                  5       n[        R
                  R                  5       $ [        [        S5      =(       a    [        R
                  R                  5       $ ! [         a     gf = f)zSChecks if `torch_musa` is installed and potentially if a MUSA is in the environment
torch_musaNFr   musa)
r   r   r   r   r$   r   device_countr7   RuntimeErrorhasattr)r   r   r   s      r   is_musa_availabler   f       ~~-5	

'')A::**,, 5&!?ejj&=&=&??  		   ;B 
B,+B,c                    [         R                  R                  S5      c  g SSKnU (       a=   [
        R                  R                  5       n[
        R                  R                  5       $ [        [
        S5      =(       a    [
        R                  R                  5       $ ! [         a     gf = f! [         a     gf = f)zQChecks if `torch_npu` is installed and potentially if a NPU is in the environment	torch_npuNFr   npu)r   r   r   r   r   r$   r   r   r7   r   r   )r   r   r   s      r   is_npu_availabler   x  s     ~~,4 			&&(A99))++ 5% =UYY%;%;%==    		s"   B  ;B0  
B-,B-0
B=<B=c                 ^   [         R                  R                  S5      c  gSSKnU (       a=   [        R
                  R                  5       n[        R
                  R                  5       $ [        [        S5      =(       a    [        R
                  R                  5       $ ! [         a     gf = f)zSChecks if `torch_sdaa` is installed and potentially if a SDAA is in the environment
torch_sdaaNFr   sdaa)
r   r   r   r   r$   r   r   r7   r   r   )r   r   r   s      r   is_sdaa_availabler     r   r   c                    [         R                  R                  S5      b   [         R                  R                  S5      c  gSSKnU (       a  SSKJs  Js  Jn  [        [
        S5      =(       a    [
        R                  R                  5       $ )zQChecks if `torch.hpu` is installed and potentially if a HPU is in the environmenthabana_frameworksNzhabana_frameworks.torchFr   hpu)r   r   r   habana_frameworks.torch(habana_frameworks.torch.distributed.hcclr$   r%   hcclr   r  r7   )	init_hcclr   r  s      r   rF   rF     s^     	  !45=>>##$=>F"??5% =UYY%;%;%==r    c                      [        5       (       a5  SS KJs  Js  Jn   U R                  5       U R                  R                  :X  a  gg)Nr   TF)rF   *habana_frameworks.torch.utils.experimentalr$   utilsexperimental_get_device_typesynDeviceTypesynDeviceGaudi)htexps    r   r|   r|     s4    BB!!#u':':'I'IIr    c                 8   [        SS5      (       a  gU (       a=   [        R                  R                  5       n[        R                  R	                  5       $ [        [        S5      =(       a    [        R                  R	                  5       $ ! [
         a     gf = f)zr
Checks if XPU acceleration is available via stock PyTorch (>=2.7) and
potentially if a XPU is in the environment
z<=z2.6Frt   )r   r$   rt   r   r7   r   r   )r   r   s     r   rs   rs     sv     e$$			&&(A99))++ 5% =UYY%;%;%==  		s   ;B 
BBc                 ^   [         R                  R                  S5      c  gU (       aA   SS Kn[        R
                  R                  5       n[        R
                  R                  5       $ [        [        S5      =(       a    [        R
                  R                  5       $ ! [         a     gf = f)Ntorch_neuronxFr   neuron)
r   r   r   r  r$   r  r   r7   r   r   )r   r  r   s      r   is_neuron_availabler    s    ~~08	  ))+A<<,,.. 5(#C(A(A(CC  		s   ?B 
B,+B,c                      [        S5      $ )Ndvcliver*   r   r    r   is_dvclive_availabler    r   r    c                      [        S5      $ )N	torchdatar*   r   r    r   is_torchdata_availabler    ri   r    c                      [        S5      n U (       a@  [        R                  " [        R                  R                  S5      5      n[        USS5      $ g)Nr  r#   r   Frc   )r   torchdata_versions     r   *is_torchdata_stateful_dataloader_availabler    sB    *;7N#MM)*<*<*D*D[*QR 14AAr    c                 0   ^  [        T 5      U 4S j5       nU$ )z[
A decorator that ensures the decorated function is only called when torchao is available.
c                  H   > [        5       (       d  [        S5      eT" U 0 UD6$ )Nze`torchao` is not available, please install it before calling this function via `pip install torchao`.)re   ImportError)argskwargsfuncs     r   wrapper!torchao_required.<locals>.wrapper  s.    #%%w  T$V$$r    r   r!  r"  s   ` r   torchao_requiredr&    s"    
 4[% % Nr    c                 0   ^  [        T 5      U 4S j5       nU$ )z[
A decorator that ensures the decorated function is only called when deepspeed is enabled.
c                     > SSK Jn  SSKJn  UR                  0 :w  a*  U" 5       R
                  UR                  :w  a  [        S5      eT" U 0 UD6$ )Nr   )AcceleratorState)DistributedTypez|DeepSpeed is not enabled, please make sure that an `Accelerator` is configured for `deepspeed` before calling this function.)accelerate.stater)  accelerate.utils.dataclassesr*  _shared_statedistributed_type	DEEPSPEED
ValueError)r  r   r)  r*  r!  s       r   r"  #deepspeed_required.<locals>.wrapper	  sS    5@))R/4D4F4W4W[j[t[t4t0  T$V$$r    r$  r%  s   ` r   deepspeed_requiredr2    s"    
 4[	% 	% Nr    c                      [        SS5      $ rk   rl   r   r    r   is_weights_only_availabler4    s     D'**r    c                 l    [        [        R                  R                  S5      5      n[	        USU 5      $ )Nnumpyr#   )r   r   r   r   r   )r   numpy_versions     r   is_numpy_availabler8    s,    ),,44W=>MM4==r    r   )FF)F)z1.12)z1.25.0)`r   importlib.metadatar   r   r   	functoolsr   r   r$   	packagingr   packaging.versionr   environmentr   r	   r
   versionsr   r   r   rZ   torch_xla.core.xla_modelcore	xla_modelxmtorch_xla.runtimer[   r  _tpu_availabler%   r7   r   r   boolr!   r'   r+   r/   r2   r8   r;   r>   rA   rG   rL   rO   rU   r`   re   rh   rm   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ru   rq   r   r   r   rF   r|   rs   r  r  r  r  r&  r2  r4  r8  r   r    r   <module>rF     sK     	 
  &   # L L 8 $OTB -- #
 &  %00==? 	( (1^+G+41Q/  ".+_
>0	1-))+Y*-,L*.),+/
w    @ @" > >, @ @" > >  > >& D D",.
"(+>m  s   E< <FF