o
    TÃiJ	  ã                   @   sè   U d dl mZ d dlZd dlmZmZ G dd„ deƒZG dd„ deƒZejdej	dej
d	ejd
ejdejdejdejd	ejd
ejdi
Zeejef ed< G dd„ deƒZdedefdd„Zdejdefdd„Zdededefdd„ZdS )é    )ÚDictN)ÚEnumÚIntEnumc                   @   s&   e Zd ZU dZeed< dZeed< dS )ÚNormTypeEnumÚ
layer_normÚ	LayerNormÚrms_normÚRMSNormN)Ú__name__Ú
__module__Ú__qualname__r   ÚstrÚ__annotations__r	   © r   r   úZ/home/ubuntu/.local/lib/python3.10/site-packages/deepspeed/inference/v2/inference_utils.pyr      s   
 r   c                   @   sX   e Zd ZejddddfZejddddfZejd	d
ddfZ	ej
ddfZ
dd„ Zdd„ ZdS )Ú	DtypeEnumztorch.float16Úfp16Úfloat16Úhalfztorch.float32Úfp32Úfloat32Úfloatztorch.bfloat16Úbf16Úbfloat16Úbfloatz
torch.int8Úint8c                 G   s:   t  | ¡}|d |_|dd … D ]}|| j|< q||_|S )Nr   é   )ÚobjectÚ__new__Ú_value_Ú_value2member_map_Ú_all_values)ÚclsÚvaluesÚobjÚother_valuer   r   r   r      s   

zDtypeEnum.__new__c                 C   s&   d| j j| jd dd„ | jD ƒ¡f S )Nz<%s.%s: %s>z, c                 S   s   g | ]}t |ƒ‘qS r   )Úrepr)Ú.0Úvr   r   r   Ú
<listcomp>)   s    z&DtypeEnum.__repr__.<locals>.<listcomp>)Ú	__class__r
   Ú_name_Újoinr!   )Úselfr   r   r   Ú__repr__%   s
   ýzDtypeEnum.__repr__N)r
   r   r   Útorchr   r   r   r   r   r   r   r   r.   r   r   r   r   r      s    	r   é   é   é   r   Ú
ELEM_SIZESc                   @   s0   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )ÚActivationTypez8
    Types of activations supported by DS-Inference
    r   r   r0   é   r1   é   é   éÿÿÿÿN)r
   r   r   Ú__doc__ÚGELUÚRELUÚSILUÚGEGLUÚReGLUÚSiGLUÚIDENTITYÚInvalidTyper   r   r   r   r4   ;   s    r4   Úact_fnÚreturnc                 C   s&   t | tƒs	t| ƒ} | tjtjtjfv S )z@
    Return True if the given activation function is gated.
    )Ú
isinstancer4   r=   r>   r?   )rB   r   r   r   Úis_gatedQ   s   
rE   Údtypec                 C   s(   zt |  W S  ty   td | ¡ƒ‚w )z2
    Return size in bytes of the given dtype.
    zUnknown dtype size for {})r3   ÚKeyErrorÚ
ValueErrorÚformat)rF   r   r   r   Ú	elem_size[   s
   
ÿrJ   ÚaÚbc                 C   s   |  |  S )z
    Return ceil(a / b).
    r   )rK   rL   r   r   r   Úceil_dive   s   rM   )Útypingr   r/   Úenumr   r   r   r   r   r   r   Úfloat64r   Úuint8Úint16Úint32Úint64Úboolr3   rF   Úintr   r4   rE   rJ   rM   r   r   r   r   Ú<module>   s(   ö

