Uppgradera ML-arbetsflöden till målmodeller i Unity Catalog

Den här artikeln beskriver hur du migrerar och uppgraderar ML-arbetsflöden till målmodeller i Unity Catalog.

Krav

Innan du börjar måste du uppfylla kraven i Krav. Se särskilt till att de användare eller huvudnamn som används för att köra dina arbetsflöden för modellträning, distribution och slutsatsdragning har de behörigheter som krävs för en registrerad modell i Unity Catalog:

  • Utbildning: Ägarskap för den registrerade modellen (krävs för att skapa nya modellversioner), plus USE CATALOG och USE SCHEMA behörigheter för den omslutande katalogen och schemat.
  • Distribution: Ägarskap för den registrerade modellen (krävs för att ange alias för modellen), plus USE CATALOG och USE SCHEMA behörigheter för den omslutande katalogen och schemat.
  • Slutsatsdragning: EXECUTE behörighet för den registrerade modellen (krävs för att läsa och utföra slutsatsdragning med modellversioner), plus USE CATALOG och "USE SCHEMA privileges on the enclosing catalog and schema.

Skapa parallell träning, distribution och arbetsflöden

För att uppgradera modelltränings- och slutsatsdragningsarbetsflöden till Unity Catalog rekommenderar Databricks en inkrementell metod där du skapar en parallell pipeline för träning, distribution och slutsatsdragning som utnyttjar modeller i Unity Catalog. När du är nöjd med resultatet med Unity Catalog kan du växla nedströmsanvändare för att läsa batchinferensutdata eller öka trafiken som dirigeras till modeller i Unity Catalog i serverslutpunkter.

Arbetsflöde för modellträning

Klona arbetsflödet för modellträning. Kontrollera sedan att:

  1. Arbetsflödesklustret har åtkomst till Unity Catalog och uppfyller kraven som beskrivs i Krav.
  2. Huvudnamnet som kör arbetsflödet har de behörigheter som krävs för en registrerad modell i Unity Catalog.

Ändra sedan modellträningskoden i det klonade arbetsflödet. Du kan behöva klona notebook-filen som körs av arbetsflödet eller skapa och rikta in dig på en ny git-gren i det klonade arbetsflödet. Följ de här stegen för att installera den nödvändiga versionen av MLflow, konfigurera klienten så att den riktar in sig på Unity Catalog i din träningskod och uppdatera modellträningskoden för att registrera modeller i Unity Catalog.

Arbetsflöde för modelldistribution

Klona arbetsflödet för modelldistributionen genom att följa liknande steg som i arbetsflödet för modellträning för att uppdatera dess beräkningskonfiguration för att ge åtkomst till Unity Catalog.

Se till att huvudkontot som äger det klonade arbetsflödet har nödvändiga behörigheter. Om du har modellverifieringslogik i distributionsarbetsflödet uppdaterar du den för att läsa in modellversioner från UC. Använd alias för att hantera distributioner av produktionsmodeller.

Arbetsflöde för modellinferens

Arbetsflöde för batchinferens

Följ liknande steg som i arbetsflödet för modellträning för att klona arbetsflödet för batchinferens och uppdatera dess beräkningskonfiguration för att ge åtkomst till Unity Catalog. Se till att huvudnamnet som kör det klonade batchinferensjobbet har de behörigheter som krävs för att läsa in modellen för slutsatsdragning.

Arbetsflöde för modellservering

Om du använder Databricks-modellservern behöver du inte klona din befintliga slutpunkt. I stället kan du använda funktionen för trafikdelning för att dirigera en liten del av trafiken till modeller i Unity Catalog.

Kontrollera först att huvudkontot som äger modellen som betjänar slutpunkten har de behörigheter som krävs för att läsa in modellen för slutsatsdragning. Uppdatera sedan arbetsflödet för distribution av klonade modeller för att tilldela en liten procentandel trafik till modellversioner i Unity Catalog.

Höja upp en modell mellan miljöer

Databricks rekommenderar att du distribuerar ML-pipelines som kod. Detta eliminerar behovet av att marknadsföra modeller i olika miljöer, eftersom alla produktionsmodeller kan skapas via automatiserade träningsarbetsflöden i en produktionsmiljö.

I vissa fall kan det dock vara för dyrt att träna modeller i olika miljöer. I sådana scenarier kan du kopiera modellversioner mellan registrerade modeller i Unity Catalog för att marknadsföra dem i olika miljöer.

Du behöver följande behörigheter för att köra exempelkoden nedan:

  • USE CATALOG på katalogerna staging och prod .
  • USE SCHEMA på scheman staging.ml_team och prod.ml_team .
  • EXECUTEstaging.ml_team.fraud_detection.

Dessutom måste du vara ägare till den registrerade modellen prod.ml_team.fraud_detection.

Följande kodfragment använder MLflow-klient-API:etcopy_model_version, som är tillgängligt i MLflow version 2.8.0 och senare.

import mlflow
mlflow.set_registry_uri("databricks-uc")

client = mlflow.tracking.MlflowClient()
src_model_name = "staging.ml_team.fraud_detection"
src_model_version = "1"
src_model_uri = f"models:/{src_model_name}/{src_model_version}"
dst_model_name = "prod.ml_team.fraud_detection"
copied_model_version = client.copy_model_version(src_model_uri, dst_model_name)

När modellversionen finns i produktionsmiljön kan du utföra alla nödvändiga verifieringar före distributionen. Sedan kan du markera modellversionen för distribution med hjälp av alias.

client = mlflow.tracking.MlflowClient()
client.set_registered_model_alias(name="prod.ml_team.fraud_detection", alias="Champion", version=copied_model_version.version)

I exemplet ovan kan endast användare som kan läsa från den staging.ml_team.fraud_detection registrerade modellen och skriva till den prod.ml_team.fraud_detection registrerade modellen flytta mellanlagringsmodeller till produktionsmiljön. Samma användare kan också använda alias för att hantera vilka modellversioner som distribueras i produktionsmiljön. Du behöver inte konfigurera några andra regler eller principer för att styra modellhöjning och distribution.

Du kan anpassa det här flödet för att höja upp modellversionen i flera miljöer som matchar konfigurationen, till exempel dev, qaoch prod. Åtkomstkontroll tillämpas enligt konfigurationen i varje miljö.

Använda jobbwebbhooks för manuellt godkännande för modelldistribution

Databricks rekommenderar att du automatiserar modelldistributionen om möjligt med hjälp av lämpliga kontroller och tester under modelldistributionsprocessen. Men om du behöver utföra manuella godkännanden för att distribuera produktionsmodeller kan du använda jobbwebbhooks för att anropa externa CI/CD-system för att begära manuellt godkännande för att distribuera en modell när modellträningsjobbet har slutförts. När manuellt godkännande har angetts kan ditt CI/CD-system sedan distribuera modellversionen för att hantera trafik, till exempel genom att ange aliaset "Champion" på den.