
    h                     v    S r SSKJrJrJrJrJr  SSKrSSKrSSK	J
r
  SSKJr      SS\S\S	\S
\S\4
S jjrg)zZ
A logger that queries PyTorch metrics and passes that information to downstream loggers.
    )DictAnyOptionalTupleION)Language   )LoggerTprefixdevicecuda_mem_poolcuda_mem_metricreturnc                    ^ ^^^^  SS K m[        R                  [        R                  4S[
        S[        S[        4UUUU U4S jjjnU$ ! [         a    [        S5      ef = f)Nr   zThe 'torch' library could not be found - did you install it? Alternatively, specify the 'ConsoleLogger' in the 'training.logger' config section, instead of the 'PyTorchLogger'.nlpstdoutstderrc                   >^ SnSnT	U;  a  [        ST	 SU S35      eTU;  a  [        ST SU S35      eS[        S[        S	[        [        [        4   4S
 jmS[
        [        [        [        4      4UU	U
UUU4S jjnS nXV4$ )N)all
large_pool
small_pool)r   currentpeak	allocatedfreezGot CUDA memory pool 'z', but expected one of: ''zGot CUDA memory metric 'namevaluer   c                 N    SU ;   a  [         R                  " SSU 5      US-  4$ X4$ )N_bytes
_megabytesg      0A)resub)r   r   s     O/home/james-whalen/.local/lib/python3.13/site-packages/spacy_loggers/pytorch.pynormalize_mem_value_to_mbJpytorch_logger_v1.<locals>.setup_logger.<locals>.normalize_mem_value_to_mb(   s/    4vvhd;Ui=PPP{"    infoc           
        > U c  g TR                   R                  T
5      nUR                  5        H  u  p#UR                  S5      n[	        U5      S:X  a6  Uu  pVnT" XS5      u  pSUT	:w  a  M<  TS:w  a  UT:w  a  MJ  X0T SU SU SU 3'   M[  [	        U5      S:X  a*  Uu  pWT" XS5      u  pSTS:w  a  UT:w  a  M  X0T SU SU 3'   M  X0T SU 3'   M     g )N.   r      )cudamemory_statsitemssplitlen)r(   cuda_mem_statsstatvalsplitsr   poolmetricr   r   r   r%   r   torchs           r$   log_step9pytorch_logger_v1.<locals>.setup_logger.<locals>.log_step.   s    |"ZZ44V<N+113	Cv;!#)/&D 9$ DID}, (E1f6O ?BF81TF!D66(;<[A%#)LD 9$ DID&%/Fo4M 8;F81TF!F845 03F81TF+,' 4r'   c                      g )N r<   r'   r$   finalize9pytorch_logger_v1.<locals>.setup_logger.<locals>.finalizeH   s    r'   )
ValueErrorstrintr   floatr   r   r   )r   r   r   expected_cuda_mem_poolexpected_cuda_mem_metricr9   r=   r%   r   r   r   r   r8   s          @r$   setup_logger'pytorch_logger_v1.<locals>.setup_logger   s    !D#R  66(7PQgPhhij  $<<*?*;;TUmTnnop 	#C 	# 	#c5j@Q 	#	38DcN3 	3 	34	 !!r'   )r8   ImportErrorsysr   r   r   r   )r   r   r   r   rE   r8   s   ```` @r$   pytorch_logger_v1rI      sg    
 25#** 0"( 0"B 0"R 0" 0"d s  
P
 	

s   A A!)pytorchr   r   r   )__doc__typingr   r   r   r   r   r"   rH   spacyr   utilr
   r@   rA   rI   r<   r'   r$   <module>rO      se    2 1 	 
    	AAA A 	A
 Ar'   