MindIE服務化部署實現監控功能

作者 | 孫曉 李鋒

1 相關概念

1.1 MindIE 服務化監控指標查詢介面

在 MindIE 服務化執行過程中,為了及時掌握服務的執行狀態、效能表現以及發現潛在問題,提供了服務監控指標查詢介面(普羅 (Prometheus) 格式)。該介面能夠幫助開發者和運維人員獲取豐富的服務監控指標資料,為最佳化服務配置、保障服務質量提供有力支援。
本文將介紹如何使用 Prometheus 與 Grafana 來實現 MindIE 服務視覺化監控功能。
當前介面支援以下指標監控,詳情可以參考:服務監控指標查詢介面(普羅格式)
https://www.hiascend.com/document/detail/zh/mindie/100/mindieservice/servicedev/mindie_service0103.html
名稱 描述
請求相關指標
request_received_total
服務端接收到的推理請求總數。透過該指標可瞭解服務的訪問熱度。
request_success_total
推理成功的請求個數,用於衡量服務的推理成功率。
request_failed_total
推理失敗的請求個數,結合成功請求數可計算失敗率,評估服務的穩定性。
num_requests_running
當前正在執行的請求個數,反映服務當前的負載情況。
num_requests_waiting
當前等待處理的請求個數,可用於判斷服務的處理能力是否滿足需求。
num_requests_swapped
當前被交換到 CPU 上的請求個數,幫助瞭解資源排程情況。
num_preemptions_total
累計觸發請求搶佔的次數,用於分析服務資源競爭和排程策略的合理性。
Token 相關指標
prompt_tokens_total
處理的所有請求的輸入 prompt token 總數,反映輸入資料量。
generation_tokens_total
推理後生成的 token 總數,體現服務的輸出量。
avg_prompt_throughput_toks_per_s
平均 Prefill 吞吐量,衡量輸入階段的處理速度。
avg_generation_throughput_toks_per_s
平均 token 吞吐量,反映整體的推理生成速度。
request_prompt_tokens
請求輸入的 token 數量,用於分析單個請求的輸入規模。
request_generation_tokens
請求輸出的 token 數量,幫助瞭解單個請求的輸出規模。
效能和資源指標
failed_request_perc
推理失敗的請求率,直觀反映服務的可靠性。
npu_cache_usage_perc
KV Cache 的 NPU 視訊記憶體利用率,監控 NPU 資源使用情況。
cpu_cache_usage_perc
KV Cache 的 CPU 利用率,掌握 CPU 資源使用狀況。
npu_prefix_cache_hit_rate
NPU 卡上 prefix cache 的命中率,評估快取的使用效率。
時延指標
time_to_first_token_seconds
首 token 時延,衡量請求推理生成首個 token 的速度,對即時性要求較高的場景至關重要。
time_per_output_token_seconds
token 生成時延,反映連續生成 token 之間的時間間隔,影響服務的響應流暢度。
e2e_request_latency_seconds
端到端時延,代表請求從接收到執行完成的總耗時,綜合體現服務的整體效能。
1.2 Prometheus 是什麼
Prometheus 是一個開源的系統監控和報警工具包,最初由 SoundCloud 開發,現在是 Cloud Native Computing Foundation(CNCF)的一部分。Prometheus 以其強大的資料收集和查詢能力、易於擴充套件和高可用性在行業內得到了廣泛應用。以下是 Prometheus 的核心概念:
  • 時間序列資料庫:Prometheus 主要用於儲存時間序列資料,即帶有時間戳的指標資料。每個時間序列由一個指標名和一組標籤(key-value 對)標識。
  • 多維資料模型:Prometheus 的資料模型基於指標名稱和標籤,可以靈活地對監控資料進行分類和過濾,從而實現複雜的查詢和分析。
  • PromQL:Prometheus 查詢語言(PromQL)用於即時查詢和分析儲存在 Prometheus 中的資料。它支援豐富的運算子和函式,能夠滿足多種監控和報警需求.

1.3 Grafana 是什麼

Grafana 是一個開源的視覺化和監控平臺,廣泛應用於資料分析、監控和報警。它支援多種資料來源,提供豐富的視覺化工具,使使用者能夠建立互動式的儀表盤。以下是 Grafana 的核心功能:
  • 資料視覺化:Grafana 提供了多種圖表型別,包括折線圖、柱狀圖、餅圖、熱圖等,使用者可以透過拖拽的方式輕鬆建立和自定義儀表盤。
  • 支援多種資料來源:Grafana 支援從多種資料來源獲取資料,包括 Prometheus、InfluxDB、Graphite、Elasticsearch、MySQL、PostgreSQL 等。
  • 靈活的查詢和過濾:透過整合的資料來源查詢語言,Grafana 允許使用者靈活地對資料進行過濾、聚合和轉換。每種資料來源都有專門的查詢編輯器,幫助使用者編寫查詢語句。
  • 報警和通知:Grafana 提供強大的報警功能,允許使用者基於查詢結果設定報警規則。當條件滿足時,可以透過郵件、Slack、PagerDuty 等多種渠道傳送通知。
  • 使用者管理和許可權控制:Grafana 提供詳細的使用者管理和許可權控制功能,支援使用者、團隊和組織的管理。使用者可以根據需要設定不同的訪問許可權,保護敏感資料。

2 實踐記錄

2.1 Prometheus 安裝

Prometheus 安裝方法參考:
https://prometheus.cloudnative.io/di-san-zhang-prometheus/di-2-jie-an-zhuang/installation
為方便起見,本次實踐筆者採用預編譯二進位制檔案安裝方法,在 Windows PC 上安裝。

安裝地址:https://prometheus.io/download/

2.2 Grafana 安裝

Grafana 同樣支援在不同作業系統安裝,詳見教程 https://grafana.com/docs/grafana/latest/setup-grafana/installation/
本次實踐選擇在 Windows 安裝,安裝地址 https://grafana.com/grafana/download?platform=windows

2.3 MindIE Service 服務部署啟動

需在伺服器啟動 MindIE-Service 服務,服務啟動教程不做贅述。
由於 MindIE 服務和 Prometheus+Grafana 在不同主機啟動,因此注意配置 config.json 檔案。修改 ipAddress 和 managementIpAddress 為伺服器 IP,保證 Prometheus+Grafana 服務可訪問該 IP 地址。同時需要注意埠設定。
另外,需要確保啟動服務前開啟服務化監控開關,開啟服務化監控功能的命令如下:
exportMIES_SERVICE_MONITOR_MODE=1
參考:https://www.hiascend.com/document/detail/zh/mindie/10RC3/mindieservice/servicedev/mindie_service0251.html
嘗試使用 curl 命令驗證 metricsPort 輸出正常:curl http://{ip}:{port}/metrics
發現能返回普羅格式 metric 輸出

2.4 啟動 Prometheus 和 Grafana

Step1 修改 prometheus 安裝目錄下的 promethues.yml 檔案,新增 MindIE 服務的 IP 和 metricsport
點選 Prometheus 安裝目錄下的 promethrus.exe 和 Grafana 安裝目錄下的 bin/grafana-server.exe 啟動 Prometheus 和 Grafana
Step2 開啟 Grafana http://localhost:3000 ,預設賬號密碼是 admin@admin,第一次登入會需要修改密碼。
Step3 點選 Connection > Data sources > Add new data source,選擇 prometheus,之後把 prometheus 的 URL http://localhost:9090 / 填上去,點選最下面 Save & test。
Step4之後可以在 Grafana 頁面建立 dashboard,在 Home-Dashboards-New dashboard 建立 dashboard, Dashboard 手動構建較麻煩,可以參考一些 Grafana 教程 https://imageslr.com/2024/grafana.html
好在可以透過 json 格式輸入或 json 檔案 import 快速構建 dashboard
這裡選擇參考下面 vllm 的 grafana json 檔案,將其中的 vllm: 欄位去掉(因為 MindIE 的 metrics 欄位和 vllm 的 metric 有區別)
http://www.gitpp.com/digiman/vllm/-/blob/main/examples/production_monitoring/grafana.json?ref_type=heads
最終得到 MindIE 指標監控看板介面

相關文章