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ZdS )    )IterableOptionalTupleN)nn)PretrainedConfig)EmbeddingPoolerOutputPoolerPoolingType)QuantizationConfig)ForwardBatch)InternLM2ForCausalLMInternLM2Model)
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 )InternLM2ForRewardModelN configquant_configprefixreturnc                    s\   t    || _|| _|j| _t||td|d| _tj	|j
ddd| _ttjdd| _d S )Nmodel)r      F)bias)pooling_type	normalize)super__init__r   r   
vocab_sizer   r   r   r   Linearhidden_sizev_headr   r	   LASTpooler)selfr   r   r   	__class__ V/home/ubuntu/.local/lib/python3.10/site-packages/sglang/srt/models/internlm2_reward.pyr      s   
z InternLM2ForRewardModel.__init__T	input_ids	positionsforward_batchinput_embedsget_embeddingc           	      C   s<   |sJ d|  ||||}| ||j}| |}t|S )Nz2InternLM2ForRewardModel 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InternLM2ForRewardModel.forwardweightsc                 C   s   t | |S )N)r   load_weights)r"   r1   r%   r%   r&   r2   <   s   z$InternLM2ForRewardModel.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.internlm2r   r   sglang.srt.utilsr   Moduler   
EntryClassr%   r%   r%   r&   <module>   s   $