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   úM/home/ubuntu/vllm_env/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   