
    .`iS                         d dl mZmZ d dlmZ d dlZd dlmZ d dlm	Z	 d dl
mZ d dlmZ dd	lmZmZ dd
lmZ ddlmZmZmZmZ ddlmZmZmZ  G d de          Z G d de          Z G d de          Zg dZdS )    )MappingSet)groupbyN)PoolerConfigPoolingParamsUpdate)PoolingTask)PoolingMetadata   )PoolerPoolerOutput)ClassifierFn)SequencePoolingFnSequencePoolingMethodpooler_for_classifypooler_for_embed)AllPoolpooler_for_token_classifypooler_for_token_embedc            	            e Zd ZdZedefd            Zeddddedeez  dz  de	dz  fd            Z
d	eeef         d
df fdZd
ee         fdZded
efdZdej        ded
efdZd
efdZ xZS )DispatchPoolerz;Dispatches calls to a sub-pooler based on the pooling task.pooler_configc                 R     | t          |          t          |          d          S )N)token_embedembed)r   r   )clsr   s     }/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/model_executor/layers/pooler/special.pyfor_embeddingzDispatchPooler.for_embedding   s6    s5mDD)-88 
 
 	
    Npooling
classifierr!   r"   c          
           | t          |t                      |          t          |||d          t          |||d          d          S )Nr    classify)r!   r"   act_fnscore)token_classifyr$   r&   )r   r   r   )r   r   r!   r"   s       r   for_seq_clszDispatchPooler.for_seq_cls$   s     s";!#II)# # #
 0!#)%	   -!#)"	   
 
 	
r   poolers_by_taskreturnc           
      
   t                                                       |                                D ]E\  }}||                                vr*t	          d|d|d|                                           F|| _        d S )Nzpooler=z does not support task=z. Supported tasks: )super__init__itemsget_supported_tasks
ValueErrorr)   )selfr)   taskpooler	__class__s       r   r-   zDispatchPooler.__init__B   s    +1133 	 	LD&6557777 Gv G G$ G G(.(B(B(D(DG G   8  /r   c                 *    t          | j                  S N)setr)   r1   s    r   r/   z"DispatchPooler.get_supported_tasksN   s    4'(((r   r2   c                 B    | j         |                             |          S r6   )r)   get_pooling_updatesr1   r2   s     r   r:   z"DispatchPooler.get_pooling_updatesQ   s    #D)==dCCCr   hidden_statespooling_metadatac                    | j         }t          t          j        d z                       }d}t	          |j                  D ]\  }}|                    |          x}s't          d|d|                                            t          t          |                    }	 ||||||	z                      }
|
                    |
           ||	z  }|S )Nr   zUnsupported task: z Supported tasks: )r)   listtorchTensorr   tasksgetr0   r/   lenextend)r1   r<   r=   r)   outputsoffsetr2   groupr3   	num_itemsgroup_outputs              r   forwardzDispatchPooler.forwardT   s   
 .u|d*+--"#3#9:: 	  	 KD%-11$777F  E E E(,(@(@(B(BE E  
 DKK((I)/ &9*<!<=* *L
 NN<(((iFFr   c                 4    d|                                   }|S )Nzsupported_task=)r/   )r1   ss     r   
extra_reprzDispatchPooler.extra_repro   s     :d6688::r   )__name__
__module____qualname____doc__classmethodr   r   r   r   r   r(   r   r	   r   r-   r   r/   r   r:   r@   rA   r
   r   rK   strrN   __classcell__r4   s   @r   r   r      sv       EE
, 
 
 
 [
 
 EI*.
 
 
#
 ')::TA	

 !4'
 
 
 [
:
/V0C(D 
/ 
/ 
/ 
/ 
/ 
/ 
/)S%5 ) ) ) )D D8K D D D D| * 
	   6C        r   r   c                   D    e Zd Zdee         fdZdej        dede	fdZ
dS )IdentityPoolerr*   c                 
    ddhS )Npluginr&    r8   s    r   r/   z"IdentityPooler.get_supported_tasksu   s    '""r   r<   r=   c                     |S r6   r[   )r1   r<   r=   s      r   rK   zIdentityPooler.forwardx   s
    
 r   N)rO   rP   rQ   r   r	   r/   r@   rA   r
   r   rK   r[   r   r   rX   rX   t   sf        #S%5 # # # #| * 
	     r   rX   c            	            e Zd ZdZ	 	 ddedededdf fdZdee         fd	Z	d
ede
fdZdej        eej                 z  dedefdZ xZS )BOSEOSFilterz3Filters the BOS and EOS token results from outputs.r3   bos_token_ideos_token_idr*   Nc                 r    t                                                       || _        || _        || _        d S r6   )r,   r-   r3   r`   ra   )r1   r3   r`   ra   r4   s       r   r-   zBOSEOSFilter.__init__   s8     	((r   c                 4    | j                                         S r6   )r3   r/   r8   s    r   r/   z BOSEOSFilter.get_supported_tasks   s    {..000r   r2   c                 "    t          d          S )NT)requires_token_idsr   r;   s     r   r:   z BOSEOSFilter.get_pooling_updates   s    "d;;;;r   r<   r=   c                    |                      ||          }t          |t                    sJ t          |j                  D ]\  }}||         }t          |t
          j                  r|j        d         |k    sJ |j        |d |f         }|d         | j	        k    r
|dd          }|d         | j
        k    r
|d d         }|                                ||<   |S )Nr   r   r_   )r3   
isinstancer?   	enumerateprompt_lensr@   rA   shapeprompt_token_idsr`   ra   squeeze)r1   r<   r=   pooled_outputsi
prompt_lenpooled_data	token_idss           r   rK   zBOSEOSFilter.forward   s    
 ]4DEE.$/////&'7'CDD 	6 	6MAz(+K;55%a(J6667 )9![j[.II|t000)!""o} 111)#2#. + 3 3 5 5N1r   )r_   r_   )rO   rP   rQ   rR   r   intr-   r   r	   r/   r   r:   r@   rA   r?   r
   r   rK   rU   rV   s   @r   r^   r^      s        ==
 	
) 
)
) 
) 	
)
 

) 
) 
) 
) 
) 
)1S%5 1 1 1 1< <8K < < < <|d5<&88 * 
	       r   r^   )r^   r   rX   ) collections.abcr   r   	itertoolsr   r@   vllm.configr   !vllm.model_executor.layers.poolerr   
vllm.tasksr	   vllm.v1.pool.metadatar
   abstractr   r   commonr   seqwiser   r   r   r   tokwiser   r   r   r   rX   r^   __all__r[   r   r   <module>r~      s   ) ( ( ( ( ( ( (        $ $ $ $ $ $ A A A A A A " " " " " " 1 1 1 1 1 1 * * * * * * * *                        P O O O O O O O O OY Y Y Y YV Y Y Yx	 	 	 	 	V 	 	 	* * * * *6 * * *Z ?
>
>r   