
    .`ib                        U d Z ddlZddlmZmZmZ ddlmZmZm	Z	 ddl
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 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$ ddl%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4 ddl5m6Z7 ddl8m9Z9m:Z:m;Z; ddl<m=Z= ddl>m?Z?m@Z@  G d de3          ZA G d de3          ZBeAeBz  ZCe	eDd<    G d de,          ZE G d  d!e*eE                   ZF G d" d#e+eE                   ZG G d$ d%ejH                  ZI G d& d'ejH                  ZJ G d( d)ejH                  ZK e jL        eGeEeF*           G d+ d,ejH        e;e:                      ZMdS )-zBInference-only Idefics3 model compatible with HuggingFace weights.    N)IterableMappingSequence)	AnnotatedLiteral	TypeAlias)nn)BatchFeatureIdefics3ConfigIdefics3ImageProcessorIdefics3Processor)
VllmConfig)BaseDummyOptions)ReplicatedLinear)LogitsProcessor)QuantizationConfig)ParallelLMHead)MultiModelKeys)MULTIMODAL_REGISTRY)MultiModalDataDictMultiModalFieldConfigMultiModalKwargsItems)ImageProcessorItems	ImageSizeMultiModalDataItems)BaseDummyInputsBuilderBaseMultiModalProcessorBaseProcessingInfoPromptReplacementPromptUpdatePromptUpdateDetails)IntermediateTensors)TensorSchemaTensorShape   )Idefics2VisionTransformer)MultiModalEmbeddingsSupportsLoRASupportsMultiModal)
LlamaModel)AutoWeightsLoadermaybe_prefixc                       e Zd ZU dZed         ed<   eej         e	dddd          f         ed<   eej         e	ddd          f         ed<   eej         e	d	          f         ed
<   dS )Idefics3ImagePixelInputsz
    Dimensions:
        - bn: Batch size * number of images
        - bnp: Batch size * number of images * number of patches
        - c: Number of channels (3)
        - h: Height
        - w: Width
    pixel_valuestypebnp   hwpixel_attention_maskbnnum_patchesN
__name__
__module____qualname____doc__r   __annotations__r   torchTensorr$        w/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/model_executor/models/idefics3.pyr.   r.   E   s           .
!!!!EL++eQS*I*IIJJJJ#EL++eS#2N2N$NOOOO5<T):)::;;;;;;rA   r.   c                   d    e Zd ZU dZed         ed<   eej         e	ddd          f         ed<   dS )	Idefics3ImageEmbeddingInputsz
    Dimensions:
        - bn: Batch size * number of images
        - f: Image feature size
        - h: Hidden size (must match the hidden size of language model backbone)
    image_embedsr0   r6   fr3   dataNr8   r@   rA   rB   rD   rD   U   sU           .
!!!!
EL++dC"="==
>>>>>>rA   rD   ImageInputsc                   j   e Zd ZdedefdZdeeedz  f         fdZ	ddddded	ed
edz  dededz  de
eef         fdZdededede
eef         fdZdedededz  de
eef         fdZdedededz  defdZdedz  de
eeef         fdZdedededz  defdZdedededz  defdZdefdZdS )Idefics3ProcessingInfokwargsreturnc                 2     | j         j        t          fi |S N)ctxget_hf_processorr   )selfrK   s     rB   rP   z'Idefics3ProcessingInfo.get_hf_processore   s     (tx():EEfEEErA   Nc                 
    dd iS )Nimager@   rQ   s    rB   get_supported_mm_limitsz.Idefics3ProcessingInfo.get_supported_mm_limitsh   s    rA   r%   )max_lenmin_lenmax_sizeheightwidthrV   rW   rX   c                   |t          ||          n|}||z  }|t          ||          }||k    r|}t          ||z            }n|}t          ||z            }||dz  z  }||dz  z  }t          ||          }t          ||          }||fS N   )maxminint)rQ   rY   rZ   rV   rW   rX   aspect_ratios          rB   _resize_output_sizez*Idefics3ProcessingInfo._resize_output_sizek   s     )0#fe$$$Wv~ '8,,G F??E-..FFF-..E 	&1* VW%%E7##u}rA   image_widthimage_heightresolution_max_sidec                    |                                  }|j        }|j        d         }||k    rt          d          ||}}|                     |||          \  }}||fS )Nlongest_edgez<`resolution_max_side` cannot be larger than `max_image_size`)rY   rZ   rV   )rP   image_processorsize
ValueErrorrb   )	rQ   rc   rd   re   hf_processorrh   max_image_sizerY   rZ   s	            rB   _get_resize_output_image_sizez4Idefics3ProcessingInfo._get_resize_output_image_size   s     ,,..2>2N(-n=//N   %k 000C 1 
 
 u}rA   	processorc                R   ||                                  }|j        }|j        d         }|j        d         }||z  dk    s
J d            |                     |||          \  }}||k    s||k    r/t          j        ||z            }	t          j        ||z            }
ndx}	}
|
|	fS )Nrg   r   z`longest_edge` in image_processor's `size` must be divisible by `longest_edge` in `max_image_size`, this may be caused by incorrect mm_kwargs override.)rc   rd   re   )rP   rh   rl   ri   rm   mathceil)rQ   rc   rd   rn   rh   rl   ri   resized_heightresized_widthgrid_hgrid_ws              rB   _get_image_feature_grid_sizez3Idefics3ProcessingInfo._get_image_feature_grid_size   s     --//I2;2K(7G#N3n$))), *)) )-(J(J#% $ )K )
 )
%
 N**mn.L.LY~>??FY}~=>>FFFVv~rA   c                H    |                      |||          \  }}||z  dz   S )Nrc   rd   rn   r%   )rv   )rQ   rc   rd   rn   ru   rt   s         rB   get_num_patchesz&Idefics3ProcessingInfo.get_num_patches   s<     ::#% ; 
 
 ""rA   c                 b    ||                                  }|j        }|j        }|j        }|||fS rN   )rP   image_tokenfake_image_tokenglobal_image_tag)rQ   rn   r{   r|   global_image_tokens        rB   _get_image_tokenz'Idefics3ProcessingInfo._get_image_token   sD     --//I+$5&7,.@@@rA   c                H   ||                                  }|                     |          \  }}}|j        }d}||z  }	||z   |	z   }
||z   |	z   }|                     |||          \  }}|dk    r|dk    r|
|z   S t	          t
                               }t          |          D ]d}t          |          D ]R}|                    |dz   |dz             }|                    |           ||dz
  k    r|                    d           Sed	                    g |d|
|          S )Nz<row_{n_h}_col_{n_w}>rx   r   r%   )n_hn_w
 )
rP   r   image_seq_lenrv   liststrrangeformatappendjoin)rQ   rc   rd   rn   r{   r|   global_img_tokenr   grid_placeholderp_imgglobal_img_placeholdertile_img_placeholderru   rt   tiles_placeholderijplaceholder_per_tiles                     rB   get_image_replz%Idefics3ProcessingInfo.get_image_repl   s    --//I:>:O:O;
 ;
7%'7 "/2m+!14D!Du!L/2BBUJ::#% ; 
 

 Q;;6Q;;),<<< IKKv 	3 	3A6]] 3 3';'B'Bq1uRSVWRW'B'X'X$!(()=>>>
??%,,T2223 ww" ' !	
 
 	
rA   c                r    ||                                  }|                     |||          }||j        z  S )Nrx   )rP   ry   r   )rQ   rc   rd   rn   r7   s        rB   get_num_image_tokensz+Idefics3ProcessingInfo.get_num_image_tokens  sN     --//I**#% + 
 
 Y444rA   c                     |                                  }|j        }t          |j        d         |j        d                   S )Nrg   )rZ   rY   )rP   rh   r   ri   )rQ   rn   rh   s      rB   !get_image_size_with_most_featuresz8Idefics3ProcessingInfo.get_image_size_with_most_features   sH    ))++	2;2K!&~6"'7
 
 
 	
rA   )r9   r:   r;   objectr   rP   r   r   r`   rU   tuplerb   rm   rv   ry   r   r   r   r   r   r@   rA   rB   rJ   rJ   d   s       F F4E F F F FcDj)A     ##! ! ! ! 	!
 t! ! *! 
sCx! ! ! !F  	
 ! 
sCx   0  	
 %t+ 
sCx   @# # 	#
 %t+# 
# # # #	A*T1	A	sC}		A 	A 	A 	A,
 ,
 	,

 %t+,
 
,
 ,
 ,
 ,
\5 5 	5
 %t+5 
5 5 5 5$
9 
 
 
 
 
 
rA   rJ   c            	       p    e Zd Zdeeef         defdZ	 ddedeeef         deeef         dz  defdZ	dS )	Idefics3DummyInputsBuilder	mm_countsrL   c                     |                     dd          }| j                                        }| j                            |          \  }}}||z  S )NrS   r   )getinforP   r   )rQ   r   
num_imagesrn   r{   _s         rB   get_dummy_textz)Idefics3DummyInputsBuilder.get_dummy_text+  sO    ]]7A..
I..00	 I66yAAQZ''rA   Nseq_len
mm_optionsc                     |                     dd          }| j                                        }|j        }|j        d         }|r|                     d          nd }d|                     ||||          iS )NrS   r   rg   )rZ   rY   r   	overrides)r   r   rP   rh   rl   _get_dummy_images)	rQ   r   r   r   r   rk   rh   rg   image_overridess	            rB   get_dummy_mm_dataz,Idefics3DummyInputsBuilder.get_dummy_mm_data3  s     ]]7A..
y11332>2N&5nE5?I*..111T T++"#%)	 ,  
 	
rA   rN   )
r9   r:   r;   r   r   r`   r   r   r   r   r@   rA   rB   r   r   *  s        (S(9 (c ( ( ( ( =A	
 

 38$
 C!112T9	

 

 
 
 
 
 
rA   r   c            
            e Zd Zdedeeef         deeef         deeef         def
 fdZdedeeef         deeef         fd	Z	d
e
deeef         dedee         fdZ xZS )Idefics3MultiModalProcessorpromptmm_data	mm_kwargs
tok_kwargsrL   c                    
 |                     dg           x}sa j                                                            |          }                     |          }t          t          |g          d          S ddi|}t                                          ||||          } 	                                
                    d|i                              dt                    fdt          t                              D             }  j        j        di |

 fd	|D             }	t!          j        |	          |d
<   |d                             d           |d                             d           |S )Nimages)	input_idspt)tensor_typeinput_data_formatchannels_lastrS   c                 :    g | ]}                     |          S r@   )get_image_size).0r   parsed_imagess     rB   
<listcomp>zBIdefics3MultiModalProcessor._call_hf_processor.<locals>.<listcomp>e  s4     
 
 
01M((++
 
 
rA   c                 ^    g | ])}j                             |j        |j                   *S )rx   )r   ry   rZ   rY   )r   ri   rk   rQ   s     rB   r   zBIdefics3MultiModalProcessor._call_hf_processor.<locals>.<listcomp>j  sO     
 
 
  I%% J![& &  
 
 
rA   r7   r/   r   r5   r@   )r   r   get_tokenizerencode_apply_hf_processor_tokens_onlyr
   dictsuper_call_hf_processor_get_data_parserparse_mm_data	get_itemsr   r   lenrP   r>   tensorsqueeze_)rQ   r   r   r   r   r   
prompt_idsprocessed_outputsimage_sizesr7   rk   r   	__class__s   `         @@rB   r   z.Idefics3MultiModalProcessor._call_hf_processorK  s    "++h333 	P002299&AAJ==jIIJ
| < < <$OOOO(/GYG	!GG66	
 
 !!##]GV,--Yw 344 	

 
 
 
5:3};M;M5N5N
 
 
 2ty1>>I>>
 
 
 
 
 $
 
 
 ,1<+D+D-( 	.)22155501::1===  rA   	hf_inputshf_processor_mm_kwargsc                    |                     dt          j        d                    }t          t	          j        d|          t	          j        d|          t	          j        d          t	          j        d                    S )Nr7   r   rS   )r/   r5   rE   r7   )r   r>   emptyr   r   flat_from_sizesbatched)rQ   r   r   r7   s       rB   _get_mm_fields_configz1Idefics3MultiModalProcessor._get_mm_fields_configz  sy    
  mmM5;q>>BB.>wTT!6!F" " /6w??-5g>>
 
 
 	
rA   mm_itemsout_mm_kwargsc                        j         j        di | j                                       \  }}dt          dt          f fd}t          d|          gS )Nitem_idxrL   c                                          dt                    }|                    |           }j                            |j        |j                  }t          j        |          S )NrS   rx   )
embed_text)	r   r   r   r   r   rZ   rY   r!   select_text)r   r   
image_size
image_replrk   r{   r   rQ   s       rB   get_replacement_idefics3zQIdefics3MultiModalProcessor._get_prompt_updates.<locals>.get_replacement_idefics3  sy    ''1DEEF..x88J11&,'.& 2  J '2&   rA   rS   )modalitytargetreplacementr@   )r   rP   r   r`   r!   r   )rQ   r   r   r   r   r   rk   r{   s   ``    @@rB   _get_prompt_updatesz/Idefics3MultiModalProcessor._get_prompt_updates  s     2ty1KK4JKK I66|DDQ	s 	7J 	 	 	 	 	 	 	 	 	"  "4  
 	
rA   )r9   r:   r;   r   r   r   r
   r   r   r   r   r   r   r    r   __classcell__r   s   @rB   r   r   J  s       -!-! f%-! 3;'	-!
 CK(-! 
-! -! -! -! -! -!^

 !(V 4
 
++	,	
 
 
 
 
%
 !(V 4
 -	

 
,	
 
 
 
 
 
 
 
rA   r   c                   \     e Zd Z	 	 d
dededz  def fdZdej        dej        fd	Z	 xZ
S )Idefics3SimpleMLPNr   configquant_configprefixc           
          t                                                       |j        j        |j        dz  z  }|j        j        }t          ||d|t          |d                    | _        d S )Nr]   Fproj)biasr   r   )	r   __init__vision_confighidden_sizescale_factortext_configr   r,   r   )rQ   r   r   r   
input_sizeoutput_sizer   s         rB   r   zIdefics3SimpleMLP.__init__  sq     	)59La9OP
(4$%//
 
 
			rA   xrL   c                 6    |                      |          \  }}|S rN   )r   )rQ   r   outr   s       rB   forwardzIdefics3SimpleMLP.forward  s    1Q
rA   Nr   )r9   r:   r;   r   r   r   r   r>   r?   r   r   r   s   @rB   r   r     s         37	
 

 )4/
 	
 
 
 
 
 
" %,        rA   r   c                        e Zd Z	 	 ddededz  def fdZddej        d	e	d
ej        fdZ
dej        d
ej        fdZ xZS )Idefics3ConnectorNr   r   r   r   c                     t                                                       |j        | _        t          ||t	          |d                    | _        d S )Nmodality_projectionr   )r   r   r   r   r,   r   )rQ   r   r   r   r   s       rB   r   zIdefics3Connector.__init__  sW     	"/#4(=>>$
 $
 $
   rA   r]   r   r   rL   c                     |                                 \  }}}t          |dz            x}}|                    ||||          }|                    ||t          ||z            ||z            }|                    dddd          }|                    |t          ||z            t          ||z            ||dz  z            }|                    dddd          }|                    |t          ||dz  z            ||dz  z            }|S )Ng      ?r   r]   r%   r2   )ri   r`   viewpermutereshape)rQ   r   r   bszseq	embed_dimrY   rZ   s           rB   pixel_shufflezIdefics3Connector.pixel_shuffle  s   ffhhS)S#X&FF3y11FF3EL$8 9 99|;STTIIaAq!!II$%%%&&q)	
 
 IIaAq!!IIc3slAo677lTUo9VWWrA   image_hidden_statesc                 f    |                      || j                  }|                     |          }|S rN   )r  r   r   )rQ   r  s     rB   r   zIdefics3Connector.forward  s7    "001DdFWXX"667JKK""rA   r   )r]   )r9   r:   r;   r   r   r   r   r>   r?   r`   r  r   r   r   s   @rB   r   r     s         37	
 

 )4/
 	
 
 
 
 
 
 u| 3 u|     #5< #EL # # # # # # # #rA   r   c                        e Zd Zdddedef fdZdej        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e
dz  dej        dz  dej        e
z  f
dZ xZS )Idefics3Modelr   r   vllm_configr   c                R   t                                                       |j        j        }|j        }|| _        | j        j        j        | _        t          |j	        |t          |d                    | _        t          ||t          |d                    | _        t          |                    |j                  t          |d                    | _        t#          |j	        j        |j	        j        z  dz  |j        dz  z            | _        | j        j        | _        d S )Nvision_modelr   r   	connectorr   
text_modelr  r   r]   )r   r   model_config	hf_configr   r   r   
vocab_sizeIdefics3VisionTransformerr   r,   r  r   r  r*   with_hf_configr  r`   r   
patch_sizer   r   image_token_id)rQ   r  r   r   r   r   s        rB   r   zIdefics3Model.__init__  s&   !,!9!C"/+1<5 %77
 
 

 +44
 
 

 %#2263EFF55
 
 

 !"-1E1PPUVV"A%'
 
 #k8rA   r/   r5   rL   c                 R   |                     | j        j        j        j        j                  }|j        dd                                          }|dk                        d          |k    }||         	                                }||         	                                }| j
        j        j        }|                    d||          }|                    d||          }|                    d          d	k                                    }|                     ||
          }|S )N)dtyper%   g        ))dim)	dimensionri   stepr]   )r  r  r   )r/   patch_attention_mask)tor  
embeddingspatch_embeddingweightr  shapenumelsum
contiguousr   r   r  unfoldbool)	rQ   r/   r5   nb_values_per_imagereal_images_indsr  patches_subgridr!  r  s	            rB   image_pixels_to_featuresz&Idefics3Model.image_pixels_to_features  sR    $#.>EK ' 
 

 +04::<<(C/44 5 
 
 ! $$45@@BB  44DEPPRR[.9
.55jz 6 
 
 *00jz 1 
 
 !0 3 3 3 A AA EKKMM #//%!5 0 
 

 #"rA   r   c                 6    | j                             |          S rN   )r  embed_input_ids)rQ   r   s     rB   r1  zIdefics3Model.embed_input_ids-  s    ..y999rA   N	positionsintermediate_tensorsinputs_embedsc                 8    |                      ||||          }|S N)r4  )r  )rQ   r   r2  r3  r4  hidden_statess         rB   r   zIdefics3Model.forward0  s0      '	 ( 
 
 rA   NN)r9   r:   r;   r   r   r   r>   r?   r/  r1  r"   r   r   r   s   @rB   r
  r
    s       AC 9 9 9z 93 9 9 9 9 9 9:%#l%# $l%# 
	%# %# %# %#N: :%, : : : : <@-1 < < 2D8	
 |d* 
+	+       rA   r
  )r   dummy_inputsc                       e Zd Zg dddgdZededededz  fd	            Zd
ddedef fdZ	de
dedz  fdZdedej        fdZdedej        eej                 z  fdZde
defdZ	 	 d$dej        dej        dedz  dej        dz  de
dej        ez  fdZdej        dej        fdZdeeeej        f                  dee         fdZdefdZd edefd!Zd"edefd#Z xZ S )% Idefics3ForConditionalGeneration)q_projk_projv_proj	gate_projup_proj)qkv_projgate_up_projr   r   rL   Nc                 N    |                     d          rdS t          d          )NrS   z<image>z Only image modality is supported)
startswithrj   )clsr   r   s      rB   get_placeholder_strz4Idefics3ForConditionalGeneration.get_placeholder_strR  s,    w'' 	9;<<<rA   r   r   r  r   c          	         t                                                       |j        j        }|j        }|j        j        }|| _        || _        |                     |t          dt          t          fi          5  t          |t          |d                    | _        d d d            n# 1 swxY w Y   | j        j        | _        t          |j        j        |j        j        |t          |d                    | _        | j        j        j        r | j        j        j        j        | j        _        t1          |j        j                  | _        d S )NrS   )language_targetstower_targetsmodelr  lm_headr  )r   r   r  r  r   multimodal_configr   _mark_composite_modelr*   r  r   r
  r,   rJ  r  r   r   r  r   rK  tie_word_embeddingsr  embed_tokensr%  r   logits_processor)rQ   r  r   r   r   rL  r   s         rB   r   z)Idefics3ForConditionalGeneration.__init__Y  s   )3"/'4F!2'''"%>@Q$RS ( 
 
 	 	
 ''#FG44  DJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 #k8%)*%	22	
 
 
 ;"6 	L"&*"7"D"KDL /0B0M N Ns   :%B++B/2B/rK   c           	      V   |                     dd           }|                     dd           }||d S |t          d|          S |T|                     d          }|                     d          }| j        j        j        x}}t          d|||||d          S t          d          )	Nr/   rE   )r0   rG   r5   r7   )r3   r4   )r0   r/   r5   r7   resolve_bindingsz This line should be unreachable.)poprD   r   r   r   r.   AssertionError)rQ   rK   r/   rE   r5   r7   
expected_h
expected_ws           rB   _parse_and_validate_image_inputz@Idefics3ForConditionalGeneration._parse_and_validate_image_inputy  s    zz.$77zz.$77L$84#/#!   
 ##)::.D#E#E  **]33K&*k&?&JJJ+#)%9''1
!C!C    ?@@@rA   inputsc                 Z    |d         }|d         }| j                             ||          S )Nr/   r5   )r5   )rJ  r/  )rQ   rX  r/   r5   s       rB   _process_image_pixelsz6Idefics3ForConditionalGeneration._process_image_pixels  s=    n-%&<=z22!5 3 
 
 	
rA   image_inputc                     |d         dk    r|d         S |                      |          }| j                            |          }|d         }d |                    |                                          D             S )Nr0   rE   rG   r7   c                 :    g | ]}|                     d d          S )r   r%   )flatten)r   es     rB   r   zIIdefics3ForConditionalGeneration._process_image_input.<locals>.<listcomp>  s$    TTTA		!QTTTrA   )rZ  rJ  r  splittolist)rQ   r[  image_featuresr7   s       rB   _process_image_inputz5Idefics3ForConditionalGeneration._process_image_input  s     v.00v&&33K@@--n==!-0TT)=)=k>P>P>R>R)S)STTTTrA   c                 N     | j         di |}|g S |                     |          S )Nr@   )rW  rc  )rQ   rK   r[  s      rB   embed_multimodalz1Idefics3ForConditionalGeneration.embed_multimodal  s9    :d:DDVDDI((555rA   r   r2  r3  r4  c                 J    |d }| j                             ||||          }|S r6  )rJ  r  )rQ   r   r2  r3  r4  rK   r7  s          rB   r   z(Idefics3ForConditionalGeneration.forward  s=      + M
--y"6m . 
 
 rA   r7  c                 <    |                      | j        |          }|S rN   )rP  rK  )rQ   r7  logitss      rB   compute_logitsz/Idefics3ForConditionalGeneration.compute_logits  s    &&t|]CCrA   weightsc                 J    t          |           }|                    |          S rN   )r+   load_weights)rQ   rj  loaders      rB   rl  z-Idefics3ForConditionalGeneration.load_weights  s#    "4((""7+++rA   c                 0    t          j        ddd          S )z<
        Get the module prefix in multimodal models
        zmodel.text_modelzmodel.connectorzmodel.vision_model)language_modelr  tower_model)r   from_string_fieldrT   s    rB   get_mm_mappingz/Idefics3ForConditionalGeneration.get_mm_mapping  s'     /-',
 
 
 	
rA   num_image_tokensc                 .    | j         }|j        }||dz  z  S r\   r   r   )rQ   rs  r  r   s       rB   get_num_mm_encoder_tokensz:Idefics3ForConditionalGeneration.get_num_mm_encoder_tokens  s"     K	 -,/11rA   num_vision_tokensc                 .    | j         }|j        }||dz  z  S r\   ru  )rQ   rw  r  r   s       rB   get_num_mm_connector_tokensz<Idefics3ForConditionalGeneration.get_num_mm_connector_tokens  s"     K	 - L!O33rA   r8  )!r9   r:   r;   packed_modules_mappingclassmethodr   r`   rF  r   r   r   rH   rW  r.   r>   r?   rZ  r   rc  r'   re  r"   r   ri  r   r   setrl  r   rr  rv  ry  r   r   s   @rB   r;  r;  @  s       
 
 
 

 
 =3 =3 =3: = = = [= BD O O Oz O3 O O O O O O@A A;QUCU A A A A8
,D 
 
 
 
 
U U 
U\*	*U U U U6 64H 6 6 6 6 <@-1 < < 2D8	
 |d*  
+	+   "EL U\    ,HU33D-E$F ,3s8 , , , ,
 
 
 
 
22 
2 2 2 244 
4 4 4 4 4 4 4 4rA   r;  )Nr<   rp   collections.abcr   r   r   typingr   r   r   r>   r	   transformersr
   r   r   r   vllm.configr   vllm.config.multimodalr   !vllm.model_executor.layers.linearr   +vllm.model_executor.layers.logits_processorr   'vllm.model_executor.layers.quantizationr   3vllm.model_executor.layers.vocab_parallel_embeddingr   )vllm.model_executor.models.module_mappingr   vllm.multimodalr   vllm.multimodal.inputsr   r   r   vllm.multimodal.parser   r   r   vllm.multimodal.processingr   r   r   r   r    r!   vllm.sequencer"   vllm.utils.tensor_schemar#   r$   idefics2_vision_modelr&   r  
interfacesr'   r(   r)   llamar*   utilsr+   r,   r.   rD   rH   r=   rJ   r   r   Moduler   r   r
  register_processorr;  r@   rA   rB   <module>r     s  " I H H  7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0                   # " " " " " 3 3 3 3 3 3 > > > > > > G G G G G G F F F F F F N N N N N N D D D D D D / / / / / /         
 V U U U U U U U U U                . - - - - - > > > > > > > >              
       2 2 2 2 2 2 2 2< < < < <| < < < 	? 	? 	? 	? 	?< 	? 	? 	? 24PPY P P PC
 C
 C
 C
 C
/ C
 C
 C
L
 
 
 
 
!78N!O 
 
 
@_
 _
 _
 _
 _
"9:P"Q _
 _
 _
D    	   ."# "# "# "# "#	 "# "# "#JU U U U UBI U U Up ('	+  
`4 `4 `4 `4 `4ry2Dl `4 `4 
`4 `4 `4rA   