Vytvoření výpočetního clusteru Azure Machine Učení pomocí rozhraní příkazového řádku v1

PLATÍ PRO:Rozšíření Azure CLI ml v1Python SDK azureml v1

Zjistěte, jak vytvořit a spravovat výpočetní cluster v pracovním prostoru Azure Machine Učení.

Pomocí výpočetního clusteru Azure Machine Učení můžete distribuovat proces trénování nebo dávkového odvozování napříč clusterem výpočetních uzlů procesoru nebo GPU v cloudu. Další informace o velikostech virtuálních počítačů, které obsahují GPU, najdete v tématu Velikosti virtuálních počítačů optimalizovaných pro GPU.

V tomto článku se dozvíte, jak:

  • Vytvoření výpočetního clusteru
  • Snížení nákladů na výpočetní cluster
  • Nastavení spravované identity pro cluster

Předpoklady

Co je výpočetní cluster?

Výpočetní cluster Azure Machine Učení je spravovaná výpočetní infrastruktura, která umožňuje snadno vytvořit výpočetní prostředky s jedním nebo více uzly. Výpočetní cluster je prostředek, který je možné sdílet s ostatními uživateli ve vašem pracovním prostoru. Výpočetní prostředky se automaticky škálují při odeslání úlohy a dají se umístit do služby Azure Virtual Network. Výpočetní cluster nepodporuje žádné nasazení veřejných IP adres ani ve virtuální síti. Výpočetní prostředí se spustí v kontejnerizovaném prostředí a zabalí závislosti modelu do kontejneru Dockeru.

Výpočetní clustery můžou bezpečně spouštět úlohy v prostředí virtuální sítě, aniž by podniky musely otevírat porty SSH. Úloha se spustí v kontejnerizovaném prostředí a zabalí závislosti modelu do kontejneru Dockeru.

Omezení

  • Výpočetní clustery je možné vytvořit v jiné oblasti a virtuální síti, než je váš pracovní prostor. Tato funkce je ale dostupná jenom pomocí sady SDK verze 2, rozhraní příkazového řádku 2 nebo studia. Další informace najdete ve verzi 2 zabezpečených trénovacích prostředí.

  • V současné době podporujeme vytváření (a neaktualizuje) clusterů prostřednictvím šablon ARM. Pro aktualizaci výpočetních prostředků doporučujeme prozatím používat sadu SDK, Azure CLI nebo UX.

  • Azure Machine Učení Compute má výchozí limity, například počet jader, která je možné přidělit. Další informace najdete v tématu Správa a vyžádání kvót pro prostředky Azure.

  • Azure umožňuje umístit zámky na prostředky, aby je nebylo možné odstranit nebo jsou jen pro čtení. Nepoužívejte zámky prostředků na skupinu prostředků, která obsahuje váš pracovní prostor. Použití zámku u skupiny prostředků, která obsahuje váš pracovní prostor, zabrání operacím škálování pro výpočetní clustery Azure Machine Učení. Další informace o uzamčení prostředků najdete v tématu Uzamčení prostředků, abyste zabránili neočekávaným změnám.

Tip

Clustery můžou obecně vertikálně navýšit kapacitu až na 100 uzlů, pokud máte dostatečnou kvótu pro požadovaný počet jader. Ve výchozím nastavení jsou clustery nastavené s povolenou komunikací mezi uzly mezi uzly clusteru, aby podporovaly například úlohy MPI. Clustery ale můžete škálovat na 1 000 uzlů tak, že jednoduše vytvoříte lístek podpory a požádáte o povolení výpisu předplatného nebo pracovního prostoru nebo konkrétního clusteru pro zakázání komunikace mezi uzly.

Vytvoření

Časový odhad: Přibližně 5 minut.

Azure Machine Učení Compute je možné opakovaně používat napříč běhy. Výpočetní prostředky je možné sdílet s ostatními uživateli v pracovním prostoru a zachovat mezi spuštěními, automaticky vertikálně navyšovat nebo snížit kapacitu uzlů na základě počtu odeslaných spuštění a max_nodes nastavené v clusteru. Nastavení min_nodes řídí minimální dostupné uzly.

Vyhrazená jádra na oblast na řadu virtuálních počítačů a celková kvóta pro oblast, která se vztahuje na vytvoření výpočetního clusteru, je jednotná a sdílená se službou Azure Machine Učení trénovací kvótou výpočetní instance.

Důležité

Pokud se chcete vyhnout poplatkům, pokud nejsou spuštěné žádné úlohy, nastavte minimální počet uzlů na 0. Toto nastavení umožňuje službě Azure Machine Učení zrušit přidělení uzlů, když se nepoužívají. Jakákoli hodnota větší než 0 zachová tento počet uzlů spuštěných, i když se nepoužívají.

Pokud se výpočetní prostředky nepoužívají, automaticky se škáluje na nula uzlů. Vyhrazené virtuální počítače se vytvoří pro spouštění úloh podle potřeby.

Pokud chcete vytvořit trvalý prostředek Azure Machine Učení Compute v Pythonu, zadejte vm_size a max_nodes vlastnosti. Azure Machine Učení pak pro ostatní vlastnosti používá inteligentní výchozí hodnoty.

  • vm_size: Řada virtuálních počítačů uzlů vytvořených službou Azure Machine Učení Compute.
  • max_nodes: Maximální počet uzlů pro automatické škálování až při spuštění úlohy na počítači Azure Učení Compute.

PLATÍ PRO:Python SDK azureml v1

from azureml.core.compute import ComputeTarget, AmlCompute
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your CPU cluster
cpu_cluster_name = "cpucluster"

# Verify that cluster does not exist already
try:
    cpu_cluster = ComputeTarget(workspace=ws, name=cpu_cluster_name)
    print('Found existing cluster, use it.')
except ComputeTargetException:
    # To use a different region for the compute, add a location='<region>' parameter
    compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                           max_nodes=4)
    cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)

cpu_cluster.wait_for_completion(show_output=True)

Při vytváření služby Azure Machine Učení Compute můžete také nakonfigurovat několik pokročilých vlastností. Vlastnosti umožňují vytvořit trvalý cluster s pevnou velikostí nebo v rámci existující virtuální sítě Azure ve vašem předplatném. Podrobnosti najdete v třídě AmlCompute.

Upozorňující

Při nastavování parametru location , pokud se jedná o jinou oblast než pracovní prostor nebo úložiště dat, může se zobrazit vyšší latence sítě a náklady na přenos dat. Latence a náklady můžou nastat při vytváření clusteru a při spouštění úloh.

Snížení nákladů na výpočetní cluster

K provozování některých nebo všech úloh můžete také použít virtuální počítače s nízkou prioritou. Tyto virtuální počítače nemají zaručenou dostupnost a mohou být při použití předem zrušeny. Budete muset restartovat předem zatěžovanou úlohu.

PLATÍ PRO:Python SDK azureml v1

compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                            vm_priority='lowpriority',
                                                            max_nodes=4)

Nastavení spravované identity

Výpočetní clustery Azure machine Učení podporují také spravované identity pro ověřování přístupu k prostředkům Azure bez zahrnutí přihlašovacích údajů do kódu. Existují dva typy spravovaných identit:

  • Spravovaná identita přiřazená systémem je povolená přímo na počítači Azure Učení výpočetním clusteru a výpočetní instanci. Životní cyklus identity přiřazené systémem je přímo svázaný s výpočetním clusterem nebo instancí. Pokud se výpočetní cluster nebo instance odstraní, Azure automaticky vyčistí přihlašovací údaje a identitu v Microsoft Entra ID.
  • Spravovaná identita přiřazená uživatelem je samostatný prostředek Azure poskytovaný prostřednictvím služby Azure Managed Identity. Spravovanou identitu přiřazenou uživatelem můžete přiřadit k více prostředkům a zachovají se tak dlouho, jak chcete. Tuto spravovanou identitu je potřeba vytvořit předem a pak ji předat jako identity_id jako povinný parametr.

PLATÍ PRO:Python SDK azureml v1

  • Konfigurace spravované identity v konfiguraci zřizování:

    • Spravovaná identita přiřazená systémem vytvořená v pracovním prostoru s názvem ws

      # configure cluster with a system-assigned managed identity
      compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                              max_nodes=5,
                                                              identity_type="SystemAssigned",
                                                              )
      cpu_cluster_name = "cpu-cluster"
      cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)
      
    • Spravovaná identita přiřazená uživatelem vytvořená v pracovním prostoru s názvem ws

      # configure cluster with a user-assigned managed identity
      compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
                                                              max_nodes=5,
                                                              identity_type="UserAssigned",
                                                              identity_id=['/subscriptions/<subcription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user_assigned_identity>'])
      
      cpu_cluster_name = "cpu-cluster"
      cpu_cluster = ComputeTarget.create(ws, cpu_cluster_name, compute_config)
      
  • Přidání spravované identity do existujícího výpočetního clusteru s názvem cpu_cluster

    • Spravovaná identita přiřazená systémem:

      # add a system-assigned managed identity
      cpu_cluster.add_identity(identity_type="SystemAssigned")
      
    • Spravovaná identita přiřazená uživatelem:

      # add a user-assigned managed identity
      cpu_cluster.add_identity(identity_type="UserAssigned", 
                                  identity_id=['/subscriptions/<subcription_id>/resourcegroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user_assigned_identity>'])
      

Poznámka:

Výpočetní clustery Azure Machine Učení podporují pouze jednu identitu přiřazenou systémem nebo více identit přiřazených uživatelem, nikoli současně.

Využití spravované identity

Výchozí spravovaná identita je spravovaná identita přiřazená systémem nebo první spravovaná identita přiřazená uživatelem.

Během spuštění existují dvě aplikace identity:

  1. Systém používá identitu k nastavení připojení úložiště uživatele, registru kontejnerů a úložišť dat.

    • V tomto případě systém použije výchozí spravovanou identitu.
  2. Uživatel použije identitu pro přístup k prostředkům z kódu pro odeslané spuštění.

    • V tomto případě zadejte client_id odpovídající spravované identitě, kterou chcete použít k načtení přihlašovacích údajů.
    • Případně získejte ID klienta identity přiřazené uživatelem prostřednictvím proměnné prostředí DEFAULT_IDENTITY_CLIENT_ID .

    Pokud například chcete načíst token úložiště dat s výchozí spravovanou identitou:

    client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
    credential = ManagedIdentityCredential(client_id=client_id)
    token = credential.get_token('https://storage.azure.com/')
    

Řešení problému

Je možné, že někteří uživatelé, kteří vytvořili pracovní prostor Azure Machine Učení z webu Azure Portal před vydáním ga, nemusí v daném pracovním prostoru vytvářet AmlCompute. Můžete buď vytvořit žádost o podporu pro službu, nebo vytvořit nový pracovní prostor prostřednictvím portálu nebo sady SDK a okamžitě se odblokovat.

Zablokovaný při změně velikosti

Pokud se výpočetní cluster Azure Učení zobrazí zablokovaný při změně velikosti (0–>0) stavu uzlu, příčinou můžou být zámky prostředků Azure.

Azure umožňuje umístit zámky na prostředky, aby je nebylo možné odstranit nebo jsou jen pro čtení. Uzamčení prostředku může vést k neočekávaným výsledkům. Některé operace, u kterých se zdá, že prostředek neupravují, ve skutečnosti vyžadují akce, které zámek zablokuje.

Když Učení Azure Machine, použití zámku odstranění u skupiny prostředků pro váš pracovní prostor zabrání operacím škálování výpočetních clusterů Azure ML. Pokud chcete tento problém obejít, doporučujeme odebrat zámek ze skupiny prostředků a místo toho ho použít u jednotlivých položek ve skupině.

Důležité

Zámek nepoužívejte u následujících prostředků:

Název prostředku Typ prostředku
<GUID>-azurebatch-cloudservicenetworksecurityggroup Skupina zabezpečení sítě
<GUID>-azurebatch-cloudservicepublicip Veřejná IP adresa
<GUID>-azurebatch-cloudserviceloadbalancer Load Balancer

Tyto prostředky se používají ke komunikaci s výpočetním clusterem a provádějí operace, jako je škálování na výpočetní cluster. Odebrání zámku prostředku z těchto prostředků by mělo umožňovat automatické škálování výpočetních clusterů.

Další informace o uzamčení prostředků najdete v tématu Uzamčení prostředků, abyste zabránili neočekávaným změnám.

Další kroky

Pomocí výpočetního clusteru můžete: