o
    TiW                     @   s   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
 d dlmZ er.d dlZddlmZ eZeZeZeeeef ZG dd de
ZG d	d
 d
ZdS )    )TYPE_CHECKINGAnyTupleListDictOptional   )check_comet_availability)MonitorN)CometConfigc                       s\   e Zd Zd fddZeded fddZedefd	d
Zde	e
 ddfddZ  ZS )CometMonitorcomet_configr   c                    s   t  | t  dd l}|j| _|j| _d | _| jr?t	 dkr?|j
|j|j|j|j|j|jd| _|jd ur?| j|j t|j| _d S )Nr   )api_keyproject	workspaceexperiment_keymodeonline)super__init__r	   comet_mlenabledsamples_log_interval_samples_log_interval_experimentdistget_rankstartr   r   r   r   r   r   experiment_nameset_nameEventsLogScheduler_events_log_scheduler)selfr   r   	__class__ K/home/ubuntu/.local/lib/python3.10/site-packages/deepspeed/monitor/comet.pyr      s$   
	zCometMonitor.__init__returnzcomet_ml.ExperimentBasec                 C      | j S N)r   r"   r%   r%   r&   
experiment1      zCometMonitor.experimentc                 C   r(   r)   )r   r*   r%   r%   r&   r   5   r,   z!CometMonitor.samples_log_interval
event_listNc                 C   s\   | j r	t dkrd S |D ]}|d }|d }|d }| j||r+| jj|||d qd S )Nr   r      )namevaluestep)r   r   r   r!   needs_loggingr   __internal_api__log_metric__)r"   r-   eventr/   r0   engine_global_samplesr%   r%   r&   write_events9   s   zCometMonitor.write_events)r   r   )__name__
__module____qualname__r   propertyr   r+   intr   r   Eventr6   __classcell__r%   r%   r#   r&   r      s    r   c                   @   s0   e Zd ZdefddZdededefddZd	S )
r    r   c                 C   s   || _ i | _d S r)   )r   _last_logged_events_samples)r"   r   r%   r%   r&   r   L   s   
zEventsLogScheduler.__init__r/   current_sampler'   c                 C   sF   || j vr|| j |< dS | j | }|| }|| jkr!|| j |< dS dS )NTF)r>   r   )r"   r/   r?   last_logged_samplesamples_deltar%   r%   r&   r2   P   s   




z EventsLogScheduler.needs_loggingN)r7   r8   r9   r;   r   strboolr2   r%   r%   r%   r&   r    J   s    r    )typingr   r   r   r   r   r   utilsr	   monitorr
   deepspeed.commcommr   r   configr   rB   NameValuer;   GlobalSamplesr<   r   r    r%   r%   r%   r&   <module>   s    3