Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os NIMs (Microsserviços de Inferência) NVIDIA são microsserviços de inferência de IA em contêineres que simplificam e aceleram a forma como você cria aplicativos de IA. Esses modelos são pré-empacotados, escalonáveis e ajustados ao desempenho para implantação direta como pontos de extremidade seguros nos Aplicativos de Contêiner do Azure. Ao usar os Aplicativos de Contêiner do Azure com GPUs sem servidor, você pode executar esses NIMs com eficiência sem precisar gerenciar a infraestrutura subjacente.
Neste tutorial, você aprenderá a implantar um NIM NVIDIA llama3 nos Aplicativos de Contêiner do Azure usando GPUs sem servidor.
Este tutorial usa uma instância premium do Registro de Contêiner do Azure para melhorar o desempenho de início frio ao trabalhar com GPUs sem servidor. Se você não quiser usar um Registro de Contêiner do Azure premium, modifique o az acr create comando neste tutorial para definir --sku como basic.
Pré-requisitos
| Resource | Description |
|---|---|
| Conta do Azure | Uma conta do Azure com uma assinatura ativa. Se não tiver uma, poderá criar uma gratuitamente. |
| CLI do Azure | Instale a CLI do Azure. |
| Chave de API NGC NVIDIA | Você pode obter uma chave de API no site NGC (NVIDIA GPU Cloud). |
Configuração
Para entrar no Azure usando a CLIl, execute o comando a seguir e siga os prompts para concluir o processo de autenticação.
az login
Para garantir que você esteja executando a versão mais recente da CLI, execute o comando “upgrade”.
az upgrade
Em seguida, instale ou atualize a extensão dos Aplicativos de Contêiner do Azure para a CLI.
Se você receber erros sobre parâmetros ausentes ao executar comandos az containerapp na CLI do Azure ou cmdlets do módulo Az.App no PowerShell, verifique se está usando a última versão da extensão Aplicativos de Contêiner do Azure instalada.
az extension add --name containerapp --upgrade
Observação
A partir de maio de 2024, as extensões da CLI do Azure já não permitem funcionalidades de versão prévia do recurso por padrão. Para acessar a versão prévia dos recursos dos Aplicativos de Contêiner, instale a extensão dos Aplicativos de Contêiner com --allow-preview true.
az extension add --name containerapp --upgrade --allow-preview true
Agora que a extensão ou módulo atual está instalado, registre os namespaces Microsoft.App e Microsoft.OperationalInsights.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
Configure variáveis de ambiente nomeando o grupo de recursos e definindo o local.
RESOURCE_GROUP="my-resource-group" LOCATION="swedencentral"Em seguida, gere um nome exclusivo do registro de contêiner.
SUFFIX=$(head /dev/urandom | tr -dc 'a-z0-9' | head -c 6) ACR_NAME="mygpututorialacr${SUFFIX}"Por fim, defina variáveis para nomear o ambiente e identificar o ambiente, o tipo de perfil de carga de trabalho, o nome do aplicativo de contêiner e o contêiner.
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>
Criar um grupo de recursos do Azure
Crie um grupo de recursos para organizar os serviços relacionados à implantação do aplicativo de contêiner.
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
Criar um ACR (Registro de Contêiner do Azure).
Observação
Este tutorial usa um Registro de Contêiner do Azure premium para melhorar o desempenho de início frio ao trabalhar com GPUs sem servidor. Se você não quiser usar um Registro de Contêiner do Azure premium, modifique o comando a seguir e defina
--skucomobasic.az acr create \ --resource-group $RESOURCE_GROUP \ --name $ACR_NAME \ --location $LOCATION \ --sku premium
Importar a imagem NVIDIA NIM para o Registro de Contêiner do Azure
Em seguida, importe a imagem da Nuvem de GPU NVIDIA para o Registro de Contêiner do Azure.
Observação
As NICs NVIDIA têm seus próprios requisitos de hardware. Verifique se o tipo de GPU selecionado dá suporte ao NIM de sua escolha. O NIM do Llama3 usado neste tutorial pode ser executado em GPUs NVIDIA A100.
Autenticar no Registro de Contêiner do Azure.
az acr login --name $ACR_NAMEEnvie a imagem por push para o Registro de Contêiner do Azure.
az acr import \ --name $ACR_NAME \ --source nvcr.io/nim/$CONTAINER_AND_TAG \ --image $CONTAINER_AND_TAG \ --username '$oauthtoken' \ --password $NGC_SECRET
Habilitar o streaming de artefatos (recomendado, mas opcional)
Quando o aplicativo de contêiner é executado, ele extrai o contêiner do registro de contêiner. Quando você tem imagens maiores, como no caso das cargas de trabalho de IA, a transferência dessas imagens pode levar algum tempo para ser concluída. Ao habilitar o streaming de artefatos, seu aplicativo de contêiner carregará as partes essenciais da imagem primeiro, reduzindo a quantidade de tempo para inicializar seu contêiner. Use as etapas a seguir para habilitar o streaming de artefatos.
Observação
Os comandos a seguir podem levar muito tempo para serem concluídos.
Habilite o streaming de artefatos no registro de contêiner.
az acr artifact-streaming update \ --name $ACR_NAME \ --repository llama-3.1-8b-instruct \ --enable-streaming TrueHabilite o streaming de artefatos na imagem do contêiner.
az acr artifact-streaming create \ --name $ACR_NAME \ --image $CONTAINER_AND_TAG
Criar seu aplicativo de contêiner
Em seguida, você cria um aplicativo de contêiner com a chave de API de Nuvem da GPU NVIDIA.
Crie o ambiente do aplicativo de contêiner.
az containerapp env create \ --name $CONTAINERAPPS_ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATIONAdicione o perfil de carga de trabalho de GPU ao seu ambiente.
az containerapp env workload-profile add \ --resource-group $RESOURCE_GROUP \ --name $CONTAINERAPPS_ENVIRONMENT \ --workload-profile-type $GPU_TYPE \ --workload-profile-name LLAMA_PROFILECrie o aplicativo de contêiner.
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.fqdnEsse comando retorna a URL do seu aplicativo de contêiner. Defina esse valor de lado em um editor de texto para uso em um comando a seguir.
Observação
Alguns NIMs têm tempos de inicialização mais longos. Para considerar isso, você pode configurar uma investigação de integridade ou definir a contagem de réplicas mínimas do aplicativo do seu contêiner com --min-replicas 1 para manter uma réplica em execução continuamente.
Verificar se o aplicativo funciona
Você pode verificar uma implantação bem-sucedida enviando uma solicitação POST para seu aplicativo.
Antes de executar esse comando, substitua a <YOUR_CONTAINER_APP_URL> URL pela URL do aplicativo de contêiner retornada do comando anterior.
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
}'
Aprimorar o desempenho com montagens de volume (opcional)
Ao iniciar e usar o streaming de artefatos com o Registro de Contêiner do Azure, os Aplicativos de Contêiner do Azure ainda estão extraindo as imagens do registro de contêiner na inicialização. Essa ação resulta em um início frio mesmo com o streaming de artefato otimizado.
Para tempos de início a frio ainda mais rápidos, muitos dos NIMs fornecem um caminho de montagem de volume para armazenar sua imagem em um diretório de cache. Você pode usar esse diretório de cache para armazenar os pesos do modelo e outros arquivos que o NIM precisa executar.
Para configurar uma montagem de volume para o Llama3 NIM, você precisa definir uma montagem de volume no ./opt/nim/.cache conforme especificado na documentação do NVIDIA Llama-3.1-8b. Para fazer isso, siga as etapas no tutorial de montagem de volumes e ajuste o caminho de montagem de volume para /opt/nim/.cache.
Limpar os recursos
Se você não quiser continuar a usar este aplicativo, execute o comando a seguir para excluir o grupo de recursos junto com todos os recursos criados neste tutorial.
Cuidado
O comando a seguir exclui o grupo de recursos especificado e todos os recursos contidos nele. Esse comando também exclui todos os recursos fora do escopo deste tutorial que existem neste grupo de recursos.
az group delete --name $RESOURCE_GROUP
Dica
Está enfrentando problemas? Informe-nos no GitHub abrindo uma issue no repositório Aplicativos de Contêiner do Azure.