o
    Xεi                     @   sj   d dl Z d dlmZ d dlmZ d dlmZ e r+d dlmZm	Z	m
Z
mZ d dlmZ G dd deZdS )	    N)BaseDashboardLogger)is_aim_available)rank_zero_only)AudioImageRepoText)Runc                       s&  e Zd Z	d4dededefddZedd Zejd	d Zd
d Zdd Z	dd Z
dd Zdd Zd4ddZdd Zedd Zedd Zedd Z fddZ fd d!Z fd"d#Z fd$d%Z fd&d'Z fd(d)Z fd*d+Z fd,d-Z fd.d/Zd0d1 Ze fd2d3Z  ZS )5	AimLoggerNrepo
model_nametagsc                 C   sL   d | _ || _t||d| _t|| _|r"|dD ]
}| j| qd S d S )N)r   
experiment,)_contextr   r	   runr   r   splitadd_tag)selfr   r   r   tag r   N/home/ubuntu/.local/lib/python3.10/site-packages/trainer/logging/aim_logger.py__init__   s   
zAimLogger.__init__c                 C   s   | j S Nr   r   r   r   r   context%   s   zAimLogger.contextc                 C   s
   || _ d S r   r   )r   r   r   r   r   r   )   s   
c                 C   s   d}|  D ]U\}}| dkr| jd||| | n8| jd||| | | jd||| | | jd||| | | jd||| | |d7 }qd S )N   zlayer{}-{}/valuezlayer{}-{}/maxzlayer{}-{}/minzlayer{}-{}/meanzlayer{}-{}/std)	named_parametersnumelr   
log_metricformatmaxminmeanstd)r   modelstep	layer_numnameparamr   r   r   model_weights-   s   
zAimLogger.model_weightsc                 C   s   |  dd|  dd dS )zTODO: Add config to AIMzmodel-configz<pre>z</pre>r   N)add_textto_json)r   configr   r   r   
add_config<   s   zAimLogger.add_configc                 C   s   | j j|||| jd d S Nr)   r'   r   )r   trackr   )r   titlevaluer'   r   r   r   
add_scalarA   s   zAimLogger.add_scalarc                 C      | j jt|||| jd d S r0   )r   r2   r   r   )r   r3   textr'   r   r   r   r,   D      
zAimLogger.add_textc                 C   s    | j jt||||| jd d S r0   )r   r2   r   r   )r   r3   figurer'   r   r   r   
add_figureL   s   
zAimLogger.add_figurec                 C      d S r   r   )r   file_or_dirr)   artifact_typealiasesr   r   r   add_artifactT   s   zAimLogger.add_artifactc                 C   r6   r0   )r   r2   r   r   )r   r3   audior'   sample_rater   r   r   	add_audioX   r8   zAimLogger.add_audioc                 C   sF   |  D ]\}}t|r| }| jj|d|||| jd qd S )Nz{}-{}r1   )itemstorch	is_tensoritemr   r2   r!   r   )r   
scope_namescalarsr'   keyr4   r   r   r   add_scalars`   s
   
 zAimLogger.add_scalarsc                 C   s@   |  D ]\}}d|||}| jjt||||| jd qd S )Nz{}/{}/{}.pngr1   )rC   r!   r   r2   r   r   )r   rG   figuresr'   rI   r4   r3   r   r   r   add_figuresg   s   zAimLogger.add_figuresc                 C   s>   |  D ]\}}d|||}| jjt|||| jd qd S )Nz{}/{}/{}.wavr1   )rC   r!   r   r2   r   r   )r   rG   audiosr'   rA   rI   r4   r3   r   r   r   
add_audiosr   s   zAimLogger.add_audiosc                       ddi| _ t || d S Nsubsettrain)r   supertrain_step_statsr   r'   stats	__class__r   r   rT   }      
zAimLogger.train_step_statsc                    rO   rP   )r   rS   train_epoch_statsrU   rW   r   r   rZ      rY   zAimLogger.train_epoch_statsc                    rO   rP   )r   rS   train_figuresr   r'   rK   rW   r   r   r[      rY   zAimLogger.train_figuresc                       ddi| _ t ||| d S rP   )r   rS   train_audiosr   r'   rM   rA   rW   r   r   r^         
zAimLogger.train_audiosc                    rO   NrQ   eval)r   rS   
eval_statsrU   rW   r   r   rc      rY   zAimLogger.eval_statsc                    rO   ra   )r   rS   eval_figuresr\   rW   r   r   rd      rY   zAimLogger.eval_figuresc                    r]   ra   )r   rS   eval_audiosr_   rW   r   r   re      r`   zAimLogger.eval_audiosc                    r]   NrQ   test)r   rS   test_audiosr_   rW   r   r   rh      r`   zAimLogger.test_audiosc                    rO   rf   )r   rS   test_figuresr\   rW   r   r   ri      rY   zAimLogger.test_figuresc                 C   r;   r   r   r   r   r   r   flush   s   zAimLogger.flushc                    s   t    d S r   )rS   closer   rW   r   r   finish   s   zAimLogger.finishr   )__name__
__module____qualname__strr   propertyr   setterr+   r/   r5   r,   r:   r?   rB   r   rJ   rL   rN   rT   rZ   r[   r^   rc   rd   re   rh   ri   rj   rl   __classcell__r   r   rW   r   r
      sL    








r
   )rD    trainer.logging.base_dash_loggerr   trainer.trainer_utilsr   trainer.utils.distributedr   aimr   r   r   r   aim.sdk.runr	   r
   r   r   r   r   <module>   s    