查看更多:https://modelers.cn/

1 相关概念 

1.1. MindIE 服务化监控指标查询接口 

在 MindIE 服务化运行过程中,为了及时掌握服务的运行状态、性能表现以及发现潜在问题,提供了服务监控指标查询接口(普罗(Prometheus)格式)。该接口能够帮助开发者和运维人员获取丰富的服务监控指标数据,为优化服务配置、保障服务质量提供有力支持。

本文将介绍如何使用 Prometheus 与 Grafana 来实现 MindIE 服务可视化监控功能。

当前接口支持以下指标监控,详情可以参考:服务监控指标查询接口(普罗格式)

名称 描述
请求相关指标
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 处理的所有请求的输人prompttoken总数,反映输人数 据量。
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 KVCache 的 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 地址。同时需要注意端口设置。

另外,需要确保启动服务前开启服务化监控开关,开启服务化监控功能的命令如下:

export MIES_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-Newdashboard 建立 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指标监控看板界面

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐