§
    &`ƒiF  ã                   óÎ   — d dl mZ d dlmZmZ d dlZd dlmZmZm	Z	m
Z
 d dlmZmZ d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ  G d„ dee
¦  «        Z G d„ de	e¦  «        ZdS )é    )Úcontextmanager)ÚDictÚOptionalN)ÚControllerCallbackÚTrainContextCallbackÚWorkerCallbackÚWorkerGroupCallback)ÚTrainRunContextÚget_train_context)ÚTrainControllerStateÚTrainControllerStateType)ÚMetric)ÚControllerMetrics)ÚWorkerMetrics)Útime_monotonicc                   ó`   — e Zd ZdZdefd„Zd„ Zdedefd„Ze	d„ ¦   «         Z
e	d	„ ¦   «         Zd
S )ÚControllerMetricsCallbackz2Callback that records controller-specific metrics.Útrain_run_contextc                 ó
  — |                      ¦   «         j        | _        |j        | _        t          j        | j        | j        ¦  «        | _        | j        t
          j                  	                    t          j        ¦  «         dS )z+Initialize metrics after controller starts.N)Úget_run_configÚnameÚ	_run_nameÚrun_idÚ_run_idr   Úget_controller_metricsÚ_metricsÚCONTROLLER_STATEÚrecordr   ÚINITIALIZING©Úselfr   s     ú|/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/train/v2/_internal/callbacks/metrics.pyÚafter_controller_startz0ControllerMetricsCallback.after_controller_start   st   € à*×9Ò9Ñ;Ô;Ô@ˆŒØ(Ô/ˆŒÝ+<Ô+SØŒN˜DœLñ,
ô ,
ˆŒð 	ŒÕ'Ô8Ô9×@Ò@Ý$Ô1ñ	
ô 	
ð 	
ð 	
ð 	
ó    c                 óf   — | j                              ¦   «         D ]}|                     ¦   «          ŒdS )z.Shutdown metrics before controller shuts down.N©r   ÚvaluesÚreset©r!   Úmetrics     r"   Úbefore_controller_shutdownz4ControllerMetricsCallback.before_controller_shutdown%   ó8   € à”m×*Ò*Ñ,Ô,ð 	ð 	ˆFØLŠL‰NŒNˆNˆNð	ð 	r$   Úprevious_stateÚcurrent_statec                 ód   — | j         t          j                                      |j        ¦  «         dS )z8Record state transitions after controller state updates.N)r   r   r   r   Ú_state_type)r!   r-   r.   s      r"   Úafter_controller_state_updatez7ControllerMetricsCallback.after_controller_state_update*   s7   € ð 	ŒÕ'Ô8Ô9×@Ò@ØÔ%ñ	
ô 	
ð 	
ð 	
ð 	
r$   c              #   ó¤   K  — t          ¦   «         }dV — t          ¦   «         |z
  }| j        t          j                                      |¦  «         dS )z)Measure time taken to start worker group.N)r   r   r   ÚWORKER_GROUP_START_TOTAL_TIME_Sr   ©r!   Ústart_time_sÚelapsed_time_ss      r"   Úon_worker_group_startz/ControllerMetricsCallback.on_worker_group_start4   s\   è è € õ &Ñ'Ô'ˆØˆˆˆÝ'Ñ)Ô)¨LÑ8ˆØŒÕ'ÔGÔH×OÒOØñ	
ô 	
ð 	
ð 	
ð 	
r$   c              #   ó¤   K  — t          ¦   «         }dV — t          ¦   «         |z
  }| j        t          j                                      |¦  «         dS )z,Measure time taken to shutdown worker group.N)r   r   r   Ú"WORKER_GROUP_SHUTDOWN_TOTAL_TIME_Sr   r4   s      r"   Úon_worker_group_shutdownz2ControllerMetricsCallback.on_worker_group_shutdown>   s\   è è € õ &Ñ'Ô'ˆØˆˆˆÝ'Ñ)Ô)¨LÑ8ˆØŒÕ'ÔJÔK×RÒRØñ	
ô 	
ð 	
ð 	
ð 	
r$   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r#   r+   r   r1   r   r7   r:   © r$   r"   r   r      s    € € € € € Ø<Ð<ð

¸ð 

ð 

ð 

ð 

ðð ð ð

à,ð
ð ,ð
ð 
ð 
ð 
ð ð
ð 
ñ „^ð
ð ð
ð 
ñ „^ð
ð 
ð 
r$   r   c                   ó@   — e Zd ZdZdefd„Zd„ Zd„ Zed„ ¦   «         Z	dS )ÚWorkerMetricsCallbackz.Callback that records worker-specific metrics.r   c                 óh   — |                      ¦   «         j        | _        |j        | _        d | _        d S )N)r   r   r   r   r   r   r    s     r"   Ú__init__zWorkerMetricsCallback.__init__L   s-   € Ø*×9Ò9Ñ;Ô;Ô@ˆŒØ(Ô/ˆŒØ59ˆŒˆˆr$   c                 óú   — t          ¦   «         }t          j                             ¦   «         }|                     ¦   «         }|                     ¦   «         }t          j        | j        | j	        ||¦  «        | _
        dS )z6Initialize metrics after train context is initialized.N)r   ÚrayÚruntime_contextÚget_runtime_contextÚget_world_rankÚget_actor_idr   Úget_worker_metricsr   r   r   )r!   Útrain_contextÚcore_contextÚ
world_rankÚworker_actor_ids        r"   Úafter_init_train_contextz.WorkerMetricsCallback.after_init_train_contextQ   sh   € å)Ñ+Ô+ˆÝÔ*×>Ò>Ñ@Ô@ˆØ"×1Ò1Ñ3Ô3ˆ
Ø&×3Ò3Ñ5Ô5ˆÝ%Ô8ØŒN˜DœL¨*°oñ
ô 
ˆŒˆˆr$   c                 óf   — | j                              ¦   «         D ]}|                     ¦   «          ŒdS )z!Shutdown metrics before shutdown.Nr&   r)   s     r"   Úbefore_shutdownz%WorkerMetricsCallback.before_shutdown[   r,   r$   c              #   ó¤   K  — t          ¦   «         }dV — t          ¦   «         |z
  }| j        t          j                                      |¦  «         dS )zb
        Context manager to measure the time taken to report a checkpoint to the storage.
        N)r   r   r   ÚREPORT_TOTAL_BLOCKED_TIME_Sr   r4   s      r"   Ú	on_reportzWorkerMetricsCallback.on_report`   sP   è è € õ
 &Ñ'Ô'ˆØˆˆˆÝ'Ñ)Ô)¨LÑ8ˆØŒ•mÔ?Ô@×GÒGÈÑWÔWÐWÐWÐWr$   N)
r;   r<   r=   r>   r
   rC   rO   rQ   r   rT   r?   r$   r"   rA   rA   I   ss   € € € € € Ø8Ð8ð:¨/ð :ð :ð :ð :ð

ð 
ð 
ðð ð ð
 ðXð Xñ „^ðXð Xð Xr$   rA   )Ú
contextlibr   Útypingr   r   rE   Ú)ray.train.v2._internal.execution.callbackr   r   r   r	   Ú(ray.train.v2._internal.execution.contextr
   r   Ú1ray.train.v2._internal.execution.controller.stater   r   Ú#ray.train.v2._internal.metrics.baser   Ú)ray.train.v2._internal.metrics.controllerr   Ú%ray.train.v2._internal.metrics.workerr   Úray.train.v2._internal.utilr   r   rA   r?   r$   r"   ú<module>r^      sq  ðØ %Ð %Ð %Ð %Ð %Ð %Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !à 
€
€
€
ðð ð ð ð ð ð ð ð ð ð ð ð XÐ WÐ WÐ WÐ WÐ WÐ WÐ Wðð ð ð ð ð ð ð ð 7Ð 6Ð 6Ð 6Ð 6Ð 6Ø GÐ GÐ GÐ GÐ GÐ GØ ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ð0
ð 0
ð 0
ð 0
ð 0
Ð 2Ð4Gñ 0
ô 0
ð 0
ðfXð Xð Xð Xð X˜NÐ,@ñ Xô Xð Xð Xð Xr$   