
    .`iK#                     >   d dl Z d dlZ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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   ee!          Z"ej#        Z$ej%        &                    e$d          Z'ej%        &                    e$d          Z(da)ej*        Z+ e,e-e-e.z  e/z  f                     Z0g dZ1de-de-e.z  e/z  ddfdZ2d Z3de.fdZ4de-fdZ5 G d de-e          Z6 G d d          Z7 e7            Z8dS )    N)Enum)Path)Thread)Any)uuid4)global_http_connection)init_logger)cuda_get_device_properties)cuda_device_count_stateless)__version__zusage_stats.jsondo_not_track)VLLM_USE_MODELSCOPEVLLM_USE_FLASHINFER_SAMPLERVLLM_PP_LAYER_PARTITIONVLLM_USE_TRITON_AWQVLLM_ENABLE_V1_MULTIPROCESSINGkeyvaluereturnc                     |t           | <   dS )zCSet global usage data that will be sent with every usage heartbeat.N)_GLOBAL_RUNTIME_DATA)r   r   s     h/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/usage/usage_lib.pyset_runtime_usage_datar   /   s     %    c                      t           Ct          j        } t          j        }t          j                            t                    }| p|p| a t           S )a|  Determine whether or not we can send usage stats to the server.
    The logic is as follows:
    - By default, it should be enabled.
    - Three environment variables can disable it:
        - VLLM_DO_NOT_TRACK=1
        - DO_NOT_TRACK=1
        - VLLM_NO_USAGE_STATS=1
    - A file in the home directory can disable it if it exists:
        - $HOME/.config/vllm/do_not_track
    )_USAGE_STATS_ENABLEDenvsVLLM_DO_NOT_TRACKVLLM_NO_USAGE_STATSospathexists_USAGE_STATS_DO_NOT_TRACK_PATH)r   no_usage_statsdo_not_track_files      r   is_usage_stats_enabledr&   4   sI     #-1GNN+IJJ$0$WN$WFWXr   c                      t          t          j                            t          j        j                                                  dz            S )Ng    eA)intdatetimenowtimezoneutc	timestamp r   r   _get_current_timestamp_nsr/   I   s8    x $$X%6%:;;EEGG#MNNNr   c                     g d} ddddd}| D ]o}t          |          }|                                rJ|                                                                }|                                D ]\  }}||v r|c c S pddi}|                                D ](\  }}t
          j                            |          r|c S )d	S )
N)z!/sys/class/dmi/id/product_versionz/sys/class/dmi/id/bios_vendorz/sys/class/dmi/id/product_namez#/sys/class/dmi/id/chassis_asset_tagz/sys/class/dmi/id/sys_vendorAWSAZUREGCPOCI)amazonzmicrosoft corporationgoogleoraclecloudRUNPOD_DC_IDRUNPODUNKNOWN)r   is_file	read_textloweritemsr    environget)	vendor_filescloud_identifiersvendor_filer!   file_content
identifierproviderenv_to_cloud_providerenv_vars	            r   _detect_cloud_providerrI   M   s     L !(	  $ $ $K  <<>> 	$>>++1133L(9(?(?(A(A $ $$
H--#OOOOO .
 	 388::  :>>'"" 	OOO	 9r   c                   &    e Zd ZdZdZdZdZdZdZdS )UsageContextUNKNOWN_CONTEXT	LLM_CLASS
API_SERVEROPENAI_API_SERVEROPENAI_BATCH_RUNNERENGINE_CONTEXTN)	__name__
__module____qualname__rL   rM   rN   rO   rP   rQ   r.   r   r   rK   rK   q   s.        'OIJ+/%NNNr   rK   c            	           e Zd ZdZddZ	 ddededeeef         dz  ddfdZ	dededeeef         ddfd	Z
defd
Zdededeeef         ddfdZd Zdeeef         ddfdZdeeef         ddfdZdS )UsageMessagezCCollect platform information and send it to the usage stats server.r   Nc                 4   t          t                                | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _	        d | _
        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d S N)strr   uuidrF   num_cpucpu_typecpu_family_model_steppingtotal_memoryarchitectureplatformcuda_runtime	gpu_countgpu_typegpu_memory_per_deviceenv_var_jsonmodel_architecturevllm_versioncontextlog_timesource)selfs    r   __init__zUsageMessage.__init__}   s     LL	 %)#'$(59&(,(,$((,%)$(15"(, /3(,#' %)"&r   rf   usage_context	extra_kvsc                 f    t          | j        |||pi fd          }|                                 d S )NT)targetargsdaemon)r   _report_usage_workerstart)rk   rf   rm   rn   ts        r   report_usagezUsageMessage.report_usage   sB     ,$mY_"E
 
 

 	
					r   c                 \    |                      |||           |                                  d S rX   )_report_usage_once_report_continuous_usage)rk   rf   rm   rn   s       r   rs   z!UsageMessage._report_usage_worker   s5     	 2M9MMM%%'''''r   c                     	 ddl m}m} |                                | _        |                                | _        |                                | _        d| _	        dS # t          $ r Y dS w xY w)Nr   )tpu_infoutilstpu_inferenceTF)r}   r{   r|   get_num_chipsrb   get_tpu_typerc   get_device_hbm_limitrd   ra   	Exception)rk   r{   r|   s      r   _report_tpu_inference_usagez(UsageMessage._report_tpu_inference_usage   s    		55555555%3355DN$1133DM).)C)C)E)ED& /D4 	 	 	55	s   AA 
A,+A,c           
      :   ddl m} |                                r0t                      | _        t          dd          \  | _        | _        |                                rt          j
        j        | _        |                                r.|                                 st                              d           t#                      | _        t'          j                    | _        t'          j                    | _        t-          j                    j        | _        t5          j                    }|                    dd           | _        |                    dd          | _        d                    tA          |                    d	d                    tA          |                    d
d                    tA          |                    dd                    g          | _!        |j"        | _#        tH          | _%        || _&        tO          j(        d tR          D                       | _*        tW                      | _,        tZ          j.        | _/        ta          |           }|r|1                    |           | 2                    |           | 3                    |           d S )Nr   )current_platform)namer^   z!Failed to collect TPU informationcount	brand_raw ,familymodelsteppingc                 :    i | ]}|t          t          |          S r.   )getattrr   ).0rH   s     r   
<dictcomp>z3UsageMessage._report_usage_once.<locals>.<dictcomp>   s$    WWWWgdG,,WWWr   )4vllm.platformsr   is_cuda_aliker   rb   r
   rc   rd   is_cudatorchversioncudara   is_tpur   logger	exceptionrI   rF   r`   machiner_   psutilvirtual_memorytotalr^   cpuinfoget_cpu_infor@   r[   r\   joinrY   r]   r   rh   VLLM_VERSIONrg   rf   jsondumps_USAGE_ENV_VARS_TO_COLLECTre   r/   ri   r   VLLM_USAGE_SOURCErj   varsupdate_write_to_file_send_to_server)rk   rf   rm   rn   r   infodatas          r   rx   zUsageMessage._report_usage_once   sH    	433333))++ 	8::DN8R+9 95DM45 ##%% 	3 % 2D""$$ 	F3355 F  !DEEE.00$,.. )++"1339#%%xx..b11),DHHXr**++DHHWb))**DHHZ,,--*
 *
& %*("4 !JWW<VWWW
 

 233,Dzz 	#KK	"""D!!!T"""""r   c                     	 t          j        d           | j        t                      d}|                    t
                     |                     |           |                     |           o)zReport usage every 10 minutes.

        This helps us to collect more data points for uptime of vLLM usages.
        This function can also help send over performance metrics over time.
        TiX  )rZ   ri   )timesleeprZ   r/   r   r   r   r   )rk   r   s     r   ry   z%UsageMessage._report_continuous_usage   sp    		'JsOOO	577 D KK,---%%%  &&&		'r   r   c                     	 t          j                    }|                    t          |           d S # t          j        j        $ r t          j        d           Y d S w xY w)N)r   z#Failed to send usage data to server)	r   get_sync_clientpost_USAGE_STATS_SERVERrequests
exceptionsRequestExceptionloggingdebug)rk   r   global_http_clients      r   r   zUsageMessage._send_to_server  sv    	A!7!G!I!I##$7d#CCCCC"3 	A 	A 	AM?@@@@@@	As   /3 (AAc                 v   t          j        t           j                            t                    d           t          t                                        d           t          t          d          5 }t          j	        ||           |
                    d           d d d            d S # 1 swxY w Y   d S )NT)exist_oka
)r    makedirsr!   dirname_USAGE_STATS_JSON_PATHr   touchopenr   dumpwrite)rk   r   fs      r   r   zUsageMessage._write_to_file  s    
BGOO$:;;dKKKK#$$**D*999(#.. 	!IdAGGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   6+B..B25B2)r   NrX   )rR   rS   rT   __doc__rl   rY   rK   dictr   rv   rs   boolr   rx   ry   r   r   r.   r   r   rV   rV   z   s       MM' ' ' 'B ,0	  $ S>D(	
 
   (( $( S>	(
 
( ( ( (
T 
 
 
 
6#6# $6# S>	6#
 
6# 6# 6# 6#p' ' '"ADcN At A A A A4S> d      r   rV   )9r)   r   r   r    r`   r   enumr   pathlibr   	threadingr   typingr   rZ   r   r   r   r   r   	vllm.envsr   vllm.connectionsr   vllm.loggerr	   vllm.utils.platform_utilsr
   vllm.utils.torch_utilsr   vllm.versionr   r   rR   r   VLLM_CONFIG_ROOT_config_homer!   r   r   r#   r   VLLM_USAGE_STATS_SERVERr   r   rY   r(   r   r   r   r   r&   r/   rI   rK   rV   usage_messager.   r   r   <module>r      s      				                                           3 3 3 3 3 3 # # # # # # @ @ @ @ @ @ > > > > > > 4 4 4 4 4 4	X		$l4FGG !#lN!K!K  2 2tCsT!11244    & &C#I,< & & & & &
     *O3 O O O O! ! ! ! !H& & & & &3 & & &X X X X X X X Xv r   