o
    
۾i1	                     @   s2   d dl mZ d dlZd dlZeG dd dZdS )    )	dataclassNc                   @   s   e Zd ZU ejed< ee ed< ejed< ejed< ejed< ejed< ejed< dd	 Ze	deee  d
ej
dd fddZdS )SpecDecodeMetadatadraft_token_idsnum_draft_tokenscu_num_draft_tokenscu_num_sampled_tokenstarget_logits_indicesbonus_logits_indiceslogits_indicesc                 C   s   t | j| _d S )N)maxr   max_spec_len)self r   P/home/ubuntu/.local/lib/python3.10/site-packages/vllm/v1/spec_decode/metadata.py__post_init__   s   z SpecDecodeMetadata.__post_init__devicereturnc              	   C   s   t |}dd |D }dd |D }t|g }t |}tj|tj|d}tj|tjd}	t|	|}
tj|tjd}t||}tj	|tj|d}tj	|tj|d}tj	|| tj|d}| |||
||||dS )Nc                 S   s   g | ]}t |qS r   len.0idsr   r   r   
<listcomp>$   s    z1SpecDecodeMetadata.make_dummy.<locals>.<listcomp>c                 S   s   g | ]}t |d  qS )   r   r   r   r   r   r   %   s    )dtyper   )r   )r   r   r   r   r   r	   r
   )
r   sumtorchtensorint32npcumsum
from_numpytozeros)clsr   r   
batch_sizer   num_sampled_tokensflattened_draft_token_ids
num_tokensdraft_token_ids_tensorr   cu_num_draft_tokens_tensorr   cu_num_sampled_tokens_tensorr   r	   r
   r   r   r   
make_dummy   s<   

zSpecDecodeMetadata.make_dummyN)__name__
__module____qualname__r   Tensor__annotations__listintr   classmethodr   r,   r   r   r   r   r   	   s"   
 






r   )dataclassesr   numpyr   r   r   r   r   r   r   <module>   s
   