Dela via


Skapa ett Azure Machine Learning-beräkningskluster med CLI v1

GÄLLER FÖR:Azure CLI ml-tillägget v1Python SDK azureml v1

Lär dig hur du skapar och hanterar ett beräkningskluster på din Azure Machine Learning-arbetsyta.

Du kan använda Azure Machine Learning-beräkningskluster för att distribuera en tränings- eller batchinferensprocess över ett kluster med CPU- eller GPU-beräkningsnoder i molnet. Mer information om vm-storlekar som innehåller GPU:er finns i GPU-optimerade storlekar för virtuella datorer.

I den här artikeln lär du dig att:

  • Skapa ett beräkningskluster
  • Sänka kostnaden för beräkningsklustret
  • Konfigurera en hanterad identitet för klustret

Förutsättningar

Vad är ett beräkningskluster?

Azure Machine Learning-beräkningskluster är en infrastruktur för hanterad beräkning som gör att du enkelt kan skapa en beräkning med en enda eller flera noder. Beräkningsklustret är en resurs som kan delas med andra användare på din arbetsyta. Beräkningen skalas upp automatiskt när ett jobb skickas och kan placeras i ett virtuellt Azure-nätverk. Beräkningsklustret har inte stöd för någon offentlig IP-distribution och i det virtuella nätverket. Beräkningen körs i en containerbaserad miljö och paketera dina modellberoenden i en Docker-container.

Beräkningskluster kan köra jobb på ett säkert sätt i en virtuell nätverksmiljö, utan att företag behöver öppna SSH-portar. Jobbet körs i en containerbaserad miljö och paketera dina modellberoenden i en Docker-container.

Begränsningar

  • Beräkningskluster kan skapas i en annan region och ett virtuellt nätverk än din arbetsyta. Den här funktionen är dock endast tillgänglig med hjälp av SDK v2, CLI v2 eller studio. Mer information finns i v2-versionen av säkra träningsmiljöer.

  • Vi stöder för närvarande endast skapande (och inte uppdatering) av kluster via ARM-mallar. För att uppdatera beräkning rekommenderar vi att du använder SDK, Azure CLI eller UX för tillfället.

  • Azure Machine Learning Compute har standardgränser, till exempel antalet kärnor som kan allokeras. Mer information finns i Hantera och begära kvoter för Azure-resurser.

  • Med Azure kan du placera lås på resurser så att de inte kan tas bort eller är skrivskyddade. Använd inte resurslås för den resursgrupp som innehåller din arbetsyta. Om du tillämpar ett lås på resursgruppen som innehåller din arbetsyta förhindrar du skalningsåtgärder för Azure Machine Learning-beräkningskluster. Mer information om hur du låser resurser finns i Lås resurser för att förhindra oväntade ändringar.

Dricks

Kluster kan vanligtvis skala upp till 100 noder så länge du har tillräckligt med kvot för det antal kärnor som krävs. Som standard konfigureras kluster med kommunikation mellan noder aktiverad mellan noderna i klustret för att till exempel stödja MPI-jobb. Du kan dock skala dina kluster till 1000-talet noder genom att bara skapa ett supportärende och begära att listan över din prenumeration eller arbetsyta ska tillåtas eller ett specifikt kluster för inaktivering av kommunikation mellan noder.

Skapa

Tidsuppskattning: Cirka 5 minuter.

Azure Machine Learning Compute kan återanvändas mellan körningar. Beräkningen kan delas med andra användare på arbetsytan och behålls mellan körningar, automatiskt skala upp eller ned noder baserat på antalet skickade körningar och max_nodes anges i klustret. Inställningen min_nodes styr de minsta tillgängliga noderna.

De dedikerade kärnorna per region per VM-familjekvot och total regional kvot, som gäller för skapande av beräkningskluster, är enhetliga och delas med kvoten för Azure Machine Learning-träningsberäkningsinstanser.

Viktigt!

Om du vill undvika avgifter när inga jobb körs anger du miniminoderna till 0. Med den här inställningen kan Azure Machine Learning avallokera noderna när de inte används. Alla värden som är större än 0 håller det antalet noder igång, även om de inte används.

Beräkningen skalas automatiskt ned till noll noder när den inte används. Dedikerade virtuella datorer skapas för att köra dina jobb efter behov.

Om du vill skapa en beständig Azure Machine Learning Compute-resurs i Python anger du egenskaperna vm_size och max_nodes . Azure Machine Learning använder sedan smarta standardvärden för de andra egenskaperna.

  • vm_size: Den virtuella datorfamiljen för noderna som skapats av Azure Machine Learning Compute.
  • max_nodes: Det maximala antalet noder som ska skalas upp automatiskt till när du kör ett jobb på Azure Machine Learning Compute.

GÄLLER FÖR: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)

Du kan också konfigurera flera avancerade egenskaper när du skapar Azure Machine Learning Compute. Med egenskaperna kan du skapa ett beständigt kluster med fast storlek eller inom ett befintligt Virtuellt Azure-nätverk i din prenumeration. Mer information finns i klassen AmlCompute.

Varning

Om det är en annan region än din arbetsyta eller dina datalager när du anger parametern location kan du se ökade kostnader för nätverksfördröjning och dataöverföring. Svarstiden och kostnaderna kan uppstå när klustret skapas och när jobb körs på det.

Sänka kostnaden för beräkningsklustret

Du kan också välja att använda virtuella datorer med låg prioritet för att köra vissa eller alla dina arbetsbelastningar. Dessa virtuella datorer har inte garanterad tillgänglighet och kan föregripas när de används. Du måste starta om ett förinställt jobb.

GÄLLER FÖR:Python SDK azureml v1

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

Konfigurera hanterad identitet

Azure Machine Learning-beräkningskluster stöder även hanterade identiteter för att autentisera åtkomst till Azure-resurser utan att inkludera autentiseringsuppgifter i koden. Det finns två typer av hanterade identiteter:

  • En systemtilldelad hanterad identitet aktiveras direkt i Azure Machine Learning-beräkningsklustret och beräkningsinstansen. Livscykeln för en systemtilldelad identitet är direkt kopplad till beräkningsklustret eller instansen. Om beräkningsklustret eller instansen tas bort rensar Azure automatiskt autentiseringsuppgifterna och identiteten i Microsoft Entra-ID:t.
  • En användartilldelad hanterad identitet är en fristående Azure-resurs som tillhandahålls via Azure Managed Identity Service. Du kan tilldela en användartilldelad hanterad identitet till flera resurser och den bevaras så länge du vill. Den här hanterade identiteten måste skapas i förväg och skickas sedan som identity_id som en obligatorisk parameter.

GÄLLER FÖR:Python SDK azureml v1

  • Konfigurera hanterad identitet i etableringskonfigurationen:

    • Systemtilldelad hanterad identitet som skapats på en arbetsyta med namnet 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)
      
    • Användartilldelad hanterad identitet som skapats på en arbetsyta med namnet 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)
      
  • Lägga till hanterad identitet i ett befintligt beräkningskluster med namnet cpu_cluster

    • Systemtilldelad hanterad identitet:

      # add a system-assigned managed identity
      cpu_cluster.add_identity(identity_type="SystemAssigned")
      
    • Användartilldelad hanterad identitet:

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

Kommentar

Azure Machine Learning-beräkningskluster stöder endast en systemtilldelad identitet eller flera användartilldelade identiteter, inte båda samtidigt.

Hanterad identitetsanvändning

Standardhanterad identitet är den systemtilldelade hanterade identiteten eller den första användartilldelade hanterade identiteten.

Under en körning finns det två program med en identitet:

  1. Systemet använder en identitet för att konfigurera användarens lagringsmonteringar, containerregister och datalager.

    • I det här fallet använder systemet den standardhanterade identiteten.
  2. Användaren tillämpar en identitet för att komma åt resurser inifrån koden för en skickad körning

    • I det här fallet anger du den client_id som motsvarar den hanterade identitet som du vill använda för att hämta en autentiseringsuppgift.
    • Du kan också hämta den användartilldelade identitetens klient-ID via DEFAULT_IDENTITY_CLIENT_ID miljövariabeln.

    Om du till exempel vill hämta en token för ett datalager med den standardhanterade identiteten:

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

Felsökning

Det finns en chans att vissa användare som har skapat sin Azure Machine Learning-arbetsyta från Azure-portalen innan GA-versionen kanske inte kan skapa AmlCompute på den arbetsytan. Du kan antingen skapa en supportbegäran mot tjänsten eller skapa en ny arbetsyta via portalen eller SDK för att avblockera dig själv omedelbart.

Fastnade vid storleksändring

Om ditt Azure Machine Learning-beräkningskluster verkar ha fastnat vid storleksändring (0–> 0) för nodtillståndet kan detta orsakas av Azure-resurslås.

Med Azure kan du placera lås på resurser så att de inte kan tas bort eller är skrivskyddade. Att låsa en resurs kan leda till oväntade resultat. Vissa åtgärder som inte verkar ändra resursen kräver i själva verket åtgärder som blockeras av låset.

Med Azure Machine Learning förhindrar användning av ett borttagningslås till resursgruppen för din arbetsyta skalningsåtgärder för Azure ML-beräkningskluster. För att undvika det här problemet rekommenderar vi att du tar bort låset från resursgruppen och i stället tillämpar det på enskilda objekt i gruppen.

Viktigt!

Använd inte låset på följande resurser:

Resursnamn Resurstyp
<GUID>-azurebatch-cloudservicenetworksecurityggroup Nätverkssäkerhetsgrupp
<GUID>-azurebatch-cloudservicepublicip Offentlig IP-adress
<GUID>-azurebatch-cloudserviceloadbalancer Lastbalanserare

Dessa resurser används för att kommunicera med och utföra åtgärder som att skala på beräkningsklustret. Om du tar bort resurslåset från dessa resurser bör du tillåta automatisk skalning för dina beräkningskluster.

Mer information om resurslåsning finns i Lås resurser för att förhindra oväntade ändringar.

Nästa steg

Använd beräkningsklustret för att: