Sdílet prostřednictvím


Trénování modelů s využitím sady Azure Machine Learning Python SDK (v1)

PLATÍ PRO: Python SDK azureml v1

Zjistěte, jak připojit výpočetní prostředky Azure k pracovnímu prostoru Azure Machine Learning pomocí sady SDK v1. Tyto prostředky pak můžete použít jako cíle trénování a odvozování výpočetních cílů ve vašich úlohách strojového učení.

V tomto článku se dozvíte, jak nastavit pracovní prostor tak, aby používal tyto výpočetní prostředky:

  • Místní počítač
  • Vzdálené virtuální počítače
  • Fondy Apache Sparku (využívající Azure Synapse Analytics)
  • Azure HDInsight
  • Azure Batch
  • Azure Databricks – používá se jako cíl trénování výpočetních prostředků pouze v kanálech strojového učení
  • Azure Data Lake Analytics
  • Azure Container Instance
  • Azure Machine Learning Kubernetes

Pokud chcete použít cílové výpočetní objekty spravované službou Azure Machine Learning, přečtěte si:

Důležité

Položky v tomto článku označené jako "Preview" jsou aktuálně ve verzi Public Preview. Verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučuje se pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Požadavky

Omezení

  • Nevytvávejte více souběžných příloh ke stejnému výpočetnímu prostředí z pracovního prostoru. Například připojení jednoho clusteru Azure Kubernetes Service k pracovnímu prostoru pomocí dvou různých názvů. Každá nová příloha přeruší předchozí existující přílohy.

    Pokud chcete znovu připojit cílový výpočetní objekt, například změnit nastavení konfigurace protokolu TLS nebo jiného clusteru, musíte nejprve odebrat existující přílohu.

Co je cílový výpočetní objekt?

Pomocí služby Azure Machine Learning můžete model trénovat na různých prostředcích nebo prostředích, které se souhrnně označují jako cílové výpočetní objekty. Cílovým výpočetním objektem může být místní počítač nebo cloudový prostředek, jako je výpočetní prostředí Azure Machine Learning, Azure HDInsight nebo vzdálený virtuální počítač. K nasazení modelu použijete také cílové výpočetní objekty, jak je popsáno v tématu "Kde a jak nasazovat modely".

Místní počítač

Pokud k trénování používáte místní počítač, není potřeba vytvořit cílový výpočetní objekt. Stačí odeslat trénovací běh z místního počítače.

Pokud k odvozování používáte místní počítač, musíte mít nainstalovaný Docker. K nasazení použijte LocalWebservice.deploy_configuration() k definování portu, který bude webová služba používat. Pak použijte normální proces nasazení, jak je popsáno v tématu Nasazení modelů pomocí služby Azure Machine Learning.

Vzdálené virtuální počítače

Azure Machine Learning také podporuje připojení virtuálního počítače Azure. Musí se jednat o Azure Data Science Virtual Machine (DSVM). Virtuální počítač nabízí kurátorovaný výběr nástrojů a architektur pro vývoj strojového učení v plném životním cyklu. Další informace o tom, jak používat DSVM se službou Azure Machine Learning, najdete v tématu Konfigurace vývojového prostředí.

Tip

Místo vzdáleného virtuálního počítače doporučujeme použít výpočetní instanci služby Azure Machine Learning. Jedná se o plně spravované cloudové výpočetní řešení, které je specifické pro službu Azure Machine Learning. Další informace najdete v tématu Vytvoření a správa výpočetní instance služby Azure Machine Learning.

  1. Vytvoření: Azure Machine Learning nemůže vytvořit vzdálený virtuální počítač za vás. Místo toho musíte vytvořit virtuální počítač a pak ho připojit k pracovnímu prostoru Azure Machine Learning. Informace o vytvoření DSVM najdete v tématu Zřízení virtuálního počítače Datová Věda pro Linux (Ubuntu).

    Upozorňující

    Azure Machine Learning podporuje jenom virtuální počítače, na kterých běží Ubuntu. Při vytváření virtuálního počítače nebo výběru stávajícího virtuálního počítače musíte vybrat virtuální počítač s Ubuntu.

    Azure Machine Learning také vyžaduje, aby virtuální počítač měl veřejnou IP adresu.

  2. Připojení: Pokud chcete připojit existující virtuální počítač jako cílový výpočetní objekt, musíte zadat ID prostředku, uživatelské jméno a heslo virtuálního počítače. ID prostředku virtuálního počítače je možné vytvořit pomocí ID předplatného, názvu skupiny prostředků a názvu virtuálního počítače pomocí následujícího formátu řetězce: /subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.Compute/virtualMachines/<vm_name>

    from azureml.core.compute import RemoteCompute, ComputeTarget
    
    # Create the compute config 
    compute_target_name = "attach-dsvm"
    
    attach_config = RemoteCompute.attach_configuration(resource_id='<resource_id>',
                                                    ssh_port=22,
                                                    username='<username>',
                                                    password="<password>")
    
    # Attach the compute
    compute = ComputeTarget.attach(ws, compute_target_name, attach_config)
    
    compute.wait_for_completion(show_output=True)
    

    Nebo můžete virtuální počítač pro datové vědy připojit k pracovnímu prostoru pomocí studio Azure Machine Learning.

    Upozorňující

    Nevytvávejte více souběžných příloh stejného DSVM z vašeho pracovního prostoru. Každá nová příloha přeruší předchozí existující přílohy.

  3. Konfigurace: Vytvořte konfiguraci spuštění pro cílový výpočetní objekt DSVM. Docker a Conda se používají k vytvoření a konfiguraci trénovacího prostředí na DSVM.

    from azureml.core import ScriptRunConfig
    from azureml.core.environment import Environment
    from azureml.core.conda_dependencies import CondaDependencies
    
    # Create environment
    myenv = Environment(name="myenv")
    
    # Specify the conda dependencies
    myenv.python.conda_dependencies = CondaDependencies.create(conda_packages=['scikit-learn'])
    
    # If no base image is explicitly specified the default CPU image "azureml.core.runconfig.DEFAULT_CPU_IMAGE" will be used
    # To use GPU in DSVM, you should specify the default GPU base Docker image or another GPU-enabled image:
    # myenv.docker.enabled = True
    # myenv.docker.base_image = azureml.core.runconfig.DEFAULT_GPU_IMAGE
    
    # Configure the run configuration with the Linux DSVM as the compute target and the environment defined above
    src = ScriptRunConfig(source_directory=".", script="train.py", compute_target=compute, environment=myenv) 
    

Tip

Pokud chcete odebrat (odpojit) virtuální počítač z pracovního prostoru, použijte metodu RemoteCompute.detach().

Azure Machine Learning neodstraní virtuální počítač za vás. Virtuální počítač musíte odstranit ručně pomocí webu Azure Portal, rozhraní příkazového řádku nebo sady SDK pro virtuální počítač Azure.

Fondy Apache Sparku

Integrace Azure Synapse Analytics se službou Azure Machine Learning (Preview) umožňuje připojit fond Apache Sparku, který podporuje Azure Synapse pro interaktivní zkoumání a přípravu dat. S touto integrací můžete mít vyhrazený výpočetní výkon pro transformaci dat ve velkém měřítku. Další informace najdete v tématu Připojení fondů Apache Spark využívajících Azure Synapse Analytics.

Azure HDInsight

Azure HDInsight je oblíbená platforma pro analýzu velkých objemů dat. Platforma poskytuje Apache Spark, který lze použít k trénování modelu.

  1. Vytvoření: Azure Machine Learning nemůže za vás vytvořit cluster HDInsight. Místo toho musíte cluster vytvořit sami a pak ho připojit ke svému pracovnímu prostoru Azure Machine Learning. Další informace najdete v tématu Vytvoření clusteru Spark ve službě HDInsight.

    Upozorňující

    Azure Machine Learning vyžaduje, aby měl cluster HDInsight veřejnou IP adresu.

    Při vytváření clusteru musíte zadat uživatelské jméno a heslo SSH. Poznamenejte si tyto hodnoty, protože je potřebujete k použití SLUŽBY HDInsight jako cílového výpočetního objektu.

    Po vytvoření clusteru se k němu připojte pomocí názvu hostitele clustername-ssh.azurehdinsight.net<>, kde <název clusteru je název clusteru>, který jste zadali pro cluster.

  2. Připojení: Pokud chcete připojit cluster HDInsight jako cílový výpočetní objekt, musíte zadat ID prostředku, uživatelské jméno a heslo clusteru HDInsight. ID prostředku clusteru HDInsight je možné vytvořit pomocí ID předplatného, názvu skupiny prostředků a názvu clusteru HDInsight pomocí následujícího formátu řetězce: /subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.HDInsight/clusters/<cluster_name>

    from azureml.core.compute import ComputeTarget, HDInsightCompute
    from azureml.exceptions import ComputeTargetException
    
    try:
    # if you want to connect using SSH key instead of username/password you can provide parameters private_key_file and private_key_passphrase
    
    attach_config = HDInsightCompute.attach_configuration(resource_id='<resource_id>',
                                                          ssh_port=22, 
                                                          username='<ssh-username>', 
                                                          password='<ssh-pwd>')
    hdi_compute = ComputeTarget.attach(workspace=ws, 
                                       name='myhdi', 
                                       attach_configuration=attach_config)
    
    except ComputeTargetException as e:
    print("Caught = {}".format(e.message))
    
    hdi_compute.wait_for_completion(show_output=True)
    

    Cluster HDInsight můžete také připojit k pracovnímu prostoru pomocí studio Azure Machine Learning.

    Upozorňující

    Nevytvávejte více souběžných příloh do stejné služby HDInsight z vašeho pracovního prostoru. Každá nová příloha přeruší předchozí existující přílohy.

  3. Konfigurace: Vytvořte konfiguraci spuštění pro cílový výpočetní objekt HDI.

    from azureml.core.runconfig import RunConfiguration
    from azureml.core.conda_dependencies import CondaDependencies
    
    
    # use pyspark framework
    run_hdi = RunConfiguration(framework="pyspark")
    
    # Set compute target to the HDI cluster
    run_hdi.target = hdi_compute.name
    
    # specify CondaDependencies object to ask system installing numpy
    cd = CondaDependencies()
    cd.add_conda_package('numpy')
    run_hdi.environment.python.conda_dependencies = cd
    

Tip

Pokud chcete z pracovního prostoru odebrat (odpojit) cluster HDInsight, použijte metodu HDInsightCompute.detach().

Azure Machine Learning neodstraní cluster HDInsight za vás. Musíte ho odstranit ručně pomocí webu Azure Portal, rozhraní příkazového řádku nebo sady SDK pro službu Azure HDInsight.

Azure Batch

Azure Batch se používá ke efektivnímu spouštění rozsáhlých paralelních a vysoce výkonných výpočetních aplikací (HPC) v cloudu. AzureBatchStep je možné použít v kanálu Azure Machine Learning k odesílání úloh do fondu počítačů Azure Batch.

Pokud chcete azure Batch připojit jako cílový výpočetní objekt, musíte použít sadu SDK služby Azure Machine Learning a zadat následující informace:

  • Název výpočetních prostředků služby Azure Batch: Popisný název, který se má použít pro výpočetní prostředky v rámci pracovního prostoru
  • Název účtu Azure Batch: Název účtu Azure Batch
  • Skupina prostředků: Skupina prostředků, která obsahuje účet Azure Batch.

Následující kód ukazuje, jak připojit službu Azure Batch jako cílový výpočetní objekt:

from azureml.core.compute import ComputeTarget, BatchCompute
from azureml.exceptions import ComputeTargetException

# Name to associate with new compute in workspace
batch_compute_name = 'mybatchcompute'

# Batch account details needed to attach as compute to workspace
batch_account_name = "<batch_account_name>"  # Name of the Batch account
# Name of the resource group which contains this account
batch_resource_group = "<batch_resource_group>"

try:
    # check if the compute is already attached
    batch_compute = BatchCompute(ws, batch_compute_name)
except ComputeTargetException:
    print('Attaching Batch compute...')
    provisioning_config = BatchCompute.attach_configuration(
        resource_group=batch_resource_group, account_name=batch_account_name)
    batch_compute = ComputeTarget.attach(
        ws, batch_compute_name, provisioning_config)
    batch_compute.wait_for_completion()
    print("Provisioning state:{}".format(batch_compute.provisioning_state))
    print("Provisioning errors:{}".format(batch_compute.provisioning_errors))

print("Using Batch compute:{}".format(batch_compute.cluster_resource_id))

Upozorňující

Nevytvávejte více souběžných příloh stejné služby Azure Batch z vašeho pracovního prostoru. Každá nová příloha přeruší předchozí existující přílohy.

Azure Databricks

Azure Databricks je prostředí založené na Apache Sparku v cloudu Azure. Můžete ji použít jako cílový výpočetní objekt v kanálu služby Azure Machine Learning.

Důležité

Azure Machine Learning nemůže vytvořit cílový výpočetní objekt Azure Databricks. Místo toho musíte vytvořit pracovní prostor Azure Databricks a pak ho připojit ke svému pracovnímu prostoru Azure Machine Learning. Informace o vytvoření prostředku pracovního prostoru najdete v dokumentu Spuštění úlohy Sparku v Azure Databricks.

Pokud chcete připojit pracovní prostor Azure Databricks z jiného předplatného Azure, musíte mít v pracovním prostoru Azure Databricks roli Přispěvatel (váš účet Microsoft Entra). Svůj přístup můžete zkontrolovat na webu Azure Portal.

Pokud chcete azure Databricks připojit jako cílový výpočetní objekt, zadejte následující informace:

  • Název výpočetních prostředků Databricks: Název, který chcete přiřadit k tomuto výpočetnímu prostředku.
  • Název pracovního prostoru Databricks: Název pracovního prostoru Azure Databricks.
  • Přístupový token Databricks: Přístupový token použitý k ověření v Azure Databricks. Pokud chcete vygenerovat přístupový token, přečtěte si dokument ověřování .

Následující kód ukazuje, jak připojit Azure Databricks jako cílový výpočetní objekt pomocí sady Azure Machine Learning SDK:

import os
from azureml.core.compute import ComputeTarget, DatabricksCompute
from azureml.exceptions import ComputeTargetException

databricks_compute_name = os.environ.get(
    "AML_DATABRICKS_COMPUTE_NAME", "<databricks_compute_name>")
databricks_workspace_name = os.environ.get(
    "AML_DATABRICKS_WORKSPACE", "<databricks_workspace_name>")
databricks_resource_group = os.environ.get(
    "AML_DATABRICKS_RESOURCE_GROUP", "<databricks_resource_group>")
databricks_access_token = os.environ.get(
    "AML_DATABRICKS_ACCESS_TOKEN", "<databricks_access_token>")

try:
    databricks_compute = ComputeTarget(
        workspace=ws, name=databricks_compute_name)
    print('Compute target already exists')
except ComputeTargetException:
    print('compute not found')
    print('databricks_compute_name {}'.format(databricks_compute_name))
    print('databricks_workspace_name {}'.format(databricks_workspace_name))
    print('databricks_access_token {}'.format(databricks_access_token))

    # Create attach config
    attach_config = DatabricksCompute.attach_configuration(resource_group=databricks_resource_group,
                                                           workspace_name=databricks_workspace_name,
                                                           access_token=databricks_access_token)
    databricks_compute = ComputeTarget.attach(
        ws,
        databricks_compute_name,
        attach_config
    )

    databricks_compute.wait_for_completion(True)

Podrobnější příklad najdete v ukázkovém poznámkovém bloku na GitHubu.

Upozorňující

Nevytvávejte více souběžných příloh ke stejnému Azure Databricks z vašeho pracovního prostoru. Každá nová příloha přeruší předchozí existující přílohy.

Azure Data Lake Analytics

Azure Data Lake Analytics je platforma pro analýzu velkých objemů dat v cloudu Azure. Můžete ji použít jako cílový výpočetní objekt v kanálu služby Azure Machine Learning.

Než budete moct použít účet služby Azure Data Lake Analytics, musíte ho nejprve vytvořit. Informace o vytvoření tohoto prostředku najdete v dokumentu Začínáme se službou Azure Data Lake Analytics.

Pokud chcete připojit Data Lake Analytics jako cílový výpočetní objekt, musíte použít sadu Azure Machine Learning SDK a zadat následující informace:

  • Název výpočetních prostředků: Název, který chcete přiřadit k tomuto výpočetnímu prostředku.
  • Skupina prostředků: Skupina prostředků, která obsahuje účet Data Lake Analytics.
  • Název účtu: Název účtu Data Lake Analytics.

Následující kód ukazuje, jak připojit Data Lake Analytics jako cílový výpočetní objekt:

import os
from azureml.core.compute import ComputeTarget, AdlaCompute
from azureml.exceptions import ComputeTargetException


adla_compute_name = os.environ.get(
    "AML_ADLA_COMPUTE_NAME", "<adla_compute_name>")
adla_resource_group = os.environ.get(
    "AML_ADLA_RESOURCE_GROUP", "<adla_resource_group>")
adla_account_name = os.environ.get(
    "AML_ADLA_ACCOUNT_NAME", "<adla_account_name>")

try:
    adla_compute = ComputeTarget(workspace=ws, name=adla_compute_name)
    print('Compute target already exists')
except ComputeTargetException:
    print('compute not found')
    print('adla_compute_name {}'.format(adla_compute_name))
    print('adla_resource_id {}'.format(adla_resource_group))
    print('adla_account_name {}'.format(adla_account_name))
    # create attach config
    attach_config = AdlaCompute.attach_configuration(resource_group=adla_resource_group,
                                                     account_name=adla_account_name)
    # Attach ADLA
    adla_compute = ComputeTarget.attach(
        ws,
        adla_compute_name,
        attach_config
    )

    adla_compute.wait_for_completion(True)

Podrobnější příklad najdete v ukázkovém poznámkovém bloku na GitHubu.

Upozorňující

Nevytvádejte z pracovního prostoru více souběžných příloh ke stejné ADLA. Každá nová příloha přeruší předchozí existující přílohy.

Tip

Kanály Služby Azure Machine Learning můžou pracovat jenom s daty uloženými ve výchozím úložišti dat účtu Data Lake Analytics. Pokud jsou data, se kterými potřebujete pracovat, v jiné než výchozím úložišti, můžete data před trénováním zkopírovat.DataTransferStep

Azure Container Instance

Azure Container Instances (ACI) se vytváří dynamicky při nasazování modelu. ACI nemůžete vytvořit ani připojit k pracovnímu prostoru jiným způsobem. Další informace najdete v tématu Nasazení modelu do služby Azure Container Instances.

Kubernetes

Azure Machine Learning nabízí možnost připojit vlastní clustery Kubernetes pro trénování a odvozování. Viz Konfigurace clusteru Kubernetes pro Azure Machine Learning.

K odpojení clusteru Kubernetes z pracovního prostoru použijte následující metodu:

compute_target.detach()

Upozorňující

Odpojení clusteru neodstraní. Pokud chcete odstranit cluster Azure Kubernetes Service, přečtěte si téma Použití Azure CLI s AKS. Pokud chcete odstranit cluster Kubernetes s podporou Azure Arc, přečtěte si rychlý start pro Azure Arc.

Příklady poznámkových bloků

Příklady trénování s různými cílovými výpočetními objekty najdete v těchto poznámkových blocích:

Postupujte podle pokynů v článku věnovaném využití poznámkových bloků Jupyter k prozkoumání této služby a zjistěte, jak provozovat poznámkové bloky.

Další kroky