
    .`i]                     |   d dl 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
 d dlmZ d dlmZmZ d dlmZmZ  e
e          Z G d	 d
e          Z	 	 	 	 	 ddedej        dedz  dedz  dedededededz  dee         fdZededee         fd            Zdedee         fdZededee         fd            ZdS )    )cache)
NamedTuplecastget_argsN)
CacheDType)init_logger)resolve_obj_by_qualname)AttentionBackendAttentionType)MAMBA_TYPE_TO_BACKEND_MAPMambaAttentionBackendEnumc                       e Zd ZU eed<   ej        ed<   edz  ed<   edz  ed<   dZe	ed<   dZ
e	ed<   dZe	ed	<   dZe	ed
<   ej        Zeed<   d ZdS )AttentionSelectorConfig	head_sizedtypeNkv_cache_dtype
block_sizeFuse_mlahas_sink
use_sparseuse_mm_prefix	attn_typec                     d| j          d| j         d| j         d| j         d| j         d| j         d| j         d| j         d	| j         d
S )Nz"AttentionSelectorConfig(head_size=z, dtype=z, kv_cache_dtype=z, block_size=z
, use_mla=z, has_sink=z, use_sparse=z, use_mm_prefix=z, attn_type=)	r   r   r   r   r   r   r   r   r   )selfs    n/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/v1/attention/selector.py__repr__z AttentionSelectorConfig.__repr__    s    + + +Z+ +"1+ + /+ + |	+ +
 + + /+ + "/+ + + + +
	
    )__name__
__module____qualname__int__annotations__torchr   r   r   boolr   r   r   r   DECODERr   strr    r   r   r   r      s         NNN;%%%%d
GTHdJM4"*Is***
 
 
 
 
r   r   Fr   r   r   r   r   r   r   r   r   returnc	                 $   |(t          t                    }	||	v sJ d| d|	             ddlm}
  |
            }|j        j        }t          | |t          t          dz  |          ||||||pt          j	        	  	        }t          ||          S )z=Selects which attention backend to use and lazily imports it.NzInvalid kv_cache_dtype: z. Valid values are: r   )get_current_vllm_configr   )backendattn_selector_config)r   r   vllm.configr,   attention_configr-   r   r   r   r'   _cached_get_attn_backend)r   r   r   r   r   r   r   r   r   valid_cache_dtypesr,   vllm_configbackend_enumr.   s                 r   get_attn_backendr5   .   s     !%j11!33336~ 6 6!36 6 433
 433333))++K/7L2J-~>>#4}4
 
 
 $1   r   r.   c                 :   ddl m} |                    | |          }|st          d|j                   t          |          } |                                 }|?ddlm}  ||           t          
                    d||                                            | S )Nr   )current_platform)r.   zInvalid attention backend for )set_kv_cache_layoutz(Using %s KV cache layout for %s backend.)vllm.platformsr7   get_attn_backend_cls
ValueErrordevice_namer	   get_required_kv_cache_layout vllm.v1.attention.backends.utilsr8   loggerinfoget_name)r-   r.   r7   attention_clsrequired_layoutr8   s         r   r1   r1   Y   s    
 0/////$991 :  M  
K-=-IKK
 
 	
 &m44G ::<<O"HHHHHHO,,,6	
 	
 	
 Nr   
mamba_typec                      t          |           S )zASelect which mamba attention backend to use and lazily import it.)_cached_get_mamba_attn_backend)rD   s    r   get_mamba_attn_backendrG   y   s     **555r   c           
      >   | rt          | t                    sJ d }	 t          |          }t          |         }nQ# t          $ rD}t          d| dt          t          j                                                             |d }~ww xY w|	                                }|S )Nz'Invalid mamba attention backend type: 'z'. Valid backends are: )

isinstancer(   r   r   KeyErrorr;   list__members__keys	get_class)rD   selected_backendbackend_nameemamba_attn_backends        r   rF   rF      s     5*Z555550<4\B   Rl R R!";"G"L"L"N"NOOR R
 
 	 *3355s   8 
B?BB)FFFFN)	functoolsr   typingr   r   r   r%   vllm.config.cacher   vllm.loggerr   vllm.utils.import_utilsr	   vllm.v1.attention.backendr
   r   #vllm.v1.attention.backends.registryr   r   r    r?   r   r#   r   r(   r&   typer5   r1   rG   rF   r)   r   r   <module>r[      s2         - - - - - - - - - -  ( ( ( ( ( ( # # # # # # ; ; ; ; ; ; E E E E E E E E       
 
X		
 
 
 
 
j 
 
 
<  ( ((;( $J( d
	(
 ( ( ( ( Tz( 

( ( ( (V 1 

   >66	
6 6 6 6 	
     r   