Konfigurace MLflow pro Azure Machine Learning

Tento článek vysvětluje, jak nakonfigurovat MLflow pro připojení k pracovnímu prostoru Azure Machine Učení pro sledování, registry a nasazení.

Pracovní prostory Azure Machine Učení jsou kompatibilní s MLflow, což znamená, že můžou fungovat jako server 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 Učení jsou už nakonfigurované tak, aby fungovaly s MLflow, takže není nutná žádná další konfigurace.

Pokud ale pracujete mimo azure Machine Učení (například místní počítač, Azure Synapse Analytics nebo Azure Databricks), musíte nakonfigurovat MLflow tak, aby odkazovat na pracovní prostor.

Důležité

Při spouštění ve službě Azure Compute (poznámkové bloky Učení Azure, poznámkové bloky Jupyter hostované na výpočetních instancích Azure Učení nebo úlohy spuštěné na výpočetních clusterech Azure Machine Učení), nemusíte konfigurovat identifikátor URI pro sledování. Automaticky se nakonfiguruje za vás.

Požadavky

K provedení tohoto kurzu potřebujete následující požadavky:

  • Nainstalujte balíček mlflow MLflow SDK a modul plug-in Azure Machine Učení pro MLflow azureml-mlflow.

    pip install mlflow azureml-mlflow
    

    Tip

    Můžete použít mlflow-skinny balíček, což je jednoduchý balíček MLflow bez závislostí sql Storage, serveru, uživatelského rozhraní nebo datových věd. mlflow-skinny se doporučuje uživatelům, kteří primárně potřebují funkce sledování a protokolování MLflow bez importu celé sady funkcí včetně nasazení.

  • Pracovní prostor služby Azure Machine Learning. Můžete ho vytvořit podle kurzu Vytvoření prostředků strojového učení.

  • Pokud provádíte vzdálené sledování (tj. sledování experimentů spuštěných mimo azure Machine Učení), nakonfigurujte MLflow tak, aby odkazovali na identifikátor URI sledování vašeho pracovního prostoru azure machine Učení. Další informace o připojení MLflow k pracovnímu prostoru najdete v tématu Konfigurace MLflow pro azure machine Učení.

Konfigurace identifikátoru URI sledování MLflow

Pokud chcete připojit MLflow k pracovnímu prostoru Azure Machine Učení, potřebujete identifikátor URI pro sledování pracovního prostoru. Každý pracovní prostor má vlastní identifikátor URI pro sledování a má protokol 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>
      az configure --defaults workspace=<workspace> group=<resource-group> location=<location> 
      
    2. Identifikátor URI sledování můžete získat pomocí az ml workspace příkazu:

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

    Pak metoda set_tracking_uri() odkazuje identifikátor URI sledování MLflow na tento identifikátor URI.

    import mlflow
    
    mlflow.set_tracking_uri(mlflow_tracking_uri)
    

    Tip

    Při práci na sdílených prostředích, jako je cluster Azure Databricks, cluster Azure Synapse Analytics nebo podobný, je užitečné nastavit proměnnou MLFLOW_TRACKING_URI prostředí na úrovni clusteru tak, aby automaticky nakonfiguroval identifikátor URI pro sledování MLflow tak, aby odkazoval na azure Machine Učení pro všechny relace spuštěné v clusteru, a ne pro jednotlivé relace.

Konfigurace ověřování

Jakmile je sledování nastavené, musíte také nakonfigurovat metodu ověřování pro přidružený pracovní prostor. Ve výchozím nastavení modul plug-in Azure Machine Učení 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 Azure Machine Učení pro MLflow podporuje prostřednictvím balíčku azure-identityněkolik mechanismů ověřování, které se instaluje jako závislost modulu plug-in azureml-mlflow. Následující metody ověřování se zkusí jeden po druhém, dokud jeden z nich neuspěje:

  1. Prostředí: Čte informace o účtu zadané prostřednictvím proměnných prostředí a používá je k ověření.
  2. Spravovaná identita: Pokud je aplikace nasazená na hostitele Azure s povolenou spravovanou identitou, ověří se s ní.
  3. Azure CLI: Pokud se uživatel přihlásí pomocí příkazu Azure CLI az login , ověří se jako tento uživatel.
  4. Azure PowerShell: Pokud se uživatel přihlásí pomocí příkazu Azure PowerShellu Connect-AzAccount , ověří se jako uživatel.
  5. Interaktivní prohlížeč: Interaktivně ověřuje uživatele prostřednictvím výchozího prohlížeče.

U interaktivních úloh, kde je uživatel připojený k relaci, můžete spoléhat na interaktivní ověřování, a proto není potřeba provádět žádnou další akci.

Upozorňující

Interaktivní ověřování prohlížeče zablokuje provádění kódu při zobrazení výzvy k zadání přihlašovacích údajů. Není to vhodná možnost pro ověřování v bezobslužných prostředích, jako jsou trénovací úlohy. Doporučujeme nakonfigurovat jiný režim ověřování.

V případě, že se vyžaduje bezobslužné spuštění, budete muset nakonfigurovat instanční objekt pro komunikaci se službou Azure Machine Učení.

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 na sdílených prostředích je vhodné nakonfigurovat tyto proměnné prostředí na výpočetních prostředcích. Osvědčeným postupem je spravovat jako tajné kódy v instanci služby Azure Key Vault, kdykoli je to možné. V Azure Databricks můžete například použít tajné kódy v proměnných prostředí následujícím způsobem v konfiguraci clusteru: AZURE_CLIENT_SECRET={{secrets/<scope-name>/<secret-name>}} Informace o tom, jak to udělat v Azure Databricks, najdete v tématu Referenční informace o tajném kódu v proměnné prostředí nebo se podívejte na podobnou dokumentaci ve vaší platformě.

Pokud byste raději používali certifikát místo tajného klíče, můžete nakonfigurovat proměnné AZURE_CLIENT_CERTIFICATE_PATH prostředí na cestu k PEM souboru nebo PKCS12 souboru certifikátu (včetně privátního klíče) a AZURE_CLIENT_CERTIFICATE_PASSWORD s heslem souboru certifikátu( pokud existuje).

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

Některé výchozí role, jako je AzureML Datoví vědci nebo Přispěvatel, jsou už nakonfigurované pro provádění operací MLflow v pracovním prostoru Azure Machine Učení. 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/*/*

Informace o udělení přístupu k instančnímu objektu, který jste vytvořili nebo uživatelský účet pro váš pracovní prostor, najdete v tématu Udělení přístupu.

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

MLflow se pokusí ověřit ve službě Azure Machine Učení při první operaci, která komunikuje se službou, například mlflow.set_experiment() nebo mlflow.start_run(). Pokud během procesu zjistíte problémy nebo neočekávané výzvy 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. Můžete nakonfigurovat experiment, ve kterém probíhá sledování.

Tip

Při odesílání úloh pomocí Azure Machine Učení CLI v2 můžete název experimentu nastavit pomocí vlastnosti experiment_name v definici YAML úlohy. Nemusíte ho konfigurovat ve svém trénovacím skriptu. Podrobnosti najdete v YAML: zobrazovaný název, název experimentu, popis a značky .

Nakonfigurujte experiment pomocí příkazu mlflow.set_experiment()MLflow .

experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)

Podpora nepublikovaných cloudů Azure

Modul plug-in Azure Machine Učení 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 proměnné AZUREML_CURRENT_CLOUDprostř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.

Další kroky

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