Spåra ML- och djupinlärningsträningskörningar
Med MLflow-spårningskomponenten kan du logga källegenskaper, parametrar, mått, taggar och artefakter som rör träning av en maskininlärnings- eller djupinlärningsmodell. Kom igång med MLflow genom att prova någon av MLflow-snabbstartskurserna.
MLflow-spårning med experiment och körningar
MLflow-spårning baseras på två begrepp, experiment och körningar:
Kommentar
Från och med den 27 mars 2024 inför MLflow en kvotgräns för antalet totala parametrar, taggar och måttsteg för alla befintliga och nya körningar, och antalet totala körningar för alla befintliga och nya experiment finns i Resursgränser. Om du når kvoten för körningar per experiment rekommenderar Databricks att du tar bort körningar som du inte längre behöver med api:et för borttagningskörningar i Python. Om du når andra kvotgränser rekommenderar Databricks att du justerar loggningsstrategin så att den håller sig under gränsen. Om du behöver en ökning till den här gränsen kontaktar du ditt Databricks-kontoteam med en kort förklaring av ditt användningsfall, varför de föreslagna åtgärdsmetoderna inte fungerar och den nya gräns som du begär.
Ett MLflow-experiment är den primära enheten för organisation och åtkomstkontroll för MLflow-körningar. Alla MLflow-körningar tillhör ett experiment. Med experiment kan du visualisera, söka efter och jämföra körningar samt ladda ned körningsartefakter och metadata för analys i andra verktyg.
En MLflow-körning motsvarar en enda körning av modellkod.
MLflow Tracking API loggar parametrar, mått, taggar och artefakter från en modellkörning. Spårnings-API:et kommunicerar med en MLflow-spårningsserver. När du använder Databricks loggar en Databricks-värdbaserad spårningsserver data. Den värdbaserade MLflow-spårningsservern har Python-, Java- och R-API:er.
Kommentar
MLflow är installerat på Databricks Runtime ML-kluster. Om du vill använda MLflow i ett Databricks Runtime-kluster måste du installera mlflow
biblioteket. Anvisningar om hur du installerar ett bibliotek på ett kluster finns i Installera ett bibliotek i ett kluster. De specifika paket som ska installeras för MLflow är:
- För Python väljer du Bibliotekskälla PyPI och anger
mlflow
i fältet Paket . - För R väljer du Bibliotekskälla CRAN och anger
mlflow
i fältet Paket . - Installera följande två paket för Scala:
- Välj Bibliotekskälla Maven och ange
org.mlflow:mlflow-client:1.11.0
i fältet Koordinater . - Välj Bibliotekskälla PyPI och ange
mlflow
i fältet Paket .
- Välj Bibliotekskälla Maven och ange
Där MLflow-körningar loggas
Alla MLflow-körningar loggas till det aktiva experimentet, som kan anges på något av följande sätt:
- Använd kommandot mlflow.set_experiment().
- Använd parametern
experiment_id
i kommandot mlflow.start_run(). - Ange en av MLflow-miljövariablerna MLFLOW_EXPERIMENT_NAME eller MLFLOW_EXPERIMENT_ID.
Om inget aktivt experiment har angetts loggas körningar till notebook-experimentet.
Om du vill logga experimentresultatet till en fjärrhanterad MLflow Tracking-server på en annan arbetsyta än den där du kör experimentet anger du spårnings-URI:n så att den refererar till fjärrarbetsytan med mlflow.set_tracking_uri()
och anger sökvägen till experimentet på fjärrarbetsytan med hjälp mlflow.set_experiment()
av .
mlflow.set_tracking_uri(<uri-of-remote-workspace>)
mlflow.set_experiment("path to experiment in remote workspace")
Om du kör experiment lokalt och vill logga experimentresultat till Databricks MLflow Tracking-servern anger du din databricks-arbetsyteinstans (DATABRICKS_HOST
) och Databricks personliga åtkomsttoken (DATABRICKS_TOKEN
). Därefter kan du ange spårnings-URI:n så att arbetsytan refereras till med mlflow.set_tracking_uri()
och ange sökvägen till experimentet med hjälp mlflow.set_experiment()
av . Mer information om var du hittar värden för variablerna DATABRICKS_HOST
och DATABRICKS_TOKEN
miljövariablerna finns i Utföra personlig åtkomsttokenautentisering i Azure Databricks.
Följande kodexempel visar hur du anger dessa värden:
os.environ["DATABRICKS_HOST"] = "https://dbc-1234567890123456.cloud.databricks.com" # set to your server URI
os.environ["DATABRICKS_TOKEN"] = "dapixxxxxxxxxxxxx"
mlflow.set_tracking_uri("databricks")
mlflow.set_experiment("/your-experiment")
Loggningsexempel notebook
Den här notebook-filen visar hur du loggar körningar till ett notebook-experiment och till ett arbetsyteexperiment. Endast MLflow-körningar som initieras i en notebook-fil kan loggas till notebook-experimentet. MLflow-körningar som startas från valfri notebook-fil eller från API:erna kan loggas till ett arbetsyteexperiment. Information om hur du visar loggade körningar finns i Visa notebook-experiment och Visa arbetsyteexperiment.
Logg-MLflow kör notebook-fil
Du kan använda MLflow Python-, Java- eller Scala- och R-API:er för att starta körningar och registrera körningsdata. Mer information finns i MLflow-exempelanteckningsböcker.
Få åtkomst till MLflow-spårningsservern utanför Azure Databricks
Du kan också skriva till och läsa från spårningsservern utanför Azure Databricks, till exempel med hjälp av MLflow CLI. Se Åtkomst till MLflow-spårningsservern utanför Azure Databricks.
Analysera MLflow-körningar programmatiskt
Du kan komma åt MLflow-körningsdata programmatiskt med hjälp av följande två DataFrame-API:er:
- MLflow Python-klienten search_runs-API :et returnerar en Pandas DataFrame.
- Datakällan för MLflow-experimentet returnerar en Apache Spark DataFrame.
Det här exemplet visar hur du använder MLflow Python-klienten för att skapa en instrumentpanel som visualiserar ändringar i utvärderingsmått över tid, spårar antalet körningar som startats av en specifik användare och mäter det totala antalet körningar för alla användare:
Varför modellträningsmått och utdata kan variera
Många av de algoritmer som används i ML har ett slumpmässigt element, till exempel sampling eller slumpmässiga initiala villkor i själva algoritmen. När du tränar en modell med någon av dessa algoritmer kanske resultatet inte är detsamma för varje körning, även om du startar körningen med samma villkor. Många bibliotek erbjuder en seeding-mekanism för att åtgärda de inledande villkoren för dessa stokastiska element. Det kan dock finnas andra varianter som inte kontrolleras av frön. Vissa algoritmer är känsliga för dataordningen och distribuerade ML-algoritmer kan också påverkas av hur data partitioneras. I allmänhet är den här variationen inte betydande och inte viktig i modellutvecklingsprocessen.
Om du vill kontrollera variationer som orsakas av skillnader i ordning och partitionering använder du PySpark-funktionernas ompartition och sortWithinPartitions.
Exempel på MLflow-spårning
Följande notebook-filer visar hur du tränar flera typer av modeller och spårar träningsdata i MLflow och hur du lagrar spårningsdata i Delta Lake.