本文介绍如何使用 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
目前不支持 OSWindows
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 群集
使用 az group create 命令创建 Azure 资源组。
az group create --name $AZURE_RESOURCE_GROUP --location $AZURE_LOCATION
使用 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
在现有的 AKS 群集上,可以使用 az aks update 命令启用 AI 工具链操作器加载项。
az aks update --name $CLUSTER_NAME \ --resource-group $AZURE_RESOURCE_GROUP \ --enable-ai-toolchain-operator \ --enable-oidc-issuer
连接到群集
-
az aks get-credentials --resource-group $AZURE_RESOURCE_GROUP --name $CLUSTER_NAME
使用
kubectl get
命令验证与群集之间的连接。kubectl get nodes
部署默认托管 AI 模型
KAITO 提供了一系列小型到大型语言模型,这些模型托管为公共容器映像,可以使用 KAITO 工作区在一个步骤中部署。 可以浏览 KAITO 模型注册表中提供的预设 LLM 映像。 在本部分中,我们将使用高性能多模式 Microsoft Phi-4 微型 语言模型作为示例:
使用
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
使用
kubectl get
命令跟踪工作区中的实时资源更改。kubectl get workspace workspace-phi-4-mini -w
注意
跟踪 KAITO 工作区部署时,请注意,计算机准备可能需要长达 10 分钟,工作区准备时间最长为 20 分钟,具体取决于模型的大小。
使用
kubectl get svc
命令检查你的推理服务,并获取其 IP 地址。export SERVICE_IP=$(kubectl get svc workspace-phi-4-mini -o jsonpath='{.spec.clusterIP}')
使用 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 计算费用。
使用
kubectl delete workspace
命令删除 KAITO 工作区。kubectl delete workspace workspace-phi-4-mini
需要手动删除 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
从 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 最佳做法 。