Kaito_Inference.md
February 1, 2026 · View on GitHub
Inferens med Kaito
Kaito er en operatør, der automatiserer implementeringen af AI/ML-inferensmodeller i et Kubernetes-klynge.
Kaito har følgende nøgleforskelle sammenlignet med de fleste mainstream metoder til modelimplementering, som er bygget oven på virtuelle maskin-infrastrukturer:
- Håndter modeller filer ved hjælp af containerbilleder. En HTTP-server leveres til at udføre inferenskald ved hjælp af modellbiblioteket.
- Undgå justering af implementeringsparametre for at tilpasse GPU-hardware ved at levere forudindstillede konfigurationer.
- Automatisk provisionering af GPU-noder baseret på modelkrav.
- Host store modelbilleder i det offentlige Microsoft Container Registry (MCR), hvis licensen tillader det.
Ved at bruge Kaito forenkles arbejdsgangen for onboarding af store AI-inferensmodeller i Kubernetes betydeligt.
Arkitektur
Kaito følger den klassiske Kubernetes Custom Resource Definition (CRD)/controller designmønster. Brugeren administrerer en workspace custom resource, som beskriver GPU-kravene og inferensspecifikationen. Kaito-kontrollere automatiserer implementeringen ved at forlige workspace custom resource.
Figuren ovenfor viser Kaito-arkitekturens oversigt. Dens hovedkomponenter består af:
- Workspace controller: Den forliger
workspacecustom resource, oprettermachine(forklaret nedenfor) custom resources for at igangsætte automatisk node-provisionering, og opretter inferensarbejdsbyrden (deploymentellerstatefulset) baseret på modelens forudindstillede konfigurationer. - Node provisioner controller: Controllerens navn er gpu-provisioner i gpu-provisioner helm chart. Den bruger
machineCRD, der stammer fra Karpenter til at interagere med workspace-controlleren. Den integreres med Azure Kubernetes Service (AKS) API’er for at tilføje nye GPU-noder til AKS-klyngen.
Bemærk: gpu-provisioner er en open source komponent. Den kan erstattes af andre controllere, hvis de understøtter Karpenter-core API’er.
Installation
Se installationsvejledningen her.
Hurtig start Inferens Phi-3
apiVersion: kaito.sh/v1alpha1
kind: Workspace
metadata:
name: workspace-phi-3-mini
resource:
instanceType: "Standard_NC6s_v3"
labelSelector:
matchLabels:
apps: phi-3
inference:
preset:
name: phi-3-mini-4k-instruct
# Note: This configuration also works with the phi-3-mini-128k-instruct preset
$ cat examples/inference/kaito_workspace_phi_3.yaml
apiVersion: kaito.sh/v1alpha1
kind: Workspace
metadata:
name: workspace-phi-3-mini
resource:
instanceType: "Standard_NC6s_v3"
labelSelector:
matchLabels:
app: phi-3-adapter
tuning:
preset:
name: phi-3-mini-4k-instruct
method: qlora
input:
urls:
- "https://huggingface.co/datasets/philschmid/dolly-15k-oai-style/resolve/main/data/train-00000-of-00001-54e3756291ca09c6.parquet?download=true"
output:
image: "ACR_REPO_HERE.azurecr.io/IMAGE_NAME_HERE:0.0.1" # Justering af output ACR-sti
imagePushSecret: ACR_REGISTRY_SECRET_HERE
$ kubectl apply -f examples/inference/kaito_workspace_phi_3.yaml
Status for workspace kan spores ved at køre følgende kommando. Når kolonnen WORKSPACEREADY bliver True, er modellen blevet deployeret med succes.
$ kubectl get workspace kaito_workspace_phi_3.yaml
NAME INSTANCE RESOURCEREADY INFERENCEREADY WORKSPACEREADY AGE
workspace-phi-3-mini Standard_NC6s_v3 True True True 10m
Dernæst kan man finde inferensservicens cluster-IP og bruge en midlertidig curl pod til at teste service-endpointet i klyngen.
$ kubectl get svc workspace-phi-3-mini
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
workspace-phi-3-mini-adapter ClusterIP <CLUSTERIP> <none> 80/TCP,29500/TCP 10m
export CLUSTERIP=$(kubectl get svc workspace-phi-3-mini-adapter -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\"}"
Hurtig start Inferens Phi-3 med adapters
Efter installation af Kaito kan man prøve følgende kommandoer for at starte en inferensservice.
Eksempelkode Inferens Phi-3 med Adapters
apiVersion: kaito.sh/v1alpha1
kind: Workspace
metadata:
name: workspace-phi-3-mini-adapter
resource:
instanceType: "Standard_NC6s_v3"
labelSelector:
matchLabels:
apps: phi-3-adapter
inference:
preset:
name: phi-3-mini-128k-instruct
adapters:
- source:
name: "phi-3-adapter"
image: "ACR_REPO_HERE.azurecr.io/ADAPTER_HERE:0.0.1"
strength: "1.0"
$ cat examples/inference/kaito_workspace_phi_3_with_adapters.yaml
apiVersion: kaito.sh/v1alpha1
kind: Workspace
metadata:
name: workspace-phi-3-mini-adapter
resource:
instanceType: "Standard_NC6s_v3"
labelSelector:
matchLabels:
app: phi-3-adapter
tuning:
preset:
name: phi-3-mini-128k-instruct
method: qlora
input:
urls:
- "https://huggingface.co/datasets/philschmid/dolly-15k-oai-style/resolve/main/data/train-00000-of-00001-54e3756291ca09c6.parquet?download=true"
output:
image: "ACR_REPO_HERE.azurecr.io/IMAGE_NAME_HERE:0.0.1" # Justering af Output ACR Path
imagePushSecret: ACR_REGISTRY_SECRET_HERE
$ kubectl apply -f examples/inference/kaito_workspace_phi_3_with_adapters.yaml
Status for workspace kan spores ved at køre følgende kommando. Når kolonnen WORKSPACEREADY bliver True, er modellen blevet deployeret med succes.
$ kubectl get workspace kaito_workspace_phi_3_with_adapters.yaml
NAME INSTANCE RESOURCEREADY INFERENCEREADY WORKSPACEREADY AGE
workspace-phi-3-mini-adapter Standard_NC6s_v3 True True True 10m
Dernæst kan man finde inferensservicens cluster-IP og bruge en midlertidig curl pod til at teste service-endpointet i klyngen.
$ kubectl get svc workspace-phi-3-mini-adapter
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
workspace-phi-3-mini-adapter ClusterIP <CLUSTERIP> <none> 80/TCP,29500/TCP 10m
export CLUSTERIP=$(kubectl get svc workspace-phi-3-mini-adapter -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\"}"
Ansvarsfraskrivelse: Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten Co-op Translator. Selvom vi bestræber os på nøjagtighed, bedes du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det oprindelige dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse.