
    .`i"                     ,   d dl mZmZmZmZmZmZmZ d dlZd dl	m
Z
 d dlmZmZ d dlmZ d dlmZ erd dlmZ d dlmZ d dlmZmZ d d	lmZ n
eZeZeZeZeZ ee          Z ed
ej                  Z edej        d          Ze G d dee                               Z de!e"         e"z  de#fdZ$de!e"         e"z  de#fdZ%de!e"         e"z  de#fdZ&ede!e"         dee!e                   fd            Z'ede"dee          fd            Z'de!e"         e"z  dee!e                   ee          z  fdZ'e G d de e         ee                               Z(ede!e"         dee!e(                  fd            Z)ede"dee(         fd            Z)de!e"         e"z  dee!e(                  ee(         z  fdZ)e G d de e         ee                               Z*ede!e"         dee!e*                  fd             Z+ede"dee*         fd!            Z+de!e"         e"z  dee!e*                  ee*         z  fd"Z+ ed#e!e
j,                 $          Z-d%d&d'd(ed)efd*Z.de!e"         e"z  defd+Z/de!e"         e"z  defd,Z0d-efd.Z1de!e"         e"z  defd/Z2dS )0    )TYPE_CHECKINGAnyClassVarLiteralProtocoloverloadruntime_checkableN)TypeIsTypeVar)init_loggersupports_kw)
VllmConfig)AttnTypeStr)SequencePoolingTypeTokenPoolingType)PoolerT)defaultT_coT)r   	covariantc                   t    e Zd ZdZddededdfdZdej        dej        fd	Z	dej        d
ej        de
fdZdS )	VllmModelz.The interface required for all models in vLLM. vllm_configprefixreturnNc                     d S N )selfr   r   s      ~/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/model_executor/models/interfaces_base.py__init__zVllmModel.__init__1             	input_idsc                     dS )z&Apply token embeddings to `input_ids`.Nr    )r!   r&   s     r"   embed_input_idszVllmModel.embed_input_ids3   s    r%   	positionsc                     d S r   r    )r!   r&   r)   s      r"   forwardzVllmModel.forward7   r$   r%   )r   )__name__
__module____qualname____doc__r   strr#   torchTensorr(   r   r+   r    r%   r"   r   r   -   s|        88NNJNNTNNNN %,     UT%,T4TTTTTTr%   r   modelr   c                 0    | j         }t          |d          S )Nr   )r#   r   )r3   
model_inits     r"   _check_vllm_model_initr6   :   s    Jz=111r%   c                     t          | dd           }t          |          st                              d|            dS dS )Nr(   z7The model (%s) is missing the `embed_input_ids` method.FT)getattrcallableloggerwarning)r3   model_embed_input_idss     r"   !_check_vllm_model_embed_input_idsr=   ?   sN    #E+<dCC)** E	
 	
 	
 u4r%   c                 B   t          | dd           t                    sdS d}t          fd|D                       }|rKt          | t                    r6t          | t          j                  rt          	                    d| |           t          |          dk    S )Nr+   F)r&   r)   c              3   <   K   | ]}t          |          |V  d S r   r   ).0kwmodel_forwards     r"   	<genexpr>z,_check_vllm_model_forward.<locals>.<genexpr>Q   s3      TTr[PR5S5STTTTTTTr%   zNThe model (%s) is missing vLLM-specific keywords from its `forward` method: %sr   )r8   r9   tuple
isinstancetype
issubclassnnModuler:   r;   len)r3   vllm_kwsmissing_kwsrB   s      @r"   _check_vllm_model_forwardrM   K   s    E9d33MM"" u)HTTTTXTTTTTK 

5$// 
Jubi4P4P 
C		
 	
 	
 {q  r%   c                     d S r   r    r3   s    r"   is_vllm_modelrP   ^   s    CF3r%   c                     d S r   r    rO   s    r"   rP   rP   b   s    7:sr%   c                 \    t          |           ot          |           ot          |           S r   )r6   r=   rM   rO   s    r"   rP   rP   f   s4     	u%% 	--e44	-%e,,r%   c                   (    e Zd ZdZdededz  fdZdS )VllmModelForTextGenerationz9The interface required for all generative models in vLLM.hidden_statesr   Nc                     dS )zReturn `None` if TP rank > 0.Nr    )r!   rU   s     r"   compute_logitsz)VllmModelForTextGeneration.compute_logitst   s	    
 	r%   )r,   r-   r.   r/   r   rW   r    r%   r"   rT   rT   p   sD        CC 
T     r%   rT   c                     d S r   r    rO   s    r"   is_text_generation_modelrY   |   s	     03sr%   c                     d S r   r    rO   s    r"   rY   rY      s    SVSVr%   c                     t          |           sdS t          | t                    rt          | t                    S t          | t                    S )NF)rP   rE   rF   rT   rO   s    r"   rY   rY      sM      u% =%!;<<<e7888r%   c                       e Zd ZU dZdZeed                  ed<   	 dZee	         ed<   	 dZ
ee         ed<   	 dZee         ed	<   	 eed
<   dS )VllmModelForPoolingz6The interface required for all pooling models in vLLM.Tis_pooling_modelLASTdefault_seq_pooling_typeALLdefault_tok_pooling_typedecoder	attn_typepoolerN)r,   r-   r.   r/   r^   r   r   __annotations__r`   r   rb   r   rd   r   r   r    r%   r"   r]   r]      s         @@04hwt}-444 ?Eh':;DDD <Ah'78@@@ (1Ix$000 NNN11r%   r]   c                     d S r   r    rO   s    r"   r^   r^      s    PSPSr%   c                     d S r   r    rO   s    r"   r^   r^      s    DGCr%   c                 F    t          |           sdS t          | dd          S )NFr^   )rP   r8   rO   s    r"   r^   r^      s,      u5,e444r%   _T)boundr_   ra   )seq_pooling_typetok_pooling_typerl   rm   c                 4     dt           dt           f fd}|S )z>Decorator to set `VllmModelForPooling.default_*_pooling_type`.r3   r   c                 $    | _         | _        | S r   )r`   rb   )r3   rl   rm   s    r"   funcz"default_pooling_type.<locals>.func   s    )9&)9&r%   rj   )rl   rm   rp   s   `` r"   default_pooling_typerr      s<    B 2       
 Kr%   c                 $    t          | dd          S )Nr`   r_   r8   rO   s    r"   get_default_seq_pooling_typeru      s     54f===r%   c                 $    t          | dd          S )Nrb   ra   rt   rO   s    r"   get_default_tok_pooling_typerw      s     54e<<<r%   rd   c                 0     dt           dt           f fd}|S )z1Decorator to set `VllmModelForPooling.attn_type`.r3   r   c                     | _         | S r   )rd   )r3   rd   s    r"   rp   zattn_type.<locals>.func   s    #r%   rq   )rd   rp   s   ` r"   rd   rd      s6    B 2       Kr%   c                 $    t          | dd          S )Nrd   rc   rt   rO   s    r"   get_attn_typer{      s    5+y111r%   )3typingr   r   r   r   r   r   r	   r1   torch.nnrH   typing_extensionsr
   r   vllm.loggerr   vllm.utils.func_utilsr   vllm.configr   vllm.config.modelr   vllm.config.poolerr   r   !vllm.model_executor.layers.poolerr   r,   r:   r2   r   r   r   rF   objectboolr6   r=   rM   rP   rT   rY   r]   r^   rI   rj   rr   ru   rw   rd   r{   r    r%   r"   <module>r      s                           - - - - - - - - # # # # # # - - - - - - 
&&&&&&------HHHHHHHH8888888JFK	X		
 GC&&&wvu|t<<< 	U 	U 	U 	U 	U 	U 	U 	U2$v,"7 2D 2 2 2 2
	T&\F-B 	t 	 	 	 	!T&\F%: !t ! ! ! !& 
 Ff F&i*A F F F 
 F 
 : :F9$5 : : : 
 :<& DOvi00        1x{    
3<3D+,-3 3 3 
3
 
 VF Vv6P/Q V V V 
 V	9<& 	9D+,-7Q0RR	9 	9 	9 	9 ,2 ,2 ,2 ,2 ,2)D/8D> ,2 ,2 ,2^ 
 SDL SVD9L4M-N S S S 
 S 
 GF Gv.A'B G G G 
 G5<& 5D$%&0C)DD5 5 5 5 WTbi)))
 -3).  ) '   ><& >> > > >=<& == = = =    2f. 2; 2 2 2 2 2 2r%   