Onlineslutpunkter och distributioner för slutsatsdragning i realtid

GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

Med Azure Machine Learning kan du utföra realtidsinferenser på data med hjälp av modeller som distribueras till onlineslutpunkter. Slutsatsdragning är processen att tillämpa nya indata på en maskininlärningsmodell för att generera utdata. Även om dessa utdata vanligtvis kallas "förutsägelser" kan slutsatsdragning användas för att generera utdata för andra maskininlärningsuppgifter, till exempel klassificering och klustring.

Onlineslutpunkter

Onlineslutpunkter distribuerar modeller till en webbserver som kan returnera förutsägelser under HTTP-protokollet. Använd onlineslutpunkter för att operationalisera modeller för realtidsinferens i synkrona begäranden med låg svarstid. Vi rekommenderar att du använder dem när:

  • Du har krav på låg latens
  • Din modell kan besvara begäran på relativt kort tid
  • Modellens indata får plats på HTTP-nyttolasten för begäran
  • Du måste skala upp när det gäller antalet begäranden

Om du vill definiera en slutpunkt måste du ange:

  • Slutpunktsnamn: Det här namnet måste vara unikt i Azure-regionen. Mer information om namngivningsreglerna finns i slutpunktsgränser.
  • Autentiseringsläge: Du kan välja mellan nyckelbaserat autentiseringsläge och tokenbaserat autentiseringsläge för Azure Machine Learning för slutpunkten. En nyckel upphör inte att gälla, men en token upphör att gälla. Mer information om autentisering finns i Autentisera till en onlineslutpunkt.

Azure Machine Learning gör det enklare att använda hanterade onlineslutpunkter för att distribuera ML-modeller på ett nyckelfärdigt sätt. Det här är det rekommenderade sättet att använda onlineslutpunkter i Azure Machine Learning. Hanterade onlineslutpunkter körs skalbart och helt hanterat på datorer med kraftfulla processorer och grafikkort i Azure. De här slutpunkterna tar även hand om servering, skalning, skydd och övervakning av dina modeller för att frigöra dig från kostnaderna för att konfigurera och hantera den underliggande infrastrukturen. Information om hur du distribuerar till en hanterad onlineslutpunkt finns i Distribuera en ML-modell med en onlineslutpunkt.

Varför välja hanterade onlineslutpunkter framför ACI eller AKS(v1)?

Användning av hanterade onlineslutpunkter är det rekommenderade sättet att använda onlineslutpunkter i Azure Machine Learning. I följande tabell visas nyckelattributen för hanterade onlineslutpunkter jämfört med Azure Machine Learning SDK/CLI v1-lösningar (ACI och AKS(v1)).

Attribut Hanterade onlineslutpunkter (v2) ACI eller AKS(v1)
Nätverkssäkerhet/isolering Enkel inkommande/utgående kontroll med snabb växling Virtuellt nätverk stöds inte eller kräver komplex manuell konfiguration
Hanterad tjänst – Fullständigt hanterad beräkningsetablering/skalning
– Nätverkskonfiguration för dataexfiltreringsskydd
– Uppgradering av värdoperativsystem, kontrollerad distribution av uppdateringar på plats
– Skalning är begränsad i v1
– Nätverkskonfiguration eller uppgradering måste hanteras av användaren
Slutpunkt/distributionskoncept Skillnaden mellan slutpunkt och distribution möjliggör komplexa scenarier som säker distribution av modeller Inget begrepp för slutpunkt
Diagnostik och övervakning – Lokal slutpunktsfelsökning möjlig med Docker och Visual Studio Code
– Avancerad mått- och logganalys med diagram/fråga för att jämföra mellan distributioner
– Kostnadsuppdelning ned till distributionsnivå
Ingen enkel lokal felsökning
Skalbarhet Obegränsad, elastisk och automatisk skalning – ACI är inte skalbar
– AKS (v1) stöder endast skalning i kluster och kräver skalbarhetskonfiguration
Företagsberedskap Privat länk, kundhanterade nycklar, Microsoft Entra-ID, kvothantering, faktureringsintegrering, serviceavtal Stöds inte
Avancerade ML-funktioner – Modelldatainsamling
– Modellövervakning
- Champion-challengermodell, säker distribution, trafikspegling
– Ansvarsfull AI-utökningsbarhet
Stöds inte

Om du föredrar att använda Kubernetes för att distribuera dina modeller och hantera slutpunkter, och du är bekväm med att hantera infrastrukturkrav, kan du använda Kubernetes onlineslutpunkter. Med de här slutpunkterna kan du distribuera modeller och hantera onlineslutpunkter i ditt fullständigt konfigurerade och hanterade Kubernetes-kluster var som helst, med processorer eller GPU:er.

Varför välja hanterade onlineslutpunkter framför AKS(v2)?

Hanterade onlineslutpunkter kan hjälpa dig att effektivisera distributionsprocessen och ge följande fördelar jämfört med Kubernetes onlineslutpunkter:

  • Hanterad infrastruktur

    • Etablerar automatiskt beräkningen och är värd för modellen (du behöver bara ange VM-typ och skalningsinställningar)
    • Uppdaterar och korrigerar automatiskt den underliggande värdoperativsystemavbildningen
    • Utför automatiskt nodåterställning om det uppstår ett systemfel
  • Övervakning och loggar

    Screenshot showing Azure Monitor graph of endpoint latency.

  • Visa kostnader

    Screenshot cost chart of an endpoint and deployment.

    Kommentar

    Hanterade onlineslutpunkter baseras på Azure Machine Learning-beräkning. När du använder en hanterad onlineslutpunkt betalar du för beräknings- och nätverksavgifterna. Det finns ingen extra tilläggsavgift. Mer information om priser finns i priskalkylatorn för Azure.

    Om du använder ett virtuellt Azure Machine Learning-nätverk för att skydda utgående trafik från den hanterade onlineslutpunkten debiteras du för utgående regler för azure private link och FQDN som används av det hanterade virtuella nätverket. Mer information finns i Priser för hanterade virtuella nätverk.

Hanterade onlineslutpunkter jämfört med kubernetes onlineslutpunkter

I följande tabell visas de viktigaste skillnaderna mellan hanterade onlineslutpunkter och Kubernetes onlineslutpunkter.

Hanterade onlineslutpunkter Kubernetes onlineslutpunkter (AKS(v2))
Rekommenderade användare Användare som vill ha en hanterad modelldistribution och förbättrad MLOps-upplevelse Användare som föredrar Kubernetes och själva kan hantera infrastrukturkrav
Nodetablering Hanterad beräkningsetablering, uppdatering, borttagning Användaransvar
Nodunderhåll Avbildningsuppdateringar för hanterade värdoperativsystem och säkerhetshärdning Användaransvar
Klusterstorlek (skalning) Hanterad manuell och autoskalning med stöd för ytterligare nodertablering Manuell och autoskalning med stöd för skalning av antalet repliker inom fasta klustergränser
Beräkningstyp Hanteras av tjänsten Kundhanterat Kubernetes-kluster (Kubernetes)
Hanterade identiteter Stöds Stöds
Virtuellt nätverk (VNET) Stöds via hanterad nätverksisolering Användaransvar
Out-of-box-övervakning och loggning Azure Monitor och Log Analytics drivs (innehåller nyckelmått och loggtabeller för slutpunkter och distributioner) Användaransvar
Loggning med Application Insights (äldre) Stöds Stöds
Visa kostnader Detaljerad till slutpunkt/distributionsnivå Klusternivå
Kostnad som tillämpas på Virtuella datorer som tilldelats distributionerna Virtuella datorer som tilldelats klustret
Speglad trafik Stöds Stöd saknas
Distribution utan kod Stöds (MLflow- och Triton-modeller ) Stöds (MLflow- och Triton-modeller )

Onlinedistributioner

En distribution är en uppsättning resurser och beräkningar som krävs för att vara värd för den modell som utför den faktiska inferensen. En enskild slutpunkt kan innehålla flera distributioner med olika konfigurationer. Den här konfigurationen hjälper till att frikoppla gränssnittet som visas av slutpunkten från implementeringsinformationen som finns i distributionen. En onlineslutpunkt har en routningsmekanism som kan dirigera begäranden till specifika distributioner i slutpunkten.

Följande diagram visar en onlineslutpunkt som har två distributioner, blå och gröna. Den blå distributionen använder virtuella datorer med en CPU-SKU och kör version 1 av en modell. Den gröna distributionen använder virtuella datorer med en GPU SKU och kör version 2 av modellen. Slutpunkten är konfigurerad för att dirigera 90 % av inkommande trafik till den blå distributionen, medan den gröna distributionen tar emot de återstående 10 %.

Diagram showing an endpoint splitting traffic to two deployments.

I följande tabell beskrivs nyckelattributen för en distribution:

Attribut Beskrivning
Name Namnet på distributionen.
Slutpunktnamn Namnet på slutpunkten som distributionen ska skapas under.
Modell Den modell som ska användas för distributionen. Det här värdet kan antingen vara en referens till en befintlig version av modellen på arbetsytan eller en infogad modellspecifikation.
Kodsökväg Sökvägen till katalogen i den lokala utvecklingsmiljön som innehåller all Python-källkod för bedömning av modellen. Du kan använda kapslade kataloger och paket.
Bedömningsskript Den relativa sökvägen till bedömningsfilen i källkodskatalogen. Den här Python-koden måste ha en init() funktion och en run() funktion. Funktionen init() anropas när modellen har skapats eller uppdaterats (du kan till exempel använda den för att cachelagra modellen i minnet). Funktionen run() anropas vid varje anrop av slutpunkten för att utföra den faktiska poängsättningen och förutsägelsen.
Environment Miljön som ska vara värd för modellen och koden. Det här värdet kan antingen vara en referens till en befintlig version av miljön på arbetsytan eller en infogad miljöspecifikation. Obs! Microsoft korrigerar regelbundet basavbildningarna för kända säkerhetsrisker. Du måste distribuera om slutpunkten för att använda den korrigerade avbildningen. Om du anger en egen avbildning ansvarar du för att uppdatera den. Mer information finns i Bildkorrigering.
Instanstyp Den VM-storlek som ska användas för distributionen. Listan över storlekar som stöds finns i SKU-listan för hanterade onlineslutpunkter.
Antal instanser Antalet instanser som ska användas för distributionen. Basera värdet på den arbetsbelastning du förväntar dig. För hög tillgänglighet rekommenderar vi att du anger värdet till minst 3. Vi reserverar ytterligare 20 % för att utföra uppgraderingar. Mer information finns i kvotallokering för virtuella datorer för distributioner.

Information om hur du distribuerar onlineslutpunkter med hjälp av mallen CLI, SDK, studio och ARM finns i Distribuera en ML-modell med en onlineslutpunkt.

Distribution för kodare och icke-kodare

Azure Machine Learning stöder modelldistribution till onlineslutpunkter för både kodare och icke-kodare genom att tillhandahålla alternativ för distribution utan kod, distribution med låg kod och BYOC-distribution (Bring Your Own Container).

  • Distribution utan kod ger färdiga slutsatsdragningar för vanliga ramverk (till exempel scikit-learn, TensorFlow, PyTorch och ONNX) via MLflow och Triton.
  • Med distribution med låg kod kan du tillhandahålla minimal kod tillsammans med ML-modellen för distribution.
  • Med BYOC-distributionen kan du praktiskt taget ta med alla containrar för att köra din onlineslutpunkt. Du kan använda alla Azure Machine Learning-plattformsfunktioner som autoskalning, GitOps, felsökning och säker distribution för att hantera dina MLOps-pipelines.

I följande tabell beskrivs viktiga aspekter av distributionsalternativen online:

Ingen kod Låg kod BYOC
Sammanfattning Använder färdiga inferenser för populära ramverk som scikit-learn, TensorFlow, PyTorch och ONNX via MLflow och Triton. Mer information finns i Distribuera MLflow-modeller till onlineslutpunkter. Använder säkra, offentligt publicerade granskade bilder för populära ramverk, med uppdateringar varannan vecka för att åtgärda säkerhetsrisker. Du tillhandahåller bedömningsskript och/eller Python-beroenden. Mer information finns i Azure Machine Learning-kurerade miljöer. Du tillhandahåller din fullständiga stack via Azure Machine Learnings stöd för anpassade avbildningar. Mer information finns i Använda en anpassad container för att distribuera en modell till en onlineslutpunkt.
Anpassad basavbildning Nej, en kuraterad miljö tillhandahåller detta för enkel distribution. Ja och Nej, du kan antingen använda en kuraterad bild eller en anpassad avbildning. Ja, ta med en tillgänglig containeravbildningsplats (till exempel docker.io, Azure Container Registry (ACR) eller Microsoft Container Registry (MCR)) eller en Dockerfile som du kan skapa/push-överföra med ACR för din container.
Anpassade beroenden Nej, en kuraterad miljö tillhandahåller detta för enkel distribution. Ja, ta med Azure Machine Learning-miljön där modellen körs. antingen en Docker-avbildning med Conda-beroenden eller en dockerfile. Ja, detta kommer att ingå i containeravbildningen.
Anpassad kod Nej, bedömningsskriptet genereras automatiskt för enkel distribution. Ja, ta med ditt bedömningsskript. Ja, detta kommer att ingå i containeravbildningen.

Kommentar

AutoML-körningar skapar ett bedömningsskript och beroenden automatiskt för användare, så att du kan distribuera valfri AutoML-modell utan att skapa ytterligare kod (för distribution utan kod) eller så kan du ändra automatiskt genererade skript till dina affärsbehov (för distribution med låg kod). Information om hur du distribuerar med AutoML-modeller finns i Distribuera en AutoML-modell med en onlineslutpunkt.

Felsökning av slutpunkt online

Azure Machine Learning tillhandahåller olika sätt att felsöka onlineslutpunkter lokalt och med hjälp av containerloggar.

Lokal felsökning med HTTP-servern för Azure Machine Learning-slutsatsdragning

Du kan felsöka ditt bedömningsskript lokalt med hjälp av HTTP-servern för Azure Machine Learning-slutsatsdragning. HTTP-servern är ett Python-paket som exponerar din bedömningsfunktion som en HTTP-slutpunkt och omsluter Flask-serverkoden och beroendena till ett enda paket. Den ingår i de fördefinierade Docker-avbildningarna för slutsatsdragning som används när du distribuerar en modell med Azure Machine Learning. Med enbart paketet kan du distribuera modellen lokalt för produktion och du kan också enkelt verifiera ditt bedömningsskript (post) i en lokal utvecklingsmiljö. Om det uppstår ett problem med bedömningsskriptet returnerar servern ett fel och platsen där felet inträffade. Du kan också använda Visual Studio Code för att felsöka med HTTP-servern för Azure Machine Learning-slutsatsdragning.

Mer information om felsökning med HTTP-servern finns i Felsökning av bedömningsskript med Azure Machine Learning-slutsatsdragning av HTTP-server.

Lokal felsökning

För lokal felsökning behöver du en lokal distribution, dvs. en modell som distribueras till en lokal Docker-miljö. Du kan använda den här lokala distributionen för testning och felsökning innan du distribuerar till molnet. Om du vill distribuera lokalt måste du ha Docker-motorn installerad och igång. Azure Machine Learning skapar sedan en lokal Docker-avbildning som efterliknar Azure Machine Learning-avbildningen. Azure Machine Learning skapar och kör distributioner åt dig lokalt och cachelagrar avbildningen för snabba iterationer.

Stegen för lokal felsökning omfattar vanligtvis:

  • Kontrollera att den lokala distributionen lyckades
  • Anropa den lokala slutpunkten för slutsatsdragning
  • Granska loggarna för utdata från anropsåtgärden

Mer information om lokal felsökning finns i Distribuera och felsöka lokalt med hjälp av lokala slutpunkter.

Lokal felsökning med Visual Studio Code (förhandsversion)

Viktigt!

Den här funktionen är för närvarande i allmänt tillgänglig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och vi rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade.

Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Precis som med lokal felsökning måste du först ha Docker-motorn installerad och igång och sedan distribuera en modell till den lokala Docker-miljön. När du har en lokal distribution använder azure Machine Learning lokala slutpunkter Docker- och Visual Studio Code-utvecklingscontainrar (dev-containrar) för att skapa och konfigurera en lokal felsökningsmiljö. Med dev-containrar kan du dra nytta av Visual Studio Code-funktioner, till exempel interaktiv felsökning, inifrån en Docker-container.

Mer information om interaktiv felsökning av onlineslutpunkter i VS Code finns i Felsöka onlineslutpunkter lokalt i Visual Studio Code.

Felsökning med containerloggar

För en distribution kan du inte få direkt åtkomst till den virtuella dator där modellen distribueras. Du kan dock hämta loggar från vissa av containrarna som körs på den virtuella datorn. Det finns två typer av containrar som du kan hämta loggarna från:

  • Slutsatsdragningsserver: Loggar inkluderar konsolloggen (från slutsatsdragningsservern) som innehåller utdata från utskrifts-/loggningsfunktioner från bedömningsskriptet (score.py kod).
  • Lagringsinitierare: Loggar innehåller information om huruvida kod- och modelldata har laddats ned till containern. Containern körs innan inferensservercontainern börjar köras.

Mer information om felsökning med containerloggar finns i Hämta containerloggar.

Trafikroutning och spegling till onlinedistributioner

Kom ihåg att en enda onlineslutpunkt kan ha flera distributioner. När slutpunkten tar emot inkommande trafik (eller begäranden) kan den dirigera procentandelar av trafiken till varje distribution, enligt den ursprungliga blå/gröna distributionsstrategin. Den kan också spegla (eller kopiera) trafik från en distribution till en annan, även kallad trafikspegling eller skuggning.

Trafikroutning för blå/grön distribution

Blå/grön distribution är en distributionsstrategi som gör att du kan distribuera en ny distribution (den gröna distributionen) till en liten delmängd av användare eller begäranden innan du distribuerar den helt. Slutpunkten kan implementera belastningsutjämning för att allokera vissa procentandelar av trafiken till varje distribution, där den totala allokeringen för alla distributioner uppgår till upp till 100 %.

Dricks

En begäran kan kringgå den konfigurerade belastningsutjämningen genom att inkludera ett HTTP-huvud för azureml-model-deployment. Ange rubrikvärdet till namnet på den distribution som du vill att begäran ska dirigeras till.

Följande bild visar inställningar i Azure Machine Learning-studio för allokering av trafik mellan en blå och grön distribution.

Screenshot showing slider interface to set traffic allocation between deployments.

Den här trafikallokeringen dirigerar trafik enligt följande bild, där 10 % av trafiken går till den gröna distributionen och 90 % av trafiken går till den blå distributionen.

Diagram showing an endpoint splitting traffic to two deployments.

Trafikspegling till onlinedistributioner

Slutpunkten kan också spegla (eller kopiera) trafik från en distribution till en annan distribution. Trafikspegling (kallas även skuggtestning) är användbart när du vill testa en ny distribution med produktionstrafik utan att påverka de resultat som kunderna får från befintliga distributioner. När du till exempel implementerar en blå/grön distribution där 100 % av trafiken dirigeras till blått och 10 % speglas i den gröna distributionen, returneras inte resultatet av den speglade trafiken till den gröna distributionen till klienterna, men måtten och loggarna registreras.

Diagram showing an endpoint mirroring traffic to a deployment.

Information om hur du använder trafikspegling finns i Valv distribution för onlineslutpunkter.

Fler funktioner för onlineslutpunkter i Azure Machine Learning

Autentisering och kryptering

  • Autentisering: Nyckel- och Azure Machine Learning-token
  • Hanterad identitet: Användartilldelad och systemtilldelad
  • SSL som standard för slutpunktsanrop

Automatisk skalning

Med autoskalning körs automatiskt rätt mängd resurser för att hantera arbetsbelastningen i appen. Hanterade slutpunkter stöder automatisk skalning genom integrering med autoskalningsfunktionen för Azure Monitor. Du kan konfigurera måttbaserad skalning (till exempel CPU-användning >70 %), schemabaserad skalning (till exempel skalningsregler för tider med hög belastning) eller en kombination.

Screenshot showing that autoscale flexibly provides between min and max instances, depending on rules.

Information om hur du konfigurerar autoskalning finns i Så här autoskalar du onlineslutpunkter.

Hanterad nätverksisolering

När du distribuerar en ML-modell till en hanterad onlineslutpunkt kan du skydda kommunikationen med onlineslutpunkten med hjälp av privata slutpunkter.

Du kan konfigurera säkerhet för inkommande bedömningsbegäranden och utgående kommunikation med arbetsytan och andra tjänster separat. Inkommande kommunikation använder den privata slutpunkten för Azure Machine Learning-arbetsytan. Utgående kommunikation använder privata slutpunkter som skapats för arbetsytans hanterade virtuella nätverk.

Mer information finns i Nätverksisolering med hanterade onlineslutpunkter.

Övervaka onlineslutpunkter och distributioner

Övervakning för Azure Machine Learning-slutpunkter är möjligt via integrering med Azure Monitor. Med den här integreringen kan du visa mått i diagram, konfigurera aviseringar, fråga från loggtabeller, använda Application Insights för att analysera händelser från användarcontainrar och så vidare.

  • Mått: Använd Azure Monitor för att spåra olika slutpunktsmått, till exempel svarstid för begäranden och öka detaljnivån till distributions- eller statusnivå. Du kan också spåra mått på distributionsnivå, till exempel processor-/GPU-användning och öka detaljnivån till instansnivå. Med Azure Monitor kan du spåra dessa mått i diagram och konfigurera instrumentpaneler och aviseringar för ytterligare analys.

  • Loggar: Skicka mått till Log Analytics-arbetsytan där du kan köra frågor mot loggar med hjälp av Kusto-frågesyntaxen. Du kan också skicka mått till lagringskonto och/eller händelsehubbar för vidare bearbetning. Dessutom kan du använda dedikerade loggtabeller för onlineslutpunktsrelaterade händelser, trafik och containerloggar. Kusto-frågan tillåter komplex analys som ansluter till flera tabeller.

  • Application Insights: Utvalda miljöer omfattar integrering med Application Insights och du kan aktivera/inaktivera den när du skapar en onlinedistribution. Inbyggda mått och loggar skickas till Application Insights och du kan använda dess inbyggda funktioner som Live-mått, Transaktionssökning, Fel och Prestanda för ytterligare analys.

Mer information om övervakning finns i Övervaka onlineslutpunkter.

Hemlig inmatning i onlinedistributioner (förhandsversion)

Hemlig inmatning i samband med en onlinedistribution är en process för att hämta hemligheter (till exempel API-nycklar) från hemliga arkiv och mata in dem i din användarcontainer som körs i en onlinedistribution. Hemligheter kommer så småningom att vara tillgängliga via miljövariabler, vilket ger ett säkert sätt för dem att förbrukas av slutsatsdragningsservern som kör ditt bedömningsskript eller av den slutsatsdragningsstacken som du tar med med en BYOC-distributionsmetod (bring your own container).

Det finns två sätt att mata in hemligheter. Du kan mata in hemligheter själv, använda hanterade identiteter eller använda funktionen för hemlig inmatning. Mer information om hur du matar in hemligheter finns i Hemlig injektion i onlineslutpunkter (förhandsversion).

Nästa steg