Lees ons artikel over

class="img-responsive

.

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

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

voorbeeld van een eenvoudige trainingspijplijn

voorbeeld van een eenvoudige trainingspijplijn

voorbeeld van een trainingspijplijn op Vertex AI Pipelines met 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 iemand zou kunnen tegenkomen bij het werken 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 voor het eerst begon met het gebruik van Vertex AI Pipelines, 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 starterspakket te presenteren dat 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 richten ons bewust niet op het modelleren, maar benadrukken de verschillende stappen die nodig zijn om een model in productie te nemen.

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

Als je ooit hebt gewerkt met Kubeflow-pijplijnen, is een vraag die je misschien hebt wanneer je 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 waar er veel codeafhankelijkheden zijn in vergelijking met functie-gebaseerde componenten die alle codeafhankelijkheden in een functie bevatten en meestal eenvoudiger zijn. De 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 je 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 geïnstalleerd als een pakket. Vervolgens importeren we die functies in functiegebaseerde componenten zoals je dat bijvoorbeeld zou doen voor pandas. We hebben het voordeel dat we complexe en eenvoudige taken op dezelfde manier kunnen uitvoeren en de tijd voor het bouwen van afbeeldingen kunnen beperken tot slechts 1 (de basisimage).

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

Een overschreven basisimage gebruiken als basis voor al je componenten

Een overschreven basisimage gebruiken als basis voor al je componenten

Het parallelliseren van delen van je pijplijnen is zo eenvoudig als het schrijven van een for-lus

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

Als je dit optimaal doet, moet je de verschillende trainingsworkflows parallelliseren om tijd te winnen en bronnen te optimaliseren. Met Vertex Pipelines en Kubefkow is de inspanning minimaal door het ontwerp; het kost je alleen om een for-lus te schrijven. En bij het compileren van je pipeline, zal Kubeflow uitzoeken welke stappen en/of groepen van stappen parallel kunnen worden uitgevoerd en welke opeenvolgend moeten worden gedaan.

class="img-responsive

Voorbeeld van een pijplijn met onderdelen die parallel lopen

Voorwaardelijke inzet voor naadloze werking van uw ML-model

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

class="img-responsive

Voorbeeld van voorwaardelijke inzet

Bovenop deze functies (die niet uitputtend zijn) krijgt 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 worden veel ML-modellen in productie verwacht. 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 aangename reis met de tool te hebben. Je zou het ook moeten bekijken als je je projecten start met de ambitie om ze zo snel mogelijk bruikbaar te maken, d.w.z. ze in productie te zetten.

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

Als je naar een hoger niveau wilt, kun je in de documentatie van GCP vinden hoe:

class="img-responsive

Medium Blog door Artefact.

Dit artikel is oorspronkelijk gepubliceerd op Medium.com.
Volg ons op onze Medium Blog !