o
    oi                     @   sl  d Z ddlmZmZ ddlmZ ddlmZ ddl	m
Z
mZmZ ddlmZ ddlmZmZmZmZmZmZ ddlmZ dd	lmZ dd
lmZmZ dddeeeef  deeeef  deeeef  deeeef  deeef deeef deeeef  deddfddZ deeeef  de!deeef fddZ"dddeeee!f  ddfddZ#d!dd Z$dS )"z.Houses the methods used to set up the Trainer.    )OptionalUnionN)PossibleUserWarning)CUDAAcceleratorMPSAcceleratorXLAAccelerator)DummyLogger)AdvancedProfilerPassThroughProfilerProfilerPyTorchProfilerSimpleProfilerXLAProfiler)MisconfigurationException) _habana_available_and_importable)rank_zero_inforank_zero_warntrainer
pl.Trainerlimit_train_batcheslimit_val_batcheslimit_test_batcheslimit_predict_batchesfast_dev_runoverfit_batchesval_check_intervalnum_sanity_val_stepsreturnc	                 C   s*  t |tr|dk rtd|d|| _|dkrd| _t|d| _|dk}	|r^t|}
|	s3|
| _|
| _|
| _|
| _	|
| j
j_d| _d| j
_d| _d| _| jrRt gng | _td|
 d	 n+|	slt|d
| _t|d| _t|d| _t|d| _	|dkrtdn|| _t|d| _|	r|| _|| _d S d S )Nr   zfast_dev_run=z1 is not a valid configuration. It should be >= 0.   Tr         ?zBRunning in `fast_dev_run` mode: will run the requested loop using z4 batch(es). Logging and checkpointing is suppressed.r   r   r   r   infr   )
isinstanceintr   r   _determine_batch_limitsr   r   r   r   r   fit_loop
epoch_loop	max_stepsr   
max_epochsr   check_val_every_n_epochloggersr   r   float)r   r   r   r   r   r   r   r   r   overfit_batches_enablednum_batches r.   S/home/ubuntu/.local/lib/python3.10/site-packages/lightning/pytorch/trainer/setup.py_init_debugging_flags#   sH   



r0   batchesnamec                 C   s   | d u rdS t | tr*| dkr*|dkrd}n	|dkrd}nd}td| d	|  n$t | trN| dkrN|dkr:d
}n	|dkrAd}nd}td| d| d d|   krYdkrZ| S  | dkrh| d dkrht| S td|  d| d)Nr   r   r   z1 batch per epoch will be used.r   z&validation will run after every batch.z1 batch will be used.z	`Trainer(z=1)` was configured so z+100% of the batches per epoch will be used.z5validation will run at the end of the training epoch.z!100% of the batches will be used.z=1.0)` was configured so .r   zYou have passed invalid value z for z', it has to be in [0.0, 1.0] or an int.)r"   r#   r   r+   r   )r1   r2   messager.   r.   r/   r$   \   s0   r$   profilerc                 C   s\   t |tr&ttttd}| }||vrtdt|	  || }| }|p*t
 | _d S )N)simpleadvancedpytorchxlaz[When passing string value for the `profiler` parameter of `Trainer`, it can only be one of )r"   strr   r	   r   r   lowerr   listkeysr
   r5   )r   r5   	PROFILERSprofiler_classr.   r.   r/   _init_profiler}   s    

r@   c                 C   sb  t  r	d}d}nt rd}d}nd}d}t| jt tf}td| | d|  t| jtr3| jnd}td	t  d
| d t r[ddl	m
} t| j|rT| jnd}| }nd}d}td| d
| d t  rtt| jt r~t rt| jtstdtd t rt| jtstd t rddl	m
} | rt| j|std d S d S d S d S )NTz (cuda)z (mps)F zGPU available: z, used: r   zTPU available: z	, using: z
 TPU cores)HPUAcceleratorzHPU available: z HPUszQGPU available but not used. You can set it by doing `Trainer(accelerator='gpu')`.)categoryzQTPU available but not used. You can set it by doing `Trainer(accelerator='tpu')`.zQHPU available but not used. You can set it by doing `Trainer(accelerator='hpu')`.)r   is_availabler   r"   acceleratorr   r   num_devicesr   lightning_habanarB   r   r   )r   gpu_availablegpu_typegpu_usednum_tpu_coresrB   num_hpushpu_availabler.   r.   r/   _log_device_info   sN   


rN   )r   r   r   N)%__doc__typingr   r   lightning.pytorchr8   pl#lightning.fabric.utilities.warningsr   lightning.pytorch.acceleratorsr   r   r    lightning.pytorch.loggers.loggerr   lightning.pytorch.profilersr	   r
   r   r   r   r   &lightning.pytorch.utilities.exceptionsr   #lightning.pytorch.utilities.importsr   %lightning.pytorch.utilities.rank_zeror   r   r#   r+   boolr0   r:   r$   r@   rN   r.   r.   r.   r/   <module>   sD    

	

*9"!