有什麼新的! |
---|
最新版本kaito 2024 年 11 月 15 日。 |
首次發布:2023 kaito 11 月 15 日。 |
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]