Megosztás a következőn keresztül:


OpenAI-t használó alkalmazás üzembe helyezése az Azure Kubernetes Service-ben (AKS)

Ebből a cikkből megtudhatja, hogyan helyezhet üzembe egy Azure OpenAI-t vagy OpenAI-t használó alkalmazást az AKS-en. Az OpenAI segítségével egyszerűen adaptálhatja a különböző AI-modelleket, például a tartalomgenerálást, az összegzést, a szemantikai keresést és a természetes nyelvet a kódgeneráláshoz az adott feladatokhoz. Először üzembe kell helyeznie egy AKS-fürtöt az Azure-előfizetésében. Ezután üzembe helyezi az OpenAI szolgáltatást és a mintaalkalmazást.

A natív felhőbeli mintaalkalmazás a valós implementációkra jellemző. A többtárolós alkalmazás több nyelven és keretrendszerben írt alkalmazásokból áll, beleértve a következőket:

  • Golang és Gin
  • Rust with Actix-Web
  • JavaScript Vue.js és Fastify használatával
  • Python és FastAPI

Ezek az alkalmazások előtérrendszereket biztosítanak az ügyfelek és a rendszergazdák számára, REST API-kat az adatok RabbitMQ üzenetsorba és MongoDB-adatbázisba való küldéséhez, valamint konzolalkalmazásokat a forgalom szimulálásához.

Feljegyzés

Nem javasoljuk az állapotalapú tárolók( például a MongoDB és a Rabbit MQ) futtatását állandó tárolás nélkül az éles környezetben. Itt az egyszerűség kedvéért használjuk őket, de azt javasoljuk, hogy felügyelt szolgáltatásokat használjon, például az Azure CosmosDB-t vagy az Azure Service Bust.

A mintaalkalmazás GitHub-kódbázisának eléréséhez tekintse meg az AKS Store bemutatóját.

Mielőtt elkezdené

Előfeltételek

Erőforráscsoport létrehozása

Az Azure-erőforráscsoportok olyan logikai csoportok, amelyekben Azure-erőforrásokat helyezhet üzembe és kezelhet. Erőforráscsoport létrehozásakor a rendszer kérni fogja, hogy adjon meg egy helyet. Ez a hely az erőforráscsoport metaadatainak tárolási helye, és ahol az erőforrások az Azure-ban futnak, ha nem ad meg egy másik régiót az erőforrás létrehozása során.

A következő példában létrehozunk egy myResourceGroup nevű erőforráscsoportot az eastus helyen.

  • Hozzon létre egy erőforráscsoportot a az group create paranccsal.

    az group create --name myResourceGroup --location eastus
    

    Az alábbi példakimenet az erőforráscsoport sikeres létrehozását mutatja be:

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null,
      "type": "Microsoft.Resources/resourceGroups"
    }
    

AKS-fürt létrehozása

Az alábbi példa létrehoz egy myAKSCluster nevű fürtöt a myResourceGroupban.

  • Hozzon létre egy AKS-fürtöt a az aks create paranccsal.

    az aks create --resource-group myResourceGroup --name myAKSCluster --generate-ssh-keys
    

    Néhány perc elteltével a parancs befejeződik, és JSON formátumú információkat ad vissza a fürtről.

Csatlakozás a fürthöz

Kubernetes-fürt kezeléséhez a Kubernetes parancssori ügyfelet, a Kubectl-et kell használnia. kubectl az Azure Cloud Shell használata esetén már telepítve van.

  1. Telepítse kubectl helyileg a az aks install-cli parancs használatával.

    az aks install-cli
    

    Feljegyzés

    Ha a Linux-alapú rendszer emelt szintű engedélyeket igényel, használhatja a sudo az aks install-cli parancsot.

  2. Konfigurálja kubectl a Kubernetes-fürthöz való csatlakozást a az aks get-credentials paranccsal.

    Ez a parancs a következő műveleteket hajtja végre:

    • Letölti a hitelesítő adatokat, és konfigurálja a Kubernetes parancssori felületét a használatukhoz.
    • A ~/.kube/configKubernetes-konfigurációs fájl alapértelmezett helye. Adjon meg egy másik helyet a Kubernetes-konfigurációs fájlhoz a --file argumentum használatával.
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Ellenőrizze a fürthöz való kapcsolatot a kubectl get paranccsal. Ez a parancs a fürtcsomópontok listáját adja vissza.

    kubectl get nodes
    

    Az alábbi példakimenet az előző lépésekben létrehozott csomópontokat mutatja be. Győződjön meg arról, hogy a csomópont állapota kész.

    NAME                                STATUS   ROLES   AGE     VERSION
    aks-nodepool1-31469198-vmss000000   Ready    agent   3h29m   v1.25.6
    aks-nodepool1-31469198-vmss000001   Ready    agent   3h29m   v1.25.6
    aks-nodepool1-31469198-vmss000002   Ready    agent   3h29m   v1.25.6
    

Feljegyzés

Privát fürtök esetén előfordulhat, hogy a csomópontok nem érhetők el, ha a nyilvános IP-címen keresztül próbál hozzájuk csatlakozni. A probléma megoldásához létre kell hoznia egy végpontot ugyanabban a virtuális hálózaton belül, ahonnan a fürt csatlakozik. Kövesse az utasításokat egy privát AKS-fürt létrehozásához, majd csatlakozzon hozzá.

Az alkalmazás üzembe helyezése

Az AKS AI-bemutató architektúradiagramja.

Az AKS Store alkalmazásjegyzéke a következő Kubernetes-üzemelő példányokat és szolgáltatásokat tartalmazza:

  • Termékszolgáltatás: A termékinformációkat jeleníti meg.
  • Rendelési szolgáltatás: Rendeléseket rendel.
  • Makeline szolgáltatás: Feldolgozza a rendeléseket az üzenetsorból, és végrehajtja a rendeléseket.
  • Áruházi előtér: Webalkalmazás az ügyfelek számára termékek megtekintésére és megrendelések leadására.
  • Áruházi rendszergazda: Webalkalmazás az áruház alkalmazottai számára a rendelések várólistán való megtekintéséhez és a termékadatok kezeléséhez.
  • Virtuális ügyfél: A rendelések ütemezett létrehozását szimulálja.
  • Virtuális feldolgozó: A rendelések ütemezett befejezését szimulálja.
  • Mongo DB: NoSQL-példány a tárolt adatokhoz.
  • Nyúl MQ: Üzenetsor rendelési üzenetsorhoz.

Feljegyzés

Nem javasoljuk az állapotalapú tárolók( például a MongoDB és a Rabbit MQ) futtatását állandó tárolás nélkül az éles környezetben. Itt az egyszerűség kedvéért használjuk őket, de azt javasoljuk, hogy felügyelt szolgáltatásokat használjon, például az Azure CosmosDB-t vagy az Azure Service Bust.

  1. Tekintse át az alkalmazás YAML-jegyzékét .

  2. Telepítse az alkalmazást a kubectl apply paranccsal, és adja meg a YAML-jegyzék nevét.

    kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/aks-store-all-in-one.yaml
    

    Az alábbi példakimenet a sikeresen létrehozott üzembe helyezéseket és szolgáltatásokat mutatja be:

    deployment.apps/mongodb created
    service/mongodb created
    deployment.apps/rabbitmq created
    service/rabbitmq created
    deployment.apps/order-service created
    service/order-service created
    deployment.apps/makeline-service created
    service/makeline-service created
    deployment.apps/product-service created
    service/product-service created
    deployment.apps/store-front created
    service/store-front created
    deployment.apps/store-admin created
    service/store-admin created
    deployment.apps/virtual-customer created
    deployment.apps/virtual-worker created
    

Az OpenAI üzembe helyezése

Használhatja az Azure OpenAI-t vagy az OpenAI-t, és futtathatja az alkalmazást az AKS-en.

  1. Engedélyezze az Azure OpenAI-t az Azure-előfizetésében az Azure OpenAI szolgáltatáshoz való hozzáférés kérése űrlap kitöltésével.
  2. Az Azure Portalon hozzon létre egy Azure OpenAI-példányt.
  3. Válassza ki a létrehozott Azure OpenAI-példányt.
  4. Kulcs létrehozásához válassza a Kulcsok és végpontok lehetőséget.
  5. Válassza a Modelltelepítések felügyelt üzembe helyezések> lehetőséget az Azure OpenAI studio megnyitásához.
  6. Hozzon létre egy új üzembe helyezést a gpt-35-turbo modellel.

Az Üzembe helyezés azure OpenAI-ban való létrehozásáról további információt az Azure OpenAI szolgáltatással történő szövegkészítés első lépései című témakörben talál.

Az AI-szolgáltatás üzembe helyezése

Az alkalmazás üzembe helyezése után üzembe helyezheti az OpenAI-t használó Python-alapú mikroszolgáltatást, amely automatikusan létrehozza az áruház katalógusához hozzáadott új termékek leírását.

  1. Hozzon létre egy fájlt, ai-service.yaml és másolja a következő jegyzékbe:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ai-service
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: ai-service
      template:
        metadata:
          labels:
            app: ai-service
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: ai-service
            image: ghcr.io/azure-samples/aks-store-demo/ai-service:latest
            ports:
            - containerPort: 5001
            env:
            - name: USE_AZURE_OPENAI 
              value: "True"
            - name: AZURE_OPENAI_DEPLOYMENT_NAME 
              value: ""
            - name: AZURE_OPENAI_ENDPOINT 
              value: ""
            - name: OPENAI_API_KEY 
              value: ""
            resources:
              requests:
                cpu: 20m
                memory: 50Mi
              limits:
                cpu: 50m
                memory: 128Mi
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: ai-service
    spec:
      type: ClusterIP
      ports:
      - name: http
        port: 5001
        targetPort: 5001
      selector:
        app: ai-service
    
  2. Állítsa a környezeti változót USE_AZURE_OPENAI a következőre "True": .

  3. Kérje le az Azure OpenAI üzembehelyezési nevét az Azure OpenAI studióból, és adja meg az AZURE_OPENAI_DEPLOYMENT_NAME értéket.

  4. Az Azure OpenAI-végpont és az Azure OpenAI API-kulcs lekérése az Azure Portalról az erőforrás bal oldali paneljén található Kulcsok és végpontok kiválasztásával. Ennek megfelelően frissítse a AZURE_OPENAI_ENDPOINT YAML-et és OPENAI_API_KEY annak megfelelően.

  5. Telepítse az alkalmazást a kubectl apply paranccsal, és adja meg a YAML-jegyzék nevét.

    kubectl apply -f ai-service.yaml
    

    Az alábbi példakimenet a sikeresen létrehozott üzembe helyezéseket és szolgáltatásokat mutatja be:

      deployment.apps/ai-service created
      service/ai-service created
    

Feljegyzés

A Kubernetes-jegyzékfájlokhoz közvetlenül bizalmas információk, például API-kulcsok hozzáadása nem biztonságos, és előfordulhat, hogy véletlenül le lesz kötelezve a kódtárakra. Itt az egyszerűség kedvéért adtunk hozzá. Éles számítási feladatok esetén a felügyelt identitással hitelesíthet az Azure OpenAI szolgáltatásban, vagy tárolhatja titkos kulcsait az Azure Key Vaultban.

Az alkalmazás tesztelése

  1. Ellenőrizze az üzembe helyezett podok állapotát a kubectl get pods paranccsal.

    kubectl get pods
    

    A következő lépés folytatása előtt győződjön meg arról, hogy az összes pod fut .

    NAME                                READY   STATUS    RESTARTS   AGE
    makeline-service-7db94dc7d4-8g28l   1/1     Running   0          99s
    mongodb-78f6d95f8-nptbz             1/1     Running   0          99s
    order-service-55cbd784bb-6bmfb      1/1     Running   0          99s
    product-service-6bf4d65f74-7cbvk    1/1     Running   0          99s
    rabbitmq-9855984f9-94nlm            1/1     Running   0          99s
    store-admin-7f7d768c48-9hn8l        1/1     Running   0          99s
    store-front-6786c64d97-xq5s9        1/1     Running   0          99s
    virtual-customer-79498f8667-xzsb7   1/1     Running   0          99s
    virtual-worker-6d77fff4b5-7g7rj     1/1     Running   0          99s
    
  2. Szerezze be az áruházi rendszergazda webalkalmazás IP-címét, és a parancs használatával tárolja az előtér-webalkalmazást kubectl get service .

    kubectl get service store-admin
    

    Az alkalmazás a Kubernetes szolgáltatás által kiépített nyilvános terheléselosztón keresztül teszi elérhetővé az interneten az Áruház felügyeleti webhelyét. A folyamat eltarthat pár percig. A külső IP-cím kezdetben függőben van, amíg a szolgáltatás meg nem jelenik, és meg nem jelenik az IP-cím.

    NAME          TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
    store-admin   LoadBalancer   10.0.142.228   40.64.86.161    80:32494/TCP   50m    
    

    Ismételje meg ugyanezt a lépést a "store-front" nevű szolgáltatás esetében.

  3. Nyisson meg egy webböngészőt, és keresse meg a szolgáltatás külső IP-címét. Az itt látható példában nyissa meg a 40.64.86.161-et a Store Admin böngészőben való megtekintéséhez. Ismételje meg ugyanezt a lépést a Store Front esetében is.

  4. Az Áruház rendszergazdája területen válassza a Termékek lapot, majd a Termékek hozzáadása lehetőséget.

  5. Ha az "ai-service" sikeresen fut, a leírás mező mellett az OpenAI kérése gombnak kell megjelennie. Adja meg a nevet, az árat és a kulcsszavakat, majd hozzon létre egy termékleírást az OpenAI>Mentés kérése lehetőség kiválasztásával.

    Képernyőkép arról, hogyan hozhat létre termékleírást az openAI használatával.

  6. Most már láthatja az eladók által használt, áruházi rendszergazda által létrehozott új terméket. A képen látható, hogy a Jungle Monkey Chew Toy hozzá van adva.

    Képernyőkép az új termékről az áruház felügyeleti lapján.

  7. A vásárlók által használt, a Store Fronton létrehozott új terméket is láthatja. A képen látható, hogy a Jungle Monkey Chew Toy hozzá van adva. Ne felejtse el lekérni a tár ip-címét a kubectl get service parancs használatával.

    Képernyőkép az új termékről az áruház kezdőlapján.

Következő lépések

Most, hogy hozzáadta az OpenAI-funkciókat egy AKS-alkalmazáshoz, biztonságossá teheti az Azure OpenAI-hez való hozzáférést az Azure Kubernetes Service-ből (AKS).

A generatív AI-használati esetekről az alábbi forrásokból tudhat meg többet: