
    .`i
                         d dl mZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
  e
            Ze G d d                      Z G d d	          Ze G d
 d                      ZdS )    )	dataclassN)PoolingParams)PoolingTask)is_pin_memory_availablec                       e Zd ZU ee         ed<   ej        ed<   ej        ed<   ej        ed<   ej        ed<   ej        ed<   defdZ	d	 Z
d
 ZdS )PoolingCursorindexfirst_token_indices_gpulast_token_indices_gpuprompt_lens_cpuseq_lens_cpunum_scheduled_tokens_cpuindicesc           	          t          | j        |         | j        |         | j        |         | j        |         | j        |         | j        |                   S )Nr	   r
   r   r   r   r   )r   r	   r
   r   r   r   r   selfr   s     i/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/v1/pool/metadata.py__getitem__zPoolingCursor.__getitem__   sZ    *W%$($@$I#'#>w#G 09*73%)%B7%K
 
 
 	
    c                 H    t          j        | j        | j        k               S N)torchallr   r   r   s    r   is_partial_prefillz PoolingCursor.is_partial_prefill"   s     9T1T5RRSSSSr   c                 "    | j         | j        k    S r   )r   r   r   s    r   is_finishedzPoolingCursor.is_finished%   s    #t'888r   N)__name__
__module____qualname__listint__annotations__r   Tensorslicer   r   r    r   r   r   r      s         9"\)))!L(((\!!!,#l***
5 
 
 
 
T T T9 9 9 9 9r   r   c                       e Zd Zd Zd ZdS )PoolingStatesc                     g | _         d S r   )hidden_states_cacher   s    r   __init__zPoolingStates.__init__*   s    79   r   c                 8    | j                                          d S r   )r+   clearr   s    r   cleanzPoolingStates.clean.   s     &&(((((r   N)r   r    r!   r,   r/   r'   r   r   r)   r)   )   s2        : : :) ) ) ) )r   r)   c                       e Zd ZU dZej        ed<   ej        dz  ed<   ee         ed<   ee	         ed<   dZ
edz  ed<   dd	Zd
efdZdeej                 fdZdefdZdej        dej        dej        fdZdS )PoolingMetadatazTensors for pooling.prompt_lensNprompt_token_idspooling_paramspooling_statespooling_cursorreturnc                     | j         }fd|D             }t          |          t          |          k    sJ || _        d S )Nc                 &    g | ]}|j         xS r   )task).0pooling_paramr:   s     r   
<listcomp>z1PoolingMetadata.__post_init__.<locals>.<listcomp>?   s1     $
 $
 $
%**7 777r   )r4   lentasks)r   r4   r?   r:   s      @r   __post_init__zPoolingMetadata.__post_init__<   s_    ,$
 $
 $
 $
!/$
 $
 $

 >""c%jj0000


r   r   c                     t          | j        |         | j        d n| j        |         | j        |         | j        |         | j        d n| j        |                   S )N)r2   r3   r4   r5   r6   )r1   r2   r3   r4   r5   r6   r   s     r   r   zPoolingMetadata.__getitem__H   sp    (1$, "T&w/.w7.w7"*  4$W-

 

 

 
	
r   c                 j    | j         
J d            fdt          | j                  D             S )Nz=Please set `requires_token_ids=True` in `get_pooling_updates`c                 .    g | ]\  }}|d |f         S r   r'   )r;   inumr3   s      r   r=   z8PoolingMetadata.get_prompt_token_ids.<locals>.<listcomp>[   s+    TTTfa DSD)TTTr   )r3   	enumerater2   )r   r3   s    @r   get_prompt_token_idsz$PoolingMetadata.get_prompt_token_idsU   sK    0++K ,++ UTTT	$BR8S8STTTTr   c                 ,    | j         }|
J d            |S )Nz(Should call `build_pooling_cursor` first)r6   )r   r6   s     r   get_pooling_cursorz"PoolingMetadata.get_pooling_cursor]   s%    ,))+U)))r   num_scheduled_tokens_npr   devicec                    t          |          }| j        }t          |          |k    sJ t          t          |                    }t	          j        |          }t	          j        |dz   t          j        t          d          }t	          j	        |d|dd                     |
                    |d          }t          ||d |         |dd          dz
  |||          | _        d S )	N   cpu)dtype
pin_memoryrK   r   )dimoutT)non_blockingr   )r>   r2   r"   ranger   
from_numpyzerosint64rP   cumsumtor   r6   )	r   rJ   r   rK   n_seqr2   r	   r   rX   s	            r   build_pooling_cursorz$PoolingMetadata.build_pooling_cursorc   s     +,,&;5((((U5\\""#(#34K#L#L AIU[Z
 
 
 	-1&*EEEE655+$*6E6N#)!"":>'%%=
 
 
r   )r7   N)r   r    r!   __doc__r   r%   r$   r"   r   r)   r6   r   r@   r&   r   rG   rI   npndarrayrK   r[   r'   r   r   r1   r1   2   s        lT))))''''''''+/NMD(///
 
 
 

5 
 
 
 
Ud5<&8 U U U UM    
!#
 l
 	
 
 
 
 
 
r   r1   )dataclassesr   numpyr]   r   vllm.pooling_paramsr   
vllm.tasksr   vllm.utils.platform_utilsr   rP   r   r)   r1   r'   r   r   <module>rd      s   " ! ! ! ! !      - - - - - - " " " " " " = = = = = =$$&&
 9 9 9 9 9 9 9 92) ) ) ) ) ) ) ) I
 I
 I
 I
 I
 I
 I
 I
 I
 I
r   