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.
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
.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
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 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.
Uygulamanın YAML bildirimini gözden geçirin.
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.
- Azure OpenAI Hizmetine Erişim İste formunu doldurarak Azure aboneliğinizde Azure OpenAI'yi etkinleştirin.
- Azure portalında bir Azure OpenAI örneği oluşturun.
- Oluşturduğunuz Azure OpenAI örneğini seçin.
- Anahtar oluşturmak için Anahtarlar ve Uç Noktalar'ı seçin.
- Azure OpenAI studio'yu açmak için Model Dağıtımları>Yönetilen Dağıtımlar'ı seçin.
- 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.
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
Ortam değişkenini
USE_AZURE_OPENAI
olarak"True"
ayarlayın.Azure OpenAI studio'dan Azure OpenAI dağıtım adınızı alın ve değerini doldurun
AZURE_OPENAI_DEPLOYMENT_NAME
.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'yiOPENAI_API_KEY
buna göre güncelleştirin.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
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
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.
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.
Mağaza yöneticisinde ürünler sekmesini ve ardından Ürün Ekle'yi seçin.
'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.>
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.
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.
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:
Azure Kubernetes Service