Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
NVIDIA Çıkarım Mikro Hizmetleri (NIM'ler), yapay zeka uygulamaları oluşturma şeklinizi basitleştiren ve hızlandıran iyileştirilmiş, kapsayıcılı yapay zeka çıkarım mikro hizmetleridir. Bu modeller, Azure Container Apps'te güvenli uç noktalar olarak doğrudan dağıtım için önceden paketlenmiş, ölçeklenebilir ve performansa göre ayarlanmıştır. Azure Container Apps'i sunucusuz GPU'larla kullandığınızda, temel altyapıyı yönetmek zorunda kalmadan bu NIM'leri verimli bir şekilde çalıştırabilirsiniz.
Bu öğreticide, sunucusuz GPU'ları kullanarak Azure Container Apps'e bir Llama3 NVIDIA NIM dağıtmayı öğreneceksiniz.
Bu öğreticide sunucusuz GPU'larla çalışırken soğuk başlangıç performansını geliştirmek için Azure Container Registry'nin premium bir örneği kullanılır. Premium Azure Container Registry kullanmak istemiyorsanız, bu öğreticideki komutu az acr create olarak ayarlamak için --sku ile basic değiştirdiğinizden emin olun.
Önkoşullar
| Kaynak | Açıklama |
|---|---|
| Azure hesabı | Etkin aboneliği olan bir Azure hesabı. Eğer sizde yoksa ücretsiz olarak bir hesap oluşturabilirsiniz. |
| Azure Komut Satırı Arayüzü (Azure CLI) | Azure CLI’yi yükleyin. |
| NVIDIA NGC API anahtarı | NVIDIA GPU Bulutu (NGC) web sitesinden bir API anahtarı alabilirsiniz. |
Kurulum
CLI'dan Azure'da oturum açmak için aşağıdaki komutu çalıştırın ve istemleri izleyerek kimlik doğrulama işlemini tamamlayın.
az login
CLI'nın en son sürümünü çalıştırdığınızdan emin olmak için yükseltme komutunu çalıştırın.
az upgrade
Ardından CLI için Azure Container Apps uzantısını yükleyin veya güncelleştirin.
Azure CLI'da komutları veya PowerShell'deki modülden az containerapp cmdlet'leri çalıştırdığınızda Az.App eksik parametrelerle ilgili hatalar alırsanız, Azure Container Apps uzantısının en son sürümünü yüklediğinizden emin olun.
az extension add --name containerapp --upgrade
Uyarı
Mayıs 2024'den itibaren Azure CLI uzantıları artık önizleme özelliklerini varsayılan olarak etkinleştirmez. Container Apps önizleme özelliklerine erişmek için ile --allow-preview trueContainer Apps uzantısını yükleyin.
az extension add --name containerapp --upgrade --allow-preview true
Geçerli uzantı veya modül yüklendikten sonra, Microsoft.App ve Microsoft.OperationalInsights ad alanlarını kaydedin.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Kaynak grubunu adlandırarak ve konumu ayarlayarak ortam değişkenlerini ayarlayın.
RESOURCE_GROUP="my-resource-group" LOCATION="swedencentral"Ardından, benzersiz bir kapsayıcı kayıt defteri adı oluşturun.
SUFFIX=$(head /dev/urandom | tr -dc 'a-z0-9' | head -c 6) ACR_NAME="mygpututorialacr${SUFFIX}"Son olarak, ortamı adlandırmak ve tanımlamak, iş yükü profil türünü, kapsayıcı uygulaması adını ve kapsayıcıyı belirlemek için değişkenleri ayarlayın.
CONTAINERAPPS_ENVIRONMENT="my-environment-name" GPU_TYPE="Consumption-GPU-NC24-A100" CONTAINER_APP_NAME="llama3-nim" CONTAINER_AND_TAG="meta/llama-3.1-8b-instruct:latest" NGC_SECRET=<Your NVIDIA NGC API Key>
Azure kaynak grubu oluşturma
Kapsayıcı uygulaması dağıtımınızla ilgili hizmetleri düzenlemek için bir kaynak grubu oluşturun.
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
Azure Container Registry (ACR) oluşturun.
Uyarı
Bu öğreticide sunucusuz GPU'larla çalışırken soğuk başlangıç performansını geliştirmek için premium bir Azure Container Registry kullanılır. Premium bir Azure Container Registry kullanmak istemiyorsanız, aşağıdaki komutu değiştirin ve
--skuöğesinibasicolarak ayarlayın.az acr create \ --resource-group $RESOURCE_GROUP \ --name $ACR_NAME \ --location $LOCATION \ --sku premium
NVIDIA NIM görüntüsünü Azure Container Registry'nize aktarma
Ardından, görüntüyü NVIDIA GPU Bulutu'ndan Azure Container Registry'ye aktarın.
Uyarı
NVIDIA NIC'lerin her birinin kendi donanım gereksinimleri vardır. Seçtiğiniz GPU türünün seçtiğiniz NIM'yi desteklediğinden emin olun. Bu öğreticide kullanılan Llama3 NIM, NVIDIA A100 GPU'larında çalıştırılabilir.
Azure Container Registry'de kimlik doğrulaması.
az acr login --name $ACR_NAMEGörüntüyü Azure Container Registry'ye gönderin.
az acr import \ --name $ACR_NAME \ --source nvcr.io/nim/$CONTAINER_AND_TAG \ --image $CONTAINER_AND_TAG \ --username '$oauthtoken' \ --password $NGC_SECRET
Artefakt akışını etkinleştir (önerilir fakat isteğe bağlıdır)
Kapsayıcı uygulamanız çalıştığında kapsayıcıyı kapsayıcı kayıt defterinizden çeker. Yapay zeka iş yükleri gibi daha büyük görüntüleriniz olduğunda bu görüntü çekme biraz zaman alabilir. Artifakt akışını etkinleştirerek, kapsayıcı uygulamanız görüntünüzün temel bölümlerini önce yükler ve kapsayıcınızın başlatılma süresini kısaltır. Artefakt akışını etkinleştirmek için aşağıdaki adımları kullanın.
Uyarı
Aşağıdaki komutların tamamlanması uzun sürebilir.
Kapsayıcı kayıt defterinizde artefakt akışını etkinleştirin.
az acr artifact-streaming update \ --name $ACR_NAME \ --repository llama-3.1-8b-instruct \ --enable-streaming TrueKapsayıcı görüntüsünde artifakt akışını etkinleştirin.
az acr artifact-streaming create \ --name $ACR_NAME \ --image $CONTAINER_AND_TAG
Kapsayıcı uygulamanızı oluşturma
Ardından NVIDIA GPU Bulut API anahtarıyla bir kapsayıcı uygulaması oluşturacaksınız.
Kapsayıcı uygulaması ortamını oluşturun.
az containerapp env create \ --name $CONTAINERAPPS_ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATIONGPU iş yükü profilini ortamınıza ekleyin.
az containerapp env workload-profile add \ --resource-group $RESOURCE_GROUP \ --name $CONTAINERAPPS_ENVIRONMENT \ --workload-profile-type $GPU_TYPE \ --workload-profile-name LLAMA_PROFILEKapsayıcı uygulamasını oluşturun.
az containerapp create \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $CONTAINERAPPS_ENVIRONMENT \ --image $ACR_NAME.azurecr.io/$CONTAINER_AND_TAG \ --cpu 24 \ --memory 220 \ --target-port 8000 \ --ingress external \ --secrets ngc-api-key=<PASTE_NGC_API_KEY_HERE> \ --env-vars NGC_API_KEY=secretref:ngc-api-key \ --registry-server $ACR_NAME.azurecr.io \ --workload-profile-name LLAMA_PROFILE \ --query properties.configuration.ingress.fqdnBu komut, kapsayıcı uygulamanızın URL'sini döndürür. Aşağıdaki komutta kullanmak üzere bir metin düzenleyicisinde bu değeri bir kenara ayarlayın.
Uyarı
Bazı NIM'lerin başlangıç süreleri daha uzun olur. Bunu hesaba katmak için, bir sağlık denetimi yapılandırabilir veya bir çoğaltmanın her zaman çalışır durumda kalması için kapsayıcı uygulamanızın en düşük çoğaltma sayısını --min-replicas 1 kullanarak ayarlayabilirsiniz.
Uygulamanın çalıştığını doğrulama
Uygulamanıza istek POST isteği göndererek başarılı bir dağıtımı doğrulayabilirsiniz.
Bu komutu çalıştırmadan önce URL'yi <YOUR_CONTAINER_APP_URL> önceki komuttan döndürülen kapsayıcı uygulaması URL'nizle değiştirdiğinizden emin olun.
curl -X POST \
'http://<YOUR_CONTAINER_APP_URL>/v1/completions' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"model": "meta/llama-3.1-8b-instruct",
"prompt": [{"role":"user", "content":"Once upon a time..."}],
"max_tokens": 64
}'
Bellek birimi eklemeleri ile performansı iyileştirme (isteğe bağlı)
Azure Container Registry ile yapıt akışını başlatırken ve kullanırken, Azure Container Apps, başlangıçta kapsayıcı kayıt defterinden görüntüleri çekmeyi sürdürüyor. Bu eylem, optimize edilmiş artefakt akışıyla bile soğuk başlangıca yol açar.
Daha da hızlı soğuk başlangıç süreleri için, NIM'lerin çoğu görüntünüzü önbellek dizininde depolamak için bir birim bağlama yolu sağlar. Model ağırlıklarını ve NIM'nin çalıştırması gereken diğer dosyaları depolamak için bu önbellek dizinini kullanabilirsiniz.
Llama3 NIM için birim bağlamayı ayarlamak için, NVIDIA Llama-3.1-8b belgelerinde belirtildiği gibi ./opt/nim/.cache üzerinde bir birim bağlama ayarlamanız gerekir. Bunu yapmak için birim bağlamaları öğreticisindeki adımları izleyin ve birim bağlama yolunu olarak /opt/nim/.cacheayarlayın.
Kaynakları temizleme
Bu uygulamayı kullanmaya devam etmeyecekseniz, bu öğreticide oluşturulan tüm kaynaklarla birlikte kaynak grubunu silmek için aşağıdaki komutu çalıştırın.
Dikkat
Aşağıdaki komut, belirtilen kaynak grubunu ve içindeki tüm kaynakları siler. Bu komut, bu kaynak grubunda bulunan bu öğreticinin kapsamı dışındaki tüm kaynakları da siler.
az group delete --name $RESOURCE_GROUP
Tavsiye
Sorun mu yaşıyorsunuz? Azure Container Apps deposunda bir sorun açarak GitHub'da bize bildirin.