Sdílet prostřednictvím


Sdílení modelů mezi pracovními prostory

Důležité

Databricks doporučuje používat modely v katalogu Unity ke sdílení modelů napříč pracovními prostory. Přístup v tomto článku je zastaralý.

Azure Databricks podporuje sdílení modelů mezi více pracovními prostory. Můžete například vyvíjet a protokolovat model ve vývojovém pracovním prostoru a pak k němu přistupovat a porovnávat s modely v samostatném provozním pracovním prostoru. To je užitečné, když více týmů sdílí přístup k modelům nebo když má vaše organizace více pracovních prostorů pro zpracování různých fází vývoje. Pro vývoj a nasazení modelu napříč pracovními prostory doporučuje Databricks přístup k nasazení kódu , kde je trénovací kód modelu nasazený do více prostředí.

V situacích s více pracovními prostory můžete přistupovat k modelům napříč pracovními prostory Azure Databricks pomocí registru vzdáleného modelu. Datoví vědci můžou například získat přístup k registru produkčního modelu s přístupem jen pro čtení a porovnat jejich modely v rámci vývoje s aktuálními produkčními modely. Příklad nastavení více pracovních prostorů je uvedený níže.

Více pracovních prostorů

Přístup ke vzdálenému registru se řídí tokeny. Každý uživatel nebo skript, který potřebuje přístup , vytvoří ve vzdáleném registru osobní přístupový token a zkopíruje tento token do správce tajných kódů místního pracovního prostoru. Každý požadavek rozhraní API odeslaný do vzdáleného pracovního prostoru registru musí obsahovat přístupový token; MLflow poskytuje jednoduchý mechanismus pro určení tajných kódů, které se mají použít při provádění operací registru modelu.

Poznámka:

Osvědčeným postupem při ověřování pomocí automatizovaných nástrojů, systémů, skriptů a aplikací doporučuje Databricks místo uživatelů pracovního prostoru používat tokeny patního přístupu, které patří instančním objektům . Pokud chcete vytvořit tokeny pro instanční objekty, přečtěte si téma Správa tokenů instančního objektu.

Pro vzdálené pracovní prostory jsou podporovány všechny metody rozhraní API klienta a fluent rozhraní API pro registr modelů.

Požadavky

Použití registru modelů napříč pracovními prostory vyžaduje klienta Pythonu MLflow verze 1.11.0 nebo vyšší.

Poznámka:

Tento pracovní postup je implementován z logiky v klientovi MLflow. Ujistěte se, že prostředí, na kterém běží klient, má přístup k provádění síťových požadavků v pracovním prostoru Azure Databricks obsahujícím registr vzdáleného modelu. Běžným omezením pracovního prostoru registru je seznam povolených IP adres, který může zakázat připojení klientů MLflow spuštěných v clusteru v jiném pracovním prostoru.

Nastavení tokenu rozhraní API pro vzdálený registr

  1. V pracovním prostoru registru modelů vytvořte přístupový token.
  2. V místním pracovním prostoru vytvořte tajné kódy pro uložení přístupového tokenu a informací o vzdáleném pracovním prostoru:
    1. Vytvořte obor tajného kódu: databricks secrets create-scope <scope>.
    2. Vyberte jedinečný název cílového pracovního prostoru, jak je znázorněno tady <prefix>. Pak vytvořte tři tajné kódy:
      • databricks secrets put-secret <scope> <prefix>-host : Zadejte název hostitele pracovního prostoru registru modelu. Například https://westus.azuredatabricks.net/ nebo https://adb-5555555555555555.19.azuredatabricks.net/.
      • databricks secrets put-secret <scope> <prefix>-token : Zadejte přístupový token z pracovního prostoru registru modelu.
      • databricks secrets put-secret <scope> <prefix>-workspace-id : Zadejte ID pracovního prostoru pro pracovní prostor registru modelu, který najdete v adrese URL libovolné stránky.

Poznámka:

Rozsah tajných kódů můžete sdílet s dalšími uživateli, protože existuje omezení počtu oborů tajných kódů na pracovní prostor.

Zadání vzdáleného registru

Na základě oboru tajného kódu a předpony názvu, kterou jste vytvořili pro pracovní prostor vzdáleného registru, můžete vytvořit identifikátor URI registru formuláře:

registry_uri = f'databricks://<scope>:<prefix>'

Pomocí identifikátoru URI můžete určit vzdálený registr pro fluent metody rozhraní API tak, že nejprve zavoláte:

mlflow.set_registry_uri(registry_uri)

Nebo ji můžete explicitně zadat při vytváření instance MlflowClient:

client = MlflowClient(registry_uri=registry_uri)

Následující pracovní postupy ukazují příklady obou přístupů.

Registrace modelu ve vzdáleném registru

Jedním ze způsobů, jak zaregistrovat model, je použít mlflow.register_model rozhraní API:

mlflow.set_registry_uri(registry_uri)
mlflow.register_model(model_uri=f'runs:/<run-id>/<artifact-path>', name=model_name)

Příklady pro jiné metody registrace modelu najdete v poznámkovém bloku na konci této stránky.

Poznámka:

Registrace modelu ve vzdáleném pracovním prostoru vytvoří dočasnou kopii artefaktů modelu ve službě DBFS ve vzdáleném pracovním prostoru. Tuto kopii můžete chtít odstranit, jakmile bude verze modelu ve READY stavu. Dočasné soubory najdete ve /dbfs/databricks/mlflow/tmp-external-source/<run-id> složce.

Můžete také zadat tracking_uri odkaz na službu MLflow Tracking v jiném pracovním prostoru podobným způsobem jako registry_uri. To znamená, že můžete spustit vzdálený pracovní prostor a zaregistrovat jeho model v aktuálním nebo jiném vzdáleném pracovním prostoru.

Použití modelu ze vzdáleného registru

Verzi modelu můžete načíst a použít ve vzdáleném registru s metodami mlflow.<flavor>.load_model tak, že nejprve nastavíte identifikátor URI registru:

mlflow.set_registry_uri(registry_uri)
model = mlflow.pyfunc.load_model(f'models:/<model-name>/Staging')
model.predict(...)

Nebo můžete explicitně zadat vzdálený registr v identifikátoru models:/ URI:

model = mlflow.pyfunc.load_model(f'models://<scope>:<prefix>@databricks/<model-name>/Staging')
model.predict(...)

Podporují se také další pomocné metody pro přístup k souborům modelu, například:

client.get_latest_versions(model_name)
client.get_model_version_download_uri(model_name, version)

Správa modelu ve vzdáleném registru

U modelů ve vzdáleném registru můžete provádět libovolnou akci, pokud máte požadovaná oprávnění. Pokud máte například oprávnění CAN MANAGE u modelu, můžete přecházet do fáze verze modelu nebo model odstranit pomocí MlflowClient metod:

client = MlflowClient(tracking_uri=None, registry_uri=registry_uri)
client.transition_model_version_stage(model_name, version, 'Archived')
client.delete_registered_model(model_name)

Příklad poznámkového bloku: Registr vzdáleného modelu

Následující poznámkový blok platí pro pracovní prostory, které nejsou povolené pro katalog Unity. Ukazuje, jak protokolovat modely na server pro sledování MLflow z aktuálního pracovního prostoru a zaregistrovat modely do registru modelů v jiném pracovním prostoru. Databricks doporučuje používat modely v katalogu Unity ke sdílení modelů napříč pracovními prostory.

Ukázkový poznámkový blok registru vzdáleného modelu

Získat poznámkový blok