
    .`ix                        d dl mZ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
mZmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZmZ d dlmZ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% 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/ ddl0m1Z1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9  G d dej:                  Z; G d de           Z< G d dej:                  Z= G d dej:                  Z> G d  d!ej:                  Z? G d" d#ej:                  Z@ G d$ d%ej:                  ZA G d& d'ej:                  ZB G d( d)ej:                  ZCe e5d*+           G d, d-ej:        e2                                  ZD G d. d/eD          ZE e5d*+           G d0 d1ej:        e2                      ZFd2ZGd3ejH        d4ejH        d5dfd6ZId3ejH        d5ejH        fd7ZJ G d8 d9ej:                  ZK G d: d;e          ZL e5d*+           G d< d=eF                      ZM e5d*+           G d> d?ej:        e1e2                      ZN e4d@           e5dAB           G dC dDej:                                          ZOdS )E    )IterableSetN)nn)
BertConfig)support_torch_compile)CacheConfigModelConfigPoolerConfig
VllmConfig)$get_tensor_model_parallel_world_size)
get_act_fn)EncoderOnlyAttention)ColumnParallelLinearQKVParallelLinearRowParallelLinear)DispatchPoolerPoolerPoolingParamsUpdate)LambdaPoolerActivation)EmbeddingPoolerHeadSequencePoolerSequencePoolerOutputget_seq_pooling_method)pooler_for_token_classifypooler_for_token_embed)QuantizationConfig)VocabParallelEmbedding)IntermediateTensors)PoolingTask)PoolingMetadata   )SupportsCrossEncodingSupportsQuant)	attn_typedefault_pooling_type)AutoWeightsLoaderWeightsMappermaybe_prefixc            	       n     e Zd Zdef fdZ	 d	dej        dej        dej        dz  dej        fdZ xZS )
BertEmbeddingconfigc                 D   t                                                       |j        | _        t	          |j        |j                  | _        t	          |j        |j                  | _        t	          |j	        |j                  | _
        t          j        |j        |j                  | _        |                     dt          j        |j                                      d                     t%          |dd          | _        | j        dk    rt)          d          d S )Nepsposition_idsr   position_embedding_typeabsolutez4Only 'absolute' position_embedding_type is supported)super__init__hidden_sizesizer   
vocab_sizeword_embeddingsmax_position_embeddingsposition_embeddingstype_vocab_sizetoken_type_embeddingsr   	LayerNormlayer_norm_epsregister_buffertorcharange	unsqueezegetattrr0   
ValueError)selfr+   	__class__s     s/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/model_executor/models/bert.pyr3   zBertEmbedding.__init__2   s   &	5v1 
  
 $:*F,>$
 $
  &<"F$6&
 &
" f&8f>STTTL788BB1EE	
 	
 	
 (/-z(
 (
$ ':55K   65    N	input_idsr/   inputs_embedsreturnc                     t          |          }||                     |          }|                     |          }|                     |          }||z   |z   }|                     |          }|S N)_decode_token_type_idsr7   r9   r;   r<   )rD   rH   r/   rI   token_type_idsr9   r;   
embeddingss           rF   forwardzBertEmbedding.forwardL   sz     0	::  00;;M"66|DD $ : :> J J"%::=PP
^^J//
rG   rL   )	__name__
__module____qualname__r   r3   r?   TensorrP   __classcell__rE   s   @rF   r*   r*   1   s        z      < .2	 < l |d*	
 
       rG   r*   c                   $     e Zd Zdef fdZ xZS )
BertPoolermodel_configc                     |j         }|J |j        }t                                          t	          |j                  t          j                               |j        }t          j	        |j
        |j
        |           _        t          j                     _        t          | fdt           j                             _        d S )N)poolingheaddtypec                 .                         |           S rL   )dense)xrD   s    rF   <lambda>z%BertPooler.__init__.<locals>.<lambda>x   s    

1 rG   )
head_dtype	projector
activation)pooler_config	hf_configr2   r3   r   seq_pooling_typer   Identityrc   Linearr4   r`   Tanhact_fnr   r   r\   )rD   rY   rf   r+   rc   rE   s   `    rF   r3   zBertPooler.__init__a   s    $2((()3*=+IJJ 	 	
 	
 	
 ",
Y
 
 


 gii (!-----dk::
 
 
			rG   )rQ   rR   rS   r	   r3   rU   rV   s   @rF   rX   rX   `   sD        
[ 
 
 
 
 
 
 
 
 
 
rG   rX   c                   N     e Zd Zddedef fdZdej        dej        fdZ xZ	S )	BertEncoder vllm_configprefixc                     t                                                       |j        j        |j        |j        t          j        fdt          j	                  D                       | _
        d S )Nc           
      @    g | ]}t           d |           S )z.layer.)r+   cache_configquant_configrq   )	BertLayer).0	layer_idxrt   r+   rq   ru   s     rF   
<listcomp>z(BertEncoder.__init__.<locals>.<listcomp>   sT         !!-!-$88Y88	    rG   )r2   r3   rY   rg   rt   ru   r   
ModuleListrangenum_hidden_layerslayer)rD   rp   rq   rt   r+   ru   rE   s     `@@@rF   r3   zBertEncoder.__init__~   s    )3"/"/]       "'v'?!@!@  

 




rG   hidden_statesrJ   c                 0    | j         D ]} ||          }|S rL   )r}   )rD   r~   r}   s      rF   rP   zBertEncoder.forward   s,     Z 	1 	1E!E-00MMrG   ro   )
rQ   rR   rS   r   strr3   r?   rT   rP   rU   rV   s   @rF   rn   rn   }   sz        
 
J 
 
 
 
 
 
 
"| 
       rG   rn   c            	       Z     e Zd Z	 	 	 d
dededz  dedz  def fdZdej	        fd	Z
 xZS )rv   Nro   r+   rt   ru   rq   c           	      L   t                                                       t          |j        |j        |j        ||| d          | _        t          |j        |j        |j	        || d          | _
        t          |j        |j        |j        || d          | _        d S )Nz
.attention)r4   num_attention_headsr=   rt   ru   rq   z.intermediate)r4   intermediate_size
hidden_actru   rq   .output)r4   r   r=   ru   rq   )r2   r3   BertAttentionr4   r   r=   	attentionBertIntermediater   r   intermediate
BertOutputoutput)rD   r+   rt   ru   rq   rE   s        rF   r3   zBertLayer.__init__   s     	&* & :!0%%(((
 
 
 -*$6(%+++
 
 
 !*$6!0%%%%
 
 
rG   r~   c                     |                      |          }|                     |          }|                     ||          }|S rL   )r   r   r   )rD   r~   attn_outputintermediate_outputr   s        rF   rP   zBertLayer.forward   s@    nn]33"//<<0+>>rG   NNro   )rQ   rR   rS   r   r   r   r   r3   r?   rT   rP   rU   rV   s   @rF   rv   rv      s         ,026 
  
 
 "D( 
 )4/	 

  
  
  
  
  
  
DU\        rG   rv   c                   p     e Zd Z	 	 	 ddededededz  dedz  def fd	Zd
e	j
        de	j
        fdZ xZS )r   Nro   r4   r   r=   rt   ru   rq   c                     t                                                       t          ||||| d          | _        t	          |||| d          | _        d S )Nr   )r4   r   rt   ru   rq   )r4   r=   ru   rq   )r2   r3   BertSelfAttentionrD   BertSelfOutputr   )rD   r4   r   r=   rt   ru   rq   rE   s          rF   r3   zBertAttention.__init__   sz     	%# 3%%%%%
 
 
	 %#)%%%%	
 
 
rG   r~   rJ   c                 X    |                      |          }|                     ||          S rL   )rD   r   )rD   r~   self_outputs      rF   rP   zBertAttention.forward   s)     ii..{{;666rG   r   )rQ   rR   rS   intfloatr   r   r   r3   r?   rT   rP   rU   rV   s   @rF   r   r      s         ,026
 

 !
 	

 "D(
 )4/
 
 
 
 
 
 
47|7 
7 7 7 7 7 7 7 7rG   r   c                   l     e Zd Z	 	 	 ddedededz  dedz  def
 fdZd	ej	        d
ej	        fdZ
 xZS )r   Nro   r4   r   rt   ru   rq   c           
         t                                                       || _        t                      }|| _        | j        |z  dk    sJ | j        |z  | _        | j        | _        | j        | j        z  | _        | j        | j        z  | j        k    sJ t          d| j        |z            | _	        | j        | j        z  | _
        | j	        | j        z  | _        | j        dz  | _        t          | j        | j        | j        | j        d|| d          | _        t          | j        | j        | j        | j	        ||| d          | _        d S )	Nr   r!   g      Tz	.qkv_proj)r4   	head_sizetotal_num_headstotal_num_kv_headsbiasru   rq   z.attn)	num_headsr   scalenum_kv_headsrt   ru   rq   )r2   r3   r4   r   r   r   r   head_dimmaxr   q_sizekv_sizescalingr   qkv_projr   attn)rD   r4   r   rt   ru   rq   tp_sizerE   s          rF   r3   zBertSelfAttention.__init__   sd    	&6882#g-2222-8"&"6(D,@@}t33t7GGGGG4#:g#EFFnt}4(4=8}d*)(m 0#6%'''
 
 
 )nm,*%%###
 
 
			rG   r~   rJ   c                     |                      |          \  }}|                    | j        | j        | j        gd          \  }}}|                     |||          }|S )Ndim)r   splitr   r   r   )rD   r~   qkv_qkvr   s           rF   rP   zBertSelfAttention.forward  s[     }--Q))T[$,E2)NN1a1a##rG   r   )rQ   rR   rS   r   r   r   r   r3   r?   rT   rP   rU   rV   s   @rF   r   r      s        
 ,026+
 +
+
 !+
 "D(	+

 )4/+
 +
 +
 +
 +
 +
 +
Z| 
       rG   r   c            	       n     e Zd Z	 	 ddedededz  def fdZdej	        d	ej	        d
ej	        fdZ
 xZS )r   Nro   r4   r=   ru   rq   c                     t                                                       t          ||d|| d          | _        t	          j        ||          | _        d S NT.dense
input_sizeoutput_sizer   ru   rq   r-   r2   r3   r   r`   r   r<   )rD   r4   r=   ru   rq   rE   s        rF   r3   zBertSelfOutput.__init__  se     	&"#%$$$
 
 

 k~FFFrG   r~   input_tensorrJ   c                 f    |                      |          \  }}|                     ||z             }|S rL   r`   r<   rD   r~   r   r   s       rF   rP   zBertSelfOutput.forward/  6      ::m44q}|'CDDrG   Nro   rQ   rR   rS   r   r   r   r   r3   r?   rT   rP   rU   rV   s   @rF   r   r     s        
 37G GG G )4/	G
 G G G G G G""\9>	       rG   r   c                   d     e Zd Z	 	 ddededededz  def
 fdZd	ej        d
ej        fdZ	 xZ
S )r   Nro   r4   r   r   ru   rq   c                     t                                                       t          ||d|| d          | _        t	          |          | _        d S )NTr   r   )r2   r3   r   r`   r   intermediate_act_fn)rD   r4   r   r   ru   rq   rE   s         rF   r3   zBertIntermediate.__init__8  sa     	)")%$$$
 
 

 $.j#9#9   rG   r~   rJ   c                 `    |                      |          \  }}|                     |          }|S rL   )r`   r   )rD   r~   r   s      rF   rP   zBertIntermediate.forwardJ  s1    ::m44q00??rG   r   )rQ   rR   rS   r   r   r   r3   r?   rT   rP   rU   rV   s   @rF   r   r   7  s         37: :: : 	:
 )4/: : : : : : :$U\ el        rG   r   c                   r     e Zd Z	 	 ddededededz  def
 fdZd	ej	        d
ej	        dej	        fdZ
 xZS )r   Nro   r4   r   r=   ru   rq   c                     t                                                       t          ||d|| d          | _        t	          j        ||          | _        d S r   r   )rD   r4   r   r=   ru   rq   rE   s         rF   r3   zBertOutput.__init__Q  se     	&(#%$$$
 
 

 k~FFFrG   r~   r   rJ   c                 f    |                      |          \  }}|                     ||z             }|S rL   r   r   s       rF   rP   zBertOutput.forwarde  r   rG   r   r   rV   s   @rF   r   r   P  s         37G GG G 	G
 )4/G G G G G G G("\9>	       rG   r   CLS)rh   c                   L    e Zd ZdZdg diZdeddededee	j
                 d	d
f fdZdej        d	ej        fdZ	 	 ddej        dej        ded
z  dej        d
z  d	ej        f
dZdeeeej        f                  fdZdeeeej        f                  d	ee         fdZ xZS )	BertModelTr   )querykeyvaluero   rq   embedding_classrp   rq   r   rJ   Nc                    t                                                       |j        j        | _         || j                  | _        t          || d          | _        d S )Nz.encoderrp   rq   )r2   r3   rY   rg   r+   rO   rn   encoderrD   rp   rq   r   rE   s       rF   r3   zBertModel.__init__t  s\     	!.8)/$+66"{fCVCVCVWWWrG   rH   c                 6    | j                             |          S rL   )rO   r7   rD   rH   s     rF   embed_input_idszBertModel.embed_input_ids  s    ..y999rG   	positionsintermediate_tensorsrI   c                 \    |                      |||          }|                     |          S )N)rH   r/   rI   )rO   r   )rD   rH   r   r   rI   r~   s         rF   rP   zBertModel.forward  s9     "' ( 
 
 ||M***rG   weightsc                 X   g d}g }g }t          |                                           }|D ]{\  }}|D ]X\  }}	}
|	|vr|                    |	|          }||vr&||         }|j        } ||||
           |                    |            n||v r|                    ||f           |||fS )N))r   r   r   )r   r   r   )r   r   r   )dictnamed_parametersreplaceweight_loaderappend)rD   r   stacked_params_mappingloaded_stacked_paramsother_weightsparams_dictnameloaded_weight
param_nameweight_nameshard_idparamr   s                rF   _load_weightszBertModel._load_weights  s   "
 "
 "
 !#4002233#* 	@ 	@D-5K @ @1
Kd**||K<<{**#D) % 3e]H===%,,T222;&&!(($)>???333rG   c                     |                      |          \  }}t          | dg          }|                    |          }|                    |           |S )Nzpooler.skip_prefixesr   r&   load_weightsupdaterD   r   r   r   loaderloaded_paramss         rF   r   zBertModel.load_weights  s]    /3/A/A'/J/J,,"4	{CCC++M::2333rG   NN)rQ   rR   rS   is_pooling_modelpacked_modules_mappingr*   r   r   typer   Moduler3   r?   rT   r   r   rP   r   tupler   setr   rU   rV   s   @rF   r   r   m  s        (*C*C*CD +8X X X  X 	X
 biX 
X X X X X X: :%, : : : : <@-1+ +<+ <+ 2D8	+
 |d*+ 
+ + + +4XeC4E.F%G 4 4 4 4<HU33D-E$F 3s8        rG   r   c            	            e Zd ZdZdeddededeej	                 ddf fd	Z
d
eeeej        f                  dee         fdZ xZS )BertPoolingModelTro   r   rp   rq   r   rJ   Nc                    t                                          |||           t          |j                  | _        d S Nrp   rq   r   )r2   r3   rX   rY   poolerr   s       rF   r3   zBertPoolingModel.__init__  sG     	#+ 	 	
 	
 	
 !!9::rG   r   c                     |                      |          \  }}t          |           }|                    |          }|                    |           |S rL   r   r   s         rF   r   zBertPoolingModel.load_weights  sV    /3/A/A'/J/J,,"4((++M::2333rG   )rQ   rR   rS   r   r*   r   r   r   r   r   r3   r   r   r?   rT   r   r   rU   rV   s   @rF   r   r     s         +8; ; ;  ; 	;
 bi; 
; ; ; ; ; ;HU33D-E$F 3s8        rG   r   c                       e Zd ZdZdZdddedef fdZdej	        d	ej	        fd
Z
	 	 ddej	        dej	        dedz  dej	        dz  d	ej	        f
dZdeeeej	        f                  fdZddeded	efdZded	efdZ xZS )BertEmbeddingModel_  A model that uses Bert to provide embedding functionalities.

    This class encapsulates the BertModel and provides an interface for
    embedding operations and customized pooling functions.

    Attributes:
        model: An instance of BertModel used for forward operations.
        _pooler: An instance of Pooler used for pooling operations.
    Tro   rq   rp   rq   c                    t                                                       |j        j        }|J |                     |t          |d                    | _        |                     |          | _        d S )Nmodelr   )	r2   r3   rY   rf   _build_modelr(   r  _build_poolerr  )rD   rp   rq   rf   rE   s       rF   r3   zBertEmbeddingModel.__init__  sv    #0>(((&&#L,I,I ' 
 

 ((77rG   rH   rJ   c                 6    | j                             |          S rL   )r  r   r   s     rF   r   z"BertEmbeddingModel.embed_input_ids  s    z)))444rG   Nr   r   rI   c                 4    |                      ||||          S )NrH   r   rI   r   )r  )rD   rH   r   r   rI   s        rF   rP   zBertEmbeddingModel.forward  s+     zz'!5	  
 
 	
rG   r   c                     t          |          }t          d |D                       }|st          ddi          }t          | dg          }|                    ||          S )Nc              3   F   K   | ]\  }}|                     d           V  dS )model.N)
startswith)rw   r   r   s      rF   	<genexpr>z2BertEmbeddingModel.load_weights.<locals>.<genexpr>  s2      UUWT1tx88UUUUUUrG   ro   r  )orig_to_new_prefixzlm_head.r   )mapper)listanyr'   r&   r   )rD   r   weights_listhas_model_prefixr  r   s         rF   r   zBertEmbeddingModel.load_weights  st    G}}UUUUUUU 	F"r8nEEEF"4
|DDD""<"???rG   c                 0    t          ||t                    S r  )r   r*   )rD   rp   rq   s      rF   r  zBertEmbeddingModel._build_model	  s     #FM
 
 
 	
rG   rf   c                 *    t          j        |          S rL   )r   for_embedding)rD   rf   s     rF   r  z BertEmbeddingModel._build_pooler  s    +M:::rG   r   r   )rQ   rR   rS   __doc__r   r   r   r3   r?   rT   r   r   rP   r   r   r   r   r  r
   r   r  rU   rV   s   @rF   r  r    su         AC 	8 	8 	8z 	83 	8 	8 	8 	8 	8 	85 5%, 5 5 5 5 <@-1
 
<
 <
 2D8	

 |d*
 

 
 
 
@HU33D-E$F @ @ @ @
 

 
C 
 
 
 
 

;< ;F ; ; ; ; ; ; ; ;rG   r     rH   rN   rJ   c                 f    | d |j         d                                      |t          z             d S )Nr   )shapebitwise_or_TOKEN_TYPE_SHIFT)rH   rN   s     rF   _encode_token_type_idsr%  *  s7     '$Q''(44^GW5WXXXXXrG   c                     t          j        | t           j        | j                  t          z  }|                                }|                     |          t          z	  }|                     |           |S )N)r^   device)r?   	ones_likeint32r'  r$  bitwise_notbitwise_andbitwise_and_)rH   ids_masktokens_maskrN   s       rF   rM   rM   1  sn    	Y=MNNN	  &&((K**8448HHN;'''rG   c                   j     e Zd Z	 ddededef fdZdej        fdZdej        d	ej        fd
Z	 xZ
S )BertMLMHead-q=r4   r6   r=   c                    t                                                       t          j        ||          | _        t          j                    | _        t          j        ||          | _        t          j        ||d          | _	        d S )Nr-   T)r   )
r2   r3   r   rj   r`   GELUre   r<   
layer_normdecoder)rD   r4   r6   r=   rE   s       rF   r3   zBertMLMHead.__init__@  sm     	Y{K88
')),{GGGyjtDDDrG   embeddings_weightc                     || j         _        d S rL   )r5  weight)rD   r6  s     rF   tie_weights_with_embeddingsz'BertMLMHead.tie_weights_with_embeddingsI  s    /rG   r~   rJ   c                     |                      |          }|                     |          }|                     |          }|                     |          }|S rL   )r`   re   r4  r5  )rD   r~   ra   logitss       rF   rP   zBertMLMHead.forwardL  sI    JJ}%%OOAOOAarG   )r1  )rQ   rR   rS   r   r   r3   r?   rT   r9  rP   rU   rV   s   @rF   r0  r0  ?  s        INE EE,/EAFE E E E E E0U\ 0 0 0 0U\ el        rG   r0  c                        e Zd ZdZ	 	 	 	 ddej        dedz  d	edz  d
ede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 xZS )SPLADESparsePoolera  
    SPLADE sparse pooling:
    logits = mlm_head(hidden_states)
            -> log1p(relu(logits))
            -> (max|sum over L)
            -> [V]

    Padding is masked with an attention mask,
    [CLS]/[SEP] is removed (selected),
    and then pooled.
    e   f   r   Tmlm_headcls_token_idNsep_token_idr[   remove_cls_sepc                     t                                                       |dv sJ || _        || _        || _        || _        || _        d S )N)r   sum)r2   r3   r@  rA  rB  r[   rC  )rD   r@  rA  rB  r[   rC  rE   s         rF   r3   zSPLADESparsePooler.__init__a  sX     	.(((( ((,rG   rJ   c                     dhS )Nembed )rD   s    rF   get_supported_tasksz&SPLADESparsePooler.get_supported_tasksr  s
    yrG   taskc                 "    t          d          S )NT)requires_token_ids)r   )rD   rJ  s     rF   get_pooling_updatesz&SPLADESparsePooler.get_pooling_updatesu  s    "d;;;;rG   r~   pooling_metadatac                     |j         }|                                }t          |          }|j        }d}g }t	          |          D ]}	t          ||	                   }
||||
z            }d}|
}| j        rr|p| j        '||	df                                         | j        k    rd}| j	        ;||	|
dz
  f                                         | j	        k    rt          ||
dz
            }||k    rMt          | j        j        j                  }|                    |                    |f                     ||
z  }|                     |||                   }t!          j        t!          j        |                    }| j        dk    r|                    d          }n|
                    d          j        }|                    |                                           ||
z  }t!          j        |d                                          S )Nr   r!   rE  r   )prompt_lenstolistlenprompt_token_idsr{   r   rC  rA  itemrB  r   r@  r5  out_featuresr   	new_zerosr?   log1prelur[   rE  values
contiguousstack)rD   r~   rN  lens_tensorlensB	token_idsoffsetpooled_listiLhs	start_idxend_idxVlogits_iscores_ipooled_is                     rF   rP   zSPLADESparsePooler.forwardx  s   
 '2%,,..T$5	*,q !	 !	ADGAv
23BIG" 
4y'<%1!!Q$,,..$2CCC !I%1!!QU(+0022d6GGG!)QU33G)##-:;;""2<<#5#5666!}}R	'(9%:;;H{5:h#7#788H|u$$#<<A<..#<<A<..5x2244555aKFF{;A...99;;;rG   )r>  r?  r   T)rQ   rR   rS   r  r   r   r   r   boolr3   r   r   rI  r   rM  r?   rT   r    r   rP   rU   rV   s   @rF   r=  r=  T  s	       
 
 $'#&#- -)- Dj- Dj	-
 - - - - - - -"S%5    < <8K < < < <0<|0< *0< 
	0< 0< 0< 0< 0< 0< 0< 0<rG   r=  c                   z     e Zd ZdZddddededef fdZd	ed
efdZ	de
eeej        f                  fdZ xZS )BertSpladeSparseEmbeddingModelz
    BertEmbeddingModel + SPLADE sparse embedding.
    - Make logits by self.mlm_head
    - pooler: SPLADESparsePooler(mlm_head...)
    ro   r   )rq   splade_poolingrp   rq   rn  c          	      (   t                                          ||           |j        j        }t	          |j        |j        t          |dd                    | _        || _	        |j        j
        }|J |                     |          | _        d S )Nr   r=   r1  r4   r6   r=   )r2   r3   rY   rg   r0  r4   r6   rB   r@  _splade_poolingrf   r  r  )rD   rp   rq   rn  cfgrf   rE   s         rF   r3   z'BertSpladeSparseEmbeddingModel.__init__  s     	[@@@&0 $~"3(8%@@
 
 
  .#0>(((((77rG   rf   rJ   c           
      l   | j         j        }t          | d          s0t          |j        |j        t          |dd                    | _        t          | dd          }t          |dd           }t          |dd           }t          t          |          t          | j        |||d	
          d          S )Nr@  r=   r1  rp  rq  r   rA  rB  T)r@  rA  rB  r[   rC  )token_embedrG  )r  r+   hasattrr0  r4   r6   rB   r@  r   r   r=  )rD   rf   rr  pooling_modecls_idsep_ids         rF   r  z,BertSpladeSparseEmbeddingModel._build_pooler  s    jtZ(( 	'O>&s,<eDD  DM t%6>>nd33nd335mDD+!]!'!'(#'  	 	
 
 	
rG   r   c           	         t          | d          s<| j        j        }t          |j        |j        t          |dd                    | _        dt          dt          fd}t          |          }g }g }|D ]T\  }} ||          }	|	
                    d          r|                    |	|f           =|                    |	|f           Ut                      }
| j                            |          }|
                    d	 |D                        |rPd
ddddddfd|D             }|r7t          |                               |          }|
                    |           |
S )Nr@  r=   r1  rp  r   rJ   c                 h    dD ].}|                      |          r| t          |          d          } /| S )N)r  zbert.)r  rR  )r   ps     rF   _stripz;BertSpladeSparseEmbeddingModel.load_weights.<locals>._strip  s>    ( * *??1%% *A>DKrG   zcls.predictions.c                     h | ]}d |z   S )r  rH  )rw   ns     rF   	<setcomp>z>BertSpladeSparseEmbeddingModel.load_weights.<locals>.<setcomp>  s    :::x!|:::rG   zmlm_head.dense.weightzmlm_head.dense.biaszmlm_head.layer_norm.weightzmlm_head.layer_norm.biaszmlm_head.decoder.weightzmlm_head.decoder.bias)z&cls.predictions.transform.dense.weightz$cls.predictions.transform.dense.biasz*cls.predictions.transform.LayerNorm.weightz(cls.predictions.transform.LayerNorm.biaszcls.predictions.decoder.weightzcls.predictions.decoder.biasc                 2    g | ]\  }}|v 	|         |fS rH  rH  )rw   r~  wname_maps      rF   ry   z?BertSpladeSparseEmbeddingModel.load_weights.<locals>.<listcomp>  s+    OOOTQh!a(rG   )ru  r  r+   r0  r4   r6   rB   r@  r   r  r  r   r   r   r   r&   )rD   r   rr  r|  r  
model_sidemlm_sider   r  r   loadedloaded_modelremapped
loaded_mlmr  s                 @rF   r   z+BertSpladeSparseEmbeddingModel.load_weights  s   tZ(( 	*#C'O>&s,<eDD  DM	 	 	 	 	 	 G}}57
35  	- 	-DAq6!99D122 -q	****!!4),,,,55z..z::::\:::;;; 	*:Q8M0 /2K0G H POOOXOOOH *.t44AA(KK
j)))rG   )rQ   rR   rS   r  r   r   r3   r
   r   r  r   r   r?   rT   r   rU   rV   s   @rF   rm  rm    s          9;RW8 8 8(8258LO8 8 8 8 8 8$
< 
F 
 
 
 
<0HU33D-E$F 0 0 0 0 0 0 0 0rG   rm  c                        e Zd ZdZdZdddedef fdZdej	        d	ej	        fd
Z
deeeej	        f                  fdZ	 	 	 ddej	        dz  dej	        dedz  dej	        dz  dej	        dz  d	ej	        fdZ xZS )BertForSequenceClassificationr  Tro   r	  rp   rq   c                   t                                                       |j        j        }|j        | _        t          |t          |d          t                    | _        t          j
        |j        |j        |j        j                  | _        |j        j        }|J t          j        || j        j        | j                  | _        d S )Nbertr  r]   )r[   
classifier)r2   r3   rY   rg   
num_labelsr   r(   r*   r  r   rj   r4   rc   r  rf   r   for_seq_clsr  rD   rp   rq   r+   rf   rE   s        rF   r3   z&BertForSequenceClassification.__init__$  s    )3 +$#//)
 
 
	
 )*5
 
 
 $0>((($0I$
 
 
rG   rH   rJ   c                 6    | j                             |          S rL   r  r   r   s     rF   r   z-BertForSequenceClassification.embed_input_ids=      y((333rG   r   c                 N    t          |           }|                    |          }|S rL   r&   r   rD   r   r   r   s       rF   r   z*BertForSequenceClassification.load_weights@  (    "4((++G44rG   Nr   r   rI   rN   c                     |3| j         j        j        dt          z  k     sJ |J t	          ||           |                      ||||          S Nr!   r  )r  r+   r6   r$  r%  )rD   rH   r   r   rI   rN   s         rF   rP   z%BertForSequenceClassification.forwardE  sl     %9#.!7G2GHHHH((("9n===yy'!5	  
 
 	
rG   NNN)rQ   rR   rS   r  r   r   r   r3   r?   rT   r   r   r   r   r   rP   rU   rV   s   @rF   r  r    s9         AC 
 
 
z 
3 
 
 
 
 
 
24 4%, 4 4 4 4HU33D-E$F     <@-1.2
 
<$&
 <
 2D8	

 |d*
 t+
 

 
 
 
 
 
 
 
rG   r  encoder_onlyALL)tok_pooling_typec                        e Zd ZdZdddedef fdZdej        dej        fd	Z	d
e
eeej        f                  fdZ	 	 	 ddej        dz  dej        dedz  dej        dz  dej        dz  dej        fdZ xZS )BertForTokenClassificationTro   r	  rp   rq   c                   t                                                       |j        j        }|j        j        | _        |j        | _        t          |t          |d          t                    | _	        t          j        |j        |j        | j                  | _        |j        j        }|J t          |          | _        d S )Nr  r  r]   )r2   r3   rY   rg   rc   r  r   r(   r*   r  r   rj   r4   r  rf   r   r  r  s        rF   r3   z#BertForTokenClassification.__init___  s    )3%2= +#//)
 
 
	
 ) 1
 
 
 $0>(((/>>rG   rH   rJ   c                 6    | j                             |          S rL   r  r   s     rF   r   z*BertForTokenClassification.embed_input_idsr  r  rG   r   c                 N    t          |           }|                    |          }|S rL   r  r  s       rF   r   z'BertForTokenClassification.load_weightsu  r  rG   Nr   r   rI   rN   c                     |3| j         j        j        dt          z  k     sJ |J t	          ||           |                      ||||          }|                    | j                  }|                     |          S r  )r  r+   r6   r$  r%  torc   r  )rD   rH   r   r   rI   rN   r~   s          rF   rP   z"BertForTokenClassification.forwardz  s     %9#.!7G2GHHHH((("9n===		'!5	 " 
 
 &((99}---rG   r  )rQ   rR   rS   r   r   r   r3   r?   rT   r   r   r   r   r   rP   rU   rV   s   @rF   r  r  Z  s/        AC ? ? ?z ?3 ? ? ? ? ? ?&4 4%, 4 4 4 4HU33D-E$F     <@-1.2. .<$&. <. 2D8	.
 |d*. t+. 
. . . . . . . .rG   r  )Pcollections.abcr   r   r?   r   transformersr   vllm.compilation.decoratorsr   vllm.configr   r	   r
   r   vllm.distributedr   %vllm.model_executor.layers.activationr   ;vllm.model_executor.layers.attention.encoder_only_attentionr   !vllm.model_executor.layers.linearr   r   r   !vllm.model_executor.layers.poolerr   r   r   -vllm.model_executor.layers.pooler.activationsr   )vllm.model_executor.layers.pooler.seqwiser   r   r   r   )vllm.model_executor.layers.pooler.tokwiser   r   'vllm.model_executor.layers.quantizationr   3vllm.model_executor.layers.vocab_parallel_embeddingr   vllm.sequencer   
vllm.tasksr   vllm.v1.pool.metadatar    
interfacesr"   r#   interfaces_baser$   r%   utilsr&   r'   r(   r   r*   rX   rn   rv   r   r   r   r   r   r   r   r  r$  rT   r%  rM   r0  r=  rm  r  r  rH  rG   rF   <module>r     sy   * ) ) ) ) ) ) )        # # # # # # = = = = = = J J J J J J J J J J J J A A A A A A < < < < < <              
         
 Q P P P P P                   G F F F F F V V V V V V - - - - - - " " " " " " 1 1 1 1 1 1 < < < < < < < < < < < < < < < < A A A A A A A A A A, , , , ,BI , , ,^
 
 
 
 
 
 
 
:    ")   6' ' ' ' '	 ' ' 'T 7  7  7  7  7BI  7  7  7F5 5 5 5 5	 5 5 5p    RY   4    ry   2       : u---H H H H H	= H H .- HV    y   6 u---9; 9; 9; 9; 9;M 9; 9; .-9;b  Y|Y-2\Y	Y Y Y Yel u|        ")   *T< T< T< T< T< T< T< T<n u---g g g g g%7 g g .-gT u---@
 @
 @
 @
 @
BI/Dm @
 @
 .-@
F >u---3. 3. 3. 3. 3. 3. 3. .- 3. 3. 3.rG   