Share via


Een Azure Machine Learning-rekencluster maken met CLI v1

VAN TOEPASSING OP: Azure CLI ml-extensie v1Python SDK azureml v1

Meer informatie over het maken en beheren van een rekencluster in uw Azure Machine Learning-werkruimte.

U kunt een Azure Machine Learning-rekencluster gebruiken om een training of batchdeductieproces te distribueren over een cluster met CPU- of GPU-rekenknooppunten in de cloud. Zie GPU-geoptimaliseerde vm-grootten voor meer informatie over de VM-grootten die GPU's bevatten.

In dit artikel leert u het volgende:

  • Een rekencluster maken
  • Verlaag de kosten van uw rekencluster
  • Een beheerde identiteit instellen voor het cluster

Vereisten

Wat is een rekencluster?

Azure Machine Learning-rekencluster is een beheerde-rekeninfrastructuur waarmee u eenvoudig een rekenproces met één of meerdere knooppunten kunt maken. Het rekencluster is een resource die kan worden gedeeld met andere gebruikers in uw werkruimte. De rekenkracht wordt automatisch opgeschaald wanneer een taak wordt verzonden en kan worden geplaatst in een virtueel Azure-netwerk. Rekencluster ondersteunt geen openbare IP-implementatie en ook in een virtueel netwerk. De berekening wordt uitgevoerd in een containeromgeving en verpakt uw modelafhankelijkheden in een Docker-container.

Rekenclusters kunnen taken veilig uitvoeren in een virtuele netwerkomgeving, zonder dat ondernemingen SSH-poorten hoeven te openen. De taak wordt uitgevoerd in een containeromgeving en verpakt uw modelafhankelijkheden in een Docker-container.

Beperkingen

  • Rekenclusters kunnen worden gemaakt in een andere regio en VNet dan uw werkruimte. Deze functionaliteit is echter alleen beschikbaar met behulp van de SDK v2, CLI v2 of studio. Zie de v2-versie van beveiligde trainingsomgevingen voor meer informatie.

  • Momenteel wordt alleen ondersteuning geboden voor het maken (en niet bijwerken) van clusters via ARM-sjablonen. Voor het bijwerken van rekenkracht raden we u aan de SDK, Azure CLI of UX voorlopig te gebruiken.

  • Azure Machine Learning Compute heeft standaardlimieten, zoals het aantal kernen dat kan worden toegewezen. Zie Quota beheren en aanvragen voor Azure-resources voor meer informatie.

  • Met Azure kunt u vergrendelingen op resources plaatsen, zodat ze niet kunnen worden verwijderd of alleen-lezen zijn. Pas geen resourcevergrendelingen toe op de resourcegroep die uw werkruimte bevat. Als u een vergrendeling toepast op de resourcegroep die uw werkruimte bevat, voorkomt u schaalbewerkingen voor Azure Machine Learning-rekenclusters. Zie Resources vergrendelen om onverwachte wijzigingen te voorkomen voor meer informatie over het vergrendelen van resources.

Fooi

Clusters kunnen over het algemeen maximaal 100 knooppunten schalen zolang u voldoende quotum hebt voor het aantal vereiste kernen. Clusters worden standaard ingesteld met communicatie tussen knooppunten tussen de knooppunten van het cluster ter ondersteuning van MPI-taken, bijvoorbeeld. U kunt uw clusters echter schalen naar 1000 knooppunten door gewoon een ondersteuningsticket op te vragen en een lijst met uw abonnement of werkruimte of een specifiek cluster toe te staan om communicatie tussen knooppunten uit te schakelen.

Maken

Geschatte tijd: ongeveer 5 minuten.

Azure Machine Learning Compute kan opnieuw worden gebruikt voor uitvoeringen. De berekening kan worden gedeeld met andere gebruikers in de werkruimte en wordt bewaard tussen uitvoeringen, knooppunten automatisch omhoog of omlaag schalen op basis van het aantal verzonden uitvoeringen en de max_nodes ingesteld op uw cluster. De min_nodes-instelling bepaalt de minimale beschikbare knooppunten.

De toegewezen kernen per regio per VM-familiequotum en het totale regionale quotum, dat van toepassing is op het maken van rekenclusters, wordt geïntegreerd en gedeeld met het quotum voor rekeninstanties van Azure Machine Learning-training.

Belangrijk

Als u kosten wilt voorkomen wanneer er geen taken worden uitgevoerd, stelt u de minimale knooppunten in op 0. Met deze instelling kan Azure Machine Learning de toewijzing van de knooppunten ongedaan maken wanneer ze niet in gebruik zijn. Elke waarde die groter is dan 0 houdt dat aantal knooppunten actief, zelfs als ze niet in gebruik zijn.

De berekening wordt automatisch geschaald naar nul knooppunten wanneer deze niet wordt gebruikt. Toegewezen VM's worden zo nodig gemaakt om uw taken uit te voeren.

Als u een permanente Azure Machine Learning Compute-resource in Python wilt maken, geeft u de eigenschappen vm_size en max_nodes op. Azure Machine Learning gebruikt vervolgens slimme standaardinstellingen voor de andere eigenschappen.

  • vm_size: de VM-familie van de knooppunten die zijn gemaakt door Azure Machine Learning Compute.
  • max_nodes: het maximum aantal knooppunten dat automatisch moet worden geschaald wanneer u een taak uitvoert op Azure Machine Learning Compute.

VAN TOEPASSING OP: 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)

U kunt ook verschillende geavanceerde eigenschappen configureren wanneer u Azure Machine Learning Compute maakt. Met de eigenschappen kunt u een permanent cluster met vaste grootte of binnen een bestaand Virtueel Azure-netwerk in uw abonnement maken. Zie de klasse AmlCompute voor meer informatie.

Waarschuwing

Bij het instellen van de location parameter, als deze een andere regio is dan uw werkruimte of gegevensarchieven, ziet u mogelijk hogere netwerklatentie en kosten voor gegevensoverdracht. De latentie en kosten kunnen optreden bij het maken van het cluster en bij het uitvoeren van taken.

Verlaag de kosten van uw rekencluster

U kunt er ook voor kiezen om vm's met lage prioriteit te gebruiken om sommige of al uw workloads uit te voeren. Deze VM's hebben geen gegarandeerde beschikbaarheid en worden mogelijk in gebruik. U moet een preempted taak opnieuw starten.

VAN TOEPASSING OP: Python SDK azureml v1

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

Beheerde identiteit instellen

Azure Machine Learning-rekenclusters ondersteunen ook beheerde identiteiten om toegang tot Azure-resources te verifiëren zonder referenties in uw code op te geven. Er zijn twee typen beheerde identiteit:

  • Een door het systeem toegewezen beheerde identiteit wordt rechtstreeks ingeschakeld op het Azure Machine Learning-rekencluster en het rekenproces. De levenscyclus van een door het systeem toegewezen identiteit is rechtstreeks gekoppeld aan het rekencluster of exemplaar. Als het rekencluster of het rekenproces wordt verwijderd, worden de referenties en de identiteit in Microsoft Entra-id automatisch opgeschoond.
  • Een door de gebruiker toegewezen beheerde identiteit is een zelfstandige Azure-resource die wordt geleverd via de Azure Managed Identity-service. U kunt een door de gebruiker toegewezen beheerde identiteit toewijzen aan meerdere resources en blijft zolang u wilt. Deze beheerde identiteit moet vooraf worden gemaakt en vervolgens worden doorgegeven als de identity_id als een vereiste parameter.

VAN TOEPASSING OP: Python SDK azureml v1

  • Beheerde identiteit configureren in uw inrichtingsconfiguratie:

    • Door het systeem toegewezen beheerde identiteit die is gemaakt in een werkruimte met de naam 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)
      
    • Door de gebruiker toegewezen beheerde identiteit gemaakt in een werkruimte met de naam 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)
      
  • Beheerde identiteit toevoegen aan een bestaand rekencluster met de naam cpu_cluster

    • Door het systeem toegewezen beheerde identiteit:

      # add a system-assigned managed identity
      cpu_cluster.add_identity(identity_type="SystemAssigned")
      
    • Door de gebruiker toegewezen beheerde identiteit:

      # 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>'])
      

Notitie

Azure Machine Learning-rekenclusters ondersteunen slechts één door het systeem toegewezen identiteit of meerdere door de gebruiker toegewezen identiteiten, niet beide gelijktijdig.

Gebruik van beheerde identiteit

De standaard beheerde identiteit is de door het systeem toegewezen beheerde identiteit of de eerste door de gebruiker toegewezen beheerde identiteit.

Tijdens een uitvoering zijn er twee toepassingen van een identiteit:

  1. Het systeem gebruikt een identiteit om de opslagkoppelingen van de gebruiker, containerregister en gegevensarchieven in te stellen.

    • In dit geval gebruikt het systeem de standaard beheerde identiteit.
  2. De gebruiker past een identiteit toe voor toegang tot resources vanuit de code voor een verzonden uitvoering

    • Geef in dit geval de client_id op die overeenkomt met de beheerde identiteit die u wilt gebruiken om een referentie op te halen.
    • U kunt ook de client-id van de door de gebruiker toegewezen identiteit ophalen via de omgevingsvariabele DEFAULT_IDENTITY_CLIENT_ID .

    Als u bijvoorbeeld een token wilt ophalen voor een gegevensarchief met de standaard beheerde identiteit:

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

Problemen oplossen

Er is een kans dat sommige gebruikers die hun Azure Machine Learning-werkruimte hebben gemaakt vanuit Azure Portal voordat de ALGEMENE beschikbaarheidsrelease AmlCompute mogelijk niet in die werkruimte kan maken. U kunt een ondersteuningsaanvraag indienen voor de service of een nieuwe werkruimte maken via de portal of de SDK om uzelf onmiddellijk te deblokkeren.

Vastgelopen bij het wijzigen van het formaat

Als uw Azure Machine Learning-rekencluster vastloopt bij het wijzigen van de grootte (0 -> 0) voor de knooppuntstatus, kan dit worden veroorzaakt door Azure-resourcevergrendelingen.

Met Azure kunt u vergrendelingen op resources plaatsen, zodat ze niet kunnen worden verwijderd of alleen-lezen zijn. Het vergrendelen van een resource kan leiden tot onverwachte resultaten. Voor sommige bewerkingen die de resource niet lijken te wijzigen, zijn acties vereist die door de vergrendeling onmogelijk zijn.

Met Azure Machine Learning voorkomt het toepassen van een verwijderingsvergrendeling op de resourcegroep voor uw werkruimte schaalbewerkingen voor Azure ML-rekenclusters. Als u dit probleem wilt omzeilen, raden we u aan de vergrendeling van de resourcegroep te verwijderen en in plaats daarvan toe te passen op afzonderlijke items in de groep.

Belangrijk

Pas de vergrendeling niet toe op de volgende resources:

Resourcenaam Resourcetype
<GUID>-azurebatch-cloudservicenetworksecurityggroup Netwerkbeveiligingsgroep
<GUID>-azurebatch-cloudservicepublicip Openbaar IP-adres
<GUID>-azurebatch-cloudserviceloadbalancer Load balancer

Deze resources worden gebruikt om te communiceren en bewerkingen uit te voeren zoals schalen op het rekencluster. Als u de resourcevergrendeling van deze resources verwijdert, moet automatisch schalen voor uw rekenclusters zijn toegestaan.

Zie Resources vergrendelen om onverwachte wijzigingen te voorkomen voor meer informatie over het vergrendelen van resources.

Volgende stappen

Gebruik uw rekencluster om het volgende te doen: