
    .`i
                         d dl 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mZ d dlmZmZ  G d de          Ze G d	 d
                      Z G d dee                   ZdS )    )	dataclassN)
VllmConfig)AttentionBackendAttentionCGSupportAttentionMetadataBuilderCommonAttentionMetadata)mamba_get_block_table_tensorsplit_decodes_and_prefills)AttentionSpec	MambaSpecc                   R    e Zd Zedefd            Zeded         fd            ZdS )LinearAttentionBackendreturnc                      dS )NLINEAR_ATTN r       z/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/v1/attention/backends/linear_attn.pyget_namezLinearAttentionBackend.get_name   s    }r   LinearAttentionMetadataBuilderc                      t           S N)r   r   r   r   get_builder_clsz&LinearAttentionBackend.get_builder_cls   s    --r   N)__name__
__module____qualname__staticmethodstrr   typer   r   r   r   r   r      sf        c    \ .T"BC . . . \. . .r   r   c                   t    e Zd ZU eed<   eed<   eed<   eed<   ej        ed<   ej        ed<   ej        ed<   dS )	LinearAttentionMetadatanum_prefillsnum_prefill_tokensnum_decodesnum_decode_tokensquery_start_locseq_lensstate_indices_tensorN)r   r   r   int__annotations__torchTensorr   r   r   r!   r!      sl         \!!!l,&&&&&r   r!   c            	            e Zd ZU dZeed<   ej        Zde	de
e         dedej        f fdZ	 dd	ed
ededefdZ xZS )r      reorder_batch_thresholdkv_cache_speclayer_namesvllm_configdevicec                 ~    t                                          ||||           t          |t                    sJ d S r   )super__init__
isinstancer   )selfr0   r1   r2   r3   	__class__s        r   r6   z'LinearAttentionMetadataBuilder.__init__0   s?     	[&III-3333333r   Fcommon_prefix_lencommon_attn_metadata
fast_buildr   c           	          |j         }|j        }t          |j        |j        | j        | j        j        j                  d d df         }t          || j	                  \  }}}	}
t          ||
||	|||          }|S )Nr   )decode_threshold)r"   r#   r$   r%   r&   r'   r(   )r&   r'   r	   block_table_tensorr0   r2   cache_configmamba_cache_moder
   r/   r!   )r8   r:   r;   r<   r&   r'   r(   r$   r"   r%   r#   attn_metadatas               r   buildz$LinearAttentionMetadataBuilder.build:   s     />'0; 3 )):	 
  

 !!Q$  '$t7S   	I\#46H 0%1#/+!5
 
 
 r   )F)r   r   r   r/   r)   r*   r   UNIFORM_SINGLE_TOKEN_DECODE_cudagraph_supportr   listr   r   r+   r3   r6   r   boolr!   rC   __classcell__)r9   s   @r   r   r   +   s         #$S$$$+G4$4 #Y4  	4
 4 4 4 4 4 4 !	  6 	
 
!       r   r   )dataclassesr   r+   vllm.configr   vllm.v1.attention.backendr   r   r   r    vllm.v1.attention.backends.utilsr	   r
   vllm.v1.kv_cache_interfacer   r   r   r!   r   r   r   r   <module>rN      sM   " ! ! ! ! !  " " " " " "                   @ ? ? ? ? ? ? ?. . . . .- . . . ' ' ' ' ' ' ' '. . . . .%=>U%V . . . . .r   