Ë
    ÿÍ:j¾'  ã                   ó¨  — d Z ddlm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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e ee!f      deddfd„Z"deeeef      de deeef   fd„Z#dddeeee f      ddfd„Z$dd„Z%dee ee!f   defd„Z&y) z.Houses the methods used to set up the Trainer.é    )Ú	timedelta)ÚOptionalÚUnionN)ÚPossibleUserWarning)ÚCUDAAcceleratorÚMPSAcceleratorÚXLAAccelerator)ÚDummyLogger)ÚAdvancedProfilerÚPassThroughProfilerÚProfilerÚPyTorchProfilerÚSimpleProfilerÚXLAProfiler)ÚMisconfigurationException)Ú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	                 óD  — t        |t        «      r|dk  rt        d|›d�«      ‚|| _        |dk(  rd| _        t	        |d«      | _        |dkD  }	|rŸt        |«      }
|	s|
| _        |
| _        |
| _        |
| _	        |
| j                  j                  _        d| _        d| j                  _        d| _        d | _        d| _        | j$                  rt'        «       gng | _        t)        d|
› d	�«       n¡|	s"t	        |d
«      | _        t	        |d«      | _        t	        |d«      | _        t	        |d«      | _	        |dk(  rt+        d«      n|| _        d | _        t        |t,        t.        t0        f«      rt3        |«      | _        nt	        |d«      | _        |	r|| _        || _        y y )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   Ú_val_check_time_intervalÚcheck_val_every_n_epochÚloggersr
   r   ÚfloatÚstrÚdictr   Ú_parse_time_interval_seconds)r   r   r   r   r   r   r   r   r   Úoverfit_batches_enabledÚnum_batchess              út/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/lightning/pytorch/trainer/setup.pyÚ_init_debugging_flagsr5   #   sº  € ô �,¤Ô$¨,¸Ò*:Ü'Ø˜LÐ+Ð+\Ð]ó
ð 	
ð (€GÔð �qÒØ#ˆÔä5°oÐGXÓY€GÔØ-°Ñ1ÐáÜ˜,Ó'ˆÙ&Ø*5ˆGÔ'Ø(3ˆGÔ%à%0ˆÔ"Ø(3ˆÔ%Ø0;ˆ×Ñ×#Ñ#Ô-Ø'(ˆÔ$Ø&'ˆ×ÑÔ#Ø%(ˆÔ"Ø+/ˆÔ(Ø*+ˆÔ'Ø-4¯_ª_œ;›=™/À"ˆŒÜØPÐQ\ÐP]ð ^7ð 7õ	
ñ
 'Ü*AÐBUÐWlÓ*mˆGÔ'Ü(?Ð@QÐSfÓ(gˆGÔ%Ü%<Ð=OÐQeÓ%fˆÔ"Ü(?Ð@UÐWnÓ(oˆÔ%Ø7KÈrÒ7Q¤u¨U¤|ÐWkˆÔ$ð ,0ˆÔ(ÜÐ(¬3´´iÐ*@ÔAÜ/KÐL^Ó/_ˆGÕ,ä)@ÐASÐUiÓ)jˆGÔ&áØ&5ˆÔ#Ø$3ˆÕ!ð ó    ÚbatchesÚnamec                 ó\  — | €yt        | t        «      r)| dk(  r$|dk(  rd}n
|dk(  rd}nd}t        d|› d	|› �«       n9t        | t        «      r)| dk(  r$|dk(  rd
}n
|dk(  rd}nd}t        d|› d|› d�«       d| cxk  rdk  r| S  | dkD  r| dz  dk(  rt        | «      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   )r7   r8   Úmessages      r4   r&   r&   d   sñ   € Ø€ð ô �'œ3Ô G¨q¢LØÐ(Ò(Ø7‰GØÐ)Ò)Ø>‰Gà-ˆGÜ˜ 4 &Ð(?À¸yÐIÕJÜ	�GœUÔ	#¨°3ªØÐ(Ò(ØC‰GØÐ)Ò)ØM‰Gà9ˆGÜ˜ 4 &Ð(AÀ'ÀÈ!ÐLÔMàˆGÔ�qÒØˆð à�‚{�w ‘}¨Ò)Ü�7‹|ÐÜ
#Ø
(¨¨	°°t°fÐ<cÐdóð r6   Úprofilerc                 ó  — t        |t        «      r\t        t        t        t
        dœ}|j                  «       }||vr%t        dt        |j                  «       «      › �«      ‚||   } |«       }|xs
 t        «       | _        y )N)ÚsimpleÚadvancedÚpytorchÚxlaz[When passing string value for the `profiler` parameter of `Trainer`, it can only be one of )r$   r/   r   r   r   r   Úlowerr   ÚlistÚkeysr   r<   )r   r<   Ú	PROFILERSÚprofiler_classs       r4   Ú_init_profilerrG   …   s„   € Ü�(œCÔ ä$Ü(Ü&Üñ	
ˆ	ð —>‘>Ó#ˆØ˜9Ñ$Ü+ð*Ü*.¨y¯~©~Ó/?Ó*@Ð)AðCóð ð # 8Ñ,ˆÙ!Ó#ˆØÒ8Ô#6Ó#8€GÕr6   c                 ó¾  — t        j                  «       rd}d}nt        j                  «       rd}d}nd}d}t        | j                  t         t        f«      }t        d|› |› d|› �«       t        | j                  t        «      r| j                  nd}t        d	t        j                  «       › d
|› d�«       t        j                  «       rt        | j                  t         «      r.t        j                  «       r+t        | j                  t        «      st        dt        ¬«       t        j                  «       r't        | j                  t        «      st        d«       y y y )NTz (cuda)z (mps)FÚ zGPU available: z, used: r   zTPU available: z	, using: z
 TPU coreszQGPU 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')`.)
r   Úis_availabler   r$   Úacceleratorr   r	   Únum_devicesr   r   )r   Úgpu_availableÚgpu_typeÚgpu_usedÚnum_tpu_coress        r4   Ú_log_device_inforR   ˜   s  € Ü×#Ñ#Ô%ØˆØ‰Ü	×	$Ñ	$Ô	&ØˆØ‰àˆØˆä˜'×-Ñ-´ÄÐ/PÓQ€HÜ�_ ] O°H°:¸XÀhÀZÐPÔQä+5°g×6IÑ6IÌ>Ô+Z�G×'Ò'Ð`a€MÜ�_¤^×%@Ñ%@Ó%BÐ$CÀ9È]ÈOÐ[eÐfÔgô 	×$Ñ$Ô&Ü˜7×.Ñ.´Ô@Ü×&Ñ&Ô(Ü˜7×.Ñ.´Ô?äØ_Ü(õ	
ô
 ×"Ñ"Ô$¬Z¸×8KÑ8KÌ^Ô-\ÜÐjÕkð .]Ð$r6   Úvaluec                 ó   — t        | t        «      r| j                  «       S t        | t        «      rt        d	i | ¤Ž}|j                  «       S t        | t        «      r�| j                  d«      }t        |«      dk7  rt        d| ›d�«      ‚|\  }}}}	 t        |«      }t        |«      }t        |«      }	t        |«      }
t        |||	|
¬«      }|j                  «       S t        dt        | «      ›�«      ‚# t        $ r t        d| ›d�«      ‚w xY w)
a]  Convert a time interval into seconds.

    This helper parses different representations of a time interval and
    normalizes them into a float number of seconds.

    Supported input formats:
      * `timedelta`: The total seconds are returned directly.
      * `dict`: A dictionary of keyword arguments accepted by
        `datetime.timedelta`, e.g. `{"days": 1, "hours": 2}`.
      * `str`: A string in the format `"DD:HH:MM:SS"`, where each
        component must be an integer.

    Args:
        value (Union[str, timedelta, dict]): The time interval to parse.

    Returns:
        float: The duration represented by `value` in seconds.

    Raises:
        MisconfigurationException: If the input type is unsupported, the
        string format is invalid, or any string component is not an integer.

    Examples:
        >>> _parse_time_interval_seconds("01:02:03:04")
        93784.0

        >>> _parse_time_interval_seconds({"hours": 2, "minutes": 30})
        9000.0

        >>> from datetime import timedelta
        >>> _parse_time_interval_seconds(timedelta(days=1, seconds=30))
        86430.0

    ú:é   z.Invalid time format for `val_check_interval`: z. Expected 'DD:HH:MM:SS'.z6Non-integer component in `val_check_interval` string: z. Use 'DD:HH:MM:SS'.)ÚdaysÚhoursÚminutesÚsecondsz+Unsupported type for `val_check_interval`: © )r$   r   Útotal_secondsr0   r/   ÚsplitÚlenr   r%   Ú
ValueErrorÚtype)rS   ÚtdÚpartsÚdÚhÚmÚsrW   rX   rY   rZ   s              r4   r1   r1   ¸   s   € ôF �%œÔ#Ø×"Ñ"Ó$Ð$Ü�%œÔÜÑ˜ÑˆØ×ÑÓ!Ð!Ü�%œÔØ—‘˜CÓ ˆÜˆu‹:˜Š?Ü+Ø@ÀÀ	ÐIbÐcóð ð ‰
ˆˆ1ˆa�ð	Ü�q“6ˆDÜ˜“FˆEÜ˜!“fˆGÜ˜!“fˆGô
 ˜D¨°wÈÔPˆØ×ÑÓ!Ð!ä
#Ð&QÔRVÐW\ÓR]ÐQ`Ð$aÓ
bÐbøô ò 	Ü+ØHÈÈ	ÐQeÐfóð ð	ús   Â,C4 Ã4D)r   r   r   N)'Ú__doc__Údatetimer   Útypingr   r   Úlightning.pytorchr@   Ú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.rank_zeror   r   r%   r.   Úboolr/   r0   r5   r&   rG   rR   r1   r[   r6   r4   ú<module>rs      s  ðñ 5å ß "å Ý Cß ZÑ ZÝ 8÷÷ õ Mß Pð>4Øð>4à! %¨¨U¨
Ñ"3Ñ4ð>4ð    c¨5 jÑ 1Ñ2ð>4ð !  s¨E zÑ!2Ñ3ð	>4ð
 $ E¨#¨u¨*Ñ$5Ñ6ð>4ð ˜˜T˜	Ñ"ð>4ð ˜3 ˜:Ñ&ð>4ð !  s¨E°3¸	À4Ð'GÑ!HÑIð>4ð ð>4ð 
ó>4ðB X¨e°C¸°JÑ.?Ñ%@ð Èð ÐPUÐVYÐ[`ÐV`ÑPaó ðB9˜Lð 9°H¸UÀ8ÈSÀ=Ñ=QÑ4Rð 9ÐW[ó 9ó&lð@;c¨¨c°9¸dÐ.BÑ(Cð ;cÈô ;cr6   