§
    .`ƒi  ã                   óL  — d Z ddlmZ ddlZddlmZ ddl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mZ d
dlmZ d
dlmZ d
dlmZmZ  G d„ dej        ee¦  «        Z ed¬¦  «         G d„ de¦  «        ¦   «         Z ed¬¦  «         G d„ de¦  «        ¦   «         ZdS )zBInference-only Qwen2-RM model compatible with HuggingFace weights.é    )ÚIterableN)Únn)Ú
VllmConfig)ÚColumnParallelLinearÚRowParallelLinear)ÚPooler)Úpooler_for_token_classify)ÚIntermediateTensorsé   )ÚSupportsLoRAÚ
SupportsPP)Údefault_pooling_type)Ú
Qwen2Model)ÚAutoWeightsLoaderÚmaybe_prefixc                   ó  ‡ — e Zd ZU dZeed<   g d¢ddg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        ez  f
d„Zdeeee
j        f                  dee         fd„Zˆ xZS )ÚQwen2RewardBaseModelTÚpooler)Úq_projÚk_projÚv_projÚ	gate_projÚup_proj)Úqkv_projÚgate_up_projÚ ©ÚprefixÚvllm_configr   c                óò  •— t          ¦   «                              ¦   «          |j        j        }|j        }|| _        || _        t          |t          |d¦  «        ¬¦  «        | _        |j        j	        | _	        t          j        t          |j        |j        || j	        d¬¦  «        t          j        ¦   «         t          |j        |j        | j	        |d¬¦  «        ¦  «        | _        | j        j        | _        d S )NÚmodel©r   r   F)Úquant_configÚparams_dtypeÚreturn_bias)r$   r#   r%   )ÚsuperÚ__init__Úmodel_configÚ	hf_configr#   Úconfigr   r   r!   Ú
head_dtyper   Ú
Sequentialr   Úhidden_sizeÚReLUr   Ú
num_labelsÚscoreÚmake_empty_intermediate_tensors)Úselfr   r   r*   r#   Ú	__class__s        €úw/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/model_executor/models/qwen2_rm.pyr'   zQwen2RewardBaseModel.__init__+   s÷   ø€ Ý‰Œ×ÒÑÔÐØÔ)Ô3ˆØ"Ô/ˆàˆŒà(ˆÔÝØ#­L¸ÀÑ,IÔ,Ið
ñ 
ô 
ˆŒ
ð &Ô2Ô=ˆŒå”]Ý ØÔ"ØÔ"Ø)Ø!œ_Ø!ðñ ô õ ŒG‰IŒIÝØÔ"ØÔ!Ø!œ_Ø)Ø!ðñ ô ñ
ô 
ˆŒ
ð$ ŒJÔ6ð 	Ô,Ð,Ð,ó    Ú	input_idsÚreturnc                 ó6   — | j                              |¦  «        S ©N)r!   Úembed_input_ids)r2   r6   s     r4   r:   z$Qwen2RewardBaseModel.embed_input_idsM   s   € ØŒz×)Ò)¨)Ñ4Ô4Ð4r5   NÚ	positionsÚintermediate_tensorsÚinputs_embedsc                 ó”   — |                       ||||¦  «        }|                     | j        ¦  «        }|                      |¦  «        }|S r9   )r!   Útor+   r0   )r2   r6   r;   r<   r=   Úhidden_statesÚlogitss          r4   ÚforwardzQwen2RewardBaseModel.forwardP   sN   € ð Ÿ
š
ØyÐ"6¸ñ
ô 
ˆð &×(Ò(¨¬Ñ9Ô9ˆØ—’˜MÑ*Ô*ˆØˆr5   Úweightsc                 óP   — t          | dg¬¦  «        }|                     |¦  «        S )Nzlm_head.)Úignore_unexpected_prefixes)r   Úload_weights)r2   rC   Úloaders      r4   rF   z!Qwen2RewardBaseModel.load_weights^   s*   € Ý" 4ÀZÀLÐQÑQÔQˆØ×"Ò" 7Ñ+Ô+Ð+r5   )NN)Ú__name__Ú
__module__Ú__qualname__Úis_pooling_modelr   Ú__annotations__Úpacked_modules_mappingr   Ústrr'   ÚtorchÚTensorr:   r
   rB   r   ÚtupleÚsetrF   Ú__classcell__©r3   s   @r4   r   r      s^  ø€ € € € € € ØÐØ€N€NNð
ð 
ð 
ð Øð
ð
ð 
Ðð BDð  
ð  
ð  
 zð  
¸3ð  
ð  
ð  
ð  
ð  
ð  
ðD5¨¬ð 5¸%¼,ð 5ð 5ð 5ð 5ð <@Ø-1ðð à”<ðð ”<ðð 2°DÑ8ð	ð
 ”| dÑ*ðð 
ŒÐ+Ñ	+ðð ð ð ð, H¨U°3¸¼Ð3DÔ-EÔ$Fð ,È3ÈsÌ8ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,r5   r   ÚALL)Útok_pooling_typec                   ó.   ‡ — e Zd Zddœdedefˆ fd„Zˆ xZS )ÚQwen2ForRewardModelr   r   r   r   c                ó¸   •— d|j         j        _        t          ¦   «                              ||¬¦  «         |j         j        }|€J ‚t          |¦  «        | _        d S )Nr   r"   ©r(   r)   r/   r&   r'   Úpooler_configr	   r   ©r2   r   r   r[   r3   s       €r4   r'   zQwen2ForRewardModel.__init__e   óX   ø€ Ø89ˆÔ Ô*Ô5Ý‰Œ×Ò [¸ÐÑ@Ô@Ð@à#Ô0Ô>ˆØÐ(Ð(Ð(å/°Ñ>Ô>ˆŒˆˆr5   ©rH   rI   rJ   r   rN   r'   rS   rT   s   @r4   rX   rX   c   óX   ø€ € € € € àACð ?ð ?ð ? zð ?¸3ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?r5   rX   ÚSTEPc                   ó.   ‡ — e Zd Zddœdedefˆ fd„Zˆ xZS )ÚQwen2ForProcessRewardModelr   r   r   r   c                ó¸   •— d|j         j        _        t          ¦   «                              ||¬¦  «         |j         j        }|€J ‚t          |¦  «        | _        d S )Né   r"   rZ   r\   s       €r4   r'   z#Qwen2ForProcessRewardModel.__init__q   r]   r5   r^   rT   s   @r4   rb   rb   o   r_   r5   rb   )Ú__doc__Úcollections.abcr   rO   r   Úvllm.configr   Ú!vllm.model_executor.layers.linearr   r   Ú!vllm.model_executor.layers.poolerr   Ú)vllm.model_executor.layers.pooler.tokwiser	   Úvllm.sequencer
   Ú
interfacesr   r   Úinterfaces_baser   Úqwen2r   Úutilsr   r   ÚModuler   rX   rb   © r5   r4   ú<module>rr      s¾  ðð IÐ Hà $Ð $Ð $Ð $Ð $Ð $à €€€Ø Ð Ð Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø OÐ OÐ OÐ OÐ OÐ OØ -Ð -Ð -Ð -Ð -Ð -à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2ðE,ð E,ð E,ð E,ð E,˜2œ9 l°Jñ E,ô E,ð E,ðP Ð uÐ-Ñ-Ô-ð?ð ?ð ?ð ?ð ?Ð.ñ ?ô ?ñ .Ô-ð?ð Ð vÐ.Ñ.Ô.ð?ð ?ð ?ð ?ð ?Ð!5ñ ?ô ?ñ /Ô.ð?ð ?ð ?r5   