
    -`i/                        d dl Z d dlZd dlZd dl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 d dlmZ d d	lmZ d
dlmZmZ d
dlmZ 	 d dlZn# e$ r  ed          ZY nw xY w ed
          dee         fd            Zdedee         defdZ dedee         dedefdZ!de"ee#f         dedede$de"ee#f         f
dZ%de&e         de'edf         de&e         fdZ(de&e         d e
de&e         fd!Z)d"e
d#ed$ede
fd%Z*d&e
de$dz  de
fd'Z+d(e&e         dedede$d e
d)ed*ede"ee#f         dz  fd+Z,d(e&e         d#ed$ed&e
d,e$d)ed*ede&e"ee#f                  dz  fd-Z-d(e&e         d.ed/ed"e
d,e$d)ed*edd0fd1Z.e G d2 d3                      Z/d4e/fd5Z0d4e j1        fd6Z2e3d7k    rJ e j4        e/j5        8          Z6e/                    e6            e2e67                                           dS dS )9    N)	dataclass)datetime)	lru_cache)Path)ClassVar)add_cli_args)FlexibleArgumentParser)PlaceholderModule   )ParameterSweepParameterSweepItem)sanitize_filenamepandas)maxsizereturnc                  |   t          d          } t          |            dh}| j        D ]}|j        r-|j        t          j        ur|                    |j                   |j        D ]S}|                    d          r<|                    |	                    d          
                    dd                     T|S )NF)add_helpconfigz---_)r	   add_startup_cli_args_actionsdestargparseSUPPRESSaddoption_strings
startswithlstripreplace)parser	supportedactionoptions       q/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/benchmarks/sweep/startup.py_get_supported_startup_keysr&      s    #U333F   #*I/ D D; 	'6;h.???MM&+&&&+ 	D 	DF  && DfmmC0088cBBCCC	D     	param_keyr"   c                 ~    | dk    rdS |                      dd          d         }|                    dd          }||v S )N_benchmark_nameT.r   r   r   r   )splitr    )r(   r"   prefix
normalizeds       r%   _is_supported_paramr/   *   sI    %%%t__S!$$Q'FS))J""r'   paramsstrictc          	         g }| D ]}i }g }|                                 D ]0\  }}t          ||          r|||<   |                    |           1|r|                    d          p|                                }	d|	rdt          |	          z   nd dd                    t          |                     }
|rt          |
          t          |
           |                    t          j        |                     t          |          S )Nr*   z#Ignoring unsupported startup paramsz for  z: z, )itemsr/   appendgetas_textstrjoinsorted
ValueErrorprintr   from_recordr   )r0   r"   r1   filtereditemkeptdroppedkeyvaluelabelmessages              r%   _filter_paramsrF   2   s3    H > >"$**,, 	$ 	$JC"3	22 $!S		s#### 		HH.//A4<<>>E0+087SZZ''b0 099VG__--0 0 
  * )))'NNN*6t<<====(###r'   run_dataserve_overridesstartup_overrides
run_numberc                 d    || d<   |                      |           |                      |           | S )NrJ   )update)rG   rH   rI   rJ   s       r%   _update_run_datarM   O   s8     (H\OOO$$$OO%&&&Or'   cmdkeys.c                     g }d}| D ]?|rd}|v rd}t          fd|D                       r*|                               @|S )NFTc              3   H   K   | ]}                     | d           V  dS )=N)r   ).0rB   args     r%   	<genexpr>z_strip_arg.<locals>.<genexpr>e   s5      99Ss~~iii((999999r'   )anyr5   )rN   rO   stripped	skip_nextrT   s       @r%   
_strip_argrY   [   s    HI 	 	 	I$;;I9999D99999 	Or'   output_pathc                 \    d}t          | |          } g | |d         t          |          S )N)z--output-jsonz--output_jsonr   )rY   r8   )rN   rZ   rO   s      r%   _apply_output_jsonr\   k   s7    -D
S$

C,S,$q',3{++,,r'   
output_dir
serve_combstartup_combc                     t          t                               }|r|                    d|j        f           |r|                    d|j        f           | t	          d                    |                    z  S )NzSERVE-zSTARTUP-r   )listr8   extendnamer   r9   )r]   r^   r_   partss       r%   _get_comb_base_pathre   q   sr    
 IKKE 2h
0111 6j,"34555)#((5//::::r'   	base_pathc                 "    || dz  S | d| dz  S )Nzsummary.jsonzrun=z.json )rf   rJ   s     r%   _get_comb_run_pathri   ~   s*    >))/j/////r'   startup_cmdshow_stdoutdry_runc                8   |                     |           }|                     |          }t          ||          }t          d           t          d|            t          d|            t          d|            t          d|            t          d|            |                                rdt          d           |                    dd	
          5 }t          j        |          }	t          |	|||          cd d d            S # 1 swxY w Y   |rt          d           d S |j        	                    dd           t          j        ||rd nt          j        d           |                    dd	
          5 }t          j        |          }	d d d            n# 1 swxY w Y   t          |	|||          }	|                    dd	
          5 }t          j        |	|d           d d d            n# 1 swxY w Y   t          d           |	S )Nz[BEGIN BENCHMARK]zServe overrides: zStartup overrides: zRun Number: zBenchmark command: zOutput file: z!Found existing results. Skipping.rutf-8encodingz[END BENCHMARK]T)parentsexist_ok)stdoutcheckw   indent)apply_to_cmdr\   r<   existsopenjsonloadrM   parentmkdir
subprocessrunDEVNULLdump)
rj   rH   rI   rJ   rZ   rk   rl   rN   frG   s
             r%   run_benchmarkr      s
    
&
&{
3
3C

(
(
-
-C
S+
.
.C	
	
/o
/
/000	
3 1
3
3444	
%
%
%&&&	
%
%
%&&&	
'+
'
'((( 1222cG44 	y||H#/+<j 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	     tTD999N":tt
(:    
		#		0	0  A9Q<<                               /#4j H 
		#		0	0 )A	(Aa(((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 

Os6   &DDDF((F,/F,H  HHnum_runsc                   t          t          t          t          f                              }t	          |          D ]=}t          | |||t          ||          ||          }	|	|                    |	           >|rd S t          |d                               dd          5 }
t          j
        ||
d           d d d            n# 1 swxY w Y   |S )N)rH   rI   rJ   rZ   rk   rl   )rJ   rv   ro   rp   rw   rx   )ra   dictr8   objectranger   ri   r5   r|   r}   r   )rj   r^   r_   rf   r   rk   rl   	comb_datarJ   rG   r   s              r%   run_combr      s.    T#v+&'))IHoo ' '
 &*!*9jAA#
 
 
 X&&& t	I$	7	7	7	<	<g 
= 
 
 *	
	)Qq))))* * * * * * * * * * * * * * *
 s   #CCCserve_paramsstartup_paramszpd.DataFrame | Nonec                b   t          t          t          t          f                              }|D ]E}|D ]@}	t	          |||	          }
t          | ||	|
|||          }||                    |           AF|rd S t          j        	                    |          }|
                    |dz             |S )N)r^   r_   rf   r   rk   rl   zsummary.csv)ra   r   r8   r   re   r   rb   pd	DataFramefrom_recordsto_csv)rj   r   r   r]   r   rk   rl   all_datar^   r_   rf   r   combined_dfs                r%   	run_combsr      s     Df%&((H" + +
* 	+ 	+L+J
LQQI %)#!'  I $	***	+  t,++H55KzM1222r'   c                   
   e Zd ZU ee         ed<   eed<   eed<   eed<   eed<   e	ed<   e	ed<   edz  ed	<   e	ed
<   dZ
ee         ed<   dZee         ed<   edej        fd            Zedej        dej        fd            ZdS )SweepStartupArgsrj   r   r   r]   r   rk   rl   Nresumestrict_paramsstartupparser_namez8Benchmark vLLM startup time over parameter combinations.parser_helpargsc                 6   t          j        |j                  }|j        rt	          j        |j                  }nt	          j        i g          }|j        rt	          j        |j                  }nt	          j        i g          }t                      }t          |||j
                  }t          |||j
                  }|j        dk     rt          d           | |||t          |j                  |j        |j        |j        |j        |j
        	  	        S )N)r"   r1   r   z `num_runs` should be at least 1.)	rj   r   r   r]   r   rk   rl   r   r   )shlexr,   rj   r   r   	read_jsonr   r   r&   rF   r   r   r;   r   r]   rk   rl   r   )clsr   rj   r   r   r"   s         r%   from_cli_argszSweepStartupArgs.from_cli_args  s)   k$"233 	=)3D4EFFLL)6t<<L 	?+5d6IJJNN+8">>N/11	%Id6H
 
 
 (i8J
 
 
 =1?@@@s#%)DO,,](L;,

 

 

 
	
r'   r!   r   c                     |                     dt          dd           |                     dt          d d           |                     dt          d d           |                     d	d
t          dd           |                     dt          dd           |                     ddd           |                     ddd           |                     dt          d d           |                     ddd           |S )Nz--startup-cmdzvllm bench startupz.The command used to run the startup benchmark.)typedefaulthelpz--serve-paramszPath to JSON file containing parameter combinations for the `vllm serve` command. Only parameters supported by `vllm bench startup` will be applied.z--startup-paramszYPath to JSON file containing parameter combinations for the `vllm bench startup` command.z-oz--output-dirresultsz+The directory to which results are written.z
--num-runsr   z)Number of runs per parameter combination.z--show-stdout
store_truez0If set, logs the standard output of subcommands.)r#   r   z	--dry-runzFIf set, prints the commands to run, then exits without executing them.z--resumezSet this to the name of a directory under `output_dir` (which is a timestamp) to resume a previous execution of this script, i.e., only run parameter combinations for which there are still no output files.z--strict-paramszRIf set, unknown parameters in sweep files raise an error instead of being ignored.)add_argumentr8   int)r   r!   s     r%   r   zSweepStartupArgs.add_cli_args6  s   (A	 	 	
 	
 	
 	4	 	 	
 	
 	
 	4	 	 	
 	
 	
 	> 	 	
 	
 	
 	<	 	 	
 	
 	
 	C 	 	
 	
 	

 	1 	 	
 	
 	
 	P	 	 	
 	
 	
 	( 	 	
 	
 	
 r'   )__name__
__module____qualname__ra   r8   __annotations__r   r   r   boolr   r   r   classmethodr   	Namespacer   ArgumentParserr   rh   r'   r%   r   r      s        c    """"MMMMMM$J!*K#***B #    "
!3 "
 "
 "
 ["
H <("9 <h>U < < < [< < <r'   r   r   c           	         | j         p%t          j                                        d          }| j        |z  }| j         r'|                                st          d| d          	 t          | j        | j	        | j
        || j        | j        | j                  S # t          $ r}t          d| d          |d }~ww xY w)Nz%Y%m%d_%H%M%Sz+Cannot resume from non-existent directory ())rj   r   r   r]   r   rk   rl   z/The script was terminated early. Use `--resume z2` to continue the script from its last checkpoint.)r   r   nowstrftimer]   r{   r;   r   rj   r   r   r   rk   rl   BaseExceptionRuntimeError)r   	timestampr]   excs       r%   run_mainr   v  s    Gx|~~66GGI9,J{ V:,,.. VTzTTTUUU(*.!](L
 
 
 	
    @i @ @ @
 
 	s   '3B 
B>%B99B>c                 T    t          t                              |                      d S )N)r   r   r   )r   s    r%   mainr     s%    ++D1122222r'   __main__)description)8r   r}   r   r   dataclassesr   r   	functoolsr   pathlibr   typingr   vllm.benchmarks.startupr   r   vllm.utils.argparse_utilsr	   vllm.utils.import_utilsr
   param_sweepr   r   utilsr   r   r   ImportErrorsetr8   r&   r   r/   rF   r   r   r   rM   ra   tuplerY   r\   re   ri   r   r   r   r   r   r   r   r   r   r   r!   
parse_argsrh   r'   r%   <module>r      s          ! ! ! ! ! !                         H H H H H H < < < < < < 5 5 5 5 5 5 ; ; ; ; ; ; ; ; $ $ $ $ $ $% % % %		8	$	$BBB% 1SX    #3 #3s8 # # # # #$$*-c($<@$$ $ $ $:	3;	'	 *	 		
 
#v+	 	 	 	DI U38_ c     -DI -D -T#Y - - - -
;
;"
; %
; 
	
; 
; 
; 
;0$ 0C$J 04 0 0 0 04c4 (4 *	4
 4 4 4 4 
#v+4 4 4 4n c  #  %	 
         
$sF{
t#       Fc ! #	
        D r r r r r r r rj#    03x! 3 3 3 3 z$X$1A1MNNNF!!&)))D				 s   A A('A(