Aracılığıyla paylaş


Azure Kubernetes Service'te (AKS) OpenAI kullanan bir uygulama dağıtma

Bu makalede, AKS üzerinde Azure OpenAI veya OpenAI kullanan bir uygulamayı dağıtmayı öğreneceksiniz. OpenAI ile içerik oluşturma, özetleme, anlamsal arama ve doğal dil gibi farklı yapay zeka modellerini özel görevleriniz için kod oluşturma işlemine kolayca uyarlayabilirsiniz. Başlangıç olarak Azure aboneliğinizde bir AKS kümesi dağıtabilirsiniz. Ardından, OpenAI hizmetinizi ve örnek uygulamayı dağıtırsınız.

Örnek bulut yerel uygulaması, gerçek dünya uygulamalarını temsil eder. Çok kapsayıcılı uygulama, aşağıdakiler dahil olmak üzere birden çok dilde ve çerçevede yazılmış uygulamalardan oluşur:

  • Gin ile Golang
  • Actix-Web ile Rust
  • Vue.js ve Fastify ile JavaScript
  • FastAPI ile Python

Bu uygulamalar müşterilere ve mağaza yöneticilerine ön uçlar, RabbitMQ ileti kuyruğuna ve MongoDB veritabanına veri göndermek için REST API'leri ve trafiğin simülasyonunu yapmak için konsol uygulamaları sağlar.

Not

MongoDB ve Rabbit MQ gibi durum bilgisi olan kapsayıcıları üretim için kalıcı depolama olmadan çalıştırmanızı önermeyiz. Kolaylık sağlamak için bunları burada kullanırız, ancak Azure CosmosDB veya Azure Service Bus gibi yönetilen hizmetleri kullanmanızı öneririz.

Örnek uygulamanın GitHub kod tabanına erişmek için bkz . AKS Store Tanıtımı.

Başlamadan önce

  • Etkin aboneliği olan bir Azure hesabına ihtiyacınız vardır. Hesabınız yoksa ücretsiz bir hesap oluşturun.
  • Bu tanıtım için Azure OpenAI hizmetini veya OpenAI hizmetini kullanabilirsiniz.
    • Azure OpenAI hizmetini kullanmayı planlıyorsanız, Azure OpenAI Hizmetine erişim iste formunu kullanarak Azure aboneliğinizde etkinleştirmek için erişim istemeniz gerekir.
    • OpenAI kullanmayı planlıyorsanız OpenAI web sitesine kaydolun.

Önkoşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Kaynak grubu oluşturma

Azure kaynak grubu, Azure kaynaklarını dağıtıp yönettiğiniz mantıksal bir grupdur. Bir kaynak grubu oluşturduğunuzda, bir konum belirtmeniz istenir. Bu konum, kaynak grubu meta verilerinizin depolama konumudur ve kaynak oluşturma sırasında başka bir bölge belirtmezseniz kaynaklarınızın Azure'da çalıştırıldığı konumdur.

Aşağıdaki örnek eastus konumunda myResourceGroup adlı bir kaynak grubu oluşturur.

  • komutunu kullanarak az group create bir kaynak grubu oluşturun.

    az group create --name myResourceGroup --location eastus
    

    Aşağıdaki örnek çıktıda kaynak grubunun başarıyla oluşturulduğu gösterilmektedir:

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

AKS kümesi oluşturma

Aşağıdaki örnek, myResourceGroup içinde myAKSCluster adlı bir küme oluşturur.

  • komutunu kullanarak az aks create bir AKS kümesi oluşturun.

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

    Birkaç dakika sonra komut tamamlanıp kümeyle ilgili JSON biçimli bilgileri döndürür.

Kümeye bağlanma

Kubernetes kümesini yönetmek için kubectl adlı Kubernetes komut satırı istemcisini kullanırsınız. kubectl Azure Cloud Shell kullanıyorsanız zaten yüklüdür.

  1. komutunu kullanarak az aks install-cli yerel olarak yükleyinkubectl.

    az aks install-cli
    

    Not

    Linux tabanlı sisteminiz yükseltilmiş izinler gerektiriyorsa komutunu kullanabilirsiniz sudo az aks install-cli .

  2. komutunu kullanarak Kubernetes kümenize bağlanacak şekilde az aks get-credentials yapılandırınkubectl.

    Bu komut aşağıdaki işlemleri yürütür:

    • Kimlik bilgilerini indirir ve Kubernetes CLI'sini bunları kullanacak şekilde yapılandırılır.
    • Kubernetes yapılandırma dosyası için varsayılan konumu kullanır~/.kube/config. --file bağımsız değişkenini kullanarak Kubernetes yapılandırma dosyanız için farklı bir konum belirtin.
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. komutunu kullanarak kubectl get kümenize bağlantıyı doğrulayın. Bu komut, küme düğümlerinin listesini döndürür.

    kubectl get nodes
    

    Aşağıdaki örnek çıktı, önceki adımlarda oluşturulan düğümleri gösterir. Düğüm durumunun Hazır olduğundan emin olun.

    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
    

Not

Özel kümeler için, genel IP adresi üzerinden bağlanmaya çalışırsanız düğümlere ulaşılamayabilir. Bunu düzeltmek için, bağlanacağınız kümeyle aynı sanal ağ içinde bir uç nokta oluşturmanız gerekir. Özel AKS kümesi oluşturma yönergelerini izleyin ve ardından bu kümeye bağlanın.

Uygulamayı dağıtma

AKS AI tanıtımının mimari diyagramı.

AKS Mağazası uygulama bildirimi aşağıdaki Kubernetes dağıtımlarını ve hizmetlerini içerir:

  • Ürün hizmeti: Ürün bilgilerini gösterir.
  • Sipariş hizmeti: Sipariş verir.
  • Satır içi hizmet: Kuyruktan gelen siparişleri işler ve siparişleri tamamlar.
  • Mağaza ön: Müşterilerin ürünleri görüntülemesi ve sipariş vermesi için web uygulaması.
  • Mağaza yöneticisi: Mağaza çalışanlarının kuyruktaki siparişleri görüntülemesi ve ürün bilgilerini yönetmesi için web uygulaması.
  • Sanal müşteri: Sipariş oluşturma işlemini zamanlanmış olarak simüle eder.
  • Sanal çalışan: Sipariş tamamlanma benzetimini zamanlanmış olarak gerçekleştirin.
  • Mongo DB: Kalıcı veriler için NoSQL örneği.
  • Rabbit MQ: Sipariş kuyruğu için ileti kuyruğu.

Not

MongoDB ve Rabbit MQ gibi durum bilgisi olan kapsayıcıları üretim için kalıcı depolama olmadan çalıştırmanızı önermeyiz. Kolaylık sağlamak için bunları burada kullanırız, ancak Azure CosmosDB veya Azure Service Bus gibi yönetilen hizmetleri kullanmanızı öneririz.

  1. Uygulamanın YAML bildirimini gözden geçirin.

  2. komutunu kullanarak uygulamayı dağıtın kubectl apply ve YAML bildiriminizin adını belirtin.

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

    Aşağıdaki örnek çıktı, başarıyla oluşturulan dağıtımları ve hizmetleri gösterir:

    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
    

OpenAI'yi dağıtma

Azure OpenAI veya OpenAI kullanabilir ve uygulamanızı AKS üzerinde çalıştırabilirsiniz.

  1. Azure OpenAI Hizmetine Erişim İste formunu doldurarak Azure aboneliğinizde Azure OpenAI'yi etkinleştirin.
  2. Azure portalında bir Azure OpenAI örneği oluşturun.
  3. Oluşturduğunuz Azure OpenAI örneğini seçin.
  4. Anahtar oluşturmak için Anahtarlar ve Uç Noktalar'ı seçin.
  5. Azure OpenAI studio'yu açmak için Model Dağıtımları>Yönetilen Dağıtımlar'ı seçin.
  6. gpt-35-turbo modelini kullanarak yeni bir dağıtım oluşturun.

Azure OpenAI'de dağıtım oluşturma hakkında daha fazla bilgi için bkz . Azure OpenAI Hizmeti'ni kullanarak metin oluşturmaya başlama.

Yapay zeka hizmetini dağıtma

Uygulama dağıtıldığına göre, mağaza kataloğuna eklenen yeni ürünler için otomatik olarak açıklamalar oluşturmak üzere OpenAI kullanan Python tabanlı mikro hizmeti dağıtabilirsiniz.

  1. Adlı ai-service.yaml bir dosya oluşturun ve aşağıdaki bildirimde kopyalayın:

    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. Ortam değişkenini USE_AZURE_OPENAI olarak "True"ayarlayın.

  3. Azure OpenAI studio'dan Azure OpenAI dağıtım adınızı alın ve değerini doldurunAZURE_OPENAI_DEPLOYMENT_NAME.

  4. Kaynağın sol dikey penceresinde Anahtarlar ve Uç Nokta'ya tıklayarak Azure portalından Azure OpenAI uç noktanızı ve Azure OpenAI API anahtarınızı alın. AZURE_OPENAI_ENDPOINT YAML'de ve'yi OPENAI_API_KEY buna göre güncelleştirin.

  5. komutunu kullanarak uygulamayı dağıtın kubectl apply ve YAML bildiriminizin adını belirtin.

    kubectl apply -f ai-service.yaml
    

    Aşağıdaki örnek çıktı, başarıyla oluşturulan dağıtımları ve hizmetleri gösterir:

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

Not

API anahtarları gibi hassas bilgilerin Kubernetes bildirim dosyalarınıza doğrudan eklenmesi güvenli değildir ve yanlışlıkla kod depolarına işlenebilir. Kolaylık olması için buraya ekledik. Üretim iş yükleri için Yönetilen Kimlik'i kullanarak bunun yerine Azure OpenAI hizmetinde kimlik doğrulaması yapın veya gizli dizilerinizi Azure Key Vault'ta depolayın.

Uygulamayı test etme

  1. kubectl get pods komutunu kullanarak dağıtılan podların durumunu denetleyin.

    kubectl get pods
    

    Sonraki adıma geçmeden önce tüm podların Çalışıyor olduğundan emin olun.

    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. komutunu kullanarak mağaza yöneticisi web uygulamasının IP'sini alın ve ön web uygulamasını depolayın kubectl get service .

    kubectl get service store-admin
    

    Uygulama, Kubernetes hizmeti tarafından sağlanan bir genel yük dengeleyici aracılığıyla Mağaza Yöneticisi sitesini İnternet'te kullanıma sunar. Bu işlemin tamamlanması birkaç dakika sürebilir. EXTERNAL IP başlangıçta hizmet gelene ve IP adresini gösterene kadar beklemede olarak gösterilir.

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

    'store-front' adlı hizmet için aynı adımı yineleyin.

  3. Bir web tarayıcısı açın ve hizmetinizin dış IP adresine göz atın. Burada gösterilen örnekte, tarayıcıda Mağaza Yöneticisi'ni görmek için 40.64.86.161'i açın. Mağaza Ön Adımı için aynı adımı yineleyin.

  4. Mağaza yöneticisinde ürünler sekmesini ve ardından Ürün Ekle'yi seçin.

  5. 'ai-service' başarıyla çalıştığında, açıklama alanının yanında OpenAI'ye Sor düğmesini görmeniz gerekir. Adı, fiyatı ve anahtar sözcükleri doldurun, ardından OpenAI'ye Ürünü kaydet'i seçerek bir ürün açıklaması oluşturun.>

    Ürün açıklaması oluşturmak için openAI'nin nasıl kullanılacağını gösteren ekran görüntüsü.

  6. Artık mağaza yöneticisinde oluşturduğunuz yeni ürünü satıcılar tarafından kullanılan şekilde görebilirsiniz. Resimde, Orman Maymunu Çiğneme Oyuncağı'nın eklendiğini görebilirsiniz.

    Mağaza yöneticisi sayfasında yeni ürünü görüntüleyen ekran görüntüsü.

  7. Oluşturduğunuz yeni ürünü, alıcılar tarafından kullanılan Mağaza Ön Sayfasında da görebilirsiniz. Resimde, Orman Maymunu Çiğneme Oyuncağı'nın eklendiğini görebilirsiniz. komutunu kullanarak kubectl get service mağazanın IP adresini almayı unutmayın.

    Mağaza ön sayfasında yeni ürünü görüntüleyen ekran görüntüsü.

Sonraki adımlar

Bir AKS uygulamasına OpenAI işlevi eklediğinize göre, Azure Kubernetes Service'ten (AKS) Azure OpenAI'ye güvenli erişim sağlayabilirsiniz.

Yapay zeka kullanım örnekleri hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın: