o
    پi:
                     @   s   d dl mZmZmZ d dl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 d dlmZ d dlmZmZ d d	lmZ G d
d dejZegZdS )    )IterableOptionalTupleN)nn)Gemma2Config)EmbeddingPoolerOutputPoolerPoolingType)QuantizationConfig)ForwardBatch)Gemma2ForCausalLMGemma2Model)
add_prefixc                       s   e Zd Z		ddedee deddf fddZe	 			dd
ej
dej
dedej
dedefddZdeeeej
f  fddZ  ZS )Gemma2ForSequenceClassificationN configquant_configprefixreturnc                    sf   t    || _|| _|j| _t||td|d| _tj	|j
| jdd| _ttjdd| _|j| _d S )Nmodel)r   r   F)bias)pooling_type	normalize)super__init__r   r   
num_labelsr   r   r   r   Linearhidden_sizescorer   r	   LASTpoolereos_token_id)selfr   r   r   	__class__ S/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/models/gemma2_reward.pyr      s   
z(Gemma2ForSequenceClassification.__init__T	input_ids	positionsforward_batchinput_embedsget_embeddingc           	      C   s<   |sJ d|  ||||}| ||j}| |}t|S )Nz:Gemma2ForSequenceClassification is only used for embedding)r   r    
embeddingsr   r   )	r"   r'   r(   r)   r*   r+   hidden_stateslast_token_hiddenscoresr%   r%   r&   forward/   s   

z'Gemma2ForSequenceClassification.forwardweightsc                 C   s   t | | d S )N)r   load_weights)r"   r1   r%   r%   r&   r2   B   s   z,Gemma2ForSequenceClassification.load_weights)Nr   )NT)__name__
__module____qualname__r   r   r
   strr   torchno_gradTensorr   boolr   r0   r   r   r2   __classcell__r%   r%   r#   r&   r      s:    $r   )typingr   r   r   r7   r   transformersr   sglang.srt.layers.poolerr   r   r	   *sglang.srt.layers.quantization.base_configr
   ,sglang.srt.model_executor.forward_batch_infor   sglang.srt.models.gemma2r   r   sglang.srt.utilsr   Moduler   
EntryClassr%   r%   r%   r&   <module>   s   
*