Executar um SLM local em um contêiner de sidecar no Serviço de Aplicativo do Azure
Neste tutorial, você aprenderá a executar um modelo de linguagem pequena (SLM) como um contêiner sidecar no Serviço de Aplicativo do Azure e acessá-lo em seu contêiner Linux principal. Ao final deste tutorial, você terá um aplicativo de bate-papo de 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.
- Níveis de preços de alto desempenho: o Serviço de Aplicativo oferece níveis de preços de alto desempenho que ajudam você a executar modelos de IA em escala.
- Separação de preocupações: executar 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 subscrição ativa. Se não tiver uma conta do Azure, pode criar uma gratuitamente.
- Uma conta GitHub. Você também pode obter um gratuitamente.
Considerações de desempenho
Como os modelos de IA consomem recursos consideráveis, escolha a camada de preço que oferece 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 as camadas de preços do Serviço de Aplicativo são camadas somente de CPU.
Este tutorial usa o modelo mini Phi-3 com um comprimento de contexto 4K do Hugging Face. Ele foi projetado para ser executado com recursos limitados e fornece raciocínio matemático e lógico sólido 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 descobrimos que ele tem um bom desempenho na camada P2mv3 . Se seus requisitos permitirem, você pode executá-lo em uma camada inferior.
1. Inspecione o exemplo no GitHub Codespaces
- Faça login na sua conta do GitHub e navegue até https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar/fork.
- Selecione Criar bifurcação.
- Selecione Code>Create codespace on main. O codespace leva alguns minutos para ser configurado.
O repositório de exemplo tem o seguinte conteúdo:
Conteúdo | Description |
---|---|
Carro Lateral SRC/PHI-3 | Código de imagem do Docker que executa um ponto de extremidade Python FastAPI para o modelo mini Phi-3. Veja Como funciona o contêiner de sidecar Phi-3? |
src/webapp | Um aplicativo .NET Blazor front-end. Consulte Como funciona o aplicativo front-end? |
infra | Infraestrutura como código para implantar um aplicativo Web .NET no Azure. Consulte Visão geral de Criar modelos de CLI do Azure Developer. |
azure.yaml | Configuração da CLI do Desenvolvedor do Azure que implanta o aplicativo Blazor no Serviço de Aplicativo. Consulte Visão geral de Criar modelos de CLI do Azure Developer. |
2. Implante o aplicativo front-end
Entre em sua conta do Azure usando o
azd auth login
comando e seguindo o prompt:azd auth login
Crie o aplicativo do Serviço de Aplicativo e implante o código usando o
azd up
comando:azd up
O
azd up
comando 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 na camada de preços P2mv3 e, em seguida, implanta o aplicativo .NET nosrc/webapp
.
3. Adicione 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 Microsoft Container Registry. Para criar e carregar a imagem por conta própria, consulte 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 o banner Interessado em adicionar contêineres para serem executados ao lado do seu aplicativo? Clique aqui para experimentar.
- Quando a página for recarregada, selecione a guia Contêineres (novo).
- Selecione Adicionar e configurar o novo contêiner da seguinte maneira:
- Designação: phi-3
- Fonte da imagem: Outros registos de contentores
- Tipo de imagem: Público
- URL do servidor de registo: mcr.microsoft.com
- Imagem e tag: appsvc/docs/sidecars/sample-experiment:phi3-python-1.0
- Selecione Aplicar.
4. Verifique o aplicativo em execução
Na saída AZD, localize a URL do seu aplicativo e navegue até ela no navegador. O URL tem esta aparência na saída AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>.azurewebsites.net/
Selecione um produto, faça qualquer pergunta que desejar sobre ele e selecione Enviar.
Perguntas mais frequentes
- Como funciona o contêiner sidecar Phi-3?
- Como funciona o aplicativo front-end?
- Como criar a imagem do Docker Phi-3 localmente
Como funciona o contêiner sidecar Phi-3?
Ele executa um aplicativo FastAPI que escuta na porta 8000, conforme especificado em seu Dockerfile.
O aplicativo usa o ONNX Runtime para carregar o modelo Phi-3 e, em seguida, 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 básico de geração aumentada de recuperação (RAG). Ele mostra uma página do Razor que envia três 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 produz 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 do sidecar por conta própria, você precisa instalar o Docker Desktop localmente em sua máquina.
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
Mude para o diretório de origem da imagem Phi-3 e faça o download do 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.
Crie a imagem do Docker. Por exemplo:
docker build --tag phi-3 .
Para carregar a imagem criada no Registro de Contêiner do Azure, consulte Enviar sua primeira imagem para o Registro de contêiner do Azure usando a CLI do Docker.