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.

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 .

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:

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

Hämta 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:

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.