Lees ons artikel over

.

In dit artikel presenteren we een hulpmiddel dat onze ervaring met het gebruik van Vertex AI Pipelines in een project dat in productie draait, praktisch demonstreert.
Een end-to-end tutorial over hoe u een aangepast ML-model in productie kunt trainen en implementeren met behulp van Vertex AI Pipelines met Kubeflow v2. Als u in de war bent over hoe u Vertex AI moet benaderen, zult u uw weg kunnen vinden omdat alles in deze tutorial gebaseerd is op ervaringen uit de praktijk. Er zijn veel voorbeelden van pipelines die illustreren hoe u bepaalde coole functies van Vertex AI en Kubeflow kunt gebruiken. U zult ook een makefile vinden om u te helpen belangrijke recepten uit te voeren en u veel tijd te besparen om uw model te bouwen en in productie te nemen.

Pijplijnen in ML kunnen worden gedefinieerd als sets van verbonden taken die volledige of specifieke delen van de ML-workflow uitvoeren (bijv. trainingspijplijn).

example of a simple training pipeline

voorbeeld van een eenvoudige trainingspijplijn

example of a training pipeline on Vertex AI Pipelines using Kubeflow

voorbeeld van een trainingspijplijn op Vertex AI Pipelines met Kubeflow

Goed ontworpen pijplijnen hebben het voordeel dat ze reproduceerbaar en zeer aanpasbaar zijn. Deze twee eigenschappen maken het experimenteren ermee en het inzetten in productie een relatief eenvoudige taak. Het gebruik van Vertex AI Pipelines samen met Kubeflow heeft ons geholpen om snel aangepaste pijplijnen te ontwerpen en uit te voeren die de bovengenoemde eigenschappen hebben. De voorbeelden van pijplijnen die we illustreren in de starterkit zijn zeer representatief voor wat men tegen kan komen als men werkt aan een ML-project dat in productie moet worden ingezet. We hebben ook een handvol tips en geautomatiseerde scripts gedeeld, zodat u zich kunt concentreren op het vertrouwd raken met Vertex AI.

Toen ik Vertex AI Pipelines voor het eerst begon te gebruiken, was ik nogal overweldigd door alle mogelijkheden om precies dezelfde taak uit te voeren. Ik was niet helemaal zeker over de beste keuzes om mijn pijplijnen te construeren. Na een paar maanden vonden we onze weg en smeedden we een paar overtuigingen, in ieder geval over het belangrijkste aspect van het beheren van de levenscyclus van een project in productie met deze technologie.

Zoals eerder vermeld, is dit artikel bedoeld om een startersset te presenteren die op praktische wijze onze ervaring en wat we hebben geleerd tijdens het gebruik van Vertex AI Pipelines laat zien. We hopen dat dit nieuwe starters zal helpen om deze krachtige tool snel te begrijpen zonder de hoge instapprijs te betalen.

In de volgende secties presenteren we de meest interessante concepten/functies die we hebben gevonden met behulp van Vertex AI Pipelines. We gebruiken ook een speelgoed voorspellingsproject (de M5-competitie) om alles te illustreren. We zullen ons bewust niet richten op het modelleren, maar in plaats daarvan de verschillende stappen benadrukken die nodig zijn om een model operationeel te maken in productie.

Bouw een aangepaste basisafbeelding en gebruik deze als basis voor uw componenten

Als u ooit met Kubeflow-pijplijnen hebt gewerkt, is een vraag die u misschien hebt wanneer u container-gebaseerde componenten vs. functie-gebaseerde componenten moet gebruiken. Er zijn veel voor- en nadelen aan beide opties, maar er is ook een middenweg te vinden. Container-gebaseerde componenten zijn meer geschikt voor complexe taken waarbij er veel code-afhankelijkheden zijn in vergelijking met functie-gebaseerde componenten die alle code-afhankelijkheden in een functie bevatten en meestal eenvoudiger zijn. Deze laatste werkt sneller omdat we niet telkens een image moeten bouwen en implementeren als we onze code bewerken. Bij functiegebaseerde componenten wordt een standaard python 3.7 image gebruikt om uw functie uit te voeren.

Onze oplossing om zowel complexe als eenvoudige componenten op dezelfde manier uit te voeren, is om te werken met een overschreven versie van de standaard basisimage. Binnen deze gewijzigde basisimage hebben we al onze codes als pakket geïnstalleerd. Vervolgens importeren we die functies in functiegebaseerde componenten, zoals u bijvoorbeeld voor pandas zou doen. We hebben het voordeel dat we complexe en eenvoudige taken op dezelfde manier kunnen uitvoeren en dat we de tijd voor het bouwen van afbeeldingen kunnen beperken tot slechts 1 (de basisimage).

We organiseren ook onze configuratiebestanden op een manier die het gemakkelijk maakt om de invoer van uw componenten en pijplijnen aan te passen.

Using a an overwritten base image as the single foundation for all your components

Een overschreven basisimage gebruiken als de enige basis voor al uw componenten

Delen van uw pijplijnen parallelliseren is zo eenvoudig als het schrijven van een for-lus

Wanneer we met ML experimenteren, moeten we meestal vele iteraties van een eenvoudige trainingsworkflow uitvoeren, hetzij voor het afstemmen van een hyperparameter of voor het maken van meerdere modellen (bijv. een model per productcategorie).

Om dit optimaal te doen, zou u de verschillende trainingsworkflows moeten parallelliseren om tijd te winnen en bronnen te optimaliseren. Met Vertex Pipelines en Kubefkow is de inspanning minimaal door het ontwerp; het kost u alleen maar om een for-lus te schrijven. En wanneer u uw pijplijn compileert, zal Kubeflow uitzoeken welke stappen en/of groepen van stappen parallel uitgevoerd kunnen worden en welke achtereenvolgens gedaan moeten worden.

Voorbeeld van een pijplijn met onderdelen die parallel lopen

Voorwaardelijke inzet voor naadloze werking van uw ML-model

Met kfp.dsl.condition kunt u eenvoudig een getraind model implementeren en voorbereiden om het later opnieuw te gebruiken met wat code logica. Als u experimenteert met veel instellingen en hoopt om dingen naadloos in productie te brengen gegeven een set voorwaarden, zal deze functionaliteit van Kubeflow erg handig zijn. Combineer dit met een geweldige CICD en u zult de levenscyclus van uw ML-model probleemloos doorlopen.

Voorbeeld van voorwaardelijke inzet

Bovenop deze functies (die niet uitputtend zijn), hebt u reproduceerbaarheid , traceerbaarheid, beheerbaarheid en last but not least een geweldige UI om alles te controleren op de Vertex AI interface op GCP.

Conclusie

Tegenwoordig wordt verwacht dat veel ML-modellen in productie zullen draaien. Dus als u op GCP werkt en van plan bent om Vertex AI te gebruiken, hopen we dat deze starterkit u zal helpen om een prettige reis met de tool te hebben. U zou het ook moeten bekijken als u uw projecten start met de ambitie om ze zo snel mogelijk nuttig te maken, d.w.z. ze in productie uit te rollen.

Veel dank aan Luca Serra, Jeffrey Kayne en Robin Doumerc (Artefact) die heeft geholpen bij het bouwen van deze starterkit, maar ook Maxime Lutel voor het modelleren voor het speelgoedproject dat we gebruiken.

Als u naar het volgende niveau wilt gaan, vindt u in de documentatie van GCP hoe:

Medium Blog bij Artefact.

Dit artikel werd oorspronkelijk gepubliceerd op Medium.com.
Volg ons op ons medium Blog !