Sdílet prostřednictvím


Konfigurace MLflow pro Azure Machine Learning

Tento článek vysvětluje, jak nakonfigurovat MLflow pro připojení k pracovnímu prostoru Služby Azure Machine Learning pro sledování, správu registru a nasazení.

Pracovní prostory Azure Machine Learning jsou kompatibilní s MLflow, což znamená, že můžou fungovat jako servery MLflow bez jakékoli další konfigurace. Každý pracovní prostor má identifikátor URI sledování MLflow, který MLflow může použít pro připojení k pracovnímu prostoru. Pracovní prostory Azure Machine Learning jsou už nakonfigurované tak, aby fungovaly s MLflow, takže není nutná žádná další konfigurace.

Pokud ale pracujete mimo Azure Machine Learning, musíte nakonfigurovat MLflow tak, aby odkazovat na pracovní prostor. Ovlivněná prostředí zahrnují místní počítač, Azure Synapse Analytics a Azure Databricks.

Důležité

Pokud používáte výpočetní infrastrukturu Azure, nemusíte konfigurovat identifikátor URI pro sledování. Automaticky se nakonfiguruje za vás. Prostředí s automatickou konfigurací zahrnují poznámkové bloky Azure Machine Learning, poznámkové bloky Jupyter hostované ve výpočetních instancích služby Azure Machine Learning a úlohy, které běží na výpočetních clusterech Azure Machine Learning.

Požadavky

  • Balíček MLflow SDK mlflow a modul plug-in Azure Machine Learning azureml-mlflow pro MLflow. K instalaci tohoto softwaru můžete použít následující příkaz:

    pip install mlflow azureml-mlflow
    

    Tip

    mlflowMísto , zvažte použití mlflow-skinny. Tento balíček je jednoduchý balíček MLflow bez závislostí úložiště SQL, serveru, uživatelského rozhraní nebo datových věd. Doporučuje se uživatelům, kteří primárně potřebují funkce sledování a protokolování MLflow, ale nechtějí importovat celou sadu funkcí, včetně nasazení.

  • Pracovní prostor služby Azure Machine Learning. Pokud chcete vytvořit pracovní prostor, přečtěte si téma Vytvoření prostředků, které potřebujete, abyste mohli začít.

  • Přístupová oprávnění pro provádění operací MLflow ve vašem pracovním prostoru Seznam operací a požadovaných oprávnění najdete v tématu Operace MLflow.

Konfigurace identifikátoru URI sledování MLflow

Pokud chcete provádět vzdálené sledování nebo sledovat experimenty spuštěné mimo Azure Machine Learning, nakonfigurujte MLflow tak, aby odkazovali na identifikátor URI sledování pracovního prostoru Azure Machine Learning.

Pokud chcete připojit MLflow k pracovnímu prostoru Azure Machine Learning, potřebujete identifikátor URI sledování pracovního prostoru. Každý pracovní prostor má vlastní identifikátor URI pro sledování, který začíná protokolem azureml://.

  1. Získejte identifikátor URI sledování pro váš pracovní prostor:

    PLATÍ PRO: Rozšíření Azure CLI ml v2 (aktuální)

    1. Přihlaste se a nakonfigurujte pracovní prostor:

      az account set --subscription <subscription-ID>
      az configure --defaults workspace=<workspace-name> group=<resource-group-name> location=<location> 
      
    2. Pomocí příkazu získejte identifikátor URI az ml workspace pro sledování:

      az ml workspace show --query mlflow_tracking_uri
      
  2. Nakonfigurujte identifikátor URI sledování:

    set_tracking_uri() Pomocí metody nastavte identifikátor URI sledování MLflow na identifikátor URI sledování vašeho pracovního prostoru.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Tip

    Některé scénáře zahrnují práci ve sdíleném prostředí, jako je cluster Azure Databricks nebo cluster Azure Synapse Analytics. V těchto případech je vhodné nastavit MLFLOW_TRACKING_URI proměnnou prostředí na úrovni clusteru, a ne pro každou relaci. Nastavení proměnné na úrovni clusteru automaticky nakonfiguruje identifikátor URI pro sledování MLflow tak, aby ukazoval na Azure Machine Learning pro všechny relace v clusteru.

Konfigurace ověřování

Po nastavení sledování musíte také nakonfigurovat metodu ověřování pro přidružený pracovní prostor.

Ve výchozím nastavení modul plug-in Azure Machine Learning pro MLflow provádí interaktivní ověřování otevřením výchozího prohlížeče, aby se zobrazila výzva k zadání přihlašovacích údajů. Modul plug-in ale podporuje i několik dalších mechanismů ověřování. Balíček azure-identity tuto podporu poskytuje. Tento balíček se nainstaluje jako závislost modulu azureml-mlflow plug-in.

Proces ověřování zkouší následující metody, jeden po druhém, dokud jeden nebude úspěšný:

  1. Prostředí: Informace o účtu zadané prostřednictvím proměnných prostředí se čtou a používají k ověřování.
  2. Spravovaná identita: Pokud je aplikace nasazená na hostitele Azure s povolenou spravovanou identitou, použije se spravovaná identita k ověřování.
  3. Azure CLI: Pokud k přihlášení použijete příkaz Azure CLI az login , použijí se vaše přihlašovací údaje k ověřování.
  4. Azure PowerShell: Pokud k přihlášení použijete příkaz Azure PowerShelluConnect-AzAccount, použijí se vaše přihlašovací údaje k ověřování.
  5. Interaktivní prohlížeč: Uživatel je interaktivně ověřen prostřednictvím výchozího prohlížeče.

V případě interaktivních úloh, kde je uživatel připojený k relaci, můžete spoléhat na interaktivní ověřování. Nevyžaduje se žádná další akce.

Upozorňující

Interaktivní ověřování v prohlížeči blokuje provádění kódu při zobrazení výzvy k zadání přihlašovacích údajů. Tento přístup není vhodný pro ověřování v bezobslužných prostředích, jako jsou trénovací úlohy. V těchto prostředích doporučujeme nakonfigurovat jiný režim ověřování.

V případě scénářů, které vyžadují bezobslužné spuštění, je potřeba nakonfigurovat instanční objekt pro komunikaci se službou Azure Machine Learning. Informace o vytvoření instančního objektu najdete v tématu Konfigurace instančního objektu.

V následujícím kódu použijte ID tenanta, ID klienta a tajný klíč klienta instančního objektu:

import os

os.environ["AZURE_TENANT_ID"] = "<Azure-tenant-ID>"
os.environ["AZURE_CLIENT_ID"] = "<Azure-client-ID>"
os.environ["AZURE_CLIENT_SECRET"] = "<Azure-client-secret>"

Tip

Při práci ve sdílených prostředích doporučujeme nakonfigurovat tyto proměnné prostředí na úrovni výpočetních prostředků. Osvědčeným postupem je spravovat jako tajné kódy v instanci služby Azure Key Vault.

Například v konfiguraci clusteru Azure Databricks můžete tajné kódy použít v proměnných prostředí následujícím způsobem: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}}. Další informace o implementaci tohoto přístupu v Azure Databricks najdete v tématu Odkazování na tajný kód v proměnné prostředí nebo dokumentaci pro vaši platformu.

Pokud byste raději použili certifikát než tajný klíč, můžete nakonfigurovat následující proměnné prostředí:

  • Nastavte AZURE_CLIENT_CERTIFICATE_PATH cestu k souboru, který obsahuje dvojici certifikátů a privátních klíčů ve formátu PEM (Privacy Enhanced Mail) nebo Public-Key Cryptography Standards 12 (PKCS #12).
  • Nastavte AZURE_CLIENT_CERTIFICATE_PASSWORD heslo souboru certifikátu, pokud používá heslo.

Konfigurace úrovní autorizace a oprávnění

Některé výchozí role, jako je AzureML Datoví vědci a Přispěvatel, jsou už nakonfigurované pro provádění operací MLflow v pracovním prostoru Azure Machine Learning. Pokud používáte vlastní roli, potřebujete následující oprávnění:

  • Použití sledování MLflow:

    • Microsoft.MachineLearningServices/workspaces/experiments/*
    • Microsoft.MachineLearningServices/workspaces/jobs/*
  • Použití registru modelů MLflow:

    • Microsoft.MachineLearningServices/workspaces/models/*/*

Pokud chcete zjistit, jak udělit přístup k pracovnímu prostoru instančnímu objektu, který vytvoříte nebo ke svému uživatelskému účtu, přečtěte si téma Udělení přístupu.

Řešení potíží s ověřováním

MLflow se pokusí ověřit ve službě Azure Machine Learning při první operaci, která komunikuje se službou, například mlflow.set_experiment() nebo mlflow.start_run(). Pokud během procesu dojde k problémům nebo neočekávaným výzev k ověření, můžete zvýšit úroveň protokolování, abyste získali další podrobnosti o chybě:

import logging

logging.getLogger("azure").setLevel(logging.DEBUG)

Nastavení názvu experimentu (volitelné)

Všechna spuštění MLflow se protokolují do aktivního experimentu. Ve výchozím nastavení se spuštění protokolují do experimentu s názvem Default , který se automaticky vytvoří za vás. Experiment, který se používá ke sledování, můžete nakonfigurovat.

Tip

Když k odesílání úloh použijete Rozhraní příkazového řádku služby Azure Machine Learning v2, můžete název experimentu nastavit pomocí experiment_name vlastnosti v definici YAML úlohy. V trénovacím skriptu ho nemusíte konfigurovat. Další informace najdete v YAML : zobrazovaný název, název experimentu, popis a značky.

Ke konfiguraci experimentu použijte příkaz MLflow mlflow.set_experiment() .

experiment_name = "experiment_with_mlflow"
mlflow.set_experiment(experiment_name)

Konfigurace podpory pro neveřejný cloud Azure

Modul plug-in Azure Machine Learning pro MLflow je standardně nakonfigurovaný tak, aby fungoval s globálním cloudem Azure. Cloud Azure, který používáte, ale můžete nakonfigurovat nastavením AZUREML_CURRENT_CLOUD proměnné prostředí:

import os

os.environ["AZUREML_CURRENT_CLOUD"] = "AzureChinaCloud"

Cloud, který používáte, můžete identifikovat pomocí následujícího příkazu Azure CLI:

az cloud list

Aktuální cloud má hodnotu IsActive nastavenou na True.

Teď, když je vaše prostředí připojené k vašemu pracovnímu prostoru ve službě Azure Machine Learning, můžete s ním začít pracovat.