Skapa ett Azure Machine Learning-beräkningskluster

GÄLLER FÖR:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (aktuell)

Den här artikeln beskriver 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.

Lär dig att:

  • Skapa ett beräkningskluster.
  • Sänk kostnaden för beräkningsklustret med lågprioriterade virtuella datorer.
  • Konfigurera en hanterad identitet för klustret.

Kommentar

I stället för att skapa ett beräkningskluster använder du serverlös beräkning för att avlasta hantering av beräkningslivscykel till Azure Machine Learning.

Förutsättningar

Välj lämplig flik för resten av förutsättningarna baserat på önskad metod för att skapa beräkningsklustret.

  • Om du inte kör koden på en beräkningsinstans installerar du Azure Machine Learning Python SDK. Denna SDK är redan installerad åt dig på en beräkningsinstans.

  • Koppla till arbetsytan i Python-skriptet:

    Kör den här koden för att ansluta till din Azure Machine Learning-arbetsyta.

    Ersätt ditt prenumerations-ID, resursgruppsnamn och arbetsytenamn i följande kod. Så här hittar du följande värden:

    1. Logga in på Azure Machine Learning-studio.
    2. Öppna den arbetsyta som du vill använda.
    3. Välj namnet på arbetsytan i det övre högra Azure Machine Learning-studio verktygsfältet.
    4. Kopiera värdet för arbetsyta, resursgrupp och prenumerations-ID till koden.

    GÄLLER FÖR: Python SDK azure-ai-ml v2 (aktuell)

    # Enter details of your AML workspace
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    workspace = "<AML_WORKSPACE_NAME>"
    # get a handle to the workspace
    from azure.ai.ml import MLClient
    from azure.identity import DefaultAzureCredential
    
    ml_client = MLClient(
        DefaultAzureCredential(), subscription_id, resource_group, workspace
    )

    ml_client är en hanterare för den arbetsyta som du använder för att hantera andra resurser och jobb.

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 antingen ett hanterat virtuellt nätverk eller i ett virtuellt Azure-nätverk, 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 än din arbetsyta. Den här funktionen är endast tillgänglig för beräkningskluster, inte beräkningsinstanser.

    Varning

    När du använder ett beräkningskluster i en annan region än din arbetsyta eller dina datalager 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.

  • 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.

Skapa

Tidsuppskattning: Cirka fem minuter.

Kommentar

Om du använder serverlös beräkning behöver du inte skapa ett beräkningskluster.

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 uppsättningen 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.

Använd följande exempel för att skapa ett beräkningskluster:

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

  • storlek: Den virtuella datorfamiljen för noderna som skapats av Azure Machine Learning Compute.
  • max_instances: 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 azure-ai-ml v2 (aktuell)

from azure.ai.ml.entities import AmlCompute

cluster_basic = AmlCompute(
    name="basic-example",
    type="amlcompute",
    size="STANDARD_DS3_v2",
    location="westus",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
)
ml_client.begin_create_or_update(cluster_basic).result()

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 det uppstå ö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 med lågprioriterade virtuella datorer

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.

Med hjälp av virtuella Azure-datorer med låg prioritet kan du dra nytta av Azures outnyttjade kapacitet till betydande kostnadsbesparingar. När som helst när Azure behöver tillbaka kapaciteten avlägsnar Azure-infrastrukturen virtuella azure-datorer med låg prioritet. Därför är Azure Low Priority Virtual Machine perfekt för arbetsbelastningar som kan hantera avbrott. Mängden tillgänglig kapacitet kan variera beroende på storlek, region, tid på dagen med mera. När du distribuerar virtuella Azure-datorer med låg prioritet allokerar Azure de virtuella datorerna om det finns tillgänglig kapacitet, men det finns inget serviceavtal för dessa virtuella datorer. En virtuell Azure-dator med låg prioritet erbjuder inga garantier för hög tillgänglighet. När som helst när Azure behöver tillbaka kapaciteten avlägsnar Azure-infrastrukturen virtuella azure-datorer med låg prioritet.

Använd något av följande sätt för att ange en virtuell dator med låg prioritet:

GÄLLER FÖR: Python SDK azure-ai-ml v2 (aktuell)

from azure.ai.ml.entities import AmlCompute

cluster_low_pri = AmlCompute(
    name="low-pri-example",
    size="STANDARD_DS3_v2",
    min_instances=0,
    max_instances=2,
    idle_time_before_scale_down=120,
    tier="low_priority",
)
ml_client.begin_create_or_update(cluster_low_pri).result()

Delete

Medan beräkningsklustret skalas ned till noll noder när de inte används, bidrar oetablerade noder till din kvotanvändning. Om du tar bort beräkningsklustret tas beräkningsmålet bort från arbetsytan och kvoten frigörs.

GÄLLER FÖR: Python SDK azure-ai-ml v2 (aktuell)

Detta tar bort det grundläggande beräkningsklustret som skapades från objektet tidigare i den create_basic här artikeln.

from azure.ai.ml.entities import AmlCompute

ml_client.compute.begin_delete(cluster_basic.name).wait()

Konfigurera hanterad identitet

Information om hur du konfigurerar en hanterad identitet med beräkningsklustret finns i Konfigurera autentisering mellan Azure Machine Learning och andra tjänster.

Felsökning

Det finns en chans att vissa användare som skapade sin Azure Machine Learning-arbetsyta från Azure Portal 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.

Viktigt!

Om beräkningsinstansen eller beräkningskluster baseras på någon av dessa serier återskapar du med en annan VM-storlek.

Dessa serier drog sig tillbaka den 31 augusti 2023:

Dessa serier drog sig tillbaka den 31 augusti 2024:

Fastnade vid storleksändring

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

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.

Gå vidare

Använd beräkningsklustret för att: