o
    Xεi                     @   sr   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ e
 r/d dlZG dd	 d	eZdS )
    N)defaultdict)Path)Union)BaseDashboardLogger)is_wandb_available)rank_zero_onlyc                
   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zde	de
deddfddZde	ded deddfddZde	dddededdf
ddZedd Zdd  Zd!d" Zd%d#d$ZdS )&WandbLoggerc                 K   sJ   t stdd | _t jst jdi |nt j| _| jjj| _tt| _	d S )Nz:install wandb using `pip install wandb` to use WandbLogger )
wandbRuntimeErrorruninitconfigmodel
model_namer   dictlog_dict)selfkwargsr	   r	   P/home/ubuntu/.local/lib/python3.10/site-packages/trainer/logging/wandb_logger.py__init__   s   zWandbLogger.__init__c                 C   s   d}|  D ]w\}}| dkr | dd||| i| nY| dd||| i| | dd||| i| | dd||| i| | dd||| i| t	|| j
| d||< t	|j| j
| d	||< |d7 }qd S )
N   weightszlayer{}-{}/valuezlayer{}-{}/maxzlayer{}-{}/minzlayer{}-{}/meanzlayer{}-{}/stdzweights/layer{}-{}/paramzweights/layer{}-{}/grad)named_parametersnumeladd_scalarsformatmaxminmeanstdr
   	Histogramr   grad)r   r   step	layer_numnameparamr	   r	   r   model_weights   s    
zWandbLogger.model_weightsc                 C   s,   |  D ]\}}|| j| d||< qd S N{}/{})itemsr   r   )r   
scope_namescalarsr#   keyvaluer	   r	   r   r   )   s   zWandbLogger.add_scalarsc                 C   s2   |  D ]\}}t|| j| d||< qd S r(   )r*   r
   Imager   r   )r   r+   figuresr#   r-   r.   r	   r	   r   add_figures-   s   zWandbLogger.add_figuresc              	   C   sh   |  D ]-\}}|jdkr|d}ztj||d| j| d||< W q ty1   t	  Y qw d S )Nfloat16float32)sample_rater)   )
r*   dtypeastyper
   Audior   r   r   	traceback	print_exc)r   r+   audiosr#   r4   r-   r.   r	   r	   r   
add_audios1   s   

$zWandbLogger.add_audiosc                 C      d S Nr	   )r   titletextr#   r	   r	   r   add_text:      zWandbLogger.add_textr>   r.   r#   returnNc                 C   r<   r=   r	   )r   r>   r.   r#   r	   r	   r   
add_scalar=   rA   zWandbLogger.add_scalarfigure)zmatplotlib.figure.Figurezplotly.graph_objects.Figurec                 C   r<   r=   r	   )r   r>   rD   r#   r	   r	   r   
add_figure@   s   zWandbLogger.add_figureaudioz
np.ndarrayr4   c                 C   r<   r=   r	   )r   r>   rF   r#   r4   r	   r	   r   	add_audioH   rA   zWandbLogger.add_audioc                 C   r<   r=   r	   )r   r   r	   r	   r   
add_configK   s   zWandbLogger.add_configc                 C   s:   | j rt| j D ]}t| j| | q
| j  d S r=   )r   sortedr   keysr
   logclear)r   r#   r	   r	   r   flushO   s   zWandbLogger.flushc                 C   s   | j r
| j   d S d S r=   )r   finish)r   r	   r	   r   rN   U   s   zWandbLogger.finishc                 C   st   | j sd S d| j j|g}tj||d}t|}| r%|t| n|	 r0|
t| | j j||d d S )N_)type)aliases)r   joinidr
   Artifactr   is_diradd_dirstris_fileadd_filelog_artifact)r   file_or_dirr%   artifact_typerQ   artifact	data_pathr	   r	   r   add_artifactY   s   zWandbLogger.add_artifactr=   )__name__
__module____qualname__r   r'   r   r1   r;   r@   rW   floatintrC   r   rE   rG   r   rH   rM   rN   r_   r	   r	   r	   r   r      s.    
	

r   )r8   collectionsr   pathlibr   typingr    trainer.logging.base_dash_loggerr   trainer.trainer_utilsr   trainer.utils.distributedr   r
   r   r	   r	   r	   r   <module>   s   