CoolFace
Apppublic

blanchon/Metric3D

sourceHugging Facegpl-3.0updated 2y agoView on Hugging Face
0likes
comm.cpython-39.pyc95 linesDownload Raw Back to __pycache__
1a

2�[�ds+�@s.ddlZddlZddlmZddlmZddlmZm	Z	ddl3Z4ddlZddlm
ZzddlmZWnddlmZYn0ddlZddlZddlZed�dd	�Zed�d5d�Zed�dd
�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�ZGdd�de �Z!Gdd�de �Z"d%d!d"�Z#d#d$�Z$dS)&�N���AverageMeter)�defaultdict�OrderedDict)�collect_env)�get_git_hash)�returncCs6t�dkS�Nr)�get_rank�rr�AC:\Users\JUGG\Documents\GitHub\Metric3DPrivate\mono\utils\comm.py�main_processsrcCs t��sdSt��sdSt��S�Nr)�dist�is_available�is_initialized�get_world_sizerrrr
rs7rcCs t��sdSt��sdSt��Sr8)rrrrrrrr
r s9rcCs2t�tjtj�}|�d�|��d}|��|S)N)�rr)�socket�AF_INET�SOCK_STREAM�bind�getsockname�close)�sock�portrrr
�_find_free_port's1011rcsht�t���d}|�d�t�tjtj��(�t��fdd�|D��Wd�S1sZ0YdS)N������	localhostc3s |]}��|�f�dkVqdS)rN)�12connect_ex)�.0�ip�r�srr
�	<genexpr>5�z _is_free_port.<locals>.<genexpr>)r�gethostbyname_ex�gethostname�appendrr�all)rZipsrr#r
�
_is_free_port1s13r+cCsJ|dkrt|�n4|dkr$t|�n"|dkr6t|�nt|j�d���dS)a0Initialize distributed training environment.14    If argument ``cfg.dist_params.dist_url`` is specified as 'env://', then the master port will be system15    environment variable ``MASTER_PORT``. If ``MASTER_PORT`` is not in system16    environment variable, then a default port ``29500`` will be used.17    �slurm�ror�Nonez has not been supported!N)�_init_dist_slurm�_init_dist_ror�_init_none_dist�RuntimeError�launcher)r3�cfgrrr
�init_env?s181920r5cCsBd|j_d|j_d|j_d|j_d|j_d|j_td�tj	d<dS)Nrr�21WORLD_SIZE)22�dist_params�num_gpus_per_node�23world_size�nnodes�	node_rank�global_rank�24local_rank�str�os�environ)r4rrr
r1Nsr1cCsrddlm}m}m}m}m}|�|j_|�|j_|�|�|j_	|�|j_25|�|j_|�|j_t
|��tjd<dS)Nr)�get_local_rank�get_world_rank�get_local_size�
get_node_rankrr6)Zac2.ror.commrArBrCrDrr7r8r9r:r;r<r=r>r?r@)r4rArBrCrDrrrr
r0Ws2627282930r0cCsdtjvrt|jj�tjd<dtjvr8t|jj�tjd<tj��}t	tjd�|}t|�tjd<dtjvr|ttjd�}n"t31d�r�d}n32tt��}|tjd<dtjvr�ttjd�}nd}|tjd<d	|j_||j_
||j_t	tjd�|j_t	tjd�|j_dS)33NZNNODESZ	NODE_RANKr6�MASTER_PORTit@Z16500�MASTER_ADDRz	127.0.0.1zenv://)r?r@r>r7r:r;�torch�cuda�device_count�intr+r�dist_urlr8r9)r4�num_gpusr9�master_port�master_addrrrr
r/bs,3435363738394041r/cCs~|dkrdSzR|�d�}t|�dkr4t�|dWSd�|dd��}t�|�}t||d�WStd|����Yn0dS)z�42        Helper to return a function object by name. func_name must identify 43        a function in this module or the path to a function relative to the base44        module.45        @ func_name: function name.46    rN�.rrrzFailed to find function: )�split�len�globals�join�	importlib�
import_module�getattrr2)�	func_name�parts�module_name�modulerrr
�get_func�s4748r[c@s2eZdZdZdd�Zdd�Zddd�Zd	d49�ZdS)
�TimerzA simple timer.cCs|��dS�N)�reset��selfrrr
�__init__�szTimer.__init__cCst��|_dSr])�time�50start_timer_rrr
�tic�sz	Timer.ticTcCsPt��|j|_|j|j7_|jd7_|j|j|_|rF|jS|jSdSr)rbrc�diff�51total_time�calls�average_time)r`�averagerrr
�toc�sz	Timer.toccCs"d|_d|_d|_d|_d|_dS)Ngr)rfrgrcrerhr_rrr
r^�s52zTimer.resetN)T)�__name__�53__module__�__qualname__�__doc__rardrjr^rrrr
r\�s5455 56r\c@sZeZdZdZddd�Zdd�Zdd�Zd	d57�Zdd�Zifd
d�Z	dd�Z58ifdd�ZdS)�
TrainingStatsz Track vital training statistics.NcCs:||_||_gd�|_t�|_||_dd�}t|�|_dS)N)�iter�eta�epochrbcSst�Sr]rrrrr
�create_smoothed_value�sz5TrainingStats.__init__.<locals>.create_smoothed_value)�59log_period�tblogger�tb_ignored_keysr\�60iter_timerZfilter_sizer�smoothed_losses)r`rtZtensorboard_loggerrsrrr
ra�s61zTrainingStats.__init__cCs|j��dSr])rwrdr_rrr
�IterTic�szTrainingStats.IterTiccCs|jjdd�S)NF)ri)rwrjr_rrr
�IterToc�szTrainingStats.IterToccCs|j��dSr])rwr^r_rrr
�reset_iter_time�szTrainingStats.reset_iter_timecCs,|��D]\}}|j|�t|�d�qdS)z$Update tracked iteration statistics.rN)�itemsrx�update�float)r`Zlosses_dict�k�vrrr
�update_iter_stats�szTrainingStats.update_iter_statscCsX||jdkrT|�||||�}t|�|jr8|�||�|j��D]\}}|��qBdS)zLog the tracked statistics.rN)rt�	get_stats�	log_statsru�tb_log_statsrxr|r^)r`�cur_iter�	optimizer�	max_iters�val_err�statsrr�rrr
�log_iter_stats�szTrainingStats.log_iter_statscCsH|D]>}||jvr||}t|t�r2|�||�q|j�|||�qdS)z)Log the tracked statistics to tensorboardN)rv�62isinstance�dictr�ru�63add_scalar)r`r�r�rr�rrr
r��s6465zTrainingStats.tb_log_statscCs�|jj||}ttjt|�d��}t||jj|d�}|��}i}	tt	|d��D] }66d|67}|d|68d|	|<qRt|	�|d<|j69��D]\}}
|
j||<q�t|�|d<||d<|S)N)�seconds)rprbrq�param_groupsz70group%d_lr�lrr�r�)
rwrhr>�datetime�	timedeltarJr�71state_dict�rangerQrxr|�avg)r`r�r�r�r�Zeta_secondsrqr�Zoptimizer_state_dictr��iZlr_namerr�rrr
r��s$�zTrainingStats.get_stats)N)rkrlrmrnraryrzr{r�r�r�r�rrrr
ro�s7273roTcCs�t�}|dkr|St����g}g}t|���D]}|�|�|�||�q0tj|dd�}tj|dd�t�	�dkr�|r�||}dd�t74||�D�}Wd�n1s�0Y|S)ae75    Reduce the values in the dictionary from all processes so that process with rank76    0 has the reduced results.77    Args:78        @input_dict (dict): inputs to be reduced. All the values must be scalar CUDA Tensor.79        @average (bool): whether to do average or sum80    Returns:81        a dict with the same keys as input_dict, after reduction.82    �r)�dim)�dstcSsi|]\}}||�qSrr�r!rr�rrr
�83<dictcomp>%r&zreduce_dict.<locals>.<dictcomp>N)rrG�no_grad�sorted�keysr)�stackr�reducer�zip)�84input_dictrir9�names�valuesrZreduced_dictrrr
�reduce_dicts8586872r�cCst��}d|d|df}|d|d|d|df7}|d7}|��D]4\}}d	|��vrJd|��vrJ|d88||fd7}qJ|dd�}|d
7}|dd�dd�|d��D��d7}|d
7}|dd�dd�|d��D��7}|d
7}|�|dd��dS)Nz
[Step %d/%d]89rpr�z(		loss: %.3f,    time: %.6f,    eta: %s90Z91total_lossrbrqz		�lossz%s: %.3fz,  ������92z		last val err:css|]\}}d||fVqdS)z%s: %.6fNrr�rrr
r%;r&zlog_stats.<locals>.<genexpr>r�z, css|]\}}d||fVqdS)z%s: %.8fNrr�rrr
r%?r&r�r)�logging�	getLoggerr|�lowerrS�info)r��logger�linesrr�rrr
r�)s$��($r�)T)%rTrG�torch.distributed�distributedrZ	avg_meterr�collectionsrrr?r�93mmcv.utilsrZcollect_base_envr�mmengine.utilsrbr�r��boolrrJrrrr+r5r1r0r/r[�objectr\ror�r�rrrr
�<module>s894	,L95