o
    wi
                  	   @   sf  d dl Z d dlmZmZmZmZmZmZ d dlZd dl	m
Z ededef dZzd dlZejZejZW n& eyZ   e d edZG dd	 d	ee ZG d
d dee ZY nw dededeegef fddZedeegef fddZedededeegef fddZdededeeegef ef fddZdeeef dejfddZdd ZdS )    N)AnyCallableGenericTypeVarUnionoverloadT.)boundzjTrying to use Config or Partial, but NeMo-Run is not installed. Please install NeMo-Run before proceeding._Tc                   @      e Zd ZdZdS )Config N__name__
__module____qualname____doc__ r   r   W/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/nemo/collections/llm/utils.pyr   #       r   c                   @   r   )Partialr   Nr   r   r   r   r   r   (   r   r   argskwargsreturnc               	   O   sH   zddl }|j| i |W S  ttfy#   dtdtfdd}| Y S w )r   r   Nfuncr   c                 S      | S Nr   r   r   r   r   noop_decorator7      ztask.<locals>.noop_decorator)nemo_runtaskImportErrorAttributeErrorr   r   r   runr   r   r   r   r!   .   s   r!   c                   C      d S r   r   r   r   r   r   factory=   r   r'   c                  O   r&   r   r   )r   r   r   r   r   r'   A   r   c               	   O   sn   zddl }| s|jdi |W S |j| i |W S  ttfy6   dtdtfdd}| s2|s2| Y S | Y S w )r   r   Nr   r   c                 S   r   r   r   r   r   r   r   r   R   r   zfactory.<locals>.noop_decoratorr   )r    r'   r"   r#   r   r$   r   r   r   r'   E   s   	precisionc                 C   s:   | dv rt jS | dv rt jS | dv rt jS td|  d)zMMapping from PTL precision types to corresponding PyTorch parameter datatype.)bf16z
bf16-mixed)   16z16-mixed)    32z32-truez"Could not parse the precision of `z` to a valid torch.dtype)torchbfloat16float16float32
ValueError)r(   r   r   r   torch_dtype_from_precision[   s   r3   c                   C   s   t  r
t   dS dS )zWaits for all processes.N)distis_initializedbarrierr   r   r   r   r6   h   s   r6   )loggingtypingr   r   r   r   r   r   r.   torch.distributeddistributedr4   r   r    r%   r   r   r"   warningr
   r!   r'   intstrdtyper3   r6   r   r   r   r   <module>   s2    
 "(