Iedereen die de ontwikkeling van machine learning heeft geprobeerd, begrijpt hoe moeilijk het is. Afgezien van de standaardproblemen bij softwareontwikkeling, introduceert de ontwikkeling van machine learning (ML) een hele reeks extra obstakels.
Er zijn honderden open source-tools beschikbaar om te helpen bij elke fase van de ML-levenscyclus, van gegevensvoorbereiding tot modeltraining.
In tegenstelling tot traditionele softwareontwikkeling, wanneer teams één tool voor elke stap kiezen, wil je bij ML over het algemeen elke beschikbare tool (bijv. algoritme) verkennen om te zien of het de resultaten verbetert.
Als gevolg hiervan moeten ML-ontwikkelaars honderden bibliotheken gebruiken en produceren.
Algoritmen voor machine learning bevatten duizenden aanpasbare parameters en het is moeilijk om te bepalen welke parameters, code en gegevens in elk experiment zijn gebruikt om een model te genereren, of u nu alleen of in een team werkt.
Zonder goede monitoring hebben teams vaak moeite om dezelfde code weer te laten functioneren. Of u nu een datawetenschapper bent die uw trainingscode overdraagt aan een technicus voor productiegebruik, of u gaat terug naar uw eerdere werk om een probleem te diagnosticeren, het terugtrekken van stappen van de ML-workflow is cruciaal.
Het verplaatsen van een model naar productie kan moeilijk zijn vanwege de vele implementatiemethoden en omgevingen die moeten worden gebruikt (bijv. REST-serving, batch-inferentie of mobiele apps). Er is geen algemene methode om modellen van een bibliotheek naar een van deze tools te verplaatsen, en daarom brengt elke nieuwe implementatie een risico met zich mee.
Vanwege deze problemen is het duidelijk dat de ontwikkeling van ML aanzienlijk moet verbeteren om zo stabiel, voorspelbaar en algemeen gebruikt te worden als traditionele softwareontwikkeling.
ML-uitdagingen
- Er is een overvloed aan verschillende tools. Er zijn honderden softwareoplossingen beschikbaar om te helpen bij elke fase van de levenscyclus van machine learning, van gegevensvoorbereiding tot modeltraining. Bovendien, in tegenstelling tot traditionele softwareontwikkeling, wanneer teams bij machine learning (ML) één tool kiezen voor elke stap, wil je vaak elke beschikbare tool (bijv. algoritme) verkennen om te zien of het de resultaten verbetert. Als gevolg hiervan moeten ML-ontwikkelaars honderden bibliotheken gebruiken en produceren.
- Het is moeilijk om experimenten bij te houden. Algoritmen voor machine learning bevatten duizenden aanpasbare parameters en het is moeilijk om te bepalen welke parameters, code en gegevens in elk experiment zijn gebruikt om een model te genereren, of u nu alleen of in een team werkt.
- Het is moeilijk om machine learning te implementeren. Het verplaatsen van een model naar productie kan moeilijk zijn vanwege de vele implementatiemethoden en omgevingen die moeten worden gebruikt (bijv. REST-serving, batch-inferentie of mobiele apps). Er is geen algemene methode om modellen van een bibliotheek naar een van deze tools te verplaatsen. Elke nieuwe implementatie brengt dus een risico met zich mee.
Wat is MLstroom?
MLflow is een open-sourceplatform voor de levenscyclus van machine learning. Het is gebaseerd op een open interfaceconcept en stelt veel essentiële abstracties voor waarmee de huidige infrastructuur en algoritmen voor machine learning gemakkelijk in het systeem kunnen worden geïntegreerd.
Dit houdt in dat als je een ontwikkelaar bent die MLflow wil gebruiken maar een niet-ondersteund framework gebruikt, het open interface-ontwerp het relatief eenvoudig maakt om dat framework te integreren en met het platform te gaan werken. In de praktijk houdt dit in dat MLflow bedoeld is om te functioneren met elke machine learning bibliotheek of taal.
Bovendien bevordert MLflow herhaalbaarheid, wat betekent dat dezelfde machine learning-code voor training of productie bedoeld is om met dezelfde resultaten te worden uitgevoerd, onafhankelijk van de omgeving, of dit nu in de cloud, op een lokaal werkstation of in een notebook is.
Ten slotte is MLflow gebouwd voor schaalbaarheid, zodat het zowel door een klein team van datawetenschappers als door een groot bedrijf met honderden machine learning-professionals kan worden gebruikt.
MLflow is compatibel met elke machine learning-bibliotheek, algoritme, implementatietool of taal. Het heeft ook de volgende voordelen:
- Ontworpen om te werken met elke cloudservice.
- Schaalt naar enorme data met Apache Spark.
- MLflow is compatibel met een verscheidenheid aan open-source machine learning-frameworks, waaronder Apache Spark, TensorFlow en SciKit-Leren.
Als u al code heeft, kan MLflow ermee worden gebruikt. U kunt uw raamwerk en modellen zelfs tussen ondernemingen delen, omdat het zo is open source.
MLflow-componenten: hoe werken ze?
MLflow is een gratis en open source platform voor het beheren van de ML-levenscyclus, inclusief experimenten, reproduceerbaarheid, implementatie en een enkel modelregister. Momenteel heeft MLflow vier componenten:
1. MLflow-tracking
Ik ga beginnen met MLflow Tracking. MLflow ondersteunt het verzamelen van verschillende essentiële concepten die zijn gekoppeld aan een gecentraliseerde opslagplaats voor het bijhouden van metagegevens voor trainingen. Het eerste idee is een verzameling kritische hyperparameters of configuratieknoppen die de modelprestaties beïnvloeden. Door de API's van MLflow en een gecentraliseerde trackingservice te gebruiken, kunnen deze allemaal behouden blijven.
Gebruikers kunnen ook prestatiegegevens vastleggen om inzicht te krijgen in het succes van hun machine learning-modellen. Bovendien stelt MLflow gebruikers voor herhaalbaarheid in staat om de specifieke broncode te loggen die is gebruikt om een model te maken, evenals de versie ervan, door nauw te integreren met Git om elk model aan een specifieke commit-hash te koppelen.
MLflow kan worden gebruikt om artefacten te loggen, dit zijn willekeurige bestanden, inclusief training, testgegevens en modellen zelf voor reproduceerbaarheid.
Dit betekent dat als ik een ontwikkelaar ben die net een model heeft getraind, ik het kan bewaren voor de gecentraliseerde volgservice, en een van mijn collega's kan het later laden en ofwel doorgaan met het trainen en experimenteren of produceren van dat model om aan een specifieke behoefte te voldoen .
Bij het uitvoeren van uw machine learning-code en het daarna bekijken van de resultaten, is tracking een API waarmee u parameters, codeversies, metrische gegevens en uitvoerbestanden kunt loggen. Het is onder meer geschreven in Python, R en Java. Het is ook toegankelijk als een REST API, die kan worden gebruikt om er apps op te bouwen.
Belangrijkste kenmerken
- Veel ontwikkelaars gebruiken MLflow op hun lokale pc, waar de backend en de artefactopslag een map op de schijf delen.
- Veel gebruikers gebruiken ook SQLite, een SQLAlchemy-compatibele database, om MLflow op hun lokale pc's uit te voeren.
- MLflow ondersteunt ook gedistribueerde architecturen. De trackingserver, backend store en artifact store worden hierin allemaal op verschillende servers gehost.
- Als de run werd gestart door een MLflow-project, werd de git commit-hash gebruikt. De MLflow Python-, R-, Java- en REST-API's kunnen worden gebruikt om gegevens te loggen die moeten worden uitgevoerd.
Voor meer informatie kun je de officiële documentatie.
2. MLlow-projecten
Nadat we de trackingcomponenten hebben doorgenomen, wil ik het hebben over MLflow-projecten, die een herhaalbare verpakkingsstructuur zijn voor modeltrainingssessies, ongeacht de uitvoeringscontext.
Bedrijven gebruiken een breed scala aan machine learning-trainingstechnologieën, maar ze gebruiken deze trainingstools ook in een diverse reeks contexten. Ze voeren bijvoorbeeld hun trainingscode uit in de cloud, op een lokale pc of in een notebook.
Dit leidt tot het probleem dat de resultaten van machine learning moeilijk te repliceren zijn. Vaak wordt dezelfde identieke trainingscode niet uitgevoerd of levert deze niet dezelfde resultaten op op twee verschillende locaties.
De oplossing van MLflow is een op zichzelf staande projectdefinitie voor trainingscode die alle machine learning-trainingscode omvat, evenals de afhankelijkheden, instellingen, trainings- en testgegevens van de versiebibliotheek.
MLflow zorgt voor reproduceerbaarheid in verschillende uitvoeringscontexten door de hele reeks vereisten voor een machine learning-trainingsproces duidelijk te beschrijven. Het bereikt dit door al die bibliotheken te installeren en dezelfde systeemstatus te bereiken waarin de code wordt uitgevoerd.
Het MLflow-project is niets meer dan een directory. Het is een map met de trainingscode, de definitie van bibliotheekafhankelijkheid en andere gegevens die nodig zijn voor de trainingssessie, evenals dit optionele configuratiebestand.
Deze bibliotheekvereisten kunnen op verschillende manieren worden gedefinieerd. Gebruikers kunnen bijvoorbeeld een YAML-geformatteerde anaconda-omgevingsspecificatie aanleveren om hun trainingscodebibliotheekvereisten op te sommen. MLflow voert de trainingscode uit in de container. In zo'n geval kunnen ze ook een Docker-container bevatten.
Ten slotte heeft MLflow een opdrachtregelinterface (CLI) voor het uitvoeren van deze projecten, evenals Python- en Java-API's. Deze projecten kunnen zowel op het lokale systeem van de gebruiker worden uitgevoerd als in verschillende externe instellingen, zoals de Databricks-taakplanner en Kubernetes. Met MLflow-projecten kunt u data science-code op een herhaalbare en herbruikbare manier verpakken, meestal op basis van standaarden.
De projectencomponent bevat zowel een API als opdrachtregelhulpprogramma's voor het beheren van projecten. Deze mogelijkheden garanderen dat projecten aan elkaar kunnen worden geketend om machine learning-processen te vormen.
Belangrijkste kenmerken
- MLflow ondersteunt projectomgevingen, waaronder Docker-containeromgeving, Conda-omgeving en de systeemomgeving.
- Elke Git-repository of lokale map kan worden beschouwd als een MLflow-project; standaard; je kunt elke shell of Python-script in de directory als projectingangspunt.
- Niet-Python-afhankelijkheden, zoals Java-bibliotheken, kunnen worden vastgelegd met Docker-containers.
- U kunt meer controle krijgen over een MLflow-project door een projectbestand toe te voegen aan de hoofdmap van het project, een tekstbestand in de YAML-syntaxis.
Voor meer informatie kun je de officiële documentatie.
3. MLflow-modellen
Nu wil ik het hebben over MLflow-modellen, een modelformaat voor algemeen gebruik dat een breed scala aan productiecontexten ondersteunt. De reden voor MLflow-modellen is nu redelijk vergelijkbaar met die voor projecten.
Nogmaals, we zien dat modellen kunnen worden gegenereerd met behulp van een breed scala aan tools, maar ze kunnen ook worden geproduceerd of ingezet in een groot aantal situaties, in tegenstelling tot trainingsomgevingen.
Deze instellingen omvatten tools voor realtime weergave, zoals Kubernetes of Amazon SageMaker, evenals streaming en batchscores, zoals Spark. Bovendien kunnen sommige bedrijven ervoor kiezen om modellen in te zetten als een RESTful webservice die draait op een vooraf geconfigureerde cloudinstantie.
Een MLflow-model is, net als een project, een directorystructuur. Het bevat een configuratiebestand en deze keer een geserialiseerd modelartefact in plaats van trainingscode. Het bevat ook deze set afhankelijkheden voor herhaalbaarheid als een project. Deze keer kijken we naar evaluatieafhankelijkheden in de context van een Conda-omgeving.
Daarnaast bevat MLflow tools voor het genereren van modellen voor het serialiseren van modellen in MLflow-indeling uit een reeks populaire frameworks. Ten slotte voegt MLflow implementaties toe, API's voor het produceren en verbinden van elk MLflow-model met een reeks services, en deze API's zijn toegankelijk in Python-, Java-, R- en een CLI-indeling.
Modellen zijn een component met een standaardstructuur voor verpakkingsmodellen die kunnen worden gebruikt en begrepen door downstream-tools zoals inferencing-servers of de Databricks batch-inferentieplatform. Dit onderdeel bespaart uren op maat gemaakte code bij het verpakken van een model voor productie.
Het MLflow-model is een standaard voor het verpakken van machine learning-modellen in verschillende vormen die bekend staan als 'smaken'. MLflow biedt veel tools om u te helpen bij het implementeren van verschillende soorten modellen. Elk MLflow-model wordt bewaard als een map die willekeurige bestanden bevat, evenals een ML-modeldescriptorbestand met een lijst van de smaken waarin het kan worden gebruikt.
Belangrijkste kenmerken
- Alle ingebouwde implementatietools van MLflow bieden meerdere "standaard" smaken, zoals een "Python-functie"-smaak die uitlegt hoe het model als een Python-functie moet worden uitgevoerd.
- Elk MLflow-model bestaat uit een map met willekeurige bestanden, evenals een ML-modelbestand in de hoofdmap van de map dat de talrijke smaken van het model definieert.
- Wanneer u een model opslaat, kunt u met MLflow een Conda-omgevingsparameter opgeven die de afhankelijkheden van het model bevat. Als er geen Conda-omgeving is opgegeven, wordt een standaardomgeving geconstrueerd op basis van de smaak van het model. Daarna wordt de Conda-omgeving opgeslagen in conda.yaml.
Voor meer informatie kun je de officiële documentatie.
4. MLflow-modelregister
Een modelregister is een opslagplaats voor modellen voor aangeleerde machine learning (ML). Model Registry is opgebouwd uit API's en een web-based applicatie die gebruikt wordt om als team in verschillende fasen modellen bij te houden. Model Lineage, Model Versioning, Easy Stage Transition en Annotation zijn slechts enkele van de mogelijkheden die beschikbaar zijn in Model Registry.
Een modelregister bevat, naast de modellen zelf, informatie (metadata) over de data en trainingstaken die zijn gebruikt om het model te construeren. Het is van cruciaal belang om deze vereiste invoer bij te houden om afstamming voor ML-modellen te creëren. In dit opzicht functioneert een modelregister op dezelfde manier als conventionele software versiebeheer systemen (bijv. Git, SVN) en artefact-repositories (bijv. Artifactory, PyPI).
De Model Registry is een raamwerk waarmee datawetenschappers en machine learning-engineers hun modellen kunnen publiceren, testen, monitoren, beheren en distribueren voor samenwerking met andere teams. In wezen wordt het modelregister gebruikt zodra u uw testfase hebt voltooid en klaar bent om uw bevindingen te delen met het team en belanghebbenden.
De MLflow Model Registry biedt een API en een gebruikersinterface om uw modellen en hun levensduur vanaf een centrale locatie te beheren. Modelafstamming, modelversiebeheer, annotaties en faseovergangen zijn allemaal beschikbaar via het register.
In MLflow is een geregistreerd model het model met een unieke naam en metadata, modelversies, overgangsfasen en een modellijn. Een of meerdere modeluitvoeringen zijn terug te vinden in een geregistreerd model. Een nieuw model wordt als versie 1 beschouwd wanneer het in het register is geregistreerd. De volgende versie wordt toegevoegd aan elk nieuw model met dezelfde naam.
U kunt op elk moment een stap aan elke modelversie toewijzen. Er moeten echter fasen worden toegewezen onder de MLflow-fasen die formeel zijn gespecificeerd, zoals fasering, productie en archivering. Een modelversie kan van de ene fase naar de andere worden overgezet.
Met MLflow kunt u markdown gebruiken om zowel het topmodel als elke specifieke versie te annoteren. U kunt beschrijvingen en andere relevante informatie opnemen, zoals uitleg over algoritmen, methodologie en gebruikte datasets.
Belangrijkste kenmerken
- Om toegang te krijgen tot het modelregister via de gebruikersinterface of API bij het hosten van uw eigen MLflow-server, moet u een backend-archief met databaseondersteuning gebruiken.
- Modelregistratie is ook toegankelijk via de MLflow-modelsmaak of de MLflow Client Tracking API-interface. U kunt bijvoorbeeld een model registreren tijdens een MLflow-experiment of nadat al uw experimenten zijn uitgevoerd.
- Niet iedereen zal zijn modellen gaan trainen met MLflow. Als gevolg hiervan heeft u mogelijk enkele modellen getraind voordat u MLflow gebruikt. In plaats van de modellen opnieuw te trainen, wilt u gewoon uw opgeslagen modellen registreren bij het Modelregister.
Voor meer informatie kun je de officiële documentatie.
Conclusie
MLflow is een uitstekende en constant groeiende tool voor de ML-levenscyclus. U kunt het naast uw huidige tools en platforms gebruiken.
Het ondersteunt verschillende programmeertalen, waaronder Python, Java en R. Dankzij het gebruiksvriendelijke ontwerp kunt u ook snel verschillende modelversies volgen, opslaan en vergelijken.
Probeer MLflow eens en laat ons uw ervaring weten!
Laat een reactie achter