使用 AI 工具链操作员加载项在 Azure Kubernetes 服务(AKS)上部署 AI 模型

本文介绍如何使用 AI 工具链操作员加载项在 Kubernetes 上高效自承载大型语言模型,降低成本和资源复杂性,增强自定义,并保持对数据的完全控制。

关于 KAITO

Kubernetes 上的自承载大型语言模型(LLM)在大规模推理工作负荷(如批处理、聊天机器人、代理和 AI 驱动型应用程序)的组织之间获得了势头。 这些组织通常有权访问商业级 GPU,并寻求替代成本高昂的按令牌 API 定价模型,这些模型可以快速失控。 许多人还要求能够微调或自定义其模型,此功能通常受封闭源 API 提供程序的限制。 此外,处理敏感数据或专有数据的公司(特别是在金融、医疗保健或国防等监管部门)优先进行自我托管,以保持对数据的严格控制,并防止通过第三方系统公开。

为了满足这些需求和其他需求, Kubernetes AI 工具链操作员(KAITO)是云原生计算基础(CNCF)沙盒项目,简化了在 Kubernetes 上部署和管理开源 LLM 工作负载的过程。 KAITO 与 vLLM 集成,这是一个高吞吐量推理引擎,旨在高效提供大型语言模型。 vLLM 作为推理引擎有助于减少内存和 GPU 要求,而不会显著降低准确性。

AI 工具链操作员托管加载项基于开源 KAITO 项目构建,提供模块化的即插即用设置,使团队能够快速部署模型并通过生产就绪的 API 公开模型。 它包括与 OpenAI 兼容的 API、提示格式和流式处理响应支持等内置功能。 在 AKS 群集上部署时,KAITO 可确保数据保留在组织的受控环境中,从而提供安全、合规的替代云托管 LLM API。

准备阶段

  • 本文假定你对 Kubernetes 概念有基本的了解。 有关详细信息,请参阅 AKS 的 Kubernetes 核心概念
  • 有关 所有托管模型预设映像 和默认资源配置,请参阅 KAITO GitHub 存储库
  • AI 工具链操作员加载项当前支持 KAITO 版本 0.4.6,请在考虑从 KAITO 模型存储库中选择的模型时注意这一点。

局限性

  • AzureLinux 目前不支持 OS Windows SKU。
  • KAITO 工作区不支持 AMD GPU VM 大小 instanceType
  • 公共 Azure 区域支持 AI 工具链操作员加载项。

先决条件

  • 如果没有 Azure 订阅,可在开始前创建一个试用帐户

    • 如果有多个 Azure 订阅,请确保选择正确的订阅,其中将使用 az account set 命令创建资源并对其进行收费。

      注意

      你的 Azure 订阅必须具有 GPU VM 配额,这些配额建议用于在你的 AKS 资源所在的同一 Azure 区域中进行模型部署。

  • 已安装并配置 Azure CLI 2.76.0 或更高版本。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI

  • 已安装并配置 Kubernetes 命令行客户端 kubectl。 有关详细信息,请参阅安装 kubectl

导出环境变量

  • 若要简化本文中的配置步骤,可以使用以下命令定义环境变量。 请务必将占位符值替换为你自己的值。

    export AZURE_SUBSCRIPTION_ID="mySubscriptionID"
    export AZURE_RESOURCE_GROUP="myResourceGroup"
    export AZURE_LOCATION="myLocation"
    export CLUSTER_NAME="myClusterName"
    

在 AKS 群集上启用 AI 工具链操作员加载项

以下部分介绍如何创建启用了 AI 工具链操作器加载项的 AKS 群集并部署默认托管的 AI 模型。

创建启用了 AI 工具链操作器加载项的 AKS 群集

  1. 使用 az group create 命令创建 Azure 资源组。

    az group create --name $AZURE_RESOURCE_GROUP --location $AZURE_LOCATION
    
  2. 使用 az aks create 命令--enable-ai-toolchain-operator--enable-oidc-issuer和标志创建启用了 AI 工具链操作员加载项的 AKS 群集。

    az aks create --location $AZURE_LOCATION \
        --resource-group $AZURE_RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --enable-ai-toolchain-operator \
        --enable-oidc-issuer \
        --generate-ssh-keys
    
  3. 在现有的 AKS 群集上,可以使用 az aks update 命令启用 AI 工具链操作器加载项。

    az aks update --name $CLUSTER_NAME \
            --resource-group $AZURE_RESOURCE_GROUP \
            --enable-ai-toolchain-operator \
            --enable-oidc-issuer
    

连接到群集

  1. 使用 kubectl 命令将 配置为连接到你的群集。

    az aks get-credentials --resource-group $AZURE_RESOURCE_GROUP --name $CLUSTER_NAME
    
  2. 使用 kubectl get 命令验证与群集之间的连接。

    kubectl get nodes
    

部署默认托管 AI 模型

KAITO 提供了一系列小型到大型语言模型,这些模型托管为公共容器映像,可以使用 KAITO 工作区在一个步骤中部署。 可以浏览 KAITO 模型注册表中提供的预设 LLM 映像。 在本部分中,我们将使用高性能多模式 Microsoft Phi-4 微型 语言模型作为示例:

  1. 使用kubectl apply命令从 KAITO 模型存储库部署 Phi-4-mini 指示模型预设以推理。

    kubectl apply -f https://raw.githubusercontent.com/kaito-project/kaito/refs/heads/main/examples/inference/kaito_workspace_phi_4_mini.yaml
    
  2. 使用 kubectl get 命令跟踪工作区中的实时资源更改。

    kubectl get workspace workspace-phi-4-mini -w
    

    注意

    跟踪 KAITO 工作区部署时,请注意,计算机准备可能需要长达 10 分钟,工作区准备时间最长为 20 分钟,具体取决于模型的大小。

  3. 使用 kubectl get svc 命令检查你的推理服务,并获取其 IP 地址。

    export SERVICE_IP=$(kubectl get svc workspace-phi-4-mini -o jsonpath='{.spec.clusterIP}')
    
  4. 使用 OpenAI 聊天完成 API 格式使用所选的示例输入测试 Phi-4-mini 指示推理服务:

    kubectl run -it --rm --restart=Never curl --image=curlimages/curl -- curl -X POST http://$SERVICE_IP/v1/completions -H "Content-Type: application/json" \
      -d '{
            "model": "phi-4-mini-instruct",
            "prompt": "How should I dress for the weather today?",
            "max_tokens": 10
           }'
    

清理资源

如果不再需要这些资源,请删除它们,以免产生额外的 Azure 计算费用。

  1. 使用 kubectl delete workspace 命令删除 KAITO 工作区。

    kubectl delete workspace workspace-phi-4-mini
    
  2. 需要手动删除 KAITO 部署预配的 GPU 节点池。 使用 Phi-4-mini 创建的节点标签指示工作区使用 az aks nodepool list 命令获取节点池名称。 在此示例中,节点标签为“kaito.sh/workspace”:“workspace-phi-4-mini”。

    az aks nodepool list --resource-group $AZURE_RESOURCE_GROUP --cluster-name $CLUSTER_NAME
    
  3. 从 AKS 群集中删除具有此名称的节点池,并为要删除的每个 KAITO 工作区重复本部分中的步骤。

常见故障排除方案

应用 KAITO 模型推理工作区后,资源就绪状态和工作区条件可能不会更新为 True,原因如下:

  • 您的 Azure 订阅未达到在您的 KAITO 工作区中指定的最低 GPU 实例类型的配额。 需要在 Azure 订阅中 请求增加 GPU VM 系列的配额。
  • GPU 实例类型在你的 AKS 区域中不可用。 确认 特定区域中的 GPU 实例可用性 ,如果 GPU VM 系列不可用,请切换 Azure 区域。

后续步骤

详细了解 KAITO 模型部署选项:

  • 使用 AKS 上的 AI 工具链操作器加载项[微调模型][kaito-fine-tune]。
  • 了解 AKS 上的 AI 管道的 MLOps 最佳做法