
    &`i                        d dl Z d dlZd dlmZ d dlmZmZ d dl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 dZd	Zd
 Ze	j         G d d                      ZdedededefdZdedededededeeef         fdZd Zedk    r\ e	j                      e
j                      e j                    Z e j         e           e!                     e                       dS dS )    N)pprint)DictUnion)Request)serve)run_throughput_benchmark)DeploymentHandle   d   c                    K   |                      d|          4 d {V }|                                 d {V }|dk    s
J |            	 d d d           d {V  d S # 1 d {V swxY w Y   d S )Nzhttp://localhost:8000/)dataok)gettext)sessionr   responses      /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/serve/_private/benchmarks/microbenchmark.pyfetchr      s     {{3${?? * * * * * * *8!((((((4* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *s   +A
A),A)c                       e Zd Zd Zd ZdS )Clientc                     dS )Nr    selfs    r   readyzClient.ready   s    t    c                    K   t          j                    4 d {V }t          |          D ]}t          ||           d {V  	 d d d           d {V  d S # 1 d {V swxY w Y   d S N)aiohttpClientSessionranger   )r   numr   r   _s        r   
do_querieszClient.do_queries!   s     (** 	+ 	+ 	+ 	+ 	+ 	+ 	+g3ZZ + +GT**********+	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   )A
A#&A#N)__name__
__module____qualname__r   r$   r   r   r   r   r      s2          + + + + +r   r   intermediate_handlesnum_replicasmax_batch_sizemax_ongoing_requestsc                 $   t          j        d           G d d                      }t          j        ||           G fdd                      }| r'|                    |                                          S |                                S )Ni  )r+   c                   &    e Zd ZdefdZdefdZdS )build_app.<locals>.Upstreamhandlec                 v    || _         t          j        d                              t          j                   d S Nz	ray.serve)_handlelogging	getLoggersetLevelWARNING)r   r/   s     r   __init__z$build_app.<locals>.Upstream.__init__/   s2    !DL k**33GODDDDDr   reqc                 v   K   | j                             |                                 d {V            d {V S r   )r2   remotebody)r   r8   s     r   __call__z$build_app.<locals>.Upstream.__call__5   sH      ,,388::-=-=-=-=-=-=>>>>>>>>>r   N)r%   r&   r'   r	   r7   r   r<   r   r   r   Upstreamr.   -   sP        	E#3 	E 	E 	E 	E	?g 	? 	? 	? 	? 	? 	?r   r=   )r)   r+   c                   j    e Zd Zd Z ej                   d             Zdeeef         f fdZ	dS )build_app.<locals>.Downstreamc                 h    t          j        d                              t           j                   d S r1   )r3   r4   r5   r6   r   s    r   r7   z&build_app.<locals>.Downstream.__init__=   s)    k**33GODDDDDr   r*   c                 ,   K   dgt          |          z  S )N   ok)len)r   reqss     r   batchz#build_app.<locals>.Downstream.batchA   s      7SYY&&r   r8   c                 N   K   dk    r|                      |           d {V S dS )N   rC   )rF   )r   r8   r*   s     r   r<   z&build_app.<locals>.Downstream.__call__E   s9      !!!ZZ__,,,,,,,ur   N)
r%   r&   r'   r7   r   rF   r   bytesr   r<   rA   s   r   
Downstreamr?   8   s        
	E 	E 	E 
N	3	3	3	' 	' 
4	3	'	eE7N&; 	 	 	 	 	 	 	 	r   rJ   )r   
deploymentbind)r(   r)   r*   r+   r=   rJ   s     `   r   	build_apprM   '   s     4000? ? ? ? ? ? ? 10? !1          	   !}}Z__..///   r   	data_sizereturnc                 ^  K   i }d| d| d| d| d|  
}t          d|  d| d| d	| d
| 
           t          | |||          }t          j        |           |dk    rd n|dk    rddz  nt	          d          t          j                    4 d {V fd}t          |t                     d {V \  }	}
t          d	                    d	                    |          |	|
                     d| }|	||<   d d d           d {V  n# 1 d {V swxY w Y   d t          t                    D             t          j        d D                        fd}t          |t          t                    z             d {V \  }}||dt                     d| <   |S )Nzreplica:z/batch_size:z/concurrent_queries:z/data_size:z/intermediate_handle:zintermediate_handles=z,num_replicas=z,max_batch_size=z,max_ongoing_requests=z,data_size=smalllarges   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaai   z'data_size should be 'small' or 'large'.c                  f   K   t          t                    D ]} t                     d {V  d S r   )r!   CALLS_PER_BATCHr   )r#   r   r   s    r   single_clientztrial.<locals>.single_clientv   sM      ?++ + +GT**********+ +r   )
multiplierz	{} {} +- {} requests/szsingle client {} dataznum_client:1/c                 @    g | ]}t                                           S r   )r   r:   ).0r#   s     r   
<listcomp>ztrial.<locals>.<listcomp>   s     ;;;1v}};;;r   c                 @    g | ]}|j                                         S r   )r   r:   )rX   clients     r   rY   ztrial.<locals>.<listcomp>   s&    999vV\  ""999r   c                  L   K   t          j        fd D                        d S )Nc                 P    g | ]"}|j                             t                    #S r   )r$   r:   rT   )rX   ar   s     r   rY   z/trial.<locals>.many_clients.<locals>.<listcomp>   s+    MMM$$_d;;MMMr   )rayr   )clientsr   s   r   many_clientsztrial.<locals>.many_clients   s2      MMMMWMMMNNNNNr   znum_client:/)printrM   r   run
ValueErrorr   r    r   rT   formatr!   NUM_CLIENTSr_   r   rD   )r(   r)   r*   r+   rN   resultstrial_key_baseapprU   single_client_avg_tpssingle_client_std_tpskeyra   multi_client_avg_tpsr#   r`   r   r   s                  @@@r   trialro   Q   si      G	L< 	L 	L^ 	L 	L2	L 	L	L 	L5I	L 	L  
	! 4 	! 	!$	! 	!(	! 	! !5	! 	! 		! 	!   lN<P C 
IcNNNG	g		T!BCCC$&& - - - - - - -'	+ 	+ 	+ 	+ 	+ 	+ >V&>
 >
 >
 8
 8
 8
 8
 8
 8
44 	&--'..y99%% 	
 	
 	
 /n..,%- - - - - - - - - - - - - - - - - - - - - - - - - - -( <;k(:(:;;;GG99999:::O O O O O O %="S\\1% % %      !
 >RG9#g,,9999:Ns   A'D
D Dc                     K   i } dD ]@}dD ];}dD ]6\  }}dD ].}|                      t          |||||           d {V            /7<At          d           t          |            | S )N)FT)rH   r
   ))rH   rH   )rH   '  )rq   rq   )rQ   zResults from all conditions:)updatero   rc   r   )rh   r(   r)   r*   r+   rN   s         r   mainrs      s      G -  " 	 	L9  4 4 "+ 	 	INN#0(*0%          		$ 

()))
7OOONr   __main__)"asyncior3   r   typingr   r   r   starlette.requestsr   r_   r   $ray.serve._private.benchmarks.commonr   ray.serve.handler	   rg   rT   r   r:   r   boolintrM   strfloatro   rs   r%   initstartnew_event_looploopset_event_looprun_until_completer   r   r   <module>r      s  
                  & & & & & & 



       I I I I I I - - - - - -* * * + + + + + + + +'!'!'! '! 	'! '! '! '!TCCC C 	C
 C 
#u*C C C CL  4 zCHJJJEKMMM!7!##DG4   DDFF##### r   