
    i                     r    d Z ddlmZmZmZmZmZ ddlZddlZddl	m
Z
 ddlmZ 	 	 	 	 ddeded	ed
edef
dZy)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                      	 dd l t        j                  t        j                  fdt
        dt        dt        f fd}|S # t        $ r t        d      w xY w)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                    d}d}	|vrt        d	 d| d      |vrt        d d| d      dt        dt        d	t        t        t        f   fd
dt
        t        t        t        f      f	
fd}d }||fS )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                 J    d| v rt        j                  dd|       |dz  fS | |fS )N_bytes
_megabytesg      0A)resub)r   r   s     f/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/spacy_loggers/pytorch.pynormalize_mem_value_to_mbzJpytorch_logger_v1.<locals>.setup_logger.<locals>.normalize_mem_value_to_mb(   s1    4vvhd;Ui=PPPU{"    infoc           
         | y j                   j                  
      }|j                         D ]  \  }}|j                  d      }t	        |      dk(  r4|\  }}} ||      \  }}|	k7  r=dk7  r|k7  rH||  d| d| d| <   Yt	        |      dk(  r*|\  }} ||      \  }}dk7  r|k7  r||  d| d| <   ||  d| <    y )N.   r      )cudamemory_statsitemssplitlen)r'   cuda_mem_statsstatvalsplitsr   poolmetricr   r   r   r%   r   torchs           r$   log_stepz9pytorch_logger_v1.<locals>.setup_logger.<locals>.log_step.   s   |"ZZ44V<N+113 3	cCv;!#)/&D$ 9$ DID#}, (E1f6O ?BDF81TF!D66(;<[A%#)LD& 9$ DID#&%/Fo4M 8;DF81TF!F845 03DF81TF+,'3r&   c                       y )N r:   r&   r$   finalizez9pytorch_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_metricr8   r;   r%   r   r   r   r   r7   s          @r$   setup_loggerz'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&   )r7   ImportErrorsysr   r   r   r   )r   r   r   r   rB   r7   s   ```` @r$   pytorch_logger_v1rE      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"   rD   spacyr   utilr
   r=   r>   rE   r:   r&   r$   <module>rK      se    2 1 	 
    	AAA A 	A
 Ar&   