Zoeken wordt uitgevoerd in MLflow

Zoeken Wordt Uitgevoerd In Mlflow



Om de machine learning-experimenten te volgen en te beheren, biedt MLflow een uitgebreid platform. De mogelijkheid om runs te zoeken is een van de belangrijkste kenmerken van MLflow. Dit maakt het mogelijk om de ontwikkelde experimenten te identificeren en ze zo te organiseren dat het eenvoudig is om de informatie te vinden wanneer dat nodig is. We kunnen runs doorzoeken met behulp van de MLflow-zoek-API met behulp van een aantal verschillende criteria, waaronder het volgende:
  • Experiment-ID of naam
  • Run-ID
  • Parameters en waarden
  • Statistieken en waarden
  • Labels
  • Andere kenmerken die aan de runs zijn gekoppeld

Uitvoeringen kunnen worden gefilterd op status, starttijd, eindtijd en duur met behulp van de MLflow-zoek-API. Het maakt het gemakkelijker om door veel runs te filteren en specifieke runs te vinden waarin de gebruikers geïnteresseerd zijn.

MLflow-zoekfunctie

Gebruik de functie mlflow.search_runs() om toegang te krijgen tot de MLflow-zoek-API. Deze functie accepteert verschillende argumenten, zoals de volgende:







  • De experiment-ID of naam
  • Filterreeks of tekst
  • Het maximale aantal runs dat moet worden geretourneerd, wordt opgegeven door het argument max_results

Een vereenvoudigde variant van de SQL-clausule (Structured Query Language) WHERE is de filtertekenreeks of -tekst. Het kan worden gebruikt om de criteria aan te geven waarop we de runs willen sorteren.



Syntaxis van de MLflow Search_Runs()-functie

In het volgende voorbeeld moet de feitelijke ID of naam van het experiment waarin we willen zoeken, worden vervangen door 'experiment_id of experiment_name'. Met de variabele search_criteria kunt u de zoekcriteria naar wens invoeren. Deze criteria kunnen worden bepaald door statistieken, tags, parameters of aanvullende kenmerken. De basissyntaxis van de functie search_runs() is als volgt:



# Importeer de mlflow-zoek-API om de search_runs-functie te gebruiken

importeren mlstroom

# Geef een experiment-ID of naam op (dit is optioneel;)

exp_id = 'Experiment-ID of NAAM'

# Definieer de zoekcriteria voor runs

zoek_tekenreeks = 'metrics.accuracy > 0,8 EN params.learning_rate = '0,01' EN params.efficiency_rate > '80''

# Voer de zoekopdracht uit

loopt = mlstroom. zoek_runs ( experiment_ids = exp_id , filter_string = zoek_tekenreeks )

# Geef de resultaten weer

afdrukken ( 'Zoekresultaten:' )

afdrukken ( loopt )

Voer een zoekopdracht uit met behulp van talrijke criteria

1. Zoek op metrische waarde

Uitvoeringen kunnen worden gefilterd op de waarden van bepaalde statistieken met behulp van het metrische veld in de MLflow-zoek-API. In het veld Metrieken verschijnt een verzameling metrieknamen, gescheiden door komma's. De volgende filterreeks lokaliseert bijvoorbeeld alle runs met een nauwkeurigheidswaarde groter dan 0,9:





statistieken. nauwkeurigheid > 0,9

De volledige lijst met statistieken die beschikbaar zijn voor gebruik in het veld Metrieken wordt als volgt weergegeven:

  • nauwkeurigheid
  • au
  • f1
  • precisie
  • herinneren
  • kaart
  • logverlies
  • classificatie_fout
  • multi_class_logloss

Bovendien kunnen de gebruikers de runs filteren op het waardenbereik van een statistiek met behulp van het metrische veld. De volgende filterreeks lokaliseert bijvoorbeeld alle runs die een nauwkeurigheidsmeting hebben met een waarde tussen 0,4 en 0,8:



statistieken. nauwkeurigheid TUSSEN 0,4 EN 0,8

In het metrische veld combineren de AND- en OR-operatoren de metrische gegevens om de runs te vinden met metrische nauwkeurigheid en f1-waarden boven 0,3 en 0,8:

statistieken. nauwkeurigheid > 0,3 EN statistieken. f1 > 0,8

2. Zoek op parameterwaarde

Maak gebruik van het veld params in de MLflow-zoek-API om een ​​zoekopdracht uit te voeren op basis van een parameterwaarde. De parameternamen en -waarden worden met komma's weergegeven in het paramsveld. In dit voorbeeld lokaliseert de bovengenoemde filterreeks alle runs met de parameter num_boost_round die de waarde 100 hebben:

parameters. aantal_boost_ronde = '100'

Nog enkele voorbeelden van zoekreeksen voor parameterwaarden:

  • params.num_boost_round = 900
  • params.learning_rate TUSSEN 0,001 EN 0,01
  • params.num_boost_round=’70’ EN params.learning_rate=’0.01′

3. Zoeken op tags

Hier is een voorbeeld van een zoekopdracht met tags:

zoekcriteria = 'tags.mlflow.source.type = 'woordenboek''

Voorbeeld van de matrix- en parameterwaarden om de functie Mlflow.search_runs() uit te voeren

Laten we een voorbeeld bekijken van het opzetten van een MLflow-experiment, het loggen van runs en het vervolgens gebruiken van mlflow.search_runs() om een ​​zoekopdracht te starten. Volg deze stappen om de code volledig te begrijpen:

Stap 1: Maak een MLflow-experiment

We beginnen met het opzetten van een MLflow-experiment. Het haalt het bestaande experiment op als het experiment al bestaat. Als dit niet het geval is, wordt er een nieuwe gemaakt.

Code-uitleg:

De MLflow-bibliotheek wordt geïmporteerd in de eerste regel van de code en de experimentnaam wordt op de volgende regel ingesteld op 'Mijn eerste MLflow-experiment'. Wanneer de experiment_name wordt doorgegeven aan de functie “mlflow.get_experiment_by_name”, retourneert die functie “None” als het experiment niet bestaat en anders een object van het experiment.

Controleer of het experiment bestaat in de voorwaardelijke verklaring. Als het experiment al bestaat, stelt u experiment_id in. Gebruik anders “mlflow.create_experiment” om een ​​nieuw experiment te maken. De experiment-ID wordt door deze functie geretourneerd. Geef aan het einde van het experiment de experiment-ID weer op de console of het terminalscherm. Kopieer de volgende code in het kladblok en sla het bestand op met de gewenste naam en met de extensie “.py”:

# import mlflow-bibliotheek

importeren mlstroom

# Maak of haal het experiment op

exp_naam = 'Mijn eerste MLflow-experiment'

# Haal het experiment op naam op met de mlflow-functie get_experiment_by_name

exp = mlstroom. get_experiment_by_name ( exp_naam )

# Controleer of het experiment nog niet bestaat

als exp is Geen :

# Maak een nieuw experiment en geef de experimentnaam door aan de functie mlflow.create_experiment

exp_id = mlstroom. maak_experiment ( exp_naam )

# Geef het succesbericht op het scherm weer

afdrukken ( 'Experiment bestaat niet. Experiment succesvol gemaakt!' )

anders :

# Haal de experiment_id van het bestaande experiment op

exp_id = exp. experiment_id

afdrukken ( 'Experiment bestaat al!' )

# Experiment-ID weergeven

afdrukken ( 'Experiment-ID:' , exp_id )

Start nu het programma in de opdrachtprompt of het terminalvenster met behulp van de Python-compiler en typ 'Python' en vervolgens de bestandsnaam die in dit geval 'MyFirstMlflowExperiment.py' is. Wanneer het experiment voor het eerst wordt uitgevoerd, bestaat het nog niet. MLFlow maakt er dus een en drukt de experiment-ID af op het consolescherm:

Voer de code opnieuw uit om te verifiëren dat er geen nieuwe experimenten worden gemaakt en om de ID weer te geven van de experimenten die al bestaan. De volgende schermafbeelding laat zien dat het experiment al bestaat:

Stap 2: Registreer de runs met statistieken en parameters

Laten we nu proberen enkele runs te loggen met de statistieken en parameters voor het zojuist opgezette experiment. In een realistisch scenario ontwikkelen we de machine learning-modellen en leggen we aan het einde van elke run de relevante informatie vast, zoals statistieken en parameters. Hier wordt de nauwkeurigheid als matrixwaarde gebruikt, in dit geval is deze 0,95. De parameterwaarden voor leer- en efficiëntiepercentage zijn respectievelijk 0,01 en 90. Hier is de code:

# Start een MLflow-run om statistieken en parameters te loggen

met mlstroom. begin te lopen ( experiment_id = exp_id ) :

# Uw machine learning-code hier (dit is slechts een gesimuleerd voorbeeld)

model_nauwkeurigheid = 0,95

machine_learning_rate = 0,01

efficiëntie_tarief = 90

# Log statistieken en parameters

mlstroom. log_metrisch ( 'nauwkeurigheid' , model_nauwkeurigheid )

mlstroom. log_param ( 'leersnelheid' , machine_learning_rate )

mlstroom. log_param ( 'efficiëntie_snelheid' , efficiëntie_tarief )

Het resultaat, wanneer de bovengenoemde code wordt uitgevoerd, is hier te zien. Het resultaat is hetzelfde als voorheen:

Stap 3: Voer een zoekopdracht uit met Mlflow.search_runs()

Ten slotte voeren we een zoekopdracht uit op de runs die zijn geregistreerd met behulp van een paar parameters en tonen we de resultaten op het terminalscherm:

# Definieer de zoekcriteria voor runs

definieer_zoekcriteria = 'metrics.accuracy > 0,8 EN params.learning_rate = '0,01' EN params.efficiency_rate = '90''

# Voer de zoekopdracht uit

loopt = mlstroom. zoek_runs ( experiment_ids = exp_id , filter_string = definieer_zoekcriteria )

# Geef de resultaten weer

afdrukken ( 'Zoekresultaten:' )

afdrukken ( loopt )

Een waarschuwing die betrekking heeft op de Git-tool wordt geproduceerd door de uitvoering van de search_runs-functie:


Voeg wat code toe bovenaan het Python-bestand om deze waarschuwing uit te schakelen. Hier is het korte gedeelte van de code:

importeren mlstroom

importeren Jij

Jij . ongeveer [ 'GIT_PYTHON_REFRESH' ] = 'rustig'

De functie “mlflow.search_runs” wordt met succes uitgevoerd zodra deze coderegels zijn toegevoegd:

Conclusie

Met de functie “mlflow.search_runs” kunnen gebruikers snel de machine learning-experimenten verkennen en evalueren, veel runs analyseren en de optimale hyperparametervariaties of -modellen lokaliseren die tot de gewenste resultaten leiden. Het is een effectief hulpmiddel voor het toezicht houden op, plannen en analyseren van de machine learning-workflow.