
    -`i'                        U d dl mZ d dlmZmZ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 e G d d	                      Z e ed
                     G d de                      Z e ed
                     G d de                      Z e ed
                     G d de                      Zed         Zed         Zeez  ez  ez  Zeed<   ee G d d                                  ZdS )    )Mapping)AnyLiteral	TypeAlias)
ConfigDictFieldfield_validatormodel_validator)	dataclass)config)	safe_hash)AttentionBackendEnumc                   8    e Zd ZU dZ edd          Zeed<   dS )BaseDummyOptionsz8Base options for generating dummy data during profiling.  r   )gecountN)__name__
__module____qualname____doc__r   r   int__annotations__     j/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/config/multimodal.pyr   r      s7         BBsq!!!E3!!!!!r   r   forbid)extrac                       e Zd ZU dZ edd          Zedz  ed<    edd          Zedz  ed<    edd          Z	edz  ed<   dS )VideoDummyOptionsz9Options for generating dummy video data during profiling.Nr   gt
num_frameswidthheight)
r   r   r   r   r   r#   r   r   r$   r%   r   r   r   r    r       s         CC"U4A...Jd
...dq)))E3:)))t***FC$J*****r   r    c                   h    e Zd ZU dZ edd          Zedz  ed<    edd          Zedz  ed<   dS )ImageDummyOptionsz9Options for generating dummy image data during profiling.Nr   r!   r$   r%   )	r   r   r   r   r   r$   r   r   r%   r   r   r   r'   r'      s^         CCdq)))E3:)))t***FC$J*****r   r'   c                   >    e Zd ZU dZ edd          Zedz  ed<   dS )AudioDummyOptionsz9Options for generating dummy audio data during profiling.Nr   r!   length)r   r   r   r   r   r*   r   r   r   r   r   r)   r)   '   s;         CCt***FC$J*****r   r)   )weightsdata)shmlruDummyOptionsc            	          e Zd ZU dZ ee          Zeeef         e	d<   	 dZ
ee	d<   	  ee          Zeeeeef         f         e	d<   	 dZeeef         dz  e	d<   	  ed	d
          Zee	d<   	 dZee	d<   	  edd
          Zee	d<   	 dZee	d<   	 dZee	d<   	 dZedz  e	d<   	 dZee	d<   	 dZee	d<   	  eddd          Zedz  e	d<   	  edd          edeeeeeef         z  f         deeef         fd                        Z  edd          edeez  dz  dedz  fd                         Z! e"d!          d"             Z#defd#Z$d$edefd%Z%d$ede&dz  fd&Z'd'e(eef         deeef         fd(Z)d) Z*dS )*MultiModalConfigz+Controls the behavior of multimodal models.)default_factorylimit_per_promptFenable_mm_embedsmedia_io_kwargsNmm_processor_kwargs   r   )defaultr   mm_processor_cache_gbr.   mm_processor_cache_type   mm_shm_cache_max_object_size_mbmm_encoder_onlyr+   mm_encoder_tp_modemm_encoder_attn_backendinterleave_mm_stringsskip_mm_profilingg        g      ?)r8   r   ltvideo_pruning_ratebefore)modevaluereturnc                    |                                 D ]o\  }}t          |t                    rd|i}|dk    rt          di |||<   4|dk    rt	          di |||<   J|dk    rt          di |||<   `t          di |||<   p|S )Nr   videoimageaudior   )items
isinstancer   r    r'   r)   r   )clsrF   kvs       r   _validate_limit_per_promptz+MultiModalConfig._validate_limit_per_prompt   s    
 KKMM 	1 	1DAq!S!! !aLG||,11q11ag,11q11ag,11q11a+00a00ar   c                 (   t          |t                    r'|                                dk    rt          d          |t          |t                    r|S t          |t                    s
J d            t          |                                         S )NXFORMERSzwAttention backend 'XFORMERS' has been removed (See PR #29262 for details). Please select a supported attention backend.zDmm_encoder_attn_backend must be a string or an AttentionBackendEnum.)rM   strupper
ValueErrorr   )rN   rF   s     r   !_validate_mm_encoder_attn_backendz2MultiModalConfig._validate_mm_encoder_attn_backend   s    
 eS!! 	ekkmmz&A&AI  
 =Ju.BCC=L%%% 	
 	
R	
 	
% $EKKMM22r   afterc                 d    | j         dk    r$| j        t          j        k    rt          d          | S )Nr-   z]'mm_shm_cache_max_object_size_mb' should only be set when 'mm_processor_cache_type' is 'shm'.)r:   r<   r1   rV   selfs    r   _validate_multimodal_configz,MultiModalConfig._validate_multimodal_config   sH    '5000?@ @ 6   r   c                     | j         | j         j        nd| j        g}t          t	          |                                          d                                          }|S )a  
        WARNING: Whenever a new field is added to this config,
        ensure that it is included in the factors list if
        it affects the computation graph.

        Provide a hash that uniquely identifies all the configs
        that affect the structure of the computation
        graph from input ids/embeddings to the final hidden states,
        excluding anything before input ids/embeddings and after
        the final hidden states.
        NF)usedforsecurity)r?   namer>   r   rT   encode	hexdigest)r[   factorshash_strs      r   compute_hashzMultiModalConfig.compute_hash   sb     +7 (--#	
 S\\0022EJJJTTVVr   modalityc                 L    | j                             |          }|dS |j        S )z
        Get the maximum number of input items allowed per prompt
        for the given modality (backward compatible).
        Nr   )r3   getr   )r[   re   
limit_datas      r   get_limit_per_promptz%MultiModalConfig.get_limit_per_prompt   s.    
 *..x88
3r   c                 6    | j                             |          S )z
        Get the configurable dummy data options for a modality.
        Returns None if no options are configured for this modality.
        )r3   rg   )r[   re   s     r   get_dummy_optionsz"MultiModalConfig.get_dummy_options   s     $((222r   inference_kwargsc                 8    | j         pi }|t          |          z  S )z
        Get the keyword arguments to pass to the multi-modal processor
        according to the extra arguments passed during inference.
        )r6   dict)r[   rl   kwargss      r   merge_mm_processor_kwargsz*MultiModalConfig.merge_mm_processor_kwargs   s%     )/R-....r   c                 *    | j         d uo
| j         dk    S )Nr   )rC   rZ   s    r   is_multimodal_pruning_enabledz.MultiModalConfig.is_multimodal_pruning_enabled   s    &d2Rt7NQR7RRr   )+r   r   r   r   r   rn   r3   rT   r/   r   r4   boolr5   r   r6   objectr9   floatr:   MMCacheTyper<   r   r=   r>   MMEncoderTPModer?   r   r@   rA   rC   r	   classmethodrQ   rW   r
   r\   rd   ri   r   rk   r   rp   rr   r   r   r   r1   r1   5   sp         6505d0K0K0Kd3,-KKK #d"""0 27t1L1L1LOT#tCH~-.LLL< 59c6k*T1888 $)5q#9#9#95999F ,1[000G+05+C+C+C#SCCC "OT!!!
 +4333; <@1D8???W #(4'''.#t### (-uTcc'J'J'JJJJ
 _'h777cDcN223	c<	    [ 87$ _.X>>>3..53		$3 3 3 [ ?>3" _'"""	 	 #"	c    *
 S 
 S 
  
  
  
 3# 32BT2I 3 3 3 3	/!#v+.	/ 
c6k		/ 	/ 	/ 	/S S S S Sr   r1   N)collections.abcr   typingr   r   r   pydanticr   r   r	   r
   pydantic.dataclassesr   vllm.config.utilsr   vllm.utils.hashingr   #vllm.v1.attention.backends.registryr   r   r    r'   r)   rw   rv   r/   r   r1   r   r   r   <module>r      sn   $ # # # # # # * * * * * * * * * * H H H H H H H H H H H H * * * * * * $ $ $ $ $ $ ( ( ( ( ( ( D D D D D D " " " " " " " " **8,,,---+ + + + +( + + .-+ **8,,,---+ + + + +( + + .-+ **8,,,---+ + + + +( + + .-+ +,l#((+<<?PP i   
 
GS GS GS GS GS GS GS  GS GS GSr   