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 trainings- of batchdeductieproces te distribueren over een cluster met CPU- of GPU-rekenknooppunten in de cloud. Zie VOOR 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
  • De kosten van uw rekencluster verlagen
  • 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 omhoog geschaald wanneer een taak wordt verzonden en kan worden geplaatst in een Azure-Virtual Network. Rekencluster biedt ook geen ondersteuning voor openbare IP-implementatie 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

  • Sommige van de scenario's die in dit document worden vermeld, zijn gemarkeerd als voorbeeld. Preview-functionaliteit wordt geleverd zonder service level agreement en wordt niet aanbevolen voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Supplemental Terms of Use for Microsoft Azure Previews (Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews) voor meer informatie.

  • Rekenclusters kunnen worden gemaakt in een andere regio dan uw werkruimte. Deze functionaliteit is in preview en is alleen beschikbaar voor rekenclusters, niet voor rekenprocessen. Deze preview is niet beschikbaar als u een werkruimte met privé-eindpunten gebruikt.

    Waarschuwing

    Wanneer u een rekencluster gebruikt in een andere regio 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 op het cluster.

  • We ondersteunen momenteel alleen het maken (en niet bijwerken) van clusters via ARM-sjablonen. Voor het bijwerken van rekenkracht raden we u aan om voorlopig de SDK, Azure CLI of UX te gebruiken.

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

  • Met Azure kunt u vergrendelingen voor 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.

Tip

Clusters kunnen over het algemeen omhoog worden geschaald naar 100 knooppunten, mits u voldoende quotum hebt voor het aantal vereiste kernen. Standaard worden clusters ingesteld met communicatie tussen knooppunten ingeschakeld tussen de knooppunten van het cluster om bijvoorbeeld MPI-taken te ondersteunen. U kunt uw clusters echter schalen naar 1000 knooppunten door gewoon een ondersteuningsticket in te dienen en een aanvraag in te dienen om 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, waarbij knooppunten automatisch omhoog of omlaag worden geschaald op basis van het aantal verzonden uitvoeringen en de max_nodes ingesteld op uw cluster. De instelling min_nodes bepaalt de minimaal beschikbare knooppunten.

De toegewezen kernen per regio per VM-familie en het totale regionale quotum, dat van toepassing is op het maken van rekenclusters, worden geïntegreerd en gedeeld met het quotum voor azure Machine Learning-trainings-rekeninstanties.

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 groter dan 0 zorgt ervoor dat dat aantal knooppunten actief blijft, zelfs als ze niet in gebruik zijn.

De berekening wordt automatisch omlaag geschaald naar nul knooppunten wanneer deze niet wordt gebruikt. Toegewezen VM's worden gemaakt om uw taken naar behoefte 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 met 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 een vaste grootte of binnen een bestaande Azure-Virtual Network in uw abonnement maken. Zie de klasse AmlCompute voor meer informatie.

Waarschuwing

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

De kosten van uw rekencluster verlagen

U kunt er ook voor kiezen om VM's met lage prioriteit te gebruiken om sommige of alle workloads uit te voeren. Deze VM's hebben geen gegarandeerde beschikbaarheid en kunnen worden afgekeerd terwijl ze in gebruik zijn. U moet een geprempteerde 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 slaan. 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 -exemplaar wordt verwijderd, worden de referenties en de identiteit in Azure AD 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 deze blijft zo lang behouden als u wilt. Deze beheerde identiteit moet van tevoren 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 die is 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, het containerregister en de gegevensarchieven van de gebruiker in te stellen.

    • In dit geval gebruikt het systeem de standaard beheerde identiteit.
  2. De gebruiker past een identiteit toe om toegang te krijgen 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 de Azure Portal vóór de GA-release, mogelijk geen AmlCompute in die werkruimte kunnen maken. U kunt een ondersteuningsaanvraag indienen bij 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 lijkt te zijn vastgelopen bij het wijzigen van de grootte (0 -> 0) voor de status van het knooppunt, kan dit worden veroorzaakt door Azure-resourcevergrendelingen.

Met Azure kunt u vergrendelingen voor 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 worden geblokkeerd door de vergrendeling.

Als u met Azure Machine Learning een verwijderingsvergrendeling toepast op de resourcegroep voor uw werkruimte, voorkomt u schaalbewerkingen voor Azure ML-rekenclusters. U kunt dit probleem omzeilen door de vergrendeling uit de resourcegroep te verwijderen en deze 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 met en bewerkingen uit te voeren, zoals schalen op, het rekencluster. Als u de resourcevergrendeling uit deze resources verwijdert, moet automatisch schalen voor uw rekenclusters mogelijk zijn.

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

Volgende stappen

Gebruik uw rekencluster voor het volgende: