アプリケーションモニタリングの Python エージェントを使用して、vLLM および SGLang 推論エンジンの可観測性を実現します。
Application Real-Time Monitoring Service (ARMS) は、現在 vLLM/SGLang フレームワーク のみを対象とした可観測性をサポートしています。
PAI-EAS における可観測性の設定
Elastic Algorithm Service (EAS) は、モデルをオンラインでデプロイおよび提供するための PAI サービスです。EAS 上にデプロイされた vLLM または SGLang モデルに対して ARMS の可観測性を有効にするには、以下の手順に従ってください。
ステップ 1:環境変数の準備
export ARMS_APP_NAME=xxx # EAS アプリケーションの名前。
export ARMS_REGION_ID=xxx # Alibaba Cloud アカウントのリージョン ID。
export ARMS_LICENSE_KEY=xxx # Alibaba Cloud のライセンスキー。ステップ 2: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-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;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_dirARMS 可観測性を追加した 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変更内容は以下のとおりです:
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;
更新 をクリックします。
その他の環境における可観測性の設定
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。 |