
    .`i                        d dl mZmZ d dlmZ d dlmZ d dlZd dlm	Z	 d dl
m	c mZ d dlmZ d dlmZmZ d dlmZ d dlmZ  ee          Zd	ed
dfdZd	ed
dfdZ	 	 d dededdfdZ edej        eej                           Z G d de	j        e          Z  G d de           Z! G d de           Z" G d de           Z# G d de           Z$ G d de           Z%dS )!    )ABCabstractmethod)Callable)TypeVarN)PretrainedConfig)ModelConfigget_current_vllm_config)init_logger)resolve_obj_by_qualnameconfigreturnPoolerActivationc                     t          | dd          }|dk    rt                      S |dk    rt                      S |dk    rt                      S t                      S )Nproblem_type 
regressionsingle_label_classificationmulti_label_classification)getattrPoolerIdentityPoolerClassifyPoolerMultiLabelClassify)r   r   s     /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/model_executor/layers/pooler/activations.pyget_classification_act_fnr      sh    
 6>266L|##444333')))    c                 P   d }t          | d          rd| j        v r| j        d         }nt          | d          r| j        | j        }|P|                    d          s
J d             t	          |                      }t
                              |          S t                      S )Nsentence_transformersactivation_fn$sbert_ce_default_activation_functionztorch.nn.modules.zVLoading of activation functions is restricted to torch.nn.modules for security reasons)hasattrr   r   
startswithr   r   wrapsr   )r   function_namefns      r   get_cross_encoder_act_fnr%   #   s     !%M/00	Dv;;;4_E>??D7CC ''(;<< 	
 	
4	
 	
< 4$]3355%%b)))r   Tmodel_configstatic_num_labelsact_fnzPoolerActivation | str | Nonec                    t          |t                    rG|dk    rt          | j                  S |dk    rt	          | j                  S t          d|d          |t          |          S t          |          sJ |S )Nclassifyscorezact_fn [act_fn=z] not supported.r'   )
isinstancestrr   	hf_configr%   
ValueErrorr   callable)r&   r'   r(   s      r   resolve_classifier_act_fnr2   =   s    
 &# ?Z,\-CDDDW+L,BCCC=F===>>>~0ABBBBFMr   _Tc                   x    e Zd Zedej        fd            Zedej	        dej	        fd            Z
dedefdZdS )r   modulec                     t          | t          j                  rt                      S t          | t          j        t          j        f          rt                      S t          |           S N)r-   nnIdentityr   SigmoidSoftmaxr   LambdaPoolerActivation)r5   s    r   r"   zPoolerActivation.wrapsU   sW    fbk** 	$!###frz2:677 	$!###%f---r   pooled_datar   c                     t           r7   )NotImplementedErrorselfr=   s     r   forward_chunkzPoolerActivation.forward_chunk^   s    !!r   c                 t     t          |t                    r fd|D             S                      |          S )Nc                 :    g | ]}                     |          S  )rB   ).0datarA   s     r   
<listcomp>z,PoolerActivation.forward.<locals>.<listcomp>h   s'    EEED&&t,,EEEr   )r-   listrB   r@   s   ` r   forwardzPoolerActivation.forwardb   sF    
 k4(( 	FEEEEEEEE!!+...r   N)__name__
__module____qualname__staticmethodr8   Moduler"   r   torchTensorrB   r3   rJ   rE   r   r   r   r   T   s        .bi . . . \. " "%, " " " ^"/2 /" / / / / / /r   c                   2    e Zd Zdej        dej        fdZdS )r   r=   r   c                     |S r7   rE   r@   s     r   rB   zPoolerIdentity.forward_chunkn   s    r   NrK   rL   rM   rP   rQ   rB   rE   r   r   r   r   m   s:         %,      r   r   c                   2    e Zd Zdej        dej        fdZdS )PoolerNormalizer=   r   c                 0    t          j        |dd          S )N   )pdim)F	normalizer@   s     r   rB   zPoolerNormalize.forward_chunks   s    {;!4444r   NrT   rE   r   r   rV   rV   r   s:        5 5%, 5 5 5 5 5 5r   rV   c                   2    e Zd Zdej        dej        fdZdS )r   r=   r   c                 *    t          j        |          S r7   )r\   sigmoidr@   s     r   rB   z&PoolerMultiLabelClassify.forward_chunkx   s    y%%%r   NrT   rE   r   r   r   r   w   s:        & &%, & & & & & &r   r   c                   R     e Zd Zdddeddf fdZdej        dej        fdZ xZS )	r   Tr,   r'   r   Nc                    t                                                       |r,t                      }|j        }t	          |j        dd          }nd }|dk    rt                              d           || _        d S )N
num_labelsr   zznum_labels should be > 0 for classification models, falling back to softmax. Please check if the configuration is correct.)	super__init__r	   r&   r   r/   loggerwarningrc   )rA   r'   vllm_configr&   rc   	__class__s        r   re   zPoolerClassify.__init__}   s     	133K&3L !7qIIJJJ??NN@   %r   r=   c                     | j         }||j        d         }|dk     rt          j        |          S t          j        |d          S )NrY   rX   )r[   )rc   shaper\   r`   softmax)rA   r=   rc   s      r   rB   zPoolerClassify.forward_chunk   sJ    _
$*2.J>>9[)))y"----r   )	rK   rL   rM   boolre   rP   rQ   rB   __classcell__ri   s   @r   r   r   |   s~        48 % % %T %T % % % % % %&. .%, . . . . . . . .r   r   c                   n     e Zd Zdeej        gej        f         f fdZdej        dej        fdZ xZS )r<   r$   c                 V    t                                                       || _        d S r7   )rd   re   r$   )rA   r$   ri   s     r   re   zLambdaPoolerActivation.__init__   s$    r   r=   r   c                 ,    |                      |          S r7   )r$   r@   s     r   rB   z$LambdaPoolerActivation.forward_chunk   s    ww{###r   )	rK   rL   rM   r   rP   rQ   re   rB   rn   ro   s   @r   r<   r<      sz        8U\NEL$@A      
$ $%, $ $ $ $ $ $ $ $r   r<   )TN)&abcr   r   collections.abcr   typingr   rP   torch.nnr8   torch.nn.functional
functionalr\   transformersr   vllm.configr   r	   vllm.loggerr
   vllm.utils.import_utilsr   rK   rf   r   r%   rm   r2   rQ   rI   r3   rO   r   r   rV   r   r   r<   rE   r   r   <module>r}      s   $ # # # # # # # $ $ $ $ $ $                       ) ) ) ) ) ) < < < < < < < < # # # # # # ; ; ; ; ; ;	X		       8 #.2  ,   ( WT5<el!344/ / / / /ry# / / /2    %   
5 5 5 5 5& 5 5 5
& & & & &/ & & &
. . . . .% . . .>$ $ $ $ $- $ $ $ $ $r   