Beslissen over realtime of batchimplementatie
Wanneer u een model implementeert op een eindpunt dat kan worden geïntegreerd met een toepassing, kunt u ervoor kiezen om het te ontwerpen voor realtime voorspellingen of batchvoorspellingen.
Het type voorspellingen dat u nodig hebt, is afhankelijk van hoe u de voorspellingen van het model wilt gebruiken
Als u wilt bepalen of u een realtime- of batchimplementatieoplossing wilt ontwerpen, moet u rekening houden met de volgende vragen:
- Hoe vaak moeten voorspellingen worden gegenereerd?
- Hoe snel zijn de resultaten nodig?
- Moeten voorspellingen afzonderlijk of in batches worden gegenereerd?
- Hoeveel rekenkracht is er nodig om het model uit te voeren?
De benodigde frequentie van scoren identificeren
Een veelvoorkomend scenario is dat u een model gebruikt om nieuwe gegevens te scoren. Voordat u voorspellingen in realtime of in batch kunt ophalen, moet u eerst de nieuwe gegevens verzamelen.
Er zijn verschillende manieren om gegevens te genereren of te verzamelen. Nieuwe gegevens kunnen ook met verschillende tijdsintervallen worden verzameld.
U kunt bijvoorbeeld elke minuut temperatuurgegevens verzamelen van een IoT-apparaat (Internet of Things). U kunt transactionele gegevens ophalen telkens wanneer een klant een product koopt in uw webshop. U kunt ook om de drie maanden financiële gegevens uit een database extraheren.
Over het algemeen zijn er twee soorten gebruiksvoorbeelden:
- U hebt het model nodig om de nieuwe gegevens te scoren zodra het binnenkomt.
- U kunt het model plannen of activeren om de nieuwe gegevens te beoordelen die u in de loop van de tijd hebt verzameld.
Of u nu realtime- of batchvoorspellingen wilt, is niet noodzakelijkerwijs afhankelijk van hoe vaak nieuwe gegevens worden verzameld. In plaats daarvan is het afhankelijk van hoe vaak en hoe snel u de voorspellingen nodig hebt om te worden gegenereerd.
Als u de voorspellingen van het model onmiddellijk nodig hebt wanneer er nieuwe gegevens worden verzameld, hebt u realtime voorspellingen nodig. Als de voorspellingen van het model alleen op bepaalde momenten worden gebruikt, hebt u batchvoorspellingen nodig.
Bepalen hoeveel voorspellingen er zijn
Een andere belangrijke vraag die u zich moet stellen, is of u de voorspellingen nodig hebt om afzonderlijk of in batches te worden gegenereerd.
Een eenvoudige manier om het verschil tussen afzonderlijke en batchvoorspellingen te illustreren, is door een tabel voor te stellen. Stel dat u een tabel met klantgegevens hebt waarin elke rij een klant vertegenwoordigt. Voor elke klant hebt u enkele demografische gegevens en gedragsgegevens, zoals hoeveel producten ze hebben gekocht in uw webwinkel en wanneer hun laatste aankoop was.
Op basis van deze gegevens kunt u het verloop van de klant voorspellen: of een klant opnieuw in uw webshop koopt of niet.
Nadat u het model hebt getraind, kunt u beslissen of u voorspellingen wilt genereren:
- Afzonderlijk: Het model ontvangt één rij gegevens en retourneert of die individuele klant opnieuw koopt.
- Batch: Het model ontvangt meerdere rijen met gegevens in één tabel en retourneert of elke klant opnieuw gaat kopen. De resultaten worden gesorteerd in een tabel die alle voorspellingen bevat.
U kunt ook afzonderlijke of batchvoorspellingen genereren wanneer u met bestanden werkt. Als u bijvoorbeeld met een Computer Vision-model werkt, moet u mogelijk één afbeelding afzonderlijk scoren of een verzameling afbeeldingen in één batch.
Houd rekening met de kosten van rekenkracht
Naast het gebruik van rekenkracht bij het trainen van een model, hebt u ook rekenkracht nodig bij het implementeren van een model. Afhankelijk van of u het model implementeert in een realtime- of batcheindpunt, gebruikt u verschillende typen berekeningen. Als u wilt bepalen of u uw model wilt implementeren in een realtime- of batcheindpunt, moet u rekening houden met de kosten van elk type rekenproces.
Als u realtime voorspellingen nodig hebt, hebt u rekenkracht nodig die altijd beschikbaar is en de resultaten (bijna) onmiddellijk kan retourneren. Containertechnologieën zoals Azure Container Instance (ACI) en Azure Kubernetes Service (AKS) zijn ideaal voor dergelijke scenario's, omdat ze een lichtgewicht infrastructuur bieden voor uw geïmplementeerde model.
Wanneer u echter een model implementeert in een realtime-eindpunt en dergelijke containertechnologie gebruikt, is de berekening altijd ingeschakeld. Zodra een model is geïmplementeerd, betaalt u continu voor de berekening, omdat u de berekening niet kunt onderbreken of stoppen omdat het model altijd beschikbaar moet zijn voor directe voorspellingen.
Als u batchvoorspellingen nodig hebt, hebt u ook rekenkracht nodig die een grote workload kan verwerken. In het ideale voorbeeld gebruikt u een rekencluster dat de gegevens in parallelle batches kan beoordelen met behulp van meerdere knooppunten.
Wanneer u werkt met rekenclusters die gegevens in parallelle batches kunnen verwerken, wordt de berekening ingericht door de werkruimte wanneer de batchscore wordt geactiveerd en omlaag geschaald naar 0 knooppunten wanneer er geen nieuwe gegevens moeten worden verwerkt. Door de werkruimte een niet-actief rekencluster omlaag te laten schalen, kunt u aanzienlijke kosten besparen.
Beslissen over realtime of batchimplementatie
Het kiezen van een implementatiestrategie voor uw machine learning-modellen kan lastig zijn, omdat verschillende factoren van invloed kunnen zijn op uw beslissing.
Over het algemeen, als u afzonderlijke voorspellingen onmiddellijk nodig hebt wanneer nieuwe gegevens worden verzameld, hebt u realtime voorspellingen nodig.
Als u het model nodig hebt om nieuwe gegevens te scoren wanneer er een batch met gegevens beschikbaar is, moet u batchvoorspellingen krijgen.
Er zijn scenario's waarin u verwacht realtime voorspellingen nodig te hebben wanneer batchvoorspellingen rendabeler kunnen zijn. Houd er rekening mee dat u continu betaalt voor berekeningen met realtime-implementaties, zelfs wanneer er geen nieuwe voorspellingen worden gegenereerd.
Als u een vertraging van 5-10 minuten kunt toestaan wanneer u onmiddellijke voorspellingen nodig hebt, kunt u ervoor kiezen om uw model te implementeren op een batch-eindpunt. De vertraging wordt veroorzaakt op het moment dat het rekencluster moet worden gestart nadat het eindpunt is geactiveerd. Het rekencluster stopt echter ook nadat de voorspelling is gegenereerd, waardoor de kosten worden geminimaliseerd en mogelijk een rendabelere oplossing wordt.
Ten slotte moet u ook rekening houden met de vereiste rekenkracht voor uw model om nieuwe gegevens te scoren. Eenvoudigere modellen vereisen minder kosten en tijd om voorspellingen te genereren. Complexere modellen vereisen mogelijk meer rekenkracht en verwerkingstijd om voorspellingen te genereren. Daarom moet u overwegen hoe u uw model gaat implementeren voordat u beslist hoe u uw model traint.