Dela modeller mellan arbetsytor
Viktigt!
Databricks rekommenderar att du använder modeller i Unity Catalog för att dela modeller mellan arbetsytor. Metoden i den här artikeln är inaktuell.
Azure Databricks stöder delning av modeller mellan flera arbetsytor. Du kan till exempel utveckla och logga en modell på en utvecklingsarbetsyta och sedan komma åt och jämföra den med modeller i en separat produktionsarbetsyta. Detta är användbart när flera team delar åtkomst till modeller eller när din organisation har flera arbetsytor för att hantera de olika utvecklingsstegen. För utveckling och distribution av modell för flera arbetsytor rekommenderar Databricks metoden för att distribuera kod , där modellträningskoden distribueras till flera miljöer.
I situationer med flera arbetsytor kan du komma åt modeller på Azure Databricks-arbetsytor med hjälp av ett fjärrmodellregister. Dataexperter kan till exempel komma åt produktionsmodellregistret med skrivskyddad åtkomst för att jämföra sina utvecklingsmodeller med de aktuella produktionsmodellerna. Ett exempel på konfiguration av flera arbetsytor visas nedan.
Åtkomst till ett fjärrregister styrs av token. Varje användare eller skript som behöver åtkomst skapar en personlig åtkomsttoken i fjärrregistret och kopierar den token till den hemliga chefen för deras lokala arbetsyta. Varje API-begäran som skickas till fjärrregistrets arbetsyta måste innehålla åtkomsttoken. MLflow tillhandahåller en enkel mekanism för att ange vilka hemligheter som ska användas när du utför modellregisteråtgärder.
Kommentar
När du autentiserar med automatiserade verktyg, system, skript och appar rekommenderar Databricks att du använder personliga åtkomsttoken som tillhör tjänstens huvudnamn i stället för arbetsyteanvändare. Information om hur du skapar token för tjänstens huvudnamn finns i Hantera token för tjänstens huvudnamn.
Alla klient - och fluent API-metoder för modellregister stöds för fjärranslutna arbetsytor.
Krav
Användning av ett modellregister mellan arbetsytor kräver MLflow Python-klienten, version 1.11.0 eller senare.
Kommentar
Det här arbetsflödet implementeras från logiken i MLflow-klienten. Se till att miljön som kör klienten har åtkomst till att göra nätverksbegäranden mot Azure Databricks-arbetsytan som innehåller fjärrmodellregistret. En vanlig begränsning på registerarbetsytan är en LISTA över TILLÅTNA IP-adresser, som kan neka anslutningar från MLflow-klienter som körs i ett kluster på en annan arbetsyta.
Konfigurera API-token för ett fjärrregister
- Skapa en åtkomsttoken i modellregistrets arbetsyta.
- På den lokala arbetsytan skapar du hemligheter för att lagra åtkomsttoken och informationen om fjärrarbetsytan:
- Skapa ett hemligt omfång:
databricks secrets create-scope <scope>
. - Välj ett unikt namn för målarbetsytan, som visas här som
<prefix>
. Skapa sedan tre hemligheter:databricks secrets put-secret <scope> <prefix>-host
: Ange värdnamnet för modellregistrets arbetsyta. Exempel:https://westus.azuredatabricks.net/
ellerhttps://adb-5555555555555555.19.azuredatabricks.net/
.databricks secrets put-secret <scope> <prefix>-token
: Ange åtkomsttoken från modellregistrets arbetsyta.databricks secrets put-secret <scope> <prefix>-workspace-id
: Ange arbetsytans ID för modellregistrets arbetsyta som finns i URL:en för alla sidor.
- Skapa ett hemligt omfång:
Kommentar
Du kanske vill dela det hemliga omfånget med andra användare, eftersom det finns en gräns för antalet hemliga omfång per arbetsyta.
Ange ett fjärrregister
Baserat på det hemliga omfånget och namnprefixet som du skapade för fjärrregistrets arbetsyta kan du skapa en register-URI för formuläret:
registry_uri = f'databricks://<scope>:<prefix>'
Du kan använda URI:n för att ange ett fjärrregister för fluent API-metoder genom att först anropa:
mlflow.set_registry_uri(registry_uri)
Eller så kan du ange det explicit när du instansierar en MlflowClient
:
client = MlflowClient(registry_uri=registry_uri)
Följande arbetsflöden visar exempel på båda metoderna.
Registrera en modell i fjärrregistret
Ett sätt att registrera en modell är att använda API:et mlflow.register_model
:
mlflow.set_registry_uri(registry_uri)
mlflow.register_model(model_uri=f'runs:/<run-id>/<artifact-path>', name=model_name)
Exempel på andra modellregistreringsmetoder finns i notebook-filen i slutet av den här sidan.
Kommentar
Om du registrerar en modell på en fjärrarbetsyta skapas en tillfällig kopia av modellartefakterna i DBFS på fjärrarbetsytan. Du kanske vill ta bort den här kopian när modellversionen är i READY
status. De temporära filerna finns under /dbfs/databricks/mlflow/tmp-external-source/<run-id>
mappen .
Du kan också ange en tracking_uri
för att peka på en MLflow Tracking-tjänst på en annan arbetsyta på ett liknande sätt som registry_uri
. Det innebär att du kan köra på en fjärransluten arbetsyta och registrera dess modell i den aktuella eller en annan fjärrarbetsyta.
Använda en modell från fjärrregistret
Du kan läsa in och använda en modellversion i ett fjärrregister med mlflow.<flavor>.load_model
metoder genom att först ange register-URI:n:
mlflow.set_registry_uri(registry_uri)
model = mlflow.pyfunc.load_model(f'models:/<model-name>/Staging')
model.predict(...)
Eller så kan du uttryckligen ange fjärrregistret i URI: models:/
n:
model = mlflow.pyfunc.load_model(f'models://<scope>:<prefix>@databricks/<model-name>/Staging')
model.predict(...)
Andra hjälpmetoder för att komma åt modellfilerna stöds också, till exempel:
client.get_latest_versions(model_name)
client.get_model_version_download_uri(model_name, version)
Hantera en modell i fjärrregistret
Du kan utföra alla åtgärder på modeller i fjärrregistret så länge du har de behörigheter som krävs. Om du till exempel har CAN MANAGE-behörigheter för en modell kan du överföra en modellversionsfas eller ta bort modellen med hjälp av MlflowClient
metoder:
client = MlflowClient(tracking_uri=None, registry_uri=registry_uri)
client.transition_model_version_stage(model_name, version, 'Archived')
client.delete_registered_model(model_name)
Notebook-exempel: Fjärrmodellregister
Följande notebook-fil gäller för arbetsytor som inte är aktiverade för Unity Catalog. Den visar hur du loggar modeller till MLflow-spårningsservern från den aktuella arbetsytan och registrerar modellerna i Modellregister på en annan arbetsyta. Databricks rekommenderar att du använder modeller i Unity Catalog för att dela modeller mellan arbetsytor.