有什么新的! |
---|
最新版本kaito 2024 年 11 月 15 日。kaito v0.3.2。 |
首次发布:2023 kaito 11 月 15 日。kaito v0.1.0。 |
kaito是一个操作符,可以在 Kubernetes 集群中自动执行 AI/ML 模型推理或调整工作负载。目标模型为falcon、phi-3等流行的开源大型模型。与大多数基于虚拟机基础设施构建的主流模型部署方法相比, kaito具有以下主要区别:
使用kaito ,在 Kubernetes 中加入大型 AI 推理模型的工作流程大大简化。
kaito遵循经典的 Kubernetes 自定义资源定义(CRD)/控制器设计模式。用户管理workspace
自定义资源,该资源描述 GPU 要求以及推理或调整规范。 kaito控制器将通过协调workspace
自定义资源来自动化部署。
上图展示了kaito架构概述。其主要组成部分包括:
workspace
自定义资源,创建machine
(如下所述)自定义资源以触发节点自动配置,并根据模型预设配置创建推理或调整工作负载( deployment
、 statefulset
或job
)。machine
CRD 与工作区控制器交互。它与 Azure 资源管理器 REST API 集成,以将新的 GPU 节点添加到 AKS 或 AKS Arc 群集。注意: gpu-provisioner是一个开源组件。如果其他控制器支持 Karpenter 核心 API,则可以将其替换。
请查看此处的安装指南以了解如何使用 Azure CLI 进行部署,以及此处的安装指南以了解如何使用 Terraform 进行部署。
安装kaito后,可以尝试以下命令来启动 falcon-7b 推理服务。
$ cat examples/inference/ kaito _workspace_falcon_7b.yaml
apiVersion: kaito .sh/v1alpha1
kind: Workspace
metadata:
name: workspace-falcon-7b
resource:
instanceType: " Standard_NC12s_v3 "
labelSelector:
matchLabels:
apps: falcon-7b
inference:
preset:
name: " falcon-7b "
$ kubectl apply -f examples/inference/ kaito _workspace_falcon_7b.yaml
可以通过运行以下命令来跟踪工作区状态。当 WORKSPACEREADY 列变为True
时,模型已成功部署。
$ kubectl get workspace workspace-falcon-7b
NAME INSTANCE RESOURCEREADY INFERENCEREADY JOBSTARTED WORKSPACESUCCEEDED AGE
workspace-falcon-7b Standard_NC12s_v3 True True True True 10m
接下来,我们可以找到推理服务的集群 IP,并使用临时curl
pod 来测试集群中的服务端点。
$ kubectl get svc workspace-falcon-7b
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
workspace-falcon-7b ClusterIP < CLUSTERIP > < none > 80/TCP,29500/TCP 10m
export CLUSTERIP= $( kubectl get svc workspace-falcon-7b -o jsonpath= " {.spec.clusterIPs[0]} " )
$ kubectl run -it --rm --restart=Never curl --image=curlimages/curl -- curl -X POST http:// $CLUSTERIP /chat -H " accept: application/json " -H " Content-Type: application/json " -d " { " prompt " : " YOUR QUESTION HERE " } "
kaito支持的模型的详细用法可以在这里找到。如果用户想要部署自己的容器化模型,可以在工作区自定义资源的inference
字段中提供 Pod 模板(详细信息请参阅 API 定义)。控制器将使用所有配置的 GPU 节点创建部署工作负载。请注意,目前控制器不处理自动模型升级。仅当工作负载不存在时,它才会根据预设配置创建推理工作负载。
kaito支持的模型数量正在不断增加!请查看此文档以了解如何添加新的支持型号。
从 v0.3.0 版本开始, kaito支持模型微调并在推理服务中使用微调适配器。有关更多信息,请参阅调优文档和推理文档。
要使用首选节点,请确保该节点具有在 matchLabels 下的 labelSelector 中指定的标签。例如,如果您的 labelSelector 是:
labelSelector:
matchLabels:
apps: falcon-7b
那么该节点应该具有标签: apps=falcon-7b
。
当使用托管公共模型时,用户可以手动删除现有的推理工作负载( StatefulSet
的Deployment
),工作区控制器将使用当前版本中定义的最新预设配置(例如镜像版本)创建一个新的推理工作负载。对于私有模型,建议使用规范中的新图像版本创建一个新工作区。
kaito提供了有限的功能来覆盖手动使用transformer
运行时的模型的预设配置。要更新已部署模型的参数,请针对工作负载执行kubectl edit
,该工作负载可以是StatefulSet
或Deployment
。例如,要在falcon-7b-instruct
部署上启用 4 位量化,您可以执行:
kubectl edit deployment workspace-falcon-7b-instruct
在部署规范中,找到并修改命令字段。
accelerate launch --num_processes 1 --num_machines 1 --machine_rank 0 --gpu_ids all inference_api.py --pipeline text-generation --torch_dtype bfloat16
accelerate launch --num_processes 1 --num_machines 1 --machine_rank 0 --gpu_ids all inference_api.py --pipeline text-generation --torch_dtype bfloat16 --load_in_4bit
目前,我们允许用户手动更改以下参数:
pipeline
:对于文本生成模型,可以是text-generation
,也可以是conversational
。load_in_4bit
或load_in_8bit
:模型量化分辨率。如果您需要自定义其他参数,请提出问题以便将来可能包含。
主要区别在于它们的预期用例。指导模型是针对交互式聊天应用程序优化的微调版本。由于它们在会话上下文中的性能增强,它们通常是大多数实现的首选。另一方面,非指令或原始模型是为进一步微调而设计的。
阅读更多
该项目欢迎贡献和建议。这些贡献要求您同意贡献者许可协议 (CLA),声明您有权并且实际上授予我们使用您的贡献的权利。有关详细信息,请访问 CNCF 的 CLA。
当您提交拉取请求时,CLA 机器人将自动确定您是否需要提供 CLA 并适当地修饰 PR(例如,状态检查、评论)。只需按照机器人提供的说明进行操作即可。您只需使用我们的 CLA 在所有存储库中执行一次此操作。
本项目已采用 CNCF 的 CLA,请通过 https://easycla.lfx.linuxfoundation.org 对 CLA 进行电子签名。如果遇到问题,您可以通过 Linux 基金会支持网站向 Linux 基金会 ID 组提交票证。
请参阅麻省理工学院许可证。
kaito已采用云原生计算基金会行为准则。欲了解更多信息,请参阅kaito行为准则。
“ kaito开发人员” kaito [email protected]