
    -`i60                        d dl mZ d dlmZ d dlmZmZmZmZm	Z	 d dl
mZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ erd dlmZ  ee          Zed         Zed         Zee G d d                                  ZdS )    )Callable)InitVar)TYPE_CHECKINGAnyClassVarLiteralcast)Fieldfield_validator)	dataclass)Self)config)init_logger)	safe_hash)resolve_obj_by_qualname)SchedulerInterface)generatepoolingdraft)fcfspriorityc                      e Zd ZU dZee         ed<   	 ee         ed<   	 dZe	e         ed<   dZ
e	e         ed<   dZeed	<   	  eed
          Zeed<   	  ee
d
          Zeed<   	  ed
d
          Zeed<   	  ed
d
          Zeed<   	 dZeed<   	 dZeed<   	 dZeed<   	  ed          Zeed<   	  ed          Zeed<   	 dZeed<   	 dZeed<   	  ed          Zeee         z  ed<   	 dZedz  ed<   	  ed          Zeed <   	  ed
d
          Z eed!<   	 e!d"             Z"d#ed$         fd%Z#d#efd&Z$ e%dd d'(          e&d)e'd*e(d#e'fd+                        Z)deded#dfd,Z*ded#e+fd-Z,dS ).SchedulerConfigzScheduler configuration.max_model_lenis_encoder_decoderi   DEFAULT_MAX_NUM_BATCHED_TOKENS   DEFAULT_MAX_NUM_SEQSr   runner_type   )defaultgemax_num_batched_tokensmax_num_seqsmax_num_partial_prefillsmax_long_partial_prefillsr   long_prefill_token_thresholdTenable_chunked_prefillFis_multimodal_model)initmax_num_encoder_input_tokensencoder_cache_sizer   policydisable_chunked_mm_inputN)r!   scheduler_clsdisable_hybrid_kv_cache_managerasync_schedulingstream_intervalc                  >    d| vrd| d<   d| vrd| d<   t          di | S )z`
        Factory method to create `SchedulerConfig` with default values for `InitVar`s.
        r   i    r   F )r   )kwargss    i/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/config/scheduler.pydefault_factoryzSchedulerConfig.default_factory   sC    
 &((&*F?#v--+0F'((((((    returnr   c                    | j         | j        rddlm} |S ddlm} |S t                              d| j                    t          | j         t                    s t          t          d         | j                   S t          | j                   S )Nr   )AsyncScheduler)	SchedulerzpUsing custom scheduler class %s. This scheduler interface is not public and compatibility may not be maintained.r   )r/   r1   "vllm.v1.core.sched.async_schedulerr;   vllm.v1.core.sched.schedulerr<   loggerwarning_once
isinstancestrr	   typer   )selfr;   r<   s      r6   get_scheduler_clsz!SchedulerConfig.get_scheduler_cls   s    %$ &MMMMMM%%>>>>>>
 	B	
 	
 	

 $,c22 	H12D4FGGG&t'9:::r8   c                     g }|                     | j                   t          t          |                                          d                                          }|S )a  
        WARNING: Whenever a new field is added to this config,
        ensure that it is included in the factors list if
        it affects the computation graph.

        Provide a hash that uniquely identifies all the configs
        that affect the structure of the computation
        graph from input ids/embeddings to the final hidden states,
        excluding anything before input ids/embeddings and after
        the final hidden states.
        F)usedforsecurity)appendr#   r   rB   encode	hexdigest)rD   factorshash_strs      r6   compute_hashzSchedulerConfig.compute_hash   sU       	t2333S\\0022EJJJTTVVr8   wrap)modevaluehandlerc                      |dn
 ||          S )zFSkip validation if the value is `None` when initialisation is delayed.Nr4   )clsrP   rQ   s      r6   _skip_none_validationz%SchedulerConfig._skip_none_validation   s     }tt''%..8r8   c                    |r/d| _         d| _        d| _        t                              d           | j        | _        | j        | _        | j        r t                              d| j                   | j        dk    rN| j        dk    rt          |dz            | _        t                              d| j        | j
        | j                   |                     |           d S )	NTFr   zYEncoder-decoder models do not support chunked prefill nor prefix caching; disabling both.z:Chunked prefill is enabled with max_num_batched_tokens=%d.r    g{Gz?zConcurrent partial prefills enabled with max_num_partial_prefills=%d, max_long_partial_prefills=%d, long_prefill_token_threshold=%d)r.   r(   r'   r?   infor#   r+   r,   r%   intr&   verify_max_model_len)rD   r   r   s      r6   __post_init__zSchedulerConfig.__post_init__   s     	,0D)*/D'01D-KK3  
 -1,G)"&"=& 	KKL+  
 (1,,0A55478L4M4M1KK2 -.1   	!!-00000r8   c                 &   | j         |k     r"| j        st          d| j          d| d          | j         | j        k     r t          d| j          d| j         d          | j         | j        |z  k    r)t                              d| j         | j        |z             | j        dk    r<| j        st          d          | j        |k    rt          d	| j         d
| d          | j        | j        k    r t          d| j        d| j        d          | S )Nzmax_num_batched_tokens (z!) is smaller than max_model_len (z). This effectively limits the maximum sequence length to max_num_batched_tokens and makes vLLM reject longer sequences. Please increase max_num_batched_tokens or decrease max_model_len.z1) must be greater than or equal to max_num_seqs (z).zlmax_num_batched_tokens (%d) exceeds max_num_seqs * max_model_len (%d). This may lead to unexpected behavior.r    zDChunked prefill must be enabled to set max_num_partial_prefills > 1.zlong_prefill_token_threshold (z,) cannot be greater than the max_model_len (zself.max_long_partial_prefills=z= must be less than or equal to self.max_num_partial_prefills=.)	r#   r(   
ValueErrorr$   r?   warningr%   r'   r&   )rD   r   s     r6   rX   z$SchedulerConfig.verify_max_model_len   s   '-77/ 8 *4+F * */<* * *   &):::*4+F * *%* * *   &):])JJJNNN+!M1	   (1,,.  4  
 0=@@ A9A A/<A A A   )D,III541 5 505 5 5  
 r8   )-__name__
__module____qualname____doc__r   rW   __annotations__boolr   r   r   r   
RunnerTyper
   r#   r$   r%   r&   r'   r(   r)   r+   r,   r-   SchedulerPolicyr.   r/   rB   rC   objectr0   r1   r2   staticmethodr7   rE   rM   r   classmethodr   r   rT   rY   r   rX   r4   r8   r6   r   r      ss         #"3<8
  %%% 59"HSM888*-(3----(K(((2"'%0NST"U"U"UCUUU &:qAAAL#AAA %*E!$:$:$:c:::) &+U1%;%;%;s;;;N
 )* #)))* $(D''' !&%%%* ).5(9(9(9 #999O $e//////O
 %FO$$$M &+d***L ).d(;(;(;M3f%;;;  48#TD[777 #U4000d000 !5q111OS1113
 ) ) \);4(<#= ; ; ; ;,c    8 __&8vFFF9# 9 9S 9 9 9 [ GF9!13 !1D !1T !1 !1 !1 !1F1# 1$ 1 1 1 1 1 1r8   r   N) collections.abcr   dataclassesr   typingr   r   r   r   r	   pydanticr
   r   pydantic.dataclassesr   typing_extensionsr   vllm.config.utilsr   vllm.loggerr   vllm.utils.hashingr   vllm.utils.import_utilsr   vllm.v1.core.sched.interfacer   r^   r?   rd   re   r   r4   r8   r6   <module>rt      sk   % $ $ $ $ $       > > > > > > > > > > > > > > + + + + + + + + * * * * * * " " " " " " $ $ $ $ $ $ # # # # # # ( ( ( ( ( ( ; ; ; ; ; ; @??????	X		34
,- 
K K K K K K K  K K Kr8   