Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os NVIDIA Inference Microservices (NIMs) são microsserviços de inferência de IA otimizados e em contêineres que simplificam e aceleram a forma como você cria aplicativos de IA. Esses modelos são pré-empacotados, escaláveis e ajustados ao desempenho para implantação direta como pontos de extremidade seguros em Aplicativos de Contêiner do Azure. Ao usar os Aplicativos de Contêiner do Azure com GPUs sem servidor, você pode executar esses NIMs de forma eficiente sem precisar gerenciar a infraestrutura subjacente.
Neste tutorial, você aprenderá a implantar um Llama3 NVIDIA NIM em 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 inicialização a frio ao trabalhar com GPUs sem servidor. Se você não quiser usar um Registro de Contêiner do Azure premium, certifique-se de modificar o az acr create
comando neste tutorial para definir --sku
como basic
.
Pré-requisitos
Recurso | Descrição |
---|---|
Conta do Azure | Uma conta do Azure com uma assinatura ativa. Se não tiver uma, pode criar uma gratuitamente. |
Azure CLI (Interface de Linha de Comando da Azure) | Instale a CLI do Azure. |
Chave NVIDIA NGC API | Você pode obter uma chave de API no site da NVIDIA GPU Cloud (NGC). |
Configuração
Para entrar no Azure a partir da CLI, execute o seguinte comando 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 Aplicativos de Contêiner do Azure para a CLI.
Se você receber erros sobre parâmetros ausentes ao executar az containerapp
comandos na CLI do Azure ou cmdlets do Az.App
módulo no PowerShell, certifique-se de ter a versão mais recente 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 não habilitam mais recursos de visualização por padrão. Para acessar os recursos de visualização do Container Apps, instale a extensão Container Apps com --allow-preview true
o .
az extension add --name containerapp --upgrade --allow-preview true
Agora que a extensão ou módulo atual está instalado, registre os Microsoft.App
namespaces 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 de registro de contêiner exclusivo.
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="llama-3.1-8b-instruct:latest"
Criar um grupo de recursos do Azure
Crie um grupo de recursos para organizar os serviços relacionados à implantação do seu aplicativo de contêiner.
az group create \
--name $RESOURCE_GROUP \
--location "$LOCATION"
Crie um Registro de Contêiner do Azure (ACR).
Observação
Este tutorial usa um Registro de Contêiner do Azure premium para melhorar o desempenho de inicialização a 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
--sku
comobasic
.az acr create \ --resource-group $RESOURCE_GROUP \ --name $ACR_NAME \ --location $LOCATION \ --sku premium
Puxe, marque e empurre sua imagem
Em seguida, extraia a imagem da NVIDIA GPU Cloud e envie por push para o Azure Container Registry.
Observação
As NICs NVIDIA têm seus próprios requisitos de hardware. Certifique-se de que o tipo de GPU selecionado suporta o NIM da sua escolha. O Llama3 NIM usado neste tutorial pode ser executado em GPUs NVIDIA A100.
Autentique-se no registro de contêiner NVIDIA.
docker login nvcr.io
Depois de executar esse comando, o processo de entrada solicita que você insira um nome de usuário. Insira $oauthtoken para o valor do seu nome de usuário.
Em seguida, ser-lhe-á solicitada uma palavra-passe. Digite sua chave NVIDIA NGC API aqui. Uma vez autenticado no registro NVIDIA, você pode autenticar no registro do Azure.
Autentique-se no Registro de Contêiner do Azure.
az acr login --name $ACR_NAME
Puxe a imagem Llama3 NIM.
docker pull nvcr.io/nim/meta/$CONTAINER_AND_TAG
Etiquete a imagem.
docker tag nvcr.io/nim/meta/$CONTAINER_AND_TAG $ACR_NAME.azurecr.io/$CONTAINER_AND_TAG
Envie a imagem para o Registro de Contêiner do Azure.
docker push $ACR_NAME.azurecr.io/$CONTAINER_AND_TAG
Ativar streaming de artefatos (recomendado, mas opcional)
Quando seu aplicativo de contêiner é executado, ele extrai o contêiner do seu registro de contêiner. Quando você tem imagens maiores, como no caso de cargas de trabalho de IA, essa extração de imagem pode levar algum tempo. Ao habilitar o streaming de artefatos, você reduz o tempo necessário e seu aplicativo de contêiner pode levar muito tempo para ser iniciado se você não habilitar o streaming de artefatos. Use as etapas a seguir para habilitar o streaming de artefatos.
Observação
Os comandos a seguir podem levar alguns minutos para serem concluídos.
Habilite o streaming de artefatos em seu registro de contêiner.
az acr artifact-streaming update \ --name $ACR_NAME \ --repository llama-3.1-8b-instruct \ --enable-streaming True
Habilite o streaming de artefatos na imagem do contêiner.
az acr artifact-streaming create \ --name $ACR_NAME \ --image $CONTAINER_AND_TAG
Crie seu aplicativo de contêiner
Em seguida, você cria um aplicativo de contêiner com a chave NVIDIA GPU Cloud API.
Crie o aplicativo de contêiner.
az containerapp env create \ --name $CONTAINERAPPS_ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --enable-workload-profiles
Adicione o perfil de carga de trabalho da 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_PROFILE
Crie 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.fqdn
Este comando retorna a URL do seu aplicativo contêiner. Deixe esse valor de lado em um editor de texto para uso em um comando a seguir.
Verifique se o aplicativo funciona
Você pode verificar uma implantação bem-sucedida enviando uma POST
solicitação para seu aplicativo.
Antes de executar esse comando, substitua a <YOUR_CONTAINER_APP_URL>
URL pela URL do aplicativo 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
}'
Melhorar o desempenho com montagens de volume (opcional)
Ao iniciar e utilizar o streaming de artefactos com o Azure Container Registry, o Azure Container Apps continua a puxar as imagens do registo de contêineres durante a inicialização. Essa ação resulta em um arranque a frio, mesmo com o streaming de artefactos otimizado.
Para tempos de arranque a frio ainda mais rápidos, muitos dos NIMs fornecem um caminho de montagem de volume para armazenar a imagem num 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 NIM Llama3, você precisa definir uma montagem de volume no ./opt/nim/.cache
conforme especificado na documentação NVIDIA Llama-3.1-8b. Para fazer isso, siga as etapas no tutorial de montagens de volume e defina o caminho de montagem de volume como /opt/nim/.cache
.
Limpeza de recursos
Se você não vai continuar a usar este aplicativo, execute o seguinte comando para excluir o grupo de recursos junto com todos os recursos criados neste tutorial.
Atenção
O comando a seguir exclui o grupo de recursos especificado e todos os recursos contidos nele. Este comando também exclui quaisquer recursos fora do escopo deste tutorial que existam neste grupo de recursos.
az group delete --name $RESOURCE_GROUP
Sugestão
Tem problemas? Informe-nos no GitHub abrindo um problema no repositório de Aplicativos de Contêiner do Azure.