o
    .i                     @   s  d dl Z 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
Zd dlZd dlmZ er7d dlmZ neZejZejejejejejdZdddd	d	dZejejejejejdZejejejejejdZg d
Ze	d Ze	d
 Ze	d Z dej!de"fddZ#dej!dedede$fddZ%de$de&e'df dededej!f
ddZ(dede dedede)e* e"B e$B f
ddZ+eG dd dZ,dedede&e'df d e'fd!d"Z-d#e)e dedefd$d%Z.d&e)e, d'e$de)ej! fd(d)Z/dS )*    N)	dataclass)TYPE_CHECKINGAnyLiteral)assert_never)PoolingRequestOutput)float32float16bfloat16fp8_e4m3fp8_e5m2         )nativebiglittle)floatbase64bytes
bytes_onlyxreturnc                 C   sV   t  }t| | |d | }W d    n1 sw   Y  t|dS )Nr   utf-8)	ioBytesIOtorchsaveseekreadr   	b64encodedecode)r   bufbinary_data r$   T/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/vllm/utils/serial_utils.pytensor2base64D   s   


r&   tensorembed_dtype
endiannessc                 C   st   t | tjsJ |tv sJ |tv sJ t| }t| }| |  	|
 }|dkr6|tkr6| }| S )Nr   )
isinstancer   TensorEMBED_DTYPE_TO_TORCH_DTYPE
ENDIANNESSEMBED_DTYPE_TO_TORCH_DTYPE_VIEWtoflatten
contiguousviewnumpysys_byteorderbyteswaptobytes)r'   r(   r)   torch_dtypetorch_view_dtypenp_arrayr$   r$   r%   tensor2binaryM   s   r:   binaryshape.c                 C   sp   |t v sJ |tv sJ |tv sJ t | }t| }tj| |d|}|dkr0|tkr0| }t	|
|S )N)dtyper   )r,   EMBED_DTYPE_TO_NUMPY_DTYPE_VIEWr-   np
frombufferreshaper4   r5   r   
from_numpyr2   )r;   r<   r(   r)   r7   np_dtyper9   r$   r$   r%   binary2tensora   s   rD   outputencoding_formatc                 C   sh   |dkr
| j j S |dkrt| j j||}t|dS |dks&|dkr.t| j j||S t| d S )Nr   r   r   r   r   )outputsdatatolistr:   r   r    r!   r   )rE   rF   r(   r)   embedding_bytesr$   r$   r%   encode_pooling_outputv   s   rK   c                   @   sF   e Zd ZU eed< eed< eed< eed< eed< eedf ed< dS )	MetadataItemindexr(   r)   startend.r<   N)__name__
__module____qualname__int__annotations__
EmbedDType
Endiannesstupler$   r$   r$   r%   rL      s   
 rL   	n_requestc                    s4   t   t fddt|D }|S )Nc              
      s4   g | ]}t | |  |d    dqS )r   rM   r(   r)   rN   rO   r<   )rL   ).0ir(   r)   n_bytesr<   sizer$   r%   
<listcomp>   s    	
z(build_metadata_items.<locals>.<listcomp>)EMBED_DTYPE_TO_N_BYTESmathprodrange)r(   r)   r<   rX   itemsr$   r\   r%   build_metadata_items   s   
	re   pooling_outputsc                 C   s   d}g }g }d}t | D ]6\}}t|jj||d}	t|	}
||||||
 |jjjd}||	 || |j}|t|7 }||
7 }q||d}|||fS )Nr   )r'   r(   r)   rY   )prompt_tokenstotal_tokens)	enumerater:   rG   rH   lenr<   appendprompt_token_ids)rf   r(   r)   num_prompt_tokensrd   bodyoffsetidxrE   r;   r^   itemrl   usager$   r$   r%   encode_pooling_bytes   s6   
	


rs   rd   rn   c                 C   sP   | j dd d g }| D ]}||j|j }t||j|j|j}|| q|S )Nc                 S   s   | j S )N)rM   )r   r$   r$   r%   <lambda>   s    z'decode_pooling_output.<locals>.<lambda>)key)sortrN   rO   rD   r<   r(   r)   rk   )rd   rn   tensor_listrq   r;   r'   r$   r$   r%   decode_pooling_output   s   rx   )0r   r   ra   sysdataclassesr   typingr   r   r   r3   r?   r   typing_extensionsr   vllmr   	byteorderr4   r   r	   r
   float8_e4m3fnfloat8_e5m2r,   r`   uint8r.   r>   r-   rU   rV   EncodingFormatr+   strr&   r   r:   rW   rS   rD   listr   rK   rL   re   rs   rx   r$   r$   r$   r%   <module>   s   

		



	


$'