o
    .i1	                     @   s   d dl mZ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Z d dlmZmZ d dlmZ er@d d	lmZ d d
lmZ e	eZG dd deZdS )    )ABCabstractmethod)Iterator)TYPE_CHECKINGN)init_logger)AttentionBackend)LoadStoreSpecOffloadingManager)OffloadingHandler)
VllmConfig)KVCacheConfigc                   @   sz   e Zd ZdZ				dddZedefd	d
Zedee	e
jf dee	ee f deeee ee ef  fddZdS )OffloadingSpecz Spec for an offloading connectorvllm_configr   kv_cache_configKVCacheConfig | Nonec                 C   sh   t d || _|| _|j}|d usJ |j| _|jj| _	t
| jd| j	| _| j| j	 dks2J d S )NzsInitializing OffloadingSpec. This API is experimental and subject to change in the future as we iterate the design.
block_sizer   )loggerwarningr   r   kv_transfer_configkv_connector_extra_configextra_configcache_configr   gpu_block_sizeintgetoffloaded_block_size)selfr   r   r    r   T/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/vllm/v1/kv_offload/spec.py__init__   s   
zOffloadingSpec.__init__returnc                 C      dS )z
        Get an OffloadingManager that will be used
        by the scheduler-side offloading connector to track
        offloaded blocks and manage evictions.
        Nr   )r   r   r   r   get_manager-   s   zOffloadingSpec.get_manager	kv_cachesattn_backendsc                 C   r!   )aM  
        Get offloading handlers along with their respective src and dst types.

        Args:
            kv_caches: A dictionary of layer_name -> gpu_kv_cache tensor.
            attn_backends: A dictionary of layer_name -> AttentionBackend.

        Yields:
            Tuples of (src_type, dst_type, offloading_handler).
        Nr   )r   r#   r$   r   r   r   get_handlers6   s   zOffloadingSpec.get_handlersN)r   r   r   r   )__name__
__module____qualname____doc__r   r   r	   r"   dictstrtorchTensortyper   r   tupler   r
   r%   r   r   r   r   r      s"    
r   )abcr   r   collections.abcr   typingr   r,   vllm.loggerr   vllm.v1.attention.backendr   vllm.v1.kv_offload.abstractr   r	    vllm.v1.kv_offload.worker.workerr
   vllm.configr   vllm.v1.kv_cache_interfacer   r&   r   r   r   r   r   r   <module>   s   