Compartilhar via


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.

Uma captura de tela mostrando um aplicativo de chat do assistente de moda no Serviço de Aplicativo do Azure.

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

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

  1. Entre em sua conta do GitHub e navegue até https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar/fork.
  2. Selecione Criar fork.
  3. 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

  1. Entre em sua conta do Azure usando o comando azd auth login e seguindo o prompt:

    azd auth login
    
  2. 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 em src/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.

  1. No portal do Azure, navegue até a página de gerenciamento do aplicativo.
  2. Na página de gerenciamento do aplicativo, no menu à esquerda, selecione Centro de Implantação.
  3. Selecione a faixa Interessado em adicionar contêineres para executar junto com seu aplicativo? Clique aqui para experimentar.
  4. Quando a página for recarregada, selecione a guia Contêineres (novo).
  5. 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
  6. Escolha Aplicar.

4. Verificar o aplicativo em execução

  1. 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/
     
  2. Selecione um produto, faça qualquer pergunta que quiser sobre ele e selecione Enviar.

    Uma captura de tela mostrando um bot de chat de IA em execução no Serviço de Aplicativo.

Perguntas frequentes

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.

  1. 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
    
  2. 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.

  3. 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.

Mais recursos