Executar um SLM local em um contêiner sidecar no Serviço de Aplicativo do Azure
Neste tutorial, você aprenderá a executar um pequeno modelo de linguagem (SLM) como um contêiner de sidecar no Serviço de Aplicativo do Azure e acessá-lo em seu contêiner principal do Linux. Ao final deste tutorial, você terá um aplicativo de chat do assistente de moda em execução no Serviço de Aplicativo e acessando um modelo localmente.
Executar um SLM localmente é benéfico se você quiser executar um aplicativo de chatbot sem enviar seus dados de negócios pela Internet para um serviço de chatbot de IA baseado em nuvem.
- Tipos de preços de alto desempenho: o Serviço de Aplicativo oferece tipos de preços de alto desempenho que ajudam você a executar modelos de IA em escala.
- Separação de preocupações: a execução de um SLM em um sidecar permite separar a lógica de IA da lógica do aplicativo. Você pode manter os componentes discretos separadamente, como atualizar seu modelo sem afetar seu aplicativo.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Se você ainda não tem uma conta do Azure, crie-a gratuitamente.
- Uma conta do GitHub. você também pode obter uma gratuitamente.
Considerações sobre o desempenho
Como os modelos de IA consomem recursos consideráveis, escolha o tipo de preço que fornece vCPUs e memória suficientes para executar seu modelo específico. Na prática, você também deve usar um modelo otimizado para CPU, já que os tipos de preço do Serviço de Aplicativo são camadas somente de CPU.
Este tutorial usa o mini modelo Phi-3 com um comprimento de contexto de 4K de Hugging Face. Ele foi projetado para ser executado com recursos limitados e fornece um forte raciocínio matemático e lógico para muitos cenários comuns. Ele também vem com uma versão otimizada para CPU. No Serviço de Aplicativo, testamos o modelo em todas as camadas premium e o encontramos para ter um bom desempenho na camada P2mv3. Se seus requisitos permitirem, você poderá executá-lo em uma camada inferior.
1. Inspecionar o exemplo em codespaces do GitHub
- Entre em sua conta do GitHub e navegue até https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar/fork.
- Selecione Criar fork.
- Selecione Código>Criar codespace no principal. O codespace leva alguns minutos para ser configurado.
O repositório de exemplo tem o seguinte conteúdo:
Sumário | Descrição |
---|---|
src/phi-3-sidecar | Código de imagem do Docker que executa um ponto de extremidade Do Python FastAPI para o mini modelo Phi-3. Veja como funciona o contêiner de sidecar Phi-3? |
src/webapp | Um aplicativo .NET Blazor front-end. Veja como funciona o aplicativo front-end? |
infra | Infraestrutura como código para implantar um aplicativo Web .NET no Azure. Confira Visão geral de criar modelos do Azure Developer CLI. |
azure.yaml | Configuração do Azure Developer CLI que implanta o aplicativo Blazor no Serviço de Aplicativo. Confira Visão geral de criar modelos do Azure Developer CLI. |
2. Implantar o aplicativo front-end
Entre em sua conta do Azure usando o comando
azd auth login
e seguindo o prompt:azd auth login
Crie o aplicativo do Serviço de Aplicativo e implante o código usando o comando
azd up
:azd up
O comando
azd up
pode levar alguns minutos para ser concluído.azd up
usa os arquivos Bicep em seus projetos para criar um aplicativo do Serviço de Aplicativo no tipo de preço P2mv3 e, em seguida, implanta o aplicativo .NET emsrc/webapp
.
3. Adicionar o sidecar Phi-3
Esta seção pressupõe que você já criou uma imagem do Docker Phi-3 e a carregou em um registro. Em vez disso, você usará uma imagem pré-carregada no Registro de Contêiner da Microsoft. Para compilar e carregar a imagem por conta própria, veja Como criar a imagem do Docker Phi-3 localmente.
- No portal do Azure, navegue até a página de gerenciamento do aplicativo.
- Na página de gerenciamento do aplicativo, no menu à esquerda, selecione Centro de Implantação.
- Selecione a faixa Interessado em adicionar contêineres para executar junto com seu aplicativo? Clique aqui para experimentar.
- Quando a página for recarregada, selecione a guia Contêineres (novo).
- Selecione Adicionar e configure o novo contêiner da seguinte maneira:
- Nome: phi-3
- Fonte da imagem: Outros registros de contêiner
- Tipode imagem: Público
- URL do servidor do Registro: mcr.microsoft.com
- Imagem e marca: appsvc/docs/sidecars/sample-experiment:phi3-python-1.0
- Escolha Aplicar.
4. Verificar o aplicativo em execução
Na saída do AZD, localize a URL do seu aplicativo e navegue até ela no navegador. O URL fica assim na saída do AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>.azurewebsites.net/
Selecione um produto, faça qualquer pergunta que quiser sobre ele e selecione Enviar.
Perguntas frequentes
- Como funciona o contêiner de sidecar Phi-3?
- Como funciona o aplicativo front-end?
- Como criar a imagem do Docker Phi-3 localmente
Como funciona o contêiner de sidecar Phi-3?
Ele executa um aplicativo FastAPI que escuta na porta 8000, conforme especificado em seu Dockerfile.
O aplicativo usa ONNX Runtime para carregar o modelo Phi-3, encaminha os dados HTTP POST para o modelo e transmite a resposta do modelo de volta para o cliente. Para obter mais informações, consulte model_api.py.
Como funciona o aplicativo front-end?
É um aplicativo RAG (geração de recuperação aumentada) básico. Ele mostra uma página Razor que envia três partes de informações para o ponto de extremidade FastAPI (em localhost:8000
) em Send()
:
- Produto selecionado
- Dados de descrição do produto recuperados
- Mensagem enviada pelo usuário
Em seguida, ele gera a resposta transmitida para a página. Para obter mais informações, consulte Home.razor.
Como criar a imagem do Docker Phi-3 localmente
Para criar a imagem sidecar por conta própria, você precisa instalar o Docker Desktop localmente em seu computador.
Clone o repositório localmente.
git clone https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar cd ai-slm-in-app-service-sidecar
Altere para o diretório de origem da imagem Phi-3 e baixe o modelo localmente.
cd src/phi-3-sidecar/ huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --local-dir ./Phi-3-mini-4k-instruct-onnx
O Dockerfile está configurado para copiar o modelo de ./Phi-3-mini-4k-instruct-onnx.
Cria a imagem do Docker. Por exemplo:
docker build --tag phi-3 .
Para carregar a imagem compilada no Registro de Contêiner do Azure, consulte Enviar sua primeira imagem por push para o registro de contêiner do Azure usando a CLI do Docker.