Share via


Distribuera maskininlärningsmodeller i produktionsmiljöer

I den här artikeln beskrivs metodtips för att distribuera maskininlärningsmodeller i produktionsmiljöer med hjälp av Azure Machine Learning. Att distribuera maskininlärningsmodeller i produktion är viktigt för organisationer som använder AI för att förbättra sin verksamhet. Det kan vara en komplex process, men den här artikeln hjälper dig att förstå stegen.

Arkitekturöverväganden

  • Välj rätt distributionsmetod. Varje distributionsmetod har fördelar och nackdelar. Det är viktigt att välja den som bäst passar din organisations behov. Det finns två huvudsakliga distributionsmetoder:

    • Inferens i realtid (online) bearbetar indata som de tas emot, ofta med ett krav på låg svarstid. Kort svarstid är viktigt för program som kräver omedelbara svar, till exempel identifiering av bedrägerier, taligenkänning eller rekommendationssystem. Realtidsinferens är mer komplex och dyr att implementera än batchinferens eftersom det kräver en snabbare och mer tillförlitlig infrastruktur. Den underliggande beräkningen för realtidsinferens körs vanligtvis kontinuerligt till tjänstbegäranden snabbare.

    • Batchinferens (offline) bearbetar en stor uppsättning indata samtidigt i stället för att bearbeta varje indatapunkt individuellt i realtid. Batch-slutsatsdragning passar bra för stora datavolymscenarier som behöver effektiv bearbetning men svarstiden är inte kritisk. Du kan till exempel använda batchinferens för att bearbeta en stor datamängd av bilder, och maskininlärningsmodellen gör förutsägelser på alla bilder samtidigt. Batch-slutsatsdragning är billigare och effektivare än slutsatsdragning i realtid. Den underliggande beräkningen för batchinferens körs vanligtvis bara under batchjobbet.

    Machine Learning använder slutpunkter för att distribuera modeller i realtids- och batchscenarier. Slutpunkter ger ett enhetligt gränssnitt för att anropa och hantera modelldistributioner mellan beräkningstyper. Hanterade onlineslutpunkter hanterar, skalar, skyddar och övervakar dina maskininlärningsmodeller för slutsatsdragning.

    Mer information finns i följande avsnitt i den här artikeln, Distributionsmetoder.

  • Se till att det är konsekvent. Det är viktigt att distribuera din modell konsekvent i olika miljöer, till exempel utveckling, mellanlagring och produktion. Använd containeriserings- eller virtualiseringstekniker, till exempel Machine Learning-miljöer, för att ge konsekvens och kapsla in din miljö.

  • Övervaka prestanda. När din modell har distribuerats till produktion bör du spåra mått, till exempel noggrannhet, svarstid och dataflöde, och konfigurera aviseringar för att meddela dig när prestandan understiger godkända nivåer. Använd Application Insights och de inbyggda övervakningsfunktionerna i hanterade slutpunkter för att visa mått och skapa aviseringar.

  • Implementera säkerhetsåtgärder. Skydda dina data och system. Du kan konfigurera autentiserings- och åtkomstkontroller, kryptera data under överföring och i vila, använda nätverkssäkerhet och övervaka misstänkt aktivitet.

  • Skapa en plan för uppdateringar. Maskininlärningsmodeller behöver uppdateringar när nya data och nya algoritmer blir tillgängliga. Det är viktigt att skapa en process för att testa och verifiera den uppdaterade modellen innan du distribuerar den i produktion. Blå/grön distribution är en vanlig strategi som uppdaterar maskininlärningsmodeller i produktion. Med blå/grön distribution kan du uppdatera en modell till en ny miljö, testa den och sedan växla till den nya modellen när den har verifierats. Blå/grön distribution säkerställer att potentiella problem med den uppdaterade modellen inte påverkar dina kunder. Mer information finns i Intern blå/grön distribution.

Distributionsmetoder

Tänk på följande frågor för att utvärdera din modell, jämföra de två distributionsmetoderna och välj den metod som passar din modell:

  • Hur ofta ska förutsägelser genereras?
  • Hur snart behöver du resultaten?
  • Lagras eller används förutsägelserna omedelbart?
  • Ska förutsägelser genereras individuellt, i små batchar eller i stora batchar?
  • Förväntas svarstid från modellen?
  • Hur mycket beräkningskraft behöver modellen köra?
  • Finns det operativa konsekvenser och kostnader för att underhålla modellen?
  • Hur utlöses förutsägelsen? Är det händelsebaserat eller schemalagt?

Se följande beslutsträd för att avgöra vilken distributionsmodell som passar bäst för ditt användningsfall:

A diagram of the real-time inference and batch inference decision tree.

Batch-slutsatsdragning

Batch-slutsatsdragning är en enkel process som gör det möjligt för modeller att köras i tidsintervall eller baserat på utlösare. Med batchinferens kan företagsprogram lagra förutsägelser.

Överväg följande metodtips för batchinferens:

  • Kör batchåtgärder med hjälp av API. Använd batchslutpunkter för att skapa en beständig HTTPS-slutpunkt som utlöser ett batchbedömningsjobb för schemalagda eller händelsebaserade datapipelines. API:et kan integreras med valfri plattform för dataorkestrering som stöder REST API-anrop. Mer information finns i punkt för Batch-integrering i det här avsnittet och Distribuera modeller för bedömning i batchslutpunkter.

  • Beräkningsalternativ. Batchinferensprocesser körs vanligtvis inte kontinuerligt, så det är fördelaktigt att automatiskt starta, stoppa och skala återanvändbara kluster som kan hantera ett antal arbetsbelastningar. Olika modeller kräver ofta olika miljöer. Din lösning måste distribuera en specifik miljö och ta bort den när slutsatsdragningen är klar. Automation gör beräkningen tillgänglig för nästa modell. Minska kostnaderna genom att använda virtuella datorer med låg prioritet för dina beräkningsnoder.

    Viktigt!

    Storleken på beräkningsnoderna är viktig. Om noderna är för små tar batchinferensjobbet längre tid. Om noderna är för stora är jobbet dyrare. Testa och övervaka beräkningsnoder för att fastställa rätt storlek för din modell.

  • Överväg skalbarhetsbehov. För bättre prestanda stöder Machine Learning funktioner som möjliggör skalbar bearbetning. Antalet beräkningsnoder och maximala samtidighetsparametrar definieras under batchslutpunktsdistributionen i Machine Learning. Du kan åsidosätta parametrarna för varje jobb, vilket ger kunderna flexibilitet i körningen och parallellitet. Dessa funktioner fungerar med tabell- och filbaserad slutsatsdragning.

  • Batch-slutsatsdragningsutmaningar. Batch-slutsatsdragning är ett enklare sätt att använda och distribuera din modell i produktion, men den utgör en egen uppsättning utmaningar.

    • Beroende på hur ofta inferensen körs kan förutsägelsen som genereras vara irrelevant när den används.

    • Att distribuera till många regioner och utforma lösningen för hög tillgänglighet är inte viktiga problem i ett batchinferensscenario eftersom modellen inte distribueras regionalt. Men datalagret kan behöva distribueras med en strategi för hög tillgänglighet på många platser. Distributionen bör följa programmets design och strategi för hög tillgänglighet.

    • Data som genereras under en batchinferens kan delvis misslyckas. Om en schemalagd pipeline till exempel utlöser ett batchinferensjobb och pipelinen misslyckas kan de data som genereras av batchinferensjobbet vara ofullständiga. Partiella omstarter är ett vanligt problem med batchinferens. En lösning är att använda ett mellanlagringsområde för data och endast flytta data till slutmålet när batchinferensjobbet har slutförts. En annan lösning är att underhålla en post, eller transaktion, för varje fil som bearbetas och jämföra posten med indatafillistan för att undvika duplicering. Den här metoden innehåller logik i bedömningsskriptet. Den här lösningen är mer komplex, men du kan anpassa fellogik om batchinferensjobbet misslyckas.

  • Säkerhetskrav. Använd autentisering och auktorisering för att styra åtkomsten till batchslutpunkten för förbättrad säkerhet.

    • En batchslutpunkt med ingressskydd accepterar endast bedömningsbegäranden från värdar i ett virtuellt nätverk. Den accepterar inte bedömningsbegäranden från det offentliga Internet. En batchslutpunkt som skapas i en privat länkaktiverad arbetsyta har ingressskydd. Mer information finns i Nätverksisolering i batchslutpunkter.
    • Använd Microsoft Entra-token för autentisering.
    • Använd SSL-kryptering på slutpunkten, som är aktiverad som standard för Machine Learning-slutpunktsanrop.
    • Batch-slutpunkter säkerställer att endast behöriga användare kan anropa batchdistributioner, men enskilda användare kan använda andra autentiseringsuppgifter för att läsa underliggande data. En referens till datalager och autentiseringsuppgifter för att komma åt dem finns i dataåtkomsttabellen.
  • Batchintegrering. Batchslutpunkter för Machine Learning använder ett öppet API. Batch-slutsatsdragning kan integreras med andra Azure-tjänster, till exempel Azure Data Factory, Azure Databricks och Azure Synapse Analytics för att ingå i en större datapipeline. Du kan till exempel använda:

    • Data Factory för att samordna batchinferensprocessen.
    • Azure Databricks för att förbereda data för batchinferens.
    • Machine Learning för att köra batchinferensprocessen.
    • Azure Synapse Analytics för att lagra efterföljande förutsägelser.

    Batch-slutpunkter stöder Microsoft Entra-ID för auktorisering. Begäran till API:et kräver korrekt autentisering. Azure-tjänster, till exempel Data Factory, stöder användning av tjänstens huvudnamn eller en hanterad identitet för att autentisera mot batchslutpunkter. Mer information finns i Köra batchslutpunkter från Data Factory.

    Om du vill välja den bästa metoden för bearbetning av batchindata och utdata är det viktigt att förstå hur data flyttas genom stegen i dina datapipelines. Du kan komma åt Azure-datatjänster direkt via batchslutpunktsbedömningsskriptet med hjälp av SDK:er, men att använda Machine Learning-registrerade datalager är enklare, säkrare och mer granskningsbart. För datakällor från tredje part använder du en databearbetningsmotor, till exempel Data Factory, Azure Databricks eller Azure Synapse Analytics, för att förbereda data för batchinferens och tillämpa bearbetning efter inferens.

  • MLflow. Använd ramverket med öppen källkod, MLflow, under modellutvecklingen. Machine Learning stöder distribution utan kod av modeller som du skapar och loggar med MLflow. När du distribuerar MLflow-modellen till en batchslutpunkt behöver du inte ange ett bedömningsskript eller en miljö.

Slutsatsdragning i realtid

Realtidsinferens är en metod som gör att du kan utlösa modellinferens när som helst och ger ett omedelbart svar. Använd den här metoden för att analysera strömmande data eller interaktiva programdata.

Överväg följande metodtips för slutsatsdragning i realtid:

  • Beräkningsalternativ. Det bästa sättet att implementera realtidsinferens är att distribuera modellen som finns i en onlineslutpunkt till en hanterad onlineslutpunkt eller en Kubernetes-slutpunkt online. Hanterade onlineslutpunkter distribuerar dina maskininlärningsmodeller omedelbart med hjälp av PROCESSOR- eller GPU-datorer i Azure. Den här metoden är skalbar och fullständigt hanterad. Kubernetes onlineslutpunkter distribuerar modeller och hanterar onlineslutpunkter i ditt fullständigt konfigurerade och hanterade Kubernetes-kluster. Mer information finns i Hanterade onlineslutpunkter jämfört med Kubernetes onlineslutpunkter.

  • Multiregional distribution och hög tillgänglighet. Regional distribution och arkitekturer med hög tillgänglighet är exempel på scenarier för slutsatsdragning i realtid eftersom svarstid och modellprestanda är kritiska. Om du vill minska svarstiden i multiregionala distributioner letar du upp modellen så nära förbrukningspunkten som möjligt. För modellen och den stödjande infrastrukturen följer du företagets principer och strategi för hög tillgänglighet och haveriberedskap.

  • Utmaningar med slutsatsdragning i realtid.

    • Realtidsinferens är mer komplext på grund av svarstider och prestandakrav. Ett enkelt realtidssystem tar emot indata via en HTTP-begäran och returnerar en förutsägelse. Men ett komplext system kan behöva svara på 100 millisekunder eller mindre. Under den tiden hämtar den data, utför funktionsutveckling, utför slutsatsdragning, validerar och lagrar modellresultatet, kör affärslogik och returnerar resultatet till systemet eller programmet.
    • Avlasta funktionstekniker till ett datalager med låg fördröjning, cachelagringstjänst eller ett dedikerat funktionslager. Ett funktionslager är en centraliserad lagringsplats som gör det möjligt för dataexperter att hitta och dela funktioner. Ett funktionslager säkerställer att samma kod som används för att beräkna funktionsvärdena också används för modellträning och slutsatsdragning.
  • Säkerhetskrav. För förbättrad säkerhet använder du autentisering och auktorisering för att styra åtkomsten till onlineslutpunkten.

    • En onlineslutpunkt med ingressskydd accepterar endast bedömningsbegäranden från värdar i ett virtuellt nätverk. Den accepterar inte bedömningsbegäranden från det offentliga Internet. En onlineslutpunkt som skapas i en privat länkaktiverad arbetsyta har ingressskydd. Mer information finns i Använda nätverksisolering med hanterade onlineslutpunkter.
    • Använd Microsoft Entra-token för kontrollplansautentisering. För dataplansåtgärder stöds nyckelbaserade och tokenbaserade metoder. Den tokenbaserade metoden föredras eftersom token upphör att gälla. Använd rollbaserade åtkomstkontroller i Azure (RBAC) för att begränsa åtkomsten och hämta nyckeln eller token för en onlineslutpunkt.
    • Använd SSL-kryptering på slutpunkten, som är aktiverad som standard för Machine Learning-slutpunktsanrop.
  • Realtidsintegrering. Integrera slutsatsdragning i realtid med andra Azure-tjänster med hjälp av SDK:er för olika språk och anropa slutpunkten med hjälp av ett REST-API. Du kan anropa onlineslutpunkten som en del av ett programs kod.

  • MLflow. Använd ramverket med öppen källkod, MLflow, under modellutvecklingen. Machine Learning stöder distribution utan kod av modeller som du skapar och loggar med MLflow. När du distribuerar MLflow-modellen till en onlineslutpunkt behöver du inte ange ett bedömningsskript eller en miljö.

  • Valv distribution. Distribuera utfasade uppdateringar till maskininlärningsmodeller för att säkerställa att modellen fungerar som förväntat. Använd strategin för säker distribution av Machine Learning för att distribuera en modell till en slutpunkt, utföra testning mot modellen och gradvis öka trafiken till den nya modellen. Dra nytta av speglad trafik för att spegla en procentandel livetrafik till den nya modellen för extra validering. Trafikspegling, även kallat skuggning, ändrar inte de resultat som returneras till klienter. Alla begäranden flödar fortfarande till den ursprungliga modellen. Mer information finns i Valv distribution för onlineslutpunkter.

Övrigt att tänka på

Tänk på detta när du distribuerar maskininlärningsmodeller i produktionsmiljöer.

ONNX

Om du vill optimera slutsatsdragningen för dina maskininlärningsmodeller använder du Open Neural Network Exchange (ONNX). Det kan vara en utmaning att fullt ut använda maskinvarufunktioner när du optimerar modeller, särskilt när du använder olika plattformar (till exempel cloud/edge eller CPU/GPU). Du kan träna en ny modell eller konvertera en befintlig modell från ett annat format till ONNX.

Scenario med många modeller

En singularmodell kanske inte fångar upp de verkliga problemens komplexa natur. Stormarknader har till exempel demografi, varumärken, SKU:er och andra funktioner som varierar mellan regioner, vilket gör det till en utmaning att skapa en enda modell för försäljningsförutsägelse. På samma sätt kan regionala variationer utgöra en utmaning för en modell för förutsägande underhåll av smarta mätare. Använd många modeller för att samla in regionala data eller relationer på lagringsnivå för att ge högre noggrannhet än en enda modell. Metoden med många modeller förutsätter att tillräckligt med data är tillgängliga för den här detaljnivån.

Ett scenario med många modeller har tre steg: datakälla, datavetenskap och många modeller.

A diagram that shows the stages of the many-models scenario.

  • Datakälla. I datakällans fas är det viktigt att bara segmentera data i några få element. Ta till exempel inte med produkt-ID:t eller streckkoden i huvudpartitionen eftersom det producerar för många segment och kan hämma meningsfulla modeller. Varumärket, SKU:n eller orten är lämpligare element. Det är viktigt att förenkla data genom att ta bort avvikelser som kan förvränga datafördelningen.

  • Datavetenskap. I datavetenskapsstadiet körs flera experiment parallellt med varje datasegment. Experimentering med många modeller är en iterativ process som utvärderar modeller för att fastställa den bästa.

  • Många modeller. De bästa modellerna för varje segment eller kategori är registrerade i modellregistret. Tilldela meningsfulla namn till modellerna för att göra dem mer identifierbara för slutsatsdragning. Använd taggning där det behövs för att gruppera modellen i specifika kategorier.

Batch-slutsatsdragning för många modeller

För många modeller är förutsägelserna enligt ett återkommande schema under batchinferensen och de kan hantera stora volymdata som körs samtidigt. Till skillnad från ett scenario med en modell sker slutsatsdragning för många modeller samtidigt.

Många modeller för batchinferens använder flera distributioner mot en enda hanterad slutpunkt. Batch-slutsatsdragning för specifika modeller anropar distributionsnamnet under REST- eller SDK-anropet. Mer information finns i Distribuera flera modeller till en distribution.

Slutsatsdragning i realtid för många modeller

Du kan distribuera flera modeller till en enhanterad onlineslutpunkt, som du kan anropa via ett REST API eller SDK. När du skapar distributionerna registrerar du flera modeller som en enda "registrerad modell" i Azure. Inkludera flera modeller i samma katalog och skicka katalogen som sökväg till den enskilda modellen. Modellerna läses in i en ordlista som är försedd med deras namn. När en REST-begäran tas emot hämtas den önskade modellen från JSON-nyttolasten och den relevanta modellen poängsätter nyttolasten.

Modeller som läses in i en distribution med flera modeller med den här tekniken måste dela samma Python-version och har inga motstridiga beroenden. Deras bibliotek måste importeras samtidigt även om de inte har samma beroenden.

Ett exempel finns i Skapa en multimodeldistribution med hjälp av en anpassad container.

Nästa steg