o
    ni%                     @   s   d dl Z d dlZd dlZd dlmZ d dlmZmZmZ ddl	m
Z
 ddlmZ ddlmZmZmZ er@d dlmZ d d	lmZ e eZG d
d dZejG dd dZdS )    N)deque)TYPE_CHECKINGListOptional   )aggregate_mean)asset_registry)	InterfaceMetricMetricsMonitor)Deque)SettingsStaticc                   @   sZ   e Zd ZU dZdZded< 	ddededd	fd
dZdddZ	dddZ
defddZd	S )TPUUtilizationz(Google Cloud TPU utilization in percent.tpuzDeque[float]samplesd   service_addrduration_msreturnNc                 C   sT   t g | _|| _|| _zddlm} || _W d S  ty)   t	d d | _Y d S w )Nr   profiler_clientz`Unable to import `tensorflow.python.profiler.profiler_client`. TPU metrics will not be reported.)
r   r   r   r   tensorflow.python.profilerr   _profiler_clientImportErrorloggerwarning)selfr   r   r    r   b/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/wandb/sdk/internal/system/assets/tpu.py__init__   s   
zTPUUtilization.__init__c                 C   sH   | j j| j| jdd}| jt|dd dd dd  d S )N   )r   levelzUtilization r   z: %r   )r   monitorr   r   r   appendfloatsplit)r   resultr   r   r   sample.   s   
$zTPUUtilization.samplec                 C      | j   d S N)r   clearr   r   r   r   r+   7      zTPUUtilization.clearc                 C   s   | j si S t| j }| j|iS r*   )r   r   name)r   	aggregater   r   r   r/   :   s   

zTPUUtilization.aggregate)r   r   N)__name__
__module____qualname____doc__r.   __annotations__strintr   r(   r+   dictr/   r   r   r   r   r      s   
 


	r   c                   @   s   e Zd Zdddddejddfdd	Ze				dd
ee dee dee dee def
ddZ	dddZ
dddZedefddZdefddZdS )TPU	interfacer	   settingsr   shutdown_eventr   Nc                 C   s@   | j j | _|  | _t| jg| _t| j| j|||| _	d S r*   )
	__class__r1   lowerr.   get_service_addrr   r   metricsr   metrics_monitor)r   r:   r;   r<   r   r   r   r   C   s   

zTPU.__init__r   tpu_namecompute_zonecore_projectc              	   C   s   | d ur|d urt d nA|ptjd}|d u rtd|p%tjd}|p-tjd}zddlm} |j|g||d	 } W n t
tfyN   t
d	w | d
ddd} | S )Nz\Both service_addr and tpu_name arguments provided. Ignoring tpu_name and using service_addr.TPU_NAMEz'Required environment variable TPU_NAME.CLOUDSDK_COMPUTE_ZONECLOUDSDK_CORE_PROJECTr   tpu_cluster_resolver)zoneprojectzFailed to find TPU. Try specifying TPU zone (via CLOUDSDK_COMPUTE_ZONE environment variable) and GCP project (via CLOUDSDK_CORE_PROJECT environment variable).zgrpc:// z:8470z:8466)r   warnosenvironget	Exception-tensorflow.python.distribute.cluster_resolverrI   TPUClusterResolver
get_master
ValueError	TypeErrorreplace)r   rB   rC   rD   rI   r   r   r   r?   U   s2   zTPU.get_service_addrc                 C   s   | j r
| j  d S d S r*   )r@   rA   startr,   r   r   r   rX   z   s   z	TPU.startc                 C   r)   r*   )rA   finishr,   r   r   r   rY   ~   r-   z
TPU.finishc                 C   sZ   t jdddu rdS zddlm} ddlm} |   W dS  tt	t
tfy,   Y dS w )NrE   Fr   rH   r   T)rN   rO   rP   rR   rI   r   r   r?   r   rV   AttributeErrorrU   )clsrI   r   r   r   r   is_available   s   

zTPU.is_availablec                 C   s   | j d| jiiS )Nservice_address)r.   r   r,   r   r   r   probe   s   z	TPU.probe)NNNNr0   )r1   r2   r3   	threadingEventr   staticmethodr   r6   r?   rX   rY   classmethodboolr\   r8   r^   r   r   r   r   r9   A   s>    

$
r9   )loggingrN   r_   collectionsr   typingr   r   r   aggregatorsr   r   
interfacesr	   r
   r   r   "wandb.sdk.internal.settings_staticr   	getLoggerr1   r   r   registerr9   r   r   r   r   <module>   s    
.