Share via


Machine Learning-modellen implementeren in productieomgevingen

In dit artikel worden aanbevolen procedures beschreven voor het implementeren van machine learning-modellen in productieomgevingen met behulp van Azure Machine Learning. Het implementeren van machine learning-modellen in productie is belangrijk voor organisaties die AI gebruiken om hun activiteiten te verbeteren. Het kan een complex proces zijn, maar dit artikel helpt u bij het begrijpen van de stappen.

Overwegingen voor architectuur

  • Kies de juiste implementatiemethode. Elke implementatiemethode heeft voor- en nadelen. Het is belangrijk dat u degene kiest die het beste past bij de behoeften van uw organisatie. Er zijn twee belangrijkste implementatiemethoden:

    • Realtime (online) deductie verwerkt invoergegevens zoals deze worden ontvangen, vaak met een lage latentievereiste. Lage latentie is belangrijk voor toepassingen die onmiddellijke reacties vereisen, zoals fraudedetectie, spraakherkenning of aanbevelingssystemen. Realtime deductie is complexer en duurder om te implementeren dan batchdeductie, omdat hiervoor een snellere en betrouwbaardere infrastructuur nodig is. De onderliggende berekening voor realtime deductie wordt meestal continu uitgevoerd naar serviceaanvragen sneller.

    • Met batchdeductie (offline) wordt een grote batch invoergegevens tegelijk verwerkt in plaats van dat elk invoergegevenspunt afzonderlijk in realtime wordt verwerkt. Batchdeductie is zeer geschikt voor scenario's met grote gegevensvolumes die efficiënt moeten worden verwerkt, maar reactietijd is niet kritiek. U kunt bijvoorbeeld batchdeductie gebruiken om een grote gegevensset met afbeeldingen te verwerken en het machine learning-model doet voorspellingen op alle afbeeldingen tegelijk. Batchdeductie is goedkoper en efficiënter dan realtime deductie. De onderliggende berekening voor batchdeductie wordt meestal alleen uitgevoerd tijdens de batchtaak.

    Machine Learning maakt gebruik van eindpunten om modellen in realtime en batchscenario's te implementeren. Eindpunten bieden een uniforme interface voor het aanroepen en beheren van modelimplementaties in verschillende rekentypen. Beheerde online-eindpunten dienen, schalen, beveiligen en bewaken van uw machine learning-modellen voor deductie.

    Zie de volgende sectie in dit artikel, Implementatiemethoden voor meer informatie.

  • Consistentie garanderen. Het is belangrijk om uw model consistent te implementeren in omgevingen, zoals ontwikkeling, fasering en productie. Gebruik containerisatie- of virtualisatietechnologieën, zoals Machine Learning-omgevingen, om consistentie te bieden en uw omgeving in te kapselen.

  • Prestaties bewaken. Nadat uw model in productie is geïmplementeerd, moet u metrische gegevens bijhouden, zoals nauwkeurigheid, latentie en doorvoer, en waarschuwingen instellen om u te waarschuwen wanneer de prestaties onder acceptabele niveaus vallen. Gebruik Application Insights en de ingebouwde bewakingsmogelijkheden van beheerde eindpunten om metrische gegevens weer te geven en waarschuwingen te maken.

  • Implementeer beveiligingsmaatregelen. Bescherm uw gegevens en systemen. U kunt verificatie- en toegangsbeheer instellen, gegevens in transit en at-rest versleutelen, netwerkbeveiliging gebruiken en controleren op verdachte activiteiten.

  • Maak een plan voor updates. Machine learning-modellen moeten worden bijgewerkt wanneer nieuwe gegevens en nieuwe algoritmen beschikbaar komen. Het is belangrijk om een proces te maken om het bijgewerkte model te testen en te valideren voordat u het in productie implementeert. Blauw/groen-implementatie is een algemene strategie waarmee machine learning-modellen in productie worden bijgewerkt. Met blauw/groen-implementatie kunt u een model bijwerken naar een nieuwe omgeving, het testen en vervolgens overschakelen naar het nieuwe model nadat het is gevalideerd. Blauw/groen implementatie zorgt ervoor dat potentiële problemen met het bijgewerkte model geen invloed hebben op uw klanten. Zie Systeemeigen blauw/groen implementatie voor meer informatie.

Implementatiemethoden

Houd rekening met de volgende vragen om uw model te evalueren, de twee implementatiemethoden te vergelijken en de methode te selecteren die bij uw model past:

  • Hoe vaak moeten voorspellingen worden gegenereerd?
  • Hoe snel hebt u de resultaten nodig?
  • Worden de voorspellingen onmiddellijk opgeslagen of gebruikt?
  • Moeten voorspellingen afzonderlijk, in kleine batches of in grote batches worden gegenereerd?
  • Wordt latentie verwacht van het model?
  • Hoeveel rekenkracht moet het model uitvoeren?
  • Zijn er operationele gevolgen en kosten voor het onderhouden van het model?
  • Hoe wordt de voorspelling geactiveerd? Is het op gebeurtenissen gebaseerd of gepland?

Bekijk de volgende beslissingsstructuur om te bepalen welk implementatiemodel het beste past bij uw use-case:

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

Batchdeductie

Batchdeductie is een eenvoudig proces waarmee modellen in tijdsintervallen of op basis van triggers kunnen worden uitgevoerd. Met batchdeductie kunnen bedrijfstoepassingen voorspellingen opslaan.

Houd rekening met de volgende aanbevolen procedures voor batchdeductie:

  • Batchbewerkingen uitvoeren met behulp van API. Gebruik batcheindpunten om een duurzaam HTTPS-eindpunt te maken waarmee een batchscoretaak wordt geactiveerd voor geplande of op gebeurtenissen gebaseerde gegevenspijplijnen. De API kan worden geïntegreerd met elk gegevensindelingsplatform dat ondersteuning biedt voor AANroepen van REST API. Zie het opsommingsteken voor Batch-integratie in deze sectie en Implementeer modellen voor scoren in batch-eindpunten voor meer informatie.

  • Rekenopties. Batchdeductieprocessen worden meestal niet continu uitgevoerd, dus het is handig om herbruikbare clusters automatisch te starten, te stoppen en te schalen die een reeks workloads kunnen verwerken. Verschillende modellen vereisen vaak verschillende omgevingen. Uw oplossing moet een specifieke omgeving implementeren en verwijderen wanneer deductie is voltooid. Automation maakt de berekening beschikbaar voor het volgende model. Gebruik virtuele machines met lage prioriteit voor uw rekenknooppunten om de kosten te verlagen.

    Belangrijk

    De grootte van de rekenknooppunten is belangrijk. Als de knooppunten te klein zijn, duurt de batchdeductietaak langer. Als de knooppunten te groot zijn, is de taak duurder. Test en bewaak rekenknooppunten om de juiste grootte voor uw model te bepalen.

  • Overweeg schaalbaarheidsbehoeften. Voor verbeterde prestaties biedt Machine Learning ondersteuning voor functies die schaalbare verwerking mogelijk maken. Het aantal rekenknooppunten en de parameters voor maximale gelijktijdigheid worden gedefinieerd tijdens de implementatie van het batcheindpunt in Machine Learning. U kunt de parameters voor elke taak overschrijven, wat klanten flexibiliteit en out-of-the-box parallellisme biedt. Deze functies werken met tabellaire en bestandsdeductie.

  • Problemen met batchdeductie. Batchdeductie is een eenvoudigere manier om uw model in productie te gebruiken en te implementeren, maar het biedt wel een eigen reeks uitdagingen.

    • Afhankelijk van de frequentie die door de deductie wordt uitgevoerd, kan de voorspelling die wordt gegenereerd, irrelevant zijn op het moment dat deze wordt geopend.

    • Implementeren in veel regio's en het ontwerpen van de oplossing voor hoge beschikbaarheid zijn geen kritieke zorgen in een batchdeductiescenario omdat het model niet regionaal wordt geïmplementeerd. Maar het gegevensarchief moet mogelijk worden geïmplementeerd met een strategie voor hoge beschikbaarheid op veel locaties. De implementatie moet het ontwerp en de strategie voor hoge beschikbaarheid van toepassingen volgen.

    • Gegevens die tijdens een batchdeductie worden gegenereerd, kunnen gedeeltelijk mislukken. Als een geplande pijplijn bijvoorbeeld een batchdeductietaak activeert en de pijplijn mislukt, zijn de gegevens die worden gegenereerd door de batchdeductietaak mogelijk onvolledig. Gedeeltelijke herstarts zijn een veelvoorkomend probleem met batchdeductie. Een oplossing is het gebruik van een faseringsgebied voor de gegevens en verplaats de gegevens alleen naar de uiteindelijke bestemming nadat de batchdeductietaak is voltooid. Een andere oplossing is het onderhouden van een record of transactie van elk bestand dat wordt verwerkt en vergelijk die record met de lijst met invoerbestanden om duplicatie te voorkomen. Deze methode bevat logica in het scorescript. Deze oplossing is complexer, maar u kunt de foutlogica aanpassen als de batchdeductietaak mislukt.

  • Beveiligingsvereisten. Gebruik verificatie en autorisatie om de toegang tot het batch-eindpunt te beheren voor verbeterde beveiliging.

    • Een batch-eindpunt met toegangsbeheer accepteert alleen scoreaanvragen van hosts binnen een virtueel netwerk. Het accepteert geen scoreaanvragen van het openbare internet. Een batch-eindpunt dat is gemaakt in een privékoppelingswerkruimte, heeft toegangsbeheerobjectbeveiliging. Zie Netwerkisolatie in batcheindpunten voor meer informatie.
    • Gebruik Microsoft Entra-tokens voor verificatie.
    • Gebruik SSL-versleuteling op het eindpunt. Deze functie is standaard ingeschakeld voor aanroepen van Machine Learning-eindpunten.
    • Batch-eindpunten zorgen ervoor dat alleen geautoriseerde gebruikers batchimplementaties kunnen aanroepen, maar personen kunnen andere referenties gebruiken om de onderliggende gegevens te lezen. Zie de gegevenstoegangstabel voor een verwijzing naar de gegevensarchieven en de referenties voor toegang tot deze gegevens.
  • Batch-integratie. Machine Learning-batcheindpunten maken gebruik van een open API. Batchdeductie kan worden geïntegreerd met andere Azure-services, zoals Azure Data Factory, Azure Databricks en Azure Synapse Analytics, om deel uit te maken van een grotere gegevenspijplijn. U kunt bijvoorbeeld het volgende gebruiken:

    • Data Factory voor het organiseren van het batchdeductieproces.
    • Azure Databricks om de gegevens voor te bereiden op batchdeductie.
    • Machine Learning om het batchdeductieproces uit te voeren.
    • Azure Synapse Analytics voor het opslaan van de volgende voorspellingen.

    Batch-eindpunten ondersteunen Microsoft Entra-id voor autorisatie. Voor de aanvraag voor de API is de juiste verificatie vereist. Azure-services, zoals Data Factory, ondersteunen het gebruik van een service-principal of een beheerde identiteit om te verifiëren bij batch-eindpunten. Zie Batch-eindpunten uitvoeren vanuit Data Factory voor meer informatie.

    Als u de beste methode voor batchinvoer en uitvoerverwerking wilt kiezen, is het belangrijk om te begrijpen hoe gegevens door de fasen van uw gegevenspijplijnen worden verplaatst. U hebt rechtstreeks toegang tot Azure-gegevensservices via het scorescript voor batcheindpunten met behulp van SDK's, maar het gebruik van geregistreerde machine learning-gegevensarchieven is eenvoudiger, veilig en controleerbaar. Gebruik voor gegevensbronnen van derden een engine voor gegevensverwerking, zoals Data Factory, Azure Databricks of Azure Synapse Analytics, om de gegevens voor te bereiden op batchdeductie en verwerking na deductie toe te passen.

  • MLflow. Gebruik het opensource-framework, MLflow, tijdens het ontwikkelen van modellen. Machine Learning biedt ondersteuning voor implementatie zonder code van modellen die u maakt en aanmeldt met MLflow. Wanneer u uw MLflow-model implementeert in een batch-eindpunt, hoeft u geen scorescript of omgeving aan te geven.

Realtime deductie

Realtime deductie is een methode waarmee u modeldeductie op elk gewenst moment kunt activeren en een onmiddellijk antwoord kunt bieden. Gebruik deze methode om streaminggegevens of interactieve toepassingsgegevens te analyseren.

Houd rekening met de volgende aanbevolen procedures voor realtime deductie:

  • Rekenopties. De beste manier om realtime deductie te implementeren, is door het model te implementeren dat zich in een online-eindpunt bevindt op een beheerd online-eindpunt of een Online-eindpunt van Kubernetes. Beheerde online-eindpunten implementeren uw machine learning-modellen onmiddellijk met behulp van CPU- of GPU-machines in Azure. Deze methode is schaalbaar en volledig beheerd. Kubernetes online-eindpunten implementeren modellen en leveren online-eindpunten op uw volledig geconfigureerde en beheerde Kubernetes-cluster. Zie Beheerde online-eindpunten versus Kubernetes online-eindpunten voor meer informatie.

  • Multiregionale implementatie en hoge beschikbaarheid. Regionale implementatie en architecturen met hoge beschikbaarheid zijn voorbeelden van realtime deductiescenario's, omdat latentie en modelprestaties essentieel zijn. Als u de latentie in multiregionale implementaties wilt verminderen, zoekt u het model zo dicht mogelijk bij het verbruikspunt. Voor het model en de ondersteunende infrastructuur volgt u de principes en strategie voor hoge beschikbaarheid en herstel na noodgevallen van het bedrijf.

  • Realtime deductieproblemen.

    • Realtime deductie is complexer vanwege latentie- en prestatievereisten. Een eenvoudig realtime systeem ontvangt invoer via een HTTP-aanvraag en retourneert een voorspelling. Maar een complex systeem moet mogelijk in 100 milliseconden of minder reageren. Gedurende die tijd worden gegevens opgehaald, functie-engineering uitgevoerd, deductie uitgevoerd, de resultaten van het model gevalideerd en opgeslagen, bedrijfslogica uitgevoerd en worden de resultaten geretourneerd naar het systeem of de toepassing.
    • Offload feature engineering naar een gegevensarchief met lage latentie, cachingservice of toegewezen functieopslag. Een functiearchief is een gecentraliseerde opslagplaats waarmee gegevenswetenschappers functies kunnen vinden en delen. Een functiearchief zorgt ervoor dat dezelfde code die wordt gebruikt voor het berekenen van de functiewaarden ook wordt gebruikt voor modeltraining en deductie.
  • Beveiligingsvereisten. Voor verbeterde beveiliging gebruikt u verificatie en autorisatie om de toegang tot het online-eindpunt te beheren.

    • Een online-eindpunt met toegangsbeheer accepteert alleen scoreaanvragen van hosts binnen een virtueel netwerk. Het accepteert geen scoreaanvragen van het openbare internet. Een online-eindpunt dat is gemaakt in een privékoppelingswerkruimte, heeft toegangsbeheerobjectbeveiliging. Zie Netwerkisolatie gebruiken met beheerde online-eindpunten voor meer informatie.
    • Gebruik Microsoft Entra-tokens voor verificatie op het besturingsvlak. Voor bewerkingen in het gegevensvlak worden methoden op basis van sleutels en tokens ondersteund. De methode op basis van tokens heeft de voorkeur omdat tokens verlopen. Gebruik op rollen gebaseerd toegangsbeheer van Azure (RBAC) om de toegang te beperken en de sleutel of het token voor een online-eindpunt op te halen.
    • Gebruik SSL-versleuteling op het eindpunt. Deze functie is standaard ingeschakeld voor aanroepen van Machine Learning-eindpunten.
  • Realtime integratie. Integreer realtime deductie met andere Azure-services met behulp van SDK's voor verschillende talen en het aanroepen van het eindpunt met behulp van een REST API. U kunt het online-eindpunt aanroepen als onderdeel van de code van een toepassing.

  • MLflow. Gebruik het opensource-framework, MLflow, tijdens het ontwikkelen van modellen. Machine Learning biedt ondersteuning voor implementatie zonder code van modellen die u maakt en aanmeldt met MLflow. Wanneer u uw MLflow-model implementeert op een online-eindpunt, hoeft u geen scorescript of omgeving aan te geven.

  • Veilige implementatie. Implementeer gefaseerde updates voor machine learning-modellen om ervoor te zorgen dat het model naar verwachting presteert. Gebruik de strategie voor veilige implementatie van Machine Learning om een model te implementeren op een eindpunt, test uit op het model en verhoog geleidelijk het verkeer naar het nieuwe model. Profiteer van gespiegeld verkeer om een percentage liveverkeer naar het nieuwe model te spiegelen voor extra validatie. Verkeerspiegeling, ook wel schaduwen genoemd, verandert niet de resultaten die worden geretourneerd aan clients. Alle aanvragen worden nog steeds naar het oorspronkelijke model verzonden. Zie Veilige implementatie voor online-eindpunten voor meer informatie.

Overige overwegingen

Houd rekening met deze overwegingen wanneer u machine learning-modellen implementeert in productieomgevingen.

ONNX

Gebruik Open Neural Network Exchange (ONNX) om de deductie van uw machine learning-modellen te optimaliseren. Het kan een uitdaging zijn om hardwaremogelijkheden volledig te gebruiken wanneer u modellen optimaliseert, met name wanneer u verschillende platforms gebruikt (bijvoorbeeld cloud/edge of CPU/GPU). U kunt een nieuw model trainen of een bestaand model converteren van een andere indeling naar ONNX.

Scenario met veel modellen

Een enkelvoudig model legt mogelijk niet de complexe aard van echte problemen vast. Supermarkten hebben bijvoorbeeld demografische gegevens, merken, SKU's en andere functies die variëren tussen regio's, waardoor het een uitdaging is om één verkoopvoorspellingsmodel te maken. Op dezelfde manier kunnen regionale variaties een uitdaging vormen voor een model voor slim voorspellend onderhoud. Gebruik veel modellen om regionale gegevens vast te leggen of relaties op archiefniveau vast te leggen om een hogere nauwkeurigheid te bieden dan één model. Bij de benadering met veel modellen wordt ervan uitgegaan dat er voldoende gegevens beschikbaar zijn voor dit granulariteitsniveau.

Een scenario met veel modellen heeft drie fasen: gegevensbron, gegevenswetenschap en veel modellen.

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

  • Gegevensbron. In de gegevensbronfase is het belangrijk om gegevens in slechts enkele elementen te segmenteren. Neem bijvoorbeeld geen factor voor de product-id of streepjescode in de hoofdpartitie, omdat deze te veel segmenten produceert en zinvolle modellen mogelijk remt. Het merk, de SKU of de lokaliteit zijn meer geschikte elementen. Het is belangrijk om de gegevens te vereenvoudigen door afwijkingen te verwijderen die de gegevensdistributie kunnen scheeftrekken.

  • Gegevenswetenschap. In de data science-fase worden verschillende experimenten parallel uitgevoerd voor elk gegevenssegment. Experimenten met veel modellen is een iteratief proces dat modellen evalueert om de beste te bepalen.

  • Veel modellen. De beste modellen voor elk segment of elke categorie worden geregistreerd in het modelregister. Wijs betekenisvolle namen toe aan de modellen om ze beter te detecteren voor deductie. Gebruik waar nodig taggen om het model te groeperen in specifieke categorieën.

Batchdeductie voor veel modellen

Voor veel modellen zijn voorspellingen tijdens batchdeductie volgens een terugkerend schema en kunnen ze grote hoeveelheden gegevens verwerken die tegelijkertijd worden uitgevoerd. In tegenstelling tot een scenario met één model, vindt deductie van veel modellen tegelijkertijd plaats.

Veel modellen voor batchdeductie gebruiken meerdere implementaties voor één beheerd eindpunt. Batchdeductie voor specifieke modellen roept de implementatienaam aan tijdens de REST- of SDK-aanroep. Zie Meerdere modellen implementeren in één implementatie voor meer informatie.

Realtime deductie voor veel modellen

U kunt meerdere modellen implementeren in een online-eindpunt met één beheerd, dat u kunt aanroepen via een REST API of SDK. Wanneer u de implementaties maakt, registreert u de meerdere modellen als één 'geregistreerd model' in Azure. Neem de meerdere modellen in dezelfde map op en geef die map door als het pad van het ene model. De modellen worden geladen in een woordenlijst die is gekoppeld aan hun namen. Wanneer een REST-aanvraag wordt ontvangen, wordt het gewenste model opgehaald uit de JSON-nettolading en wordt de nettolading door het relevante model gescored.

Modellen die in een implementatie met meerdere modellen worden geladen met behulp van deze techniek, moeten dezelfde Python-versie delen en geen conflicterende afhankelijkheden hebben. Hun bibliotheken moeten tegelijkertijd worden geïmporteerd, zelfs als ze niet strikt dezelfde afhankelijkheden hebben.

Zie Een implementatie met meerdere modellen maken met behulp van een aangepaste container voor een voorbeeld.

Volgende stappen