應用監控的Python探針新增了vLLM/SGLang外掛程式,支援對vLLM/SGLang推理引擎進行可觀測。
ARMS目前僅支援對 vLLM/SGLang 架構進行可觀測。
PAI-EAS接入
模型線上服務EAS(Elastic Algorithm Service)是PAI產品為實現一站式模型開發部署應用,針對線上推理情境提供的模型線上服務,支援將模型服務部署在公用資源群組或專屬資源群組,實現基於異構硬體(CPU和GPU)的模型載入和資料請求的即時響應。
步驟一:準備環境變數
export ARMS_APP_NAME=xxx # EAS應用程式名稱。
export ARMS_REGION_ID=xxx # 對應的阿里雲帳號的RegionID。
export ARMS_LICENSE_KEY=xxx # 阿里雲 LicenseKey。步驟二:修改PAI-EAS運行命令
登入PAI控制台,在頁面上方選擇目標地區,然後進入目標工作空間。
在左側導覽列選擇。
在推理服務頁簽選擇要接入模型觀測的應用,然後單擊操作列的更新。
修改運行命令。
以接入DeepSeek-R1-Distill-Qwen-7B模型為例。
vLLM原始指令:
gpu_count=$(nvidia-smi --query-gpu=count --format=csv,noheader | wc -l);vllm serve /model_dir --host 0.0.0.0 --port 8000 --root-path '/' --trust-remote-code --gpu-memory-utilization 0.95 --max-model-len 32768 --tensor-parallel-size $gpu_count --served-model-name DeepSeek-R1-Distill-Qwen-7B接入應用監控對應的vLLM指令:
gpu_count=$(nvidia-smi --query-gpu=count --format=csv,noheader | wc -l);export PIP_INDEX_URL=http://mirrors.cloud.aliyuncs.com/pypi/simple; export PIP_TRUSTED_HOST=mirrors.cloud.aliyuncs.com;pip3 install aliyun-bootstrap;ARMS_REGION_ID=cn-hangzhou aliyun-bootstrap -a install;ARMS_APP_NAME=qwq32 ARMS_LICENSE_KEY=it0kjz0oxz@3115ad****** ARMS_REGION_ID=cn-hangzhou aliyun-instrument vllm serve /model_dir --host 0.0.0.0 --port 8000 --root-path '/' --trust-remote-code --gpu-memory-utilization 0.95 --max-model-len 32768 --tensor-parallel-size $gpu_count --served-model-name DeepSeek-R1-Distill-Qwen-7B新增部分說明:
配置 pypi 倉庫,可以根據實際情況調整。
export PIP_INDEX_URL=http://mirrors.cloud.aliyuncs.com/pypi/simple; export PIP_TRUSTED_HOST=mirrors.cloud.aliyuncs.com;下載探針安裝器。
pip3 install aliyun-bootstrap;使用安裝器安裝探針。
請根據實際地區替換
cn-hangzhou。ARMS_REGION_ID=cn-hangzhou aliyun-bootstrap -a install;
SGLang原始命令:
python -m sglang.launch_server --model-path /model_dir接入應用監控對應的SGLang指令:
export PIP_INDEX_URL=http://mirrors.cloud.aliyuncs.com/pypi/simple; export PIP_TRUSTED_HOST=mirrors.cloud.aliyuncs.com;pip3 install aliyun-bootstrap;ARMS_REGION_ID=cn-hangzhou aliyun-bootstrap -a install;ARMS_APP_NAME=qwq32 ARMS_LICENSE_KEY=it0kjz0oxz@3115ad****** ARMS_REGION_ID=cn-hangzhou aliyun-instrument python -m sglang.launch_server --model-path /model_dir新增部分說明:
配置 pipy 倉庫,可以根據實際情況調整。
export PIP_INDEX_URL=http://mirrors.cloud.aliyuncs.com/pypi/simple; export PIP_TRUSTED_HOST=mirrors.cloud.aliyuncs.com;下載探針安裝器。
pip3 install aliyun-bootstrap;使用安裝器安裝探針。
請根據實際地區替換
cn-hangzhou。ARMS_REGION_ID=cn-hangzhou aliyun-bootstrap -a install;
單擊更新。
通用情境模型接入
ARMS 目前只支援官方提供的 vLLM 版本(V0和V1版本)和 SGLang 版本,具體支援的版本範圍請參考LLM(大語言模型)服務,使用者修改過的版本不支援接入。
ARMS 支援補全和對話兩個情境,如果是非流式請求會採集 2 個 Span,流式請求會採集 3 個 Span。
支援的情境 | 資料處理 | 採集內容 | vLLM V0 | vLLM V1 | SGLang |
chat 對話 or completion 補全 | 流式 | span |
|
|
|
key metrics TTFT/TPOT | 支援 | 支援 | 支援 | ||
非流式 | span |
|
|
| |
key metrics TTFT/TPOT | 不適用 | 不適用 | 不適用 | ||
Embedding | http | 不支援 | 支援 | 不支援 | |
Rerank | http | 不支援 | 支援 | 不支援 | |
重要Span及Attributes說明
llm_request相關:
Attribute | 描述 |
gen_ai.latency.e2e | 端到端的時間 |
gen_ai.latency.time_in_queue | 進入隊列的時間 |
gen_ai.latency.time_in_scheduler | 調度時間 |
gen_ai.latency.time_to_first_token | 首包時間 |
gen_ai.request.id | 請求ID |
指標說明
vLLM
維度說明
維度名稱 | 維度 Key | 樣本 | 說明 |
模型名稱 | modelName / model_name | qwen-7b, llama3-8b | 模型名稱 |
引擎索引 | engine_index | 0, 1, 2 | V1 版本專用,引擎執行個體索引 |
操作類型 | spanKind | LLM | LLM 類型操作 |
使用類型 | usageType | input, output | Token 相關指標專用,代表Token的類型 |
結束原因 | finished_reason | stop | 請求結束的原因 |
通用指標(V0/V1 共用)
指標名稱 | 指標 | 指標類型 | 單位 | 說明 |
迭代次數 | vllm_iter_count | Counter | 無 | 迭代計數 |
成功請求次數 | gen_ai_vllm_request_success | Counter | 無 | 成功處理的請求數量 |
首 Token 耗時 | genai_llm_first_token_seconds | Counter | 秒 | 首Token 產生時間 |
單 Token 輸出耗時 | gen_ai_server_time_per_output_token | Counter | 秒 | 每個輸出 Token 的產生時間 |
端到端請求耗時 | gen_ai_server_request_duration | Counter | 秒 | 請求端到端延遲 |
Token 使用量 | llm_usage_tokens | Counter | 無 | Token 使用數量(區分 input/output) |
V0 版本系統指標
指標名稱 | 指標 | 指標類型 | 單位 | 說明 |
GPU 緩衝使用率 | gpu_cache_usage_sys | Gauge | 無 | 系統 GPU 緩衝使用率 |
CPU 緩衝使用率 | cpu_cache_usage_sys | Gauge | 無 | 系統 CPU 緩衝使用率 |
運行中序列數 | num_running_sys | Gauge | 無 | 系統中正在啟動並執行序列數量 |
等待中序列數 | num_waiting_sys | Gauge | 無 | 系統中等待處理的序列數量 |
已交換序列數 | num_swapped_sys | Gauge | 無 | 系統中已交換的序列數量 |
V0 版本迭代指標
指標名稱 | 指標 | 指標類型 | 單位 | 說明 |
迭代 Prompt Token 數 | num_prompt_tokens_iter | Counter | 無 | 當前迭代中的 Prompt Token 數量 |
迭代產生 Token 數 | num_generation_tokens_iter | Counter | 無 | 當前迭代中產生的 Token 數量 |
迭代總 Token 數 | num_tokens_iter | Counter | 無 | 當前迭代中的總 Token 數量 |
迭代搶佔次數 | num_preemption_iter | Counter | 無 | 當前迭代中的搶佔次數 |
V1 版本系統指標
指標名稱 | 指標 | 指標類型 | 單位 | 說明 |
運行中請求數 | gen_ai_vllm_num_requests_running | Gauge | 無 | 模型執行批次中的請求數量 |
等待中請求數 | gen_ai_vllm_num_requests_waiting | Gauge | 無 | 等待處理的請求數量 |
KV 緩衝使用率 | gen_ai_vllm_kv_cache_usage_perc | Gauge | 無 | KV 緩衝使用率,範圍 [0,1] |
首碼緩衝查詢數 | gen_ai_vllm_prefix_cache_queries | Counter | 無 | 首碼緩衝查詢次數(按查詢 Token 數計) |
首碼快取命中數 | gen_ai_vllm_prefix_cache_hits | Counter | 無 | 首碼快取命中次數(按緩衝 Token 數計) |
V1 版本迭代指標
指標名稱 | 指標 | 指標類型 | 單位 | 說明 |
搶佔次數 | gen_ai_vllm_num_preemptions | Counter | 無 | 引擎累計搶佔次數 |
Prompt Token 數 | gen_ai_vllm_prompt_tokens | Counter | 無 | 已處理的 Prefill Token 數量 |
產生 Token 數 | gen_ai_vllm_generation_tokens | Counter | 無 | 已處理的產生 Token 數量 |
請求參數 n | gen_ai_vllm_request_params_n | Counter | 無 | 請求參數 n 的值 |
請求參數 max_tokens | gen_ai_vllm_request_params_max_tokens | Counter | 無 | 請求參數 max_tokens 的值 |
V1 版本請求耗時指標
指標名稱 | 指標 | 指標類型 | 單位 | 說明 |
請求排隊耗時 | gen_ai_vllm_request_queue_time_seconds | Counter | 秒 | 請求在 WAITING 階段花費的時間 |
請求 Prefill 耗時 | gen_ai_vllm_request_prefill_time_seconds | Counter | 秒 | 請求在 PREFILL 階段花費的時間 |
請求 Decode 耗時 | gen_ai_vllm_request_decode_time_seconds | Counter | 秒 | 請求在 DECODE 階段花費的時間 |
請求推理耗時 | gen_ai_vllm_request_inference_time_seconds | Counter | 秒 | 請求在 RUNNING 階段花費的時間 |
SGLang
維度說明
維度名稱 | 維度 Key | 樣本 | 說明 |
模型名稱 | modelName / model_name | qwen-7b, deepseek-r1 | 模型名稱 |
操作類型 | spanKind | LLM | LLM 類型操作 |
使用類型 | usageType | input, output | Token 相關指標專用 |
調用類型 | callType | gen_ai | 預設值為 gen_ai |
RPC類型 | rpcType | 2100 | RPC 類型標識 |
系統狀態指標
指標名稱 | 指標 | 指標類型 | 單位 | 說明 |
運行中請求數 | sglang_num_running_reqs | Counter | 無 | 當前正在啟動並執行請求數量 |
隊列中請求數 | sglang_num_queue_reqs | Counter | 無 | 隊列中等待處理的請求數量 |
日誌統計次數 | sglang_log_count | Counter | 無 | 日誌統計計數 |
Token 相關指標
指標名稱 | 指標 | 指標類型 | 單位 | 說明 |
已使用 Token 數 | sglang_num_used_tokens | Counter | 無 | 當前正在使用的 Token 數量 |
Token 使用率 | sglang_token_usage | Counter | 無 | Token 使用率 |
Prompt Token 總數 | prompt_tokens_total | Counter | 無 | 累計 Prompt Token 數量 |
產生 Token 總數 | generation_tokens_total | Counter | 無 | 累計產生 Token 數量 |
緩衝 Token 總數 | gen_ai_sglang_cached_tokens_total | Counter | 無 | 緩衝的 Prompt Token 數量 |
Token 使用量 | llm_usage_tokens | Counter | 無 | Token 使用數量(區分 input/output) |
效能指標
指標名稱 | 指標 | 指標類型 | 單位 | 說明 |
產生輸送量 | sglang_gen_throughput | Counter | 無 | 每秒產生的 Token 數量 |
首 Token 耗時 | gen_ai_server_time_to_first_token | Counter | 秒 | 首個 Token 產生時間 |
單 Token 輸出耗時 | gen_ai_server_time_per_output_token | Counter | 秒 | 每個輸出 Token 的產生時間 |
Token 間延遲 | sglang_inter_token_latency_seconds | Counter | 秒 | Token 之間的產生延遲 |
端到端請求耗時 | gen_ai_server_request_duration | Counter | 秒 | 請求端到端延遲 |
緩衝與推測執行指標
指標名稱 | 指標 | 指標類型 | 單位 | 說明 |
快取命中率 | gen_ai_sglang_cache_hit_rate | Counter | 無 | 快取命中率 |
推測接受長度 | sglang_spec_accept_length | Counter | 無 | 推測解碼接受的長度 |
請求統計指標
指標名稱 | 指標 | 指標類型 | 單位 | 說明 |
請求總數 | num_requests_total | Counter | 無 | 累計處理的請求 |
重要配置說明
配置項環境變數名 | 描述 |
OTEL_INSTRUMENTATION_VLLM_TRACING_LEVEL | vLLM推理引擎的觀測粒度: 0:只記錄請求層級的Span(llm_request Span)。 1:額外記錄推理不同階段的Span(Wait/Prefill/Decode Span)。 2:額外記錄每個Token產生的詳細事件,記錄在llm_request Span的Span Event中。 |
OTEL_SPAN_EVENT_COUNT_LIMIT | 在OTEL_INSTRUMENTATION_VLLM_TRACING_LEVEL被設定為2時,最多可以觀測到的Token建置事件的個數,預設為128。 |