使用 AI 工具链操作器监视和可视化 Azure Kubernetes 服务 (AKS) 上的 AI 推理指标(预览版)

监视和可观测性在维护 AKS 上的 AI 工作负载部署的高性能和低成本方面起着关键作用。 系统和性能指标可见性可能表明底层基础结构的限制,并激励实时调整和优化以减少工作负载中断。 监视还提供对资源利用率的宝贵见解,实现计算资源经济高效的管理,并避免过度预配或预配不足。

AI 工具链操作器 (KAITO) 是 AKS 的托管加载项,可简化 AKS 群集上 AI 模型的部署和操作。 从 KAITO 版本 0.4.4 开始,vLLM 推理运行时默认在 AKS 托管加载项中启用。 vLLM 展示了可用于评估 KAITO 推理部署的关键系统性能、资源使用情况和请求处理 Prometheus 指标

重要

AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:

本文介绍如何在 AKS 群集上使用 Azure 托管 Prometheus 和 Azure 托管 Grafana,通过 AI 工具链操作器的加载项(预览版)监控和可视化 vLLM 推理指标。

在您开始之前

  • 本文假设你有现有 AKS 群集。 如果没有群集,请使用 Azure CLIAzure PowerShellAzure 门户创建群集。
  • 安装并配置了 Azure CLI 版本 2.47.0 或更高版本。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅 [安装 Azure CLI][install-azure-cli]。

先决条件

部署 KAITO 推理服务

  1. 在此示例中,你将收集 Qwen-2.5-coder-7B-instruct 语言模型的指标。 首先在群集上应用以下 KAITO 工作区 CRD:

    kubectl apply -f https://raw.githubusercontent.com/Azure/kaito/main/examples/inference/kaito_workspace_qwen_2.5_coder_7b-instruct.yaml
    
  2. 使用 kubectl get 命令跟踪 KAITO 工作区中的实时资源更改。

    kubectl get workspace workspace-qwen-2-5-coder-7b-instruct -w
    

    注释

    跟踪 KAITO 推理服务部署时,请注意,计算机就绪情况可能需要长达 10 分钟,工作区就绪情况最多需要 20 分钟,具体取决于模型的大小。

  3. 确认推理服务正在运行,并使用 kubectl get svc 命令获取服务 IP 地址。

    export SERVICE_IP=$(kubectl get svc workspace-qwen-2-5-coder-7b-instruct -o jsonpath='{.spec.clusterIP}')
    
    echo $SERVICE_IP
    

向 Azure 托管 Prometheus 展示 KAITO 推理指标

Prometheus 指标默认在 KAITO /metrics 终结点处收集。

  1. 将以下标签添加到 KAITO 推理服务,以便 Kubernetes ServiceMonitor 部署检测到它:

    kubectl label svc workspace-qwen-2-5-coder-7b-instruct App=qwen-2-5-coder 
    
  2. 创建 ServiceMonitor 资源,以定义抓取 vLLM Prometheus 指标所需的推理服务终结点和配置。 通过在 ServiceMonitor 命名空间中部署以下 kube-system YAML 清单,将这些指标导出到 Azure 托管 Prometheus:

    cat <<EOF | kubectl apply -n kube-system -f -
    apiVersion: azmonitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      name: prometheus-kaito-monitor
    spec:
      selector:
        matchLabels:
          App: qwen-2-5-coder
      endpoints:
      - port: http
        interval: 30s
        path: /metrics
        scheme: http
    EOF
    

    创建 ServiceMonitor 后,应会看到以下输出:

    servicemonitor.azmonitoring.coreos.com/prometheus-kaito-monitor created
    
  3. 使用 ServiceMonitor 命令确认 kubectl get 部署是否成功运行。

    kubectl get servicemonitor prometheus-kaito-monitor -n kube-system
    
  4. 在 Azure Monitor 工作区中的“托管 Prometheus”下导航到“Prometheus 资源管理器”页,确认已在 Azure 托管 Prometheus 中成功收集 vLLM 指标

  5. 选择“网格”选项卡,并确认存在与名为 的作业关联的指标项。workspace-qwen-2-5-coder-7b-instruct

    注释

    此项的 up 值应为 1,指示 Prometheus 指标已成功从 AI 推理服务终结点中抓取。

可视化 Azure 托管 Grafana 中的 KAITO 推理指标

  1. vLLM 项目提供名为 grafana.json 的 Grafana 仪表板配置,用于推理工作负载监视。 导航到此页面底部并复制 grafana.json 文件的全部内容。

    vLLM Grafana 仪表板配置的屏幕截图。

  2. 按照这些步骤将 Grafana 配置导入 Azure 托管 Grafana 中的新仪表板。

  3. 导航到“托管 Grafana”终结点,查看可用的仪表板。 然后选择名为 vLLM 的新仪表板。

    Azure 托管 Grafana 中可用仪表板的屏幕截图。

  4. 要开始收集所选模型部署的数据,请确认 Grafana 仪表板左上角显示的 datasource 是为此示例创建的 Azure 托管 Prometheus 实例。

  5. 将 KAITO 工作区中定义的推理预设名称复制到 Grafana 仪表板中的 model_name 字段。 在此示例中,模型名称为 qwen2.5-coder-7b-instruct

  6. 片刻后,KAITO 推理服务的指标将在 vLLM Grafana 仪表板中填充。

    示例推理服务部署的 vLLM Grafana 仪表板的屏幕截图。

    注释

    这些推理指标的值将保持 0,直到请求提交到模型推理服务器。

后续步骤