Lees ons artikel over

class="lazyload

.

In dit artikel stellen we een tool voor die in de praktijk laat zien hoe wij Vertex AI hebben ingezet in een project dat in productie draait.
Een complete handleiding over het trainen en implementeren van een aangepast ML-model in productie met behulp van Vertex AI en Kubeflow v2. Als je niet goed weet hoe je Vertex AI moet aanpakken, kun je hier je weg vinden, aangezien alles in deze handleiding is gebaseerd op praktijkervaring. Er zijn veel voorbeelden van pipelines die laten zien hoe je bepaalde coole functies van Vertex AI Kubeflow kunt gebruiken. Je vindt er ook een makefile die je helpt bij het uitvoeren van belangrijke stappen en je veel tijd bespaart bij het bouwen van je model en het in productie nemen ervan.

Pijplijnen in ML kunnen worden gedefinieerd als reeksen onderling gekoppelde taken die de volledige of specifieke onderdelen van de ML-workflow uitvoeren (bijv. een trainingspijplijn).

voorbeeld van een eenvoudige trainingspijplijn

voorbeeld van een eenvoudige trainingspijplijn

Voorbeeld van een trainingspijplijn in Vertex AI met behulp van Kubeflow

Voorbeeld van een trainingspijplijn in Vertex AI met behulp van Kubeflow

Als ze goed zijn ontworpen, bieden pijplijnen het voordeel dat ze reproduceerbaar en in hoge mate aanpasbaar zijn. Dankzij deze twee eigenschappen is het relatief eenvoudig om ermee te experimenteren en ze in productie te nemen. Door Vertex AI in combinatie met Kubeflow te gebruiken, konden we snel aangepaste pijplijnen ontwerpen en uitvoeren die over de bovengenoemde eigenschappen beschikken. De voorbeelden van pijplijnen die we in de starterskit laten zien, zijn zeer representatief voor wat je tegenkomt bij het werken aan een ML-project dat in productie moet worden genomen. We hebben ook een aantal tips en geautomatiseerde scripts gedeeld, zodat u zich kunt concentreren op het vertrouwd raken met Vertex AI.

Toen ik voor het eerst met Vertex AI aan de slag ging, voelde ik me nogal overweldigd door alle mogelijkheden om precies dezelfde taak uit te voeren. Ik wist niet zo goed wat de beste keuzes waren bij het opzetten van mijn pijplijnen. Na een paar maanden hadden we onze weg gevonden en waren we tot een aantal conclusies gekomen, in ieder geval wat betreft het belangrijkste aspect van het beheer van de levenscyclus van een project in productie met deze technologie.

Zoals eerder vermeld, is dit artikel bedoeld als een startpakket waarin we op praktische wijze onze ervaringen en de lessen die we hebben geleerd bij het gebruik van Vertex AI delen. We hopen dat dit nieuwkomers helpt om deze krachtige tool snel onder de knie te krijgen, zonder dat ze daarvoor een hoge instapdrempel hoeven te overwinnen.

In de volgende paragrafen zullen we de meest interessante concepten en functies presenteren die we hebben ontdekt bij het gebruik van Vertex AI . We gebruiken ook een eenvoudig prognoseproject (de M5-wedstrijd) om alles te illustreren. We zullen ons bewust niet richten op het modelleringsgedeelte, maar in plaats daarvan de nadruk leggen op de verschillende stappen die nodig zijn om een model in de productieomgeving in gebruik te nemen.

Maak een aangepaste basisimage en gebruik deze als uitgangspunt voor je componenten

Als je ooit met Kubeflow-pijplijnen hebt gewerkt, vraag je je misschien af wanneer je containergebaseerde componenten moet gebruiken en wanneer functiegebaseerde. Beide opties hebben veel voor- en nadelen, maar er is ook een middenweg te vinden. Op containers gebaseerde componenten zijn geschikter voor complexe taken waarbij er veel codeafhankelijkheden zijn, in vergelijking met op functies gebaseerde componenten die alle codeafhankelijkheden binnen een functie bevatten en doorgaans eenvoudiger zijn. Deze laatste werken sneller, omdat we niet elke keer dat we onze code bewerken een image hoeven te bouwen en te implementeren. Bij op functies gebaseerde 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 het gebruik van een aangepaste versie van de standaard basisimage. Binnen deze aangepaste basisimage hebben we al onze code als een pakket geïnstalleerd. Vervolgens importeren we die functies in functiegebaseerde componenten, net zoals je dat bijvoorbeeld met pandas zou doen. Zo profiteren we van het voordeel dat we complexe en eenvoudige taken op dezelfde manier kunnen uitvoeren en beperken we de bouwtijd van de image tot slechts één (de basisimage).

We structureren onzeconfiguratiebestandenook zo dat je de invoer van je componenten en pijplijnen gemakkelijk kunt aanpassen.

Een overschreven basisimage gebruiken als enige basis voor al je componenten

Een overschreven basisimage gebruiken als enige basis voor al je componenten

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

Bij het experimenteren met machine learning moeten we meestal een eenvoudige trainingsworkflow vele malen herhalen, hetzij om een hyperparameter af te stemmen, hetzij om meerdere modellen te maken (bijvoorbeeld één model per productcategorie).

Om dit optimaal te doen, zouden de verschillende trainingsworkflows parallel moeten worden uitgevoerd om tijd te winnen en de middelen optimaal te benutten. Met Vertex Pipelines en Kubeflow is de inspanning hierin al minimaal ingebouwd; het kost je slechts het schrijven van een for-lus. En bij het samenstellen van je pipeline bepaalt Kubeflow zelf welke stappen en/of groepen stappen parallel kunnen worden uitgevoerd en welke achtereenvolgens moeten worden uitgevoerd.

class="lazyload

Voorbeeld van een pijplijn met onderdelen die parallel lopen

Voorwaardelijke implementatie voor een naadloze werking van uw ML-model

Met kfp.dsl.condition kun je eenvoudig een getraind model implementeren en het met wat codelogica klaarmaken voor later hergebruik. Als je met veel instellingen experimenteert en hoopt dat je onder bepaalde voorwaarden alles naadloos naar de productieomgeving kunt overzetten, dan komt deze functionaliteit van Kubeflow goed van pas. Combineer dit met een goede CICD-oplossing en je kunt de levenscyclus van je ML-model vlekkeloos beheren.

class="lazyload

Voorbeeld van een voorwaardelijke implementatie

Naast deze functies (dit is geen volledige opsomming) beschikt u overreproduceerbaarheid, traceerbaarheid, beheerbaarheiden, last but not least, een geweldige gebruikersinterface waarmee u alles kunt volgen via de AI op GCP.

Conclusie

Tegenwoordig wordt van veel ML-modellen verwacht dat ze in productie worden ingezet. Dus als je met GCP werkt en van plan bent om Vertex AI te gebruiken, hopen we dat deze starterskit je helpt om een prettige ervaring met deze tool te hebben. Bekijk deze kit ook zeker eens als je aan je projecten begint met de ambitie om ze zo snel mogelijk bruikbaar te maken, dat wil zeggen: ze in productie te nemen.

Hartelijk dank aan Luca Serra, Jeffrey Kayne en Robin Doumerc (Artefact) die hebben geholpen bij het samenstellen van deze starterskit, maar ook aan Maxime Lutel voor het daadwerkelijk uitvoeren van de modellering voor het speelgoedproject dat we gebruiken.

Als je een stap verder wilt gaan, vind je in de documentatie van GCP hoe je:

  • Plan uw pijplijn met cloud of activeer deze viacloud

  • Gebruik kant-en-klarecomponentendie door de teams van GCP zijn ontwikkeld: google_cloud_pipeline_components import aiplatform

class="lazyload

Medium-blog van Artefact.

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