Application Monitoring の Python エージェントを使用して、vLLM および SGLang 推論エンジンを監視します。
現時点で、Application Real-Time Monitoring Service (ARMS) は vLLM/SGLang フレームワーク のみをサポートしています。
操作手順
ステップ 1:環境変数の準備
export ARMS_APP_NAME=xxx # Elastic Algorithm Service (EAS) アプリケーションの名前。
export ARMS_REGION_ID=xxx # ご利用の Alibaba Cloud アカウントのリージョン ID。
export ARMS_LICENSE_KEY=xxx # Application Real-Time Monitoring Service (ARMS) のライセンスキー。
export APSARA_APM_MODEL_SERVICE_FRAMEWORK=xxx # モデルサービスフレームワークのタイプ。有効値:vLLM-v0、vLLM-v1、SGLangステップ 2:実行コマンドの変更
推論エンジンの 実行コマンド を変更します。
以下の例では、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-7BARMS 可観測性を有効にした 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;export APSARA_APM_MODEL_SERVICE_FRAMEWORK=vLLM-v1;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;推論エンジンのタイプを設定します。
export APSARA_APM_MODEL_SERVICE_FRAMEWORK=vLLM-v1;エージェントインストーラーをダウンロードします。
pip3 install aliyun-bootstrap;インストーラーを使用してエージェントをインストールします。
cn-hangzhouは、ご利用のリージョンに置き換えてください。ARMS_REGION_ID=cn-hangzhou aliyun-bootstrap -a install;
元の SGLang コマンド:
python -m sglang.launch_server --model-path /model_dirARMS 可観測性を有効にした SGLang コマンド:
export PIP_INDEX_URL=http://mirrors.cloud.aliyuncs.com/pypi/simple;export PIP_TRUSTED_HOST=mirrors.cloud.aliyuncs.com;export APSARA_APM_MODEL_SERVICE_FRAMEWORK=SGLang;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変更内容は以下のとおりです。
PyPI リポジトリを設定します。必要に応じて調整してください。
export PIP_INDEX_URL=http://mirrors.cloud.aliyuncs.com/pypi/simple; export PIP_TRUSTED_HOST=mirrors.cloud.aliyuncs.com;推論エンジンのタイプを設定します。
export APSARA_APM_MODEL_SERVICE_FRAMEWORK=SGLang;エージェントインストーラーをダウンロードします。
pip3 install aliyun-bootstrap;インストーラーを使用してエージェントをインストールします。
cn-hangzhouは、ご利用のリージョンに置き換えてください。ARMS_REGION_ID=cn-hangzhou aliyun-bootstrap -a install;
[更新] をクリックします。
他の環境での可観測性の設定
ARMS は、vLLM の公式バージョン (V0 および V1) と SGLang をサポートしています。カスタムで変更されたバージョンはサポート対象外です。サポートされているバージョンの詳細については、「大規模言語モデル (LLM) サービス」をご参照ください。
ARMS は、非ストリーミングリクエストに対して 2 つのスパンを、ストリーミングリクエストに対して 3 つのスパンを収集します。以下の表に、サポートされるシナリオを示します。
サポートされるシナリオ | データ処理 | 収集内容 | vLLM V0 | vLLM V1 | SGLang |
チャット または 完了 | ストリーミング | スパン |
|
|
|
主要メトリック TTFT/TPOT | サポート済み | サポート済み | サポート済み | ||
非ストリーミング | スパン |
|
|
| |
主要メトリック TTFT/TPOT | 該当なし | 該当なし | 該当なし | ||
埋め込み | http | 未サポート | サポート済み | 未サポート | |
リランク | http | 未サポート | サポート済み | 未サポート | |
スパン属性
llm_request スパンの属性:
属性 | 説明 |
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
ディメンションの説明
ディメンション名 | ディメンション キー | 例 | 説明 |
モデル名 | modelName / model_name | qwen-7b、llama3-8b | モデル名 |
エンジンインデックス | engine_index | 0、1、2 | V1 のみ。エンジンインスタンスのインデックス |
操作タイプ | spanKind | LLM | LLM タイプの操作 |
使用タイプ | usageType | input、output | トークン関連メトリックのみ。トークンタイプを示します。 |
終了理由 | finished_reason | stop | リクエスト終了の理由 |
共通メトリック (V0/V1 共有)
メトリック名 | メトリック | メトリックタイプ | 単位 | 説明 |
反復回数 | vllm_iter_count | Counter | なし | 反復回数 |
成功リクエスト | gen_ai_vllm_request_success | Counter | なし | 正常に処理されたリクエスト数 |
初回トークンまでの時間 | genai_llm_first_token_seconds | Counter | 秒 | 初回トークンの生成に要する時間 |
出力トークンあたりの時間 | gen_ai_server_time_per_output_token | Counter | 秒 | 各出力トークンの生成に要する時間 |
エンドツーエンドリクエスト持続時間 | gen_ai_server_request_duration | Counter | 秒 | リクエストのエンドツーエンドレイテンシ |
トークン使用量 | llm_usage_tokens | Counter | なし | 使用されたトークン数 (入力/出力を区別) |
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 反復メトリック
メトリック名 | メトリック | メトリックタイプ | 単位 | 説明 |
反復プロンプトトークン数 | num_prompt_tokens_iter | Counter | なし | 現在の反復におけるプロンプトトークン数 |
反復生成トークン数 | num_generation_tokens_iter | Counter | なし | 現在の反復における生成トークン数 |
反復合計トークン数 | num_tokens_iter | Counter | なし | 現在の反復におけるトークン総数 |
反復プリエンプション数 | 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 | なし | プレフィックスキャッシュクエリ数 (クエリトークン数でカウント) |
プレフィックスキャッシュヒット数 | gen_ai_vllm_prefix_cache_hits | Counter | なし | プレフィックスキャッシュヒット数 (キャッシュされたトークン数でカウント) |
V1 反復メトリック
メトリック名 | メトリック | メトリックタイプ | 単位 | 説明 |
プリエンプション数 | gen_ai_vllm_num_preemptions | Counter | なし | 累積エンジンプリエンプション数 |
プロンプトトークン数 | gen_ai_vllm_prompt_tokens | Counter | なし | 処理されたプレフィルトークン数 |
生成されたトークン | gen_ai_vllm_generation_tokens | Counter | なし | 処理された生成トークン数 |
リクエストパラメーター 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 ステージで費やした時間 |
リクエストプレフィル時間 | gen_ai_vllm_request_prefill_time_seconds | Counter | 秒 | リクエストが PREFILL ステージで費やした時間 |
リクエストデコード時間 | gen_ai_vllm_request_decode_time_seconds | Counter | 秒 | リクエストが DECODE ステージで費やした時間 |
リクエスト推論時間 | gen_ai_vllm_request_inference_time_seconds | Counter | 秒 | リクエストが RUNNING ステージで費やした時間 |
SGLang
ディメンションの説明
ディメンション名 | ディメンション キー | 例 | 説明 |
モデル名 | modelName / model_name | qwen-7b、deepseek-r1 | モデル名 |
操作タイプ | spanKind | LLM | LLM タイプの操作 |
使用タイプ | usageType | input、output | トークン関連メトリックのみ |
呼び出しタイプ | callType | gen_ai | デフォルト値は gen_ai |
RPC タイプ | rpcType | 2100 | RPC タイプ識別子 |
システムステータスメトリック
メトリック名 | メトリック | メトリックタイプ | 単位 | 説明 |
実行中のリクエスト数 | sglang_num_running_reqs | Counter | なし | 現在実行中のリクエスト数 |
キュー内のリクエスト数 | sglang_num_queue_reqs | Counter | なし | キュー内で処理待ちのリクエスト数 |
ログ数 | sglang_log_count | Counter | なし | ログ数 |
トークン関連メトリック
メトリック名 | メトリック | メトリックタイプ | 単位 | 説明 |
使用中のトークン数 | sglang_num_used_tokens | Counter | なし | 現在利用中のトークン数 |
トークン使用率 | sglang_token_usage | Counter | なし | トークン使用率 |
プロンプトトークン総数 | prompt_tokens_total | Counter | なし | 累積プロンプトトークン数 |
生成トークン総数 | generation_tokens_total | Counter | なし | 累積生成トークン数 |
キャッシュされたトークン総数 | gen_ai_sglang_cached_tokens_total | Counter | なし | キャッシュされたプロンプトトークン数 |
トークン使用量 | llm_usage_tokens | Counter | なし | 使用されたトークン数 (入力/出力を区別) |
パフォーマンスメトリック
メトリック名 | メトリック | メトリックタイプ | 単位 | 説明 |
生成スループット | sglang_gen_throughput | Counter | なし | 1 秒あたりの生成トークン数 |
初回トークンまでの時間 | gen_ai_server_time_to_first_token | Counter | 秒 | 初回トークンの生成に要する時間 |
出力トークンあたりの時間 | gen_ai_server_time_per_output_token | Counter | 秒 | 各出力トークンの生成に要する時間 |
トークン間レイテンシ | sglang_inter_token_latency_seconds | Counter | 秒 | トークン間の生成レイテンシ |
エンドツーエンドリクエスト持続時間 | 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:リクエストレベルのスパン (llm_request スパン) のみを記録します。 1:異なる推論ステージ (Wait/Prefill/Decode) のスパンも記録します。 2:llm_request スパンのスパンイベントに、各生成トークンの詳細イベントも記録します。 |
OTEL_SPAN_EVENT_COUNT_LIMIT | OTEL_INSTRUMENTATION_VLLM_TRACING_LEVEL が 2 に設定されている場合に観測されるトークン生成イベントの最大数。デフォルト値:128。 |