
    .`ic                        U d dl Z d dl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 d dlmZ d dlmZ d d	lmZmZmZ eeeef         z  Zeed
<   eeeef         ej        z  Zeed<   d Z  e d          Z! e d          Z" e d          Z# e d          Z$e Z%deeef         dedefdZ&de'eeef                  dede'e         fd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          Z/ G d! d"e          Z0 G d# d$e          Z1 G d% d&e	j)                  Z2 G d' d(e	j)                  Z3dS ))    N)Iterable)repeat)	TypeAlias)	rearrange)PretrainedConfig)QuantizationConfig)default_weight_loader)InternParallelAttentionInternVisionEncoderInternVisionEncoderLayerinput_dim_tnorm_tc                       fd}|S )Nc                     t          | t                    r$t          | t                    st          |           S t          t	          |                     S N)
isinstancer   strtupler   )xns    t/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/model_executor/models/radio.pyparsez_ntuple.<locals>.parse#   sG    a"" 	:a+=+= 	88OVAq\\"""     )r   r   s   ` r   _ntupler   "   s#    # # # # #
 Lr               size
patch_sizereturnc                 "    | \  }}||z  ||z  z  S r   r   )r    r!   hws       r   calc_seq_lenr&   2   s    DAqOZ00r   sizesc                      fd| D             S )Nc                 0    g | ]}t          |          S r   )r&   ).0r    r!   s     r   
<listcomp>z!calc_seq_lens.<locals>.<listcomp>8   s#    ===tLz**===r   r   )r'   r!   s    `r   calc_seq_lensr,   7   s    ====u====r   c                   `     e Zd Z	 	 	 	 ddededededz  dedz  f
 fd	Zd
ej        fdZ xZ	S )ClsTokenr   TNndim
num_tokensenabledregister_multiplenum_registersc                 f   t                                                       || _        || _        d| _        || _        |rV|r|| _        n|r|||z  z
  | _        |dz  }t          j        t          j	        || j        z   |          |z            | _
        nd | _
        | j        | j        z   | _        d S )Nr         )super__init__r/   r1   r3   r0   nn	Parametertorchrandntokennum_patches)selfr/   r0   r1   r2   r3   scale	__class__s          r   r7   zClsToken.__init__<   s     		$ 	 %2""" %6!22&" $JEJ);;TBBUJ DJJ
 DJ?T-??r   r   c                     | j         |S | j                             d                              |j        d         dd          }t	          j        ||gd          }|S Nr   r   dim)r<   	unsqueezeexpandshaper:   cat)r>   r   r<   s      r   forwardzClsToken.forward\   si    :H
$$Q''..qwqz2rBBI 
 
 
 r   )r   TNN)
__name__
__module____qualname__intboolr7   r:   TensorrJ   __classcell__r@   s   @r   r.   r.   ;   s         (,$(@ @@ @ 	@
 :@ Tz@ @ @ @ @ @@        r   r.   c                       e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 d-dededed	ed
edededz  dededededz  dedz  def fdZ	 d.dej	        de
eeef                  dz  dej	        fdZdej	        de
eeef                  deej	        ej	        dz  f         fdZdej	        de
eeef                  dej	        fdZed             Zed             Zed             Zed             Zed             Zd ej	        d!ej        fd"Zd#ej	        d$ej	        fd%Zdej	        dej	        fd&Z	 	 d/dej	        d'ej	        dz  d(eeef         dz  dej	        fd)Z	 	 d/d*ed'ej	        dz  d(eeef         dz  dej	        fd+Zd*edeeef         fd,Z xZS )0ViTPatchGeneratorTFN        r   r!   	embed_dim
input_dimsabs_posnormalize_patches	cls_tokenmax_input_dimspos_dropoutreturn_pos_encnum_cls_tokensr2   r3   
patch_biasc                 t   t                                                       t          |t                    r||f}||}t          |t                    r||f}t	          fd|D                       }||k    | _        || _        |	| _        t          ||          }| _	        || _
        || _        |d         z  | _        |d         z  | _        t	          fd|D                       | _        | j        | j        z  | _        || _        t#                    | _        t'          |fd|i|| _        |r8|dz  }t+          j        t/          j        d| j        |fi ||z            | _        t5          ||
|||          | _        |rt+          j        |          nt+          j                    | _        d S )	Nc              3   f   K   | ]+}t          t          j        |z            z            V  ,d S r   )rN   mathceilr*   dr!   s     r   	<genexpr>z-ViTPatchGenerator.__init__.<locals>.<genexpr>   sO       
 
<=C	!j.))J677
 
 
 
 
 
r   )devicedtyper   r   c              3   "   K   | ]	}|z  V  
d S r   r   rd   s     r   rf   z-ViTPatchGenerator.__init__.<locals>.<genexpr>   s'      DDAZDDDDDDr   biasr5   )r0   r1   r2   r3   )r6   r7   r   rN   r   cpe_moder\   r]   dictr!   rX   rV   num_rowsnum_colsrW   r=   r[   
Im2Patchesim_to_patchesViTPatchLinearembedderr8   r9   r:   r;   	pos_embedr.   rZ   	LayerNormIdentitypatch_normalizer)r>   r!   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r2   r3   r_   rg   rh   factoryr?   r@   s    `                r   r7   zViTPatchGenerator.__init__m   s   & 	j#&& 	2$j1J!'Nnc** 	>,n=N 
 
 
 
AO
 
 
 
 
 '*4&,fE222$"&q)Z7&q)Z7DDDDDDDDD=4=8,'
33&	
 
(2
6=
 
  	tOE\At/FFgFFN DN "%/'
 
 
 (9KBL###bkmm 	r   r   
imgs_sizesr"   c                 z   |G|                      |          }|                     ||          \  }}|                     ||          }nQ|                     |          }|                     ||j        dd                    \  }}|                     |          }|                     |          }| j        r||fS |S )Nrx   r   
input_size)	rr   apply_pos_enc_dynamiccls_token_dynamicembed_patchesapply_pos_encrH   rZ   rv   r]   )r>   r   rx   patchespos_encs        r   rJ   zViTPatchGenerator.forward   s     !mmA&&G#99J  :    GW ,,W,LLGG((++G#11'agabbk1RRGWnnW--G''00 	$G##r   r   c           
         | j         s|d fS d}g }|D ]}t          || j                  }|d d |||z   d d f         }|                     |j        d         |          }||z   }	t          j        |d d d |d d f         |	|d d ||z   d d d f         gd          }|                    |           ||z  }|rt          j        |d          nd }
||
fS )Nr   r{   r   rD   )rX   r&   r!   get_pos_encrH   r:   rI   append)r>   r   rx   current_lengthpos_enc_listr    
seq_lengthimg_patchesr   img_patches_with_posfull_pos_encs              r   r}   z'ViTPatchGenerator.apply_pos_enc_dynamic   s=    | 	!D=  	) 	)D%dDO<<J!!!!^nz6Q%QSTSTST"TUK&&w}Q'7D&IIG#.#8 iAAA12(AAA~
:<<aaa?@
   G (((j(NN9EOuy155554$$r   c                    | j         j        s|S g }d}t          || j                  D ]}| j         j                            d                              |j        d         dd          }|                    |           |                    |d d |||z   d d f                    ||z  }t          j
        |d          S rB   )rZ   r1   r,   r!   r<   rF   rG   rH   r   r:   rI   )r>   r   rx   outr   seq_lenclass_tokens          r   r~   z#ViTPatchGenerator.cls_token_dynamic   s     ~% 	N$ZAA 	& 	&G..88;;BBa "b K JJ{###JJwqqq.>G3K"KQQQNOPPPg%NNy!$$$$r   c                     | j         j        S r   )rZ   r1   r>   s    r   apply_cls_tokenz!ViTPatchGenerator.apply_cls_token   s    ~%%r   c                     | j         j        S r   )rZ   r0   r   s    r   r^   z ViTPatchGenerator.num_cls_tokens   s    ~((r   c                     | j         j        S r   )rZ   r=   r   s    r   num_cls_patchesz!ViTPatchGenerator.num_cls_patches   s    ~))r   c                     | j         j        S r   )rZ   r3   r   s    r   r3   zViTPatchGenerator.num_registers  s    ~++r   c                      | j         | j        z   S r   )r^   r3   r   s    r   num_skipzViTPatchGenerator.num_skip  s    "T%777r   	src_embed
targ_embedc                 ~   |j         |j         k    rt          t          j        |j         d                             }|dz  |j         d         k    s
J d            t	          |d||          }t          j        || j        | j        fddd	          }t	          |d
          }|j	        
                    |           d S )Nr   r   z*Unable to interpolate non-square embeddingzb (h w) c -> b c h w)r$   r%   bicubicTFr    modealign_corners	antialiaszb c h w -> b (h w) c)rH   rN   rb   sqrtr   Finterpolaterm   rn   datacopy_)r>   r   r   src_sizes       r   _load_embedzViTPatchGenerator._load_embed  s    ?j...49Y_Q%78899HQ;)/!"4444< 544 "1X  I mT]3"  I ")-CDDIi(((((r   src_proj_weighttarg_proj_weightc                    |j         |j         k    rt          t          j        |j         d         dz                      }|dz  dz  |j         d         k    s
J d            t	          |dd||          }t          j        || j        | j        fddd	
          }t	          |d          }|j        	                    |           d S )Nr   r   r   z+Unable to interpolate non-square patch sizezb (c h w) -> b c h w)cr$   r%   r   TFr   zb c h w -> b (c h w))
rH   rN   rb   r   r   r   r   r!   r   r   )r>   r   r   src_patch_sizes       r   _load_projectionz"ViTPatchGenerator._load_projection   s      $4$::: ?+@+Cq+H!I!IJJN"A%*o.CA.FFFF= GFF (&    O  mot7"  O (9OPPO##O44444r   c                 Z    |                      |          }|                     |          }|S r   )rp   rr   )r>   r   r   s      r   r   zViTPatchGenerator.embed_patches;  s+    $$Q''--((r   
patch_idxsr|   c                 *   | j         s|S |                     |j        d         ||          }| j        rY| j        dk    rNt          j        |j        d         dd|j        |j                  | j        k    }t          j	        ||d          }n|}||z   |fS )Nr   r   rh   rg   )
rX   r   rH   trainingr\   r:   randrh   rg   where)r>   r   r   r|   r   keepspos_enc_drops          r   r   zViTPatchGenerator.apply_pos_enc@  s     | 	N""7=#3ZLL= 		#T-11
M!$a'-   "#  !;ugq99LL"L%w..r   
batch_sizec                 ^    | j         }nt           fd|D                       }                     ||          }||S |                    d                              dd|j        d                   }t          j        |                    |j        d         dd          d|          }|S )Nc              3   ,   K   | ]}|j         z  V  d S r   )r!   )r*   re   r>   s     r   rf   z0ViTPatchGenerator.get_pos_enc.<locals>.<genexpr>a  s*      HHqDO3HHHHHHr   rC   r   r   )rE   index)rW   r   _get_pos_embeddingsrF   rG   rH   r:   gather)r>   r   r   r|   rW   rs   exp_patch_idxss   `      r   r   zViTPatchGenerator.get_pos_encX  s     JJHHHHZHHHHHJ,,ZDD	#--b1188RQSATUULZ-a0"b99q
 
 
	 r   c                    | j         | j        fk    r| j        S | j                            d| j         | j        d                              dddd          }fd}| j        r|| j        rt          j        d          }t          j
        |dd|j                  d|z
  z  |z   }t          j        d	          }| }t          j        t          j
        |dd|j                  ||z
  z  |z             }	||	z  }
|d|	z  z  }t          j        |
|gd
                              dd          }t          j
        |ddd|j                  d|z
  z  }t          j        ddd         |j                  d                             |d         d          }t          j        ddd         |j                  d d d d f                             |dd                   }t          j        ||gd
          }||z  |z   }|                    d                              d           t)          j        |                                                    |ddd          |ddd                              |j                  }njt3                    }t)          j        |                                ||fdd                              |j                  } ||          }n ||          }|j        dd          k    rBt)          j        |                                dd                              |j                  }|                    d                              ddd          }|S )Nr   rC   r   r   r   c                     d         | j         d         k     r| dd d         d d f         } d         | j         d         k     r| dd d d d         f         } | S )Nr   .r   rC   )rH   )rs   rW   s    r   window_selectz<ViTPatchGenerator._get_pos_embeddings.<locals>.window_selectw  so    !}yr222%c?Z]?AAA&=>	!}yr222%c111o
1o&=>	r   g?rg   g      ?rD   )stepsrg   NNbilinearzerosT)gridr   padding_moder   )r    r   r   r   )rm   rn   rs   reshapepermuterk   r   rb   r   r:   r   rg   logexpstackclamp_linspacerG   mul_sub_r   grid_samplefloattorh   maxr   rH   flatten)r>   r   rW   rs   r   	min_scaler?   
aspect_min
aspect_maxaspectscale_xscale_yscale_xypos_xylin_xlin_ylin_xygrid_xymax_dims     `                r   r   z%ViTPatchGenerator._get_pos_embeddingso  s   M4=)Z77>!N**1dmT]BOOWWq!Q
 
		 	 	 	 	 = 8	1} 55 IcNN	Jz1a	8HIII9}&  
 "Xe__
([
Jz1a	8HIII!J.0 !   &.1v:. ;'9rBBBII!QOOJ1a	@PQQQL q
1i6F  $fZACC  q
1i6F  4-!!'
B
1!F!F  eU^<<< 8+f4 Q$$Q'''MOO%%,,ZRDD #!("&   "Y_%% 	 j//MOO%%!7+"&#	  
 "Y_%%  *M)44		%i00I?233:--!!
$Z  b!!  %%a((00Aq99	r   )TFFNrU   Fr   NNFNNr   r   )rK   rL   rM   rN   r   rO   r   r7   r:   rP   listr   rJ   r}   r~   propertyr   r^   r   r3   r   r8   r9   r   r   r   r   r   r   rQ   rR   s   @r   rT   rT   l   s        "'-1 $(,$( #E
 E
 E
 	E

  E
 E
  E
 E
 $d*E
 E
 E
 E
 :E
 TzE
 E
 E
 E
 E
 E
 E
P KO +/c3h+@4+G	   $%|%15eCHo1F%	u|U\D00	1% % % %<%|%15eCHo1F%	% % % %& & & X& ) ) X) * * X* , , X, 8 8 X8)U\ )r| ) ) ) )*5$|5?D|5 5 5 56u|      +/-1	/ // L4'/ #s(Od*	/
 
/ / / /6 +/-1	  L4' #s(Od*	
 
   .Pc PuS#X P P P P P P P Pr   rT   c                   H     e Zd Zdef fdZdej        dej        fdZ xZS )ro   r!   c                 V    t                                                       || _        d S r   r6   r7   r!   )r>   r!   r@   s     r   r7   zIm2Patches.__init__  s$    $r   r   r"   c                 
   | j         dk    r.|                    d          }|                    ddd          }|S |j        d         | j         z  }|j        d         | j         z  }t	          |d|| j         || j                   }|S )Nr   r   r   r   rC   z*b c (py yy) (px xx) -> b (py px) (c yy xx))pyyypxxx)r!   r   r   rH   r   )r>   r   r   r   r   s        r   rJ   zIm2Patches.forward  s    ?aiillGooaA..GNWR[DO+WR[DO+8
 
 
 r   )	rK   rL   rM   rN   r7   r:   rP   rJ   rQ   rR   s   @r   ro   ro     sj        %3 % % % % % % %,        r   ro   c                   .     e Zd Zddededef fdZ xZS )rq   Fr!   rV   rj   c                 \     t                      j        d|dz  z  |fd|i| || _        d S )Nr   r   rj   r   )r>   r!   rV   rj   rw   r@   s        r   r7   zViTPatchLinear.__init__  s=    j!m,iNNdNgNNN$r   )F)rK   rL   rM   rN   rO   r7   rQ   rR   s   @r   rq   rq     sW        % %3 %3 %d % % % % % % % % % %r   rq   c                   T     e Zd Z	 ddej        dej        dz  dej        f fdZ xZS )RadioParallelAttentionNr   	attn_maskr"   c                    |!t                                          |          S |j        \  }}}|                     |          \  }}|                    dd          \  }}}	| j        r|                     ||          \  }}|                    ||| j        | j	                  }|                    ||| j        | j	                  }|	                    ||| j        | j	                  }	d |||	fD             \  }}}	t          j        |||	|| j                  }
|
                    dd                              ||d          }
|                     |
          \  }
}|
S )Nr   rC   rD   c              3   B   K   | ]}|                     d d          V  dS )r   r   N)	transposer*   ts     r   rf   z1RadioParallelAttention.forward.<locals>.<genexpr>  s0      881;;q!$$888888r   )r   r?   r   r   )r6   rJ   rH   qkvchunkqk_normalization_apply_qk_normviewnum_heads_per_partitionhead_dimr   scaled_dot_product_attentionr?   r   r   proj)r>   r   r   BN_r   qkvr   r@   s              r   rJ   zRadioParallelAttention.forward  sV    77??1%%%'1a!Q))A2)&&1a  	-&&q!,,DAqFF1a5t}EEFF1a5t}EEFF1a5t}EE88q!Qi8881a,q!y

 
 
 mmAq!!))!Q333Q
r   r   )rK   rL   rM   r:   rP   rJ   rQ   rR   s   @r   r   r     sh        @D */,*=	         r   r   c                   N     e Zd Zd fdZ	 ddej        dej        dz  fdZ xZS )	RadioVisionEncoderLayerr"   Nc                 H     t                      j        |dt          i| d S )Nattn_cls)r6   r7   r   r>   argskwargsr@   s      r   r7   z RadioVisionEncoderLayer.__init__  s+    $J)?J6JJJJJr   hidden_statesr   c                     ||                      |                     |          |          | j        z  z   }||                     |                     |                    | j        z  z   }|S N)r   )attnnorm1ls1mlpnorm2ls2)r>   r  r   s      r   rJ   zRadioVisionEncoderLayer.forward  si     ii

=11YiGG$(RS 	
 &M1J1J(K(Kdh(VVr   r"   Nr   rK   rL   rM   r7   r:   rP   rJ   rQ   rR   s   @r   r  r    s|        K K K K K K *. | <$&       r   r  c                   N     e Zd Zd fdZ	 ddej        dej        dz  fdZ xZS )	RadioVisionEncoderr"   Nc                 H     t                      j        |dt          i| d S )N	layer_cls)r6   r7   r  r  s      r   r7   zRadioVisionEncoder.__init__  s+    $L*ALVLLLLLr   inputs_embedsr   c                 8    |}| j         D ]} |||          }|S r  )layers)r>   r  r   r  encoder_layers        r   rJ   zRadioVisionEncoder.forward  s8    
 &![ 	N 	NM)M-9MMMMMr   r  r   r  rR   s   @r   r  r    s|        M M M M M M *. | <$&       r   r  c                       e Zd ZddgiZ	 	 ddddddededz  dedz  d	ed
eddf fdZdee	eef         z  fdZ
d Zdee	eef                  dej        dej        fdZ	 ddej        dej        dz  dej        fdZ xZS )RadioInternVisionModelr   Nr    num_hidden_layers_overridenum_dummy_headsprefixconfigquant_configr%  r&  r'  r"   c          
      6   t                                                       || _        |                     t	          |j                  |j                  \  | _        | _        | _	        t          t          |j        |j        z            |j        z            }t          d |j        D                       }t          |j        |j        | j        |d|j        rt%          |          nd|j                  | _        t+          ||||| d          | _        d S )Nc              3   &   K   | ]}|d          V  dS )nameNr   r   s     r   rf   z2RadioInternVisionModel.__init__.<locals>.<genexpr>3  s&      AAAaiAAAAAAr   Tr   )rW   r[   rZ   r^   r2   z.encoderr(  r)  r%  r&  r'  )r6   r7   r(  _init_img_size	to_2tupler!   
image_sizeimg_size	grid_sizer=   rN   roundcpe_max_sizesetteachersrT   hidden_sizecls_token_per_teacherlenr2   patch_generatorr  encoder)	r>   r(  r)  r%  r&  r'  max_img_sizeunique_teachersr@   s	           r   r7   zRadioInternVisionModel.__init__!  s(    	:>:M:Mf'((&*;;
 ;
7t~t'7 &%(99::V=NN
 
 AAAAAAA0}'393OV3///UV$6 
  
  
 *%'A+&&&
 
 
r   r1  c                     |dS t          |          }t          d t          ||          D                       }|d         |d         z  }|||fS )N)NNNc                     g | ]
\  }}||z  S r   r   )r*   sps      r   r+   z9RadioInternVisionModel._init_img_size.<locals>.<listcomp>J  s     HHHda16HHHr   r   r   )r/  r   zip)r>   r!   r1  r2  r=   s        r   r.  z%RadioInternVisionModel._init_img_sizeF  s`    ##X&&HHc(J.G.GHHHII	lYq\1K//r   c                     | j         S r   )
embeddingsr   s    r   get_input_embeddingsz+RadioInternVisionModel.get_input_embeddingsN  s
    r   rx   rg   c                    | j         j        }| j         j        t          ||          }fd|D             }t	          |          }t          j        ||t
          j        |          }d}|D ]}	||	z   }
d|||
||
f<   |
}|S )Nc                     g | ]}|z   S r   r   )r*   r   r   s     r   r+   zLRadioInternVisionModel.create_inter_image_attention_mask.<locals>.<listcomp>X  s    CCCw(*CCCr   r   r   T)r:  r!   r   r,   sumr:   r   rO   )r>   rx   rg   r!   seq_lenspatch_countstotal_patchesmask	start_idxpatch_countend_idxr   s              @r   !create_inter_image_attention_maskz8RadioInternVisionModel.create_inter_image_attention_maskQ  s     )4
'0 Z88CCCC(CCCL)) {=
6
 
 

 	' 	  	 K+-G9=D7"Ig$556IIr   r   c                     |                      ||          }d }|/t          |          dk    r|                     ||j                  }|                     ||          }|S )Nrz   r   r   )r  r   )r:  r9  rP  rg   r;  )r>   r   rx   r  r   encoder_outputss         r   rJ   zRadioInternVisionModel.forwardj  su    
 ,,Q:,FF	!c*oo&9&9>>18 ?  I ,,]i,XXr   r   r   )rK   rL   rM   packed_modules_mappingr   r   rN   r   r7   r   r.  rE  r   r:   rg   rP   rP  FloatTensorrJ   rQ   rR   s   @r   r"  r"    sl       w $(26#

 26 #
 #
 #
 #
 )4/#

 %($J#
 #
 #
 
#
 #
 #
 #
 #
 #
J03sCx3H 0 0 0 0  uS#X/9>	   8 +/ < L4' 
		       r   r"  c                   T    e Zd ZddgiZ	 ddddddededz  dedz  d	ed
eddf fdZ	 	 dddde	j
        dz  de	j
        dz  de	j
        dz  dee	j        e	j        f         fdZdee         fdZ	 dde	j
        deeeef                  dz  dee	j        e	j        f         fdZ xZS )
RadioModelr   Nr   r#  r$  r(  r)  r%  r&  r'  r"   c                d   t                                                       || _        t          |||||          | _        d }|j        r^t          j        d t          |j                  D                       }|	                                dk    r| 
                    d|           || _        d S )Nr-  c                 D    g | ]\  }}|                     d d          |S )use_summaryT)get)r*   ir   s      r   r+   z'RadioModel.__init__.<locals>.<listcomp>  s0    XXXtq!QUU=RV=W=WXXXXr   r   summary_idxs)r6   r7   r(  r"  modelr6  r:   tensor	enumeratenumelregister_bufferr\  )r>   r(  r)  r%  r&  r'  r\  r@   s          r   r7   zRadioModel.__init__  s     	+%'A+
 
 

 ? 	C <XXy99XXX L !!##a''$$^\BBB(r   rz   pixel_valuespixel_embedsrx   c                ^    |                      ||          }|                     ||          S )Nrz   )r]  _extract_final)r>   rb  rc  rx   ys        r   rJ   zRadioModel.forward  s2     JJ|
J;;""1"<<<r   c                     t                      }t          |                                           }t          |t                    r"t	          |                                          }nt	          |          }|D ]\  }}|                    d          s|t          d          d          }|dv r8|                    d          rNd }|                    d          r d|                    dd          d          }n|                    d          r d|                    dd          d          }n|                    d	          rp|                    d          }	t          |	          d
k    rH|	d         }
d	                    |	dd                    }|dv s|                    d          r7d|
 d| }|rC||v r?||         }t          |dt                    } |||           |                    |           |S )Nzradio_model.>   r\  zinput_conditioner.zmodel.patch_generator..r   rC   r   zmodel.blocks.r   r   >   r  r  )zls1.zls2.zmodel.encoder.layers.weight_loader)r5  rl   named_parametersr   r   items
startswithr9  splitjoingetattrr	   add)r>   weightsloaded_paramsparams_dictweights_listr,  weightsubvllm_keyparts	layer_idxsuffixparamri  s                 r   load_weightszRadioModel.load_weights  s#   "%%%4002233gt$$ 	)00LL==L( $	, $	,LD&??>22 s>**,,-C &&&~~233  H~~677 LKCIIc14E4Eb4IKK 455 LG		#q0A0A"0EGG00 
L 		#u::?? %aI XXeABBi00F//63D3DEU3V3V/ KyKK6KKH ,H33#H- '@U V VeV,,,!!(+++r   rf  c                 T   | j         j        j        }| j         j        j        }| j         j        j        }||d d d |f         }|d d |d f         }ng }g }	d}
t          ||          D ]b}|d d |
|z   |
|z   |z   d d f         }|                    |           |d d |
|
|z   d d f         }|	                    |           |
||z   z  }
ct          j        |	d          }t          j        |d          }| j	        |d d | j	        f         }n|}|
                    d          |fS )Nr   r   rD   )r]  r:  r   r!   r^   r,   r   r:   rI   r\  r   )r>   rf  rx   r   r!   r^   all_summaryall_featall_patches	summariescurrent_posr=   r   summary
bb_summarys                  r   re  zRadioModel._extract_final  s    :-6Z/:
3BAAA./KHIIHHKIK,ZDD 6 6AA{X-h0F0TTVWVWVWW ""7+++AAA{[>-II111LM  )))x+55)I1555Ky!444H($QQQ(9%9:JJ$J!!!$$h..r   r   r   )rK   rL   rM   rS  r   r   rN   r   r7   r:   rP   r   rT  rJ   r5  r|  r   re  rQ   rR   s   @r   rV  rV  z  s       w 37)
 26 ) ) ) ) )4/)
 %($J) ) ) 
) ) ) ) ) )> -1,0=
 +/= = =lT)= lT)=
 L4'= 
u %"33	4= = = =/s3x / / / /d KO/ //+/c3h+@4+G/	u %"33	4/ / / / / / / /r   rV  )4rb   collections.abcr   	itertoolsr   typingr   r:   torch.nnr8   torch.nn.functional
functionalr   einopsr   transformersr   'vllm.model_executor.layers.quantizationr   -vllm.model_executor.model_loader.weight_utilsr	   %vllm.model_executor.models.intern_vitr
   r   r   rN   r   r   __annotations__r   rP   r   r   	to_1tupler/  	to_3tuple	to_4tuple	to_ntupler&   r   r,   Moduler.   rT   ro   Linearrq   r   r  r  r"  rV  r   r   r   <module>r     s    $ $ $ $ $ $                                   ) ) ) ) ) ) F F F F F F O O O O O O          uS#X.Y . . .%-.=	 = = =   GAJJ	GAJJ	GAJJ	GAJJ		1uS#X 1C 1C 1 1 1 1
>eCHo. >C >DI > > > >. . . . .ry . . .bS S S S S	 S S Sl
       0% % % % %RY % % %    4   4    6   &    ,   [ [ [ [ [RY [ [ [|z/ z/ z/ z/ z/ z/ z/ z/ z/ z/r   