Dela via


Köra en lokal SLM i en sidovagnscontainer i Azure App Service

I den här självstudien får du lära dig hur du kör en liten språkmodell (SLM) som en sidovagnscontainer i Azure App Service och får åtkomst till den i din huvudsakliga Linux-container. I slutet av den här självstudien har du ett chattprogram för modeassistenten som körs i App Service och som har åtkomst till en modell lokalt.

En skärmbild som visar en chattapp för modeassistenten i Azure App Service.

Att köra en SLM lokalt är fördelaktigt om du vill köra ett chattrobotprogram utan att skicka dina affärsdata via Internet till en molnbaserad AI-chattrobottjänst.

  • Prisnivåer med höga prestanda: App Service erbjuder prisnivåer med höga prestanda som hjälper dig att köra AI-modeller i stor skala.
  • Separation av problem: Om du kör en SLM i en sidovagn kan du skilja AI-logik från din programlogik. Du kan underhålla de diskreta komponenterna separat, till exempel uppgradera din modell utan att påverka ditt program.

Förutsättningar

Prestandaöverväganden

Eftersom AI-modeller förbrukar stora resurser väljer du den prisnivå som ger dig tillräckligt med virtuella processorer och minne för att köra din specifika modell. I praktiken bör du också använda en CPU-optimerad modell, eftersom App Service-prisnivåerna är processorbaserade nivåer.

I den här självstudien används minimodellen Phi-3 med en 4K-kontextlängd från Hugging Face. Den är utformad för att köras med begränsade resurser och ger starka matematiska och logiska resonemang för många vanliga scenarier. Den levereras också med en CPU-optimerad version. I App Service testade vi modellen på alla premiumnivåer och fann att den presterade bra på P2mv3-nivån . Om dina krav tillåter kan du köra den på en lägre nivå.

1. Granska exemplet i GitHub Codespaces

  1. Logga in på ditt GitHub-konto och gå till https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar/fork.
  2. Välj Skapa förgrening.
  3. Välj Kod>Skapa kodområde på main. Det tar några minuter att konfigurera kodområdet.

Exempellagringsplatsen har följande innehåll:

Innehåll beskrivning
src/phi-3-sidecar Docker-avbildningskod som kör en Python FastAPI-slutpunkt för Phi-3-minimodellen. Se Hur fungerar Phi-3-sidovagnscontainern?
src/webapp Ett .NET Blazor-program på klientsidan. Se Hur fungerar klientdelsappen?
Infra Infrastruktur som kod för att distribuera en .NET-webbapp i Azure. Se Skapa översikt över CLI-mallar för Azure Developer.
azure.yaml Azure Developer CLI-konfiguration som distribuerar Blazor-programmet till App Service. Se Skapa översikt över CLI-mallar för Azure Developer.

2. Distribuera klientdelsprogrammet

  1. Logga in på ditt Azure-konto med hjälp azd auth login av kommandot och följ kommandotolken:

    azd auth login
    
  2. Skapa App Service-appen och distribuera koden med kommandot azd up :

    azd up
    

    Det azd up kan ta några minuter att slutföra kommandot. azd up använder Bicep-filerna i dina projekt för att skapa en App Service-app på prisnivån P2mv3 och distribuerar sedan .NET-appen i src/webapp.

3. Lägg till Phi-3 sidovagnen

Det här avsnittet förutsätter att du redan har skapat en Phi-3 Docker-avbildning och laddat upp den till ett register. Du använder en förinstallerad avbildning i Microsoft Container Registry i stället. Information om hur du skapar och laddar upp avbildningen själv finns i Skapa Phi-3 Docker-avbildningen lokalt.

  1. I Azure Portal går du till appens hanteringssida.
  2. På appens hanteringssida går du till den vänstra menyn och väljer Distributionscenter.
  3. Välj banderollen Intresserad av att lägga till containrar som ska köras tillsammans med din app? Klicka här om du vill prova.
  4. När sidan laddas om väljer du fliken Containrar (ny).
  5. Välj Lägg till och konfigurera den nya containern på följande sätt:
    • Namn: phi-3
    • Bildkälla: Andra containerregister
    • Bildtyp: Offentlig
    • URL för registerserver: mcr.microsoft.com
    • Bild och tagg: appsvc/docs/sidecars/sample-experiment:phi3-python-1.0
  6. Välj Använd.

4. Verifiera appen som körs

  1. I AZD-utdata letar du reda på url:en för din app och navigerar till den i webbläsaren. URL:en ser ut så här i AZD-utdata:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>.azurewebsites.net/
     
  2. Välj en produkt, ställ en fråga som du vill om den och välj Skicka.

    En skärmbild som visar en AI-chattrobot som körs i App Service.

Vanliga frågor och svar

Hur fungerar Phi-3-sidovagnscontainern?

Den kör ett FastAPI-program som lyssnar på port 8000, enligt vad som anges i dockerfile.

Programmet använder ONNX Runtime för att läsa in Phi-3-modellen och vidarebefordrar sedan HTTP POST-data till modellen och strömmar svaret från modellen tillbaka till klienten. Mer information finns i model_api.py.

Hur fungerar klientdelsappen?

Det är ett grundläggande RAG-program (retrieval augmented generation). Den visar en Razor-sida som skickar tre informationsdelar till FastAPI-slutpunkten (vid localhost:8000) i Send():

  • Vald produkt
  • Hämtade produktbeskrivningsdata
  • Meddelande som skickats av användaren

Sedan matas det strömmade svaret ut på sidan. Mer information finns i Home.razor.

Så här skapar du Phi-3 Docker-avbildningen lokalt

Om du vill skapa sidovagnsavbildningen själv måste du installera Docker Desktop lokalt på datorn.

  1. Klona lagringsplatsen lokalt.

    git clone https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar
    cd ai-slm-in-app-service-sidecar
    
  2. Ändra till Phi-3-avbildningens källkatalog och ladda ned modellen lokalt.

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

    Dockerfile har konfigurerats för att kopiera modellen från ./Phi-3-mini-4k-instruct-onnx.

  3. Skapa Docker-avbildningen. Till exempel:

    docker build --tag phi-3 .
    

Information om hur du laddar upp den skapade avbildningen till Azure Container Registry finns i Push your first image to your Azure container registry using the Docker CLI (Push your first image to your Azure container registry using the Docker CLI).

Fler resurser