Delen via


Een lokale SLM uitvoeren in een sidecar-container in Azure-app Service

In deze zelfstudie leert u hoe u een klein taalmodel (SLM) uitvoert als sidecarcontainer in Azure-app Service en hoe u dit kunt openen in uw hoofd-Linux-container. Aan het einde van deze zelfstudie hebt u een modeassistent-chattoepassing die wordt uitgevoerd in App Service en lokaal toegang krijgt tot een model.

Een schermopname van een modeassistent-chat-app in Azure-app Service.

Het lokaal uitvoeren van een SLM is nuttig als u een chatbottoepassing wilt uitvoeren zonder uw bedrijfsgegevens via internet te verzenden naar een ai-chatbotservice in de cloud.

  • Prijscategorieën met hoge prestaties: App Service biedt prijscategorieën met hoge prestaties waarmee u AI-modellen op schaal kunt uitvoeren.
  • Scheiding van problemen: als u een SLM uitvoert in een sidecar, kunt u AI-logica scheiden van uw toepassingslogica. U kunt de afzonderlijke onderdelen afzonderlijk onderhouden, zoals het upgraden van uw model zonder dat dit van invloed is op uw toepassing.

Vereisten

  • Een Azure-account met een actief abonnement. Als u geen Azure-account hebt, kunt u er gratis een maken.
  • Een GitHub-account. je kunt er ook gratis een krijgen.

Prestatieoverwegingen

Omdat AI-modellen aanzienlijke resources verbruiken, kiest u de prijscategorie waarmee u voldoende vCPU's en geheugen krijgt om uw specifieke model uit te voeren. In de praktijk moet u ook een model gebruiken dat is geoptimaliseerd voor CPU, omdat de App Service-prijscategorieën ALLEEN CPU-lagen zijn.

In deze zelfstudie wordt het Phi-3 minimodel gebruikt met een 4K-contextlengte van Hugging Face. Het is ontworpen om te worden uitgevoerd met beperkte resources en biedt sterke wiskundige en logische redeneringen voor veel algemene scenario's. Het wordt ook geleverd met een versie die is geoptimaliseerd voor CPU. In App Service hebben we het model getest op alle Premium-lagen en gevonden dat het goed presteert in de P2mv3-laag . Als uw vereisten zijn toegestaan, kunt u deze uitvoeren op een lagere laag.

1. Inspecteer het voorbeeld in GitHub Codespaces

  1. Meld u aan bij uw GitHub-account en navigeer naar https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar/fork.
  2. Selecteer Een fork maken.
  3. Selecteer Code>maken coderuimte op de hoofdmap. Het duurt enkele minuten voordat de codespace is ingesteld.

De voorbeeldopslagplaats heeft de volgende inhoud:

Inhoud Beschrijving
src/phi-3-sidecar Docker-installatiekopieën die een Python FastAPI-eindpunt uitvoeren voor het phi-3 minimodel. Zie Hoe werkt de Phi-3 sidecarcontainer?
src/webapp Een front-end .NET Blazor-toepassing. Zie Hoe werkt de front-end-app?
infra Infrastructuur als code voor het implementeren van een .NET-web-app in Azure. Zie Overzicht van Azure Developer CLI-sjablonen maken.
azure.yaml Azure Developer CLI-configuratie waarmee de Blazor-toepassing wordt geïmplementeerd in App Service. Zie Overzicht van Azure Developer CLI-sjablonen maken.

2. De front-endtoepassing implementeren

  1. Meld u aan bij uw Azure-account met behulp van de azd auth login opdracht en volg de prompt:

    azd auth login
    
  2. Maak de App Service-app en implementeer de code met behulp van de azd up opdracht:

    azd up
    

    Het kan enkele minuten duren voordat de azd up opdracht is voltooid. azd up gebruikt de Bicep-bestanden in uw projecten om een App Service-app te maken in de P2mv3-prijscategorie en implementeert vervolgens de .NET-app in src/webapp.

3. Voeg de Phi-3 sidecar toe

In deze sectie wordt ervan uitgegaan dat u al een Phi-3 Docker-installatiekopie hebt gemaakt en deze hebt geüpload naar een register. In plaats daarvan gebruikt u een vooraf geladen installatiekopieën in Microsoft Container Registry. Als u de installatiekopieën zelf wilt bouwen en uploaden, raadpleegt u Hoe u de Phi-3 Docker-installatiekopieën lokaal bouwt.

  1. Navigeer in Azure Portal naar de beheerpagina van de app.
  2. Selecteer Deployment Center in het linkermenu op de beheerpagina van de app.
  3. Selecteer de banner Geïnteresseerd in het toevoegen van containers die naast uw app moeten worden uitgevoerd? Klik hier om het te proberen.
  4. Wanneer de pagina opnieuw wordt geladen, selecteert u het tabblad Containers (nieuw).
  5. Selecteer De nieuwe container als volgt toevoegen en configureren:
    • Naam: phi-3
    • Bron van installatiekopieën: andere containerregisters
    • Afbeeldingstype: Openbaar
    • URL van registerserver: mcr.microsoft.com
    • Afbeelding en tag: appsvc/docs/sidecars/sample-experiment:phi3-python-1.0
  6. Selecteer Toepassen.

4. Controleer de actieve app

  1. Zoek in de AZD-uitvoer de URL van uw app en navigeer ernaar in de browser. De URL ziet er als volgt uit in de AZD-uitvoer:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>.azurewebsites.net/
     
  2. Selecteer een product, stel een vraag die u leuk vindt en selecteer Verzenden.

    Een schermopname van een AI-chatbot die wordt uitgevoerd in App Service.

Veelgestelde vragen

Hoe werkt de Phi-3 sidecarcontainer?

Er wordt een FastAPI-toepassing uitgevoerd die luistert op poort 8000, zoals opgegeven in het Dockerfile.

De toepassing gebruikt ONNX Runtime om het Phi-3-model te laden en stuurt vervolgens de HTTP POST-gegevens door naar het model en streamt het antwoord van het model terug naar de client. Zie model_api.py voor meer informatie.

Hoe werkt de front-end-app?

Het is een RAG-toepassing (Basic Retrieval-Augmented Generation). Er wordt een Razor-pagina weergegeven die drie stukjes informatie naar het FastAPI-eindpunt (op localhost:8000) verzendt in Send():

  • Geselecteerd product
  • Opgehaalde productbeschrijvingsgegevens
  • Door de gebruiker verzonden bericht

Vervolgens wordt het gestreamde antwoord op de pagina uitgevoerd. Zie Home.razor voor meer informatie.

De Phi-3 Docker-installatiekopieën lokaal bouwen

Als u de sidecar-installatiekopieën zelf wilt bouwen, moet u Docker Desktop lokaal installeren op uw computer.

  1. Kloon de opslagplaats lokaal.

    git clone https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar
    cd ai-slm-in-app-service-sidecar
    
  2. Ga naar de bronmap van de Phi-3-installatiekopieën en download het model lokaal.

    cd src/phi-3-sidecar/
    huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --local-dir ./Phi-3-mini-4k-instruct-onnx
    

    Het Dockerfile is geconfigureerd om het model te kopiëren van ./Phi-3-mini-4k-instruct-onnx.

  3. Bouw de Docker-installatiekopie. Voorbeeld:

    docker build --tag phi-3 .
    

Als u de ingebouwde installatiekopie wilt uploaden naar Azure Container Registry, raadpleegt u Uw eerste installatiekopie naar uw Azure-containerregister pushen met behulp van de Docker CLI.

Meer resources