Levenscyclus van Machine Learning

Deze pagina beschrijft het volledige traject om een machine learning-project (ML) van de initiële afbakening tot in productie te brengen en het in de loop van de tijd goed te laten presteren. Code, gegevens en modellen doorlopen drie brede fasen: ontwikkeling, fasering en productie. Elke fase heeft verschillende doelstellingen en vereisten:

  1. Bereik van de use-case en definieer succes
  2. De gegevens verkennen en begrijpen
  3. Gegevens en functies voorbereiden
  4. Modellen trainen en experimenten bijhouden
  5. Evalueren
  6. Modellen registreren, gereedmaken en testen
  7. Implementeren in productie
  8. Bewaken en opnieuw trainen

1. Beperk het gebruiksscenario en definieer succes

Voordat u iets bouwt, moet u afstemmen op wat het model moet doen en hoe u weet dat het werkt.

  • Wat is het voorspellingsdoel en welke klasse ml-probleem impliceert dat: classificatie, regressie, voorspelling, aanbeveling, classificatie, anomaliedetectie of iets anders?
  • Welke invoergegevens zijn beschikbaar en is het voldoende om het doelpatroon te leren?
  • Welke metrische gegevens definiëren succes: nauwkeurigheid, AUC, precisie bij K of zakelijke KPI's?
  • Wat zijn de server- en productievereisten: latentie, doorvoer en versheid van gegevens?
  • Welke belanghebbenden moeten zich afmelden bij productie-implementaties? Wat zijn hun vereisten met betrekking tot uitleg?

De voorgaande vereisten bepalen niet de specifieke ML-methode. U kunt beginnen met modelleren met een eenvoudigere aanpak, zoals gradient-boosted trees, en later besluiten dat krachtigere deep learning-methoden nodig zijn.

2. De gegevens verkennen en begrijpen

Voordat u functies voorbereidt of een model traint, verkent u de gegevens om inzicht te hebben in de structuur, kwaliteit en relatie met het voorspellingsdoel. Experimentele gegevensanalyse (EDA) is het proces waarbij een gegevensset wordt samengevat en gevisualiseerd om distributies, correlaties, ontbrekende waarden en uitbijters weer te geven die downstream modelleringsbeslissingen vormen.

Bepaal al vroeg hoe u kunt controleren of u over geldige testgegevens beschikt die buiten de training worden gehouden. Zelfs tijdens EDA moet u ervoor zorgen dat u modelleringsbeslissingen neemt op basis van uw testgegevens.

EDA beantwoordt vragen die de rest van de levenscyclus informeren:

  • Welke invoervariabelen zijn het meest voorspellend voor de doelvariabele, en zijn sommige daarvan niet beschikbaar tijdens gebruik?
  • Zijn er ontbrekende waarden, uitbijters of scheve verdelingen die opschoning of transformatie vereisen?
  • Is de gegevensset groot genoeg en representatief genoeg om het doelpatroon te leren?

Azure Databricks vereenvoudigt EDA met interactieve, samenwerkings- en AI-ondersteunde hulpprogramma's. Verken uw gegevens met behulp van chats in natuurlijke taal, UIs of code en werk samen via co-bewerking in realtime en op Git gebaseerde code delen:

  • Notebooks bieden samenwerkingsruimten voor verkenning, visualisatie en documentatie.
  • Dashboards bieden een verkenning op basis van SQL en visualisaties.
  • Genie Chat biedt een interface met volledige pagina's in natuurlijke taal voor het stellen van vragen over gegevens.
  • Genie Code kan volledig geautomatiseerde EDA uitvoeren of fungeren als een interactieve assistent.

3. Gegevens en functies voorbereiden

Met de gegevens die worden begrepen, kunt u de onbewerkte bronnen en transformaties die tijdens EDA zijn geïdentificeerd, omzetten in functies voor ML-modellen. Evalueer uw gegevenspijplijnen voor training en bediening, waaronder snelheid, volume, versheid en eigendom van gegevensbronnen. De grens tussen data engineering (gegevens voorbereiden en transformeren) en functie-engineering (het afleiden van ML-invoer) is fuzzy. Op Azure Databricks delen data engineering en ML dezelfde platform- en governancelaag in Unity Catalog, zodat gegevens die door één team zijn voorbereid, direct beschikbaar kunnen worden gesteld als functies voor een ander, zonder gegevensverplaatsing of gedupliceerde pijplijnen.

Zoek naar bestaande gegevens- en functiedefinities:

  • Verken gegevens en functies die beschikbaar zijn in Unity Catalog. Als uw organisatie al over verwante modellen beschikt, gebruik dan de gegevensafstamming van Unity Catalog om de gegevensbronnen en kenmerken te achterhalen die in die modellen worden gebruikt.
  • Met werkruimte zoeken kunt u ontdekken welke beheerde gegevens, modellen of toepassingen al bestaan.

Nieuwe assets maken en beheren indien nodig:

  • Zie Data engineering met Databricks voor meer informatie over hulpprogramma's voor gegevensopname en engineering, waaronder Lakeflow Designer voor een ai-ondersteunde ervaring zonder code.
  • Gebruik de Functieopslag om functies te definiëren en te beheren als herbruikbare, beheerde assets. Dezelfde functiedefinities worden gebruikt in training en productie, met ondersteuning voor batch- en realtimegegevensopname en voor batch- en realtime-service.

Gebruik Genie Code om gegevensdetectie en -voorbereiding te versnellen door door Unity Catalog te bladeren om relevante tabellen te detecteren, functietransformaties te voorstellen en starterscode te genereren voor opname- en functiepijplijnen.

4. Modellen trainen en experimenten volgen

Data science- en ML-toepassingen gebruiken veel verschillende benaderingen, die elk een eigen vereisten hebben voor ML-algoritmen en -bibliotheken, rekenvereisten en werkstromen. Azure Databricks biedt flexibele omgevingen en berekeningen voor verschillende workloads, met experimenttracking geïntegreerd onder MLflow.

Omgevingen en rekenkracht

Gebruik standaard serverloze berekeningen voor interactieve notebooks en geautomatiseerde taken. Serverloze rekenomgeving is direct beschikbaar en schaalt automatisch op en af op basis van uw werklast.

Voor GPU-versnelling voegt u GPU's toe aan uw serverloze berekening, die vervolgens gebruikmaakt van de AI Runtime, een omgeving die vooraf is geconfigureerd voor GPU-training en -deductie.

Voor zowel CPU- als GPU-workloads kunt u ook klassieke berekeningen gebruiken met de Databricks Runtime voor Machine Learning.

Pas een van de voorgaande omgevingen aan met uw ML-bibliotheken. Met omgevingen die vaak sterk zijn aangepast voor ML-toepassingen, maakt u gebruik van MLflow-tracering om afhankelijkheden vast te leggen, reproduceerbaarheid te controleren en scheefheid van training te voorkomen.

MLflow-tracking

Gebruik Azure Databricks beheerde MLflow om de metagegevens van uw experimenten en logboekregistratiemodel bij te houden:

Aan de slag met modellering

Genie Code kan een volledig ML-notebook genereren op basis van een eenvoudige beschrijving van de voorspellingstaak, inclusief functieselectie uit de Functieopslag, ML-training en MLflow-tracering.

Zie ook resources voor het afstemmen van hyperparameters, voorbeelden van modeltraining en Ray op Databricks.

Voor deep learning en GPU-versnelde klassieke machine learning-training, zie voorbeeldnotebooks voor de AI Runtime.

5. Evalueren

Definieer tijdens de ontwikkeling kwaliteitsbeoordelingsmaatstaven op basis van de vereisten uit de scopingsfase:

  • Uw basisgegevens kunnen algemene ML-metrische gegevens zijn, zoals nauwkeurigheid, AUC, RMSE of domeinspecifieke metrische gegevens.
  • Uw evaluatie kan ook afgeleide metrische gegevens bevatten, zoals vooroordelen en billijkheid in populatiesegmenten, gemeten door basismetrieken te vergelijken tussen segmenten van uw gegevens.

Definieer metrische gegevens met behulp van de door u gekozen ML-bibliotheek of -framework, met behulp van de ingebouwde module met metrische gegevens van MLflow of uw aangepaste logica. Voor alle metingen: log metingen in MLflow-runs om ze aan hun bijbehorende modellen te koppelen. De metrische gegevens die u tijdens de ontwikkeling en training definieert, kunnen later opnieuw worden gebruikt als metrische gegevens voor productiebewaking.

6. Modellen registreren, fasen en testen

Nadat u een ML-model of pijplijn hebt getraind, registreert u het bij het MLflow-modelregister in Unity Catalog om governance en beheer te vereenvoudigen wanneer u het model naar productie promovt. Een geregistreerd model heeft versies, die elk zijn gekoppeld aan de oorspronkelijke trainingsuitvoering die het heeft geproduceerd. Modelversies maken veilige implementatiewerkstromen mogelijk: u kunt een nieuwe versie in fasering testen voordat u deze naar productie promoveert, terugdraaien naar een eerdere versie als de kwaliteit verslechtert en een volledig audittrail bijhouden van wat is geïmplementeerd en wanneer.

Voordat een nieuwe modelversie productieverkeer verwerkt, test u de versie in de stagingomgeving onder realistische omstandigheden:

  • Label de versie van het kandidaatmodel met aliassen (Staging, Production) om de levenscyclusstatus te signaleren zonder de naam van artefacten te wijzigen.
  • Voer integratietests uit op de staging-infrastructuur: controleer of het serving-endpoint start, of de latentie aan de vereisten voldoet en of de uitvoer correct gestructureerd is.
  • Voer A/B- of schaduwtests uit op productiegegevens om de prestaties vóór de volledige cutover te valideren.
  • Verzamel de afmelding van belanghebbenden op basis van evaluatieresultaten.

Deze beschrijving vereenvoudigt deploymentpraktijken en ML-operations (MLOps) te veel. Meer informatie over MLOps in MLOps-werkstromen op Azure Databricks.

7. Uitrollen naar productie

Na faseringsvalidatie promoveert en implementeert u het model in productie om voorspellingen voor werkelijke invoer te genereren. Azure Databricks ondersteunt twee primaire serverpatronen:

  • Realtime-service: Implementeer het model als een REST-eindpunt met lage latentie met behulp van Model Serving voor gebruiksvoorbeelden waarvoor beslissingen met een lage latentie zijn vereist, zoals fraudeonderschepping tijdens transacties, live personalisatie of dynamische prijzen.
  • Batchinferentie: ai_query biedt efficiënte batchinferentie voor aangepaste modellen die zijn geïmplementeerd als Model Serving-eindpunten. U kunt ook aangepaste code gebruiken met Apache Spark UDF's (bijvoorbeeld) of mlflow.pyfunc voor batchdeductie. Batch-pijplijnen schrijven resultaten naar Delta-tabellen voor downstreamtoepassingen, dashboards of pijplijnen. Dit patroon verwerkt dagelijkse prognoses, nachtelijke aanbevelingsvernieuwingen en andere periodieke taken.

Beide patronen gebruiken hetzelfde getrainde modelartefact. Train eenmaal en implementeer in batch- of realtime-service vanuit dezelfde geregistreerde versie, met dezelfde governance en herkomst.

Genie Code kan zowel code voor implementatie genereren als helpen bij het oplossen van problemen met de service, het gedrag van eindpunten uitleggen en iteratie versnellen wanneer modellen moeten worden bijgewerkt of opnieuw moeten worden geïmplementeerd.

8. Bewaken en opnieuw trainen

Productie-ML-systemen kunnen na verloop van tijd afnemen naarmate het gedrag van gebruikers verandert of gegevenspijplijnen veranderen. Uw productiegegevens en modelvoorspellingen continu bewaken:

  • Registreer invoer en uitvoer van uw geïmplementeerde modellen. Voor realtime gebruik bieden inferentietabellen automatische logregistratie zonder wijzigingen in uw modelcode. Voor batchverwerking lezen uw pijplijnen vanzelfsprekend uit en schrijven ze naar Delta-tabellen die worden beheerd door Unity Catalog.
  • Voer deze logboeken in bij bewaking van gegevenskwaliteit, waarmee gegevenskwaliteit, functiedrift en voorspellingsdistributie in de loop van de tijd worden bijgehouden. Als u waarheids- of feedbackgegevens hebt, kunt u deze gegevens samenvoegen met behulp van logboeken om metrische gegevens over de voorspellingskwaliteit te berekenen.
  • Gebruik de bewakingsgebruikersinterface en waarschuwingen voor anomaliedetectie om escalatie of hertraining te activeren voordat de kwaliteit merkbaar verslechtert.

Meer informatie over productie-ML in MLOps-werkstromen op Azure Databricks.

Aanvullende informatiebronnen