Skip to content

Latest commit

 

History

History
175 lines (137 loc) · 7.86 KB

File metadata and controls

175 lines (137 loc) · 7.86 KB

Päättely Kaiton kanssa

Kaito on operaattori, joka automatisoi AI/ML päättelymallien käyttöönoton Kubernetes-klusterissa.

Kaitolla on seuraavat keskeiset erot verrattuna useimpiin yleisiin mallien käyttöönoton menetelmiin, jotka perustuvat virtuaalikoneinfrastruktuureihin:

  • Mallitiedostojen hallinta konttien kuvien avulla. HTTP-palvelin on käytettävissä päättelykutsujen tekemiseen mallikirjastoa hyödyntäen.
  • Välttää käyttöönoton parametrien säätämisen GPU-laitteistolle tarjoamalla valmiita kokoonpanoja.
  • GPU-solmujen automaattinen provisiointi mallin vaatimusten perusteella.
  • Suurten mallikuvien isännöinti julkisessa Microsoft Container Registryssä (MCR), mikäli lisenssi sallii.

Kaiton avulla suurten AI-päättelymallien käyttöönoton työnkulku Kubernetesissa on merkittävästi yksinkertaistettu.

Arkkitehtuuri

Kaito noudattaa klassista Kubernetes Custom Resource Definition (CRD) / controller -suunnittelumallia. Käyttäjä hallinnoi workspace-erikoisresurssia, joka kuvaa GPU-vaatimukset ja päättelymäärityksen. Kaiton kontrollerit automatisoivat käyttöönoton sovittamalla workspace-erikoisresurssin.

KAITO RAGEngine architecture

Yllä oleva kuva esittää Kaiton arkkitehtuurin yleiskatsauksen. Sen keskeiset osat ovat:

  • Workspace controller: Se sovittaa workspace-erikoisresurssin, luo machine (selitetty alla) -erikoisresursseja noden automaattista provisiointia varten sekä luo päättelytyökuorman (deployment tai statefulset) mallin valmiisiin asetuksiin perustuen.
  • Node provisioner controller: Kontrollerin nimi on gpu-provisioner gpu-provisioner helm chartissa. Se käyttää machine CRD:tä, joka on peräisin Karpenteriltä ja toimii yhdessä workspace-kontrollerin kanssa. Se integroituu Azure Kubernetes Servicen (AKS) API:hin lisätäkseen uusia GPU-nodeja AKS-klusteriin.

Huomautus: gpu-provisioner on avoimen lähdekoodin komponentti. Sen voi korvata muilla kontrollerilla, jos ne tukevat Karpenter-core API:a.

Asennus

Tarkista asennusohjeet tästä.

Nopeasti käyntiin Inference Phi-3

Esimerkkikoodi Inference 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" # Säädetään ulostulon ACR-polku
    imagePushSecret: ACR_REGISTRY_SECRET_HERE
    

$ kubectl apply -f examples/inference/kaito_workspace_phi_3.yaml

Workspace-tilaa voi seurata suorittamalla seuraavan komennon. Kun WORKSPACEREADY-sarake muuttuu True:ksi, malli on otettu käyttöön onnistuneesti.

$ 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

Seuraavaksi voi löytää päättelypalvelun klusterin IP-osoitteen ja käyttää tilapäistä curl-podia palvelun päätepisteen testaamiseen klusterissa.

$ 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\"}"

Nopeasti käyntiin Inference Phi-3 adaptereilla

Kaiton asennuksen jälkeen voi kokeilla seuraavia komentoja käynnistääkseen päättelypalvelun.

Esimerkkikoodi Inference Phi-3 adaptereilla

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" # Säätö Output ACR -polku
    imagePushSecret: ACR_REGISTRY_SECRET_HERE
    

$ kubectl apply -f examples/inference/kaito_workspace_phi_3_with_adapters.yaml

Workspace-tilaa voi seurata suorittamalla seuraavan komennon. Kun WORKSPACEREADY-sarake muuttuu True:ksi, malli on otettu käyttöön onnistuneesti.

$ 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

Seuraavaksi voi löytää päättelypalvelun klusterin IP-osoitteen ja käyttää tilapäistä curl-podia palvelun päätepisteen testaamiseen klusterissa.

$ 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\"}"

Vastuuvapauslauseke: Tämä asiakirja on käännetty tekoälypohjaisella käännöspalvelulla Co-op Translator. Pyrimme tarkkuuteen, mutta huomioithan, että automaattikäännöksissä voi esiintyä virheitä tai epätarkkuuksia. Alkuperäistä asiakirjaa sen alkuperäiskielellä tulisi pitää luotettavana lähteenä. Tärkeissä asioissa suositellaan ammattimaista ihmiskäännöstä. Emme ole vastuussa tästä käännöksestä mahdollisesti aiheutuvista väärinkäsityksistä tai virhetulkinnoista.