Hantera och optimera Kostnader för Azure Machine Learning

Lär dig hur du hanterar och optimerar kostnader när du tränar och distribuerar maskininlärningsmodeller till Azure Machine Learning.

Använd följande tips för att hantera och optimera dina beräkningsresurskostnader.

  • Konfigurera dina träningskluster för automatisk skalning
  • Ange kvoter för din prenumeration och dina arbetsytor
  • Ange avslutningsprinciper för ditt träningsjobb
  • Använda virtuella datorer med låg prioritet (VM)
  • Schemalägg beräkningsinstanser så att de stängs av och startas automatiskt
  • Använda en reserverad vm-instans i Azure
  • Träna lokalt
  • Parallellisera träning
  • Ange principer för datakvarhållning och borttagning
  • Distribuera resurser till samma region

Information om planerings- och övervakningskostnader finns i guiden Planera för att hantera kostnader för Azure Machine Learning .

Använda Azure Machine Learning-beräkningskluster (AmlCompute)

Med ständigt föränderliga data behöver du snabb och strömlinjeformad modellträning och omträning för att upprätthålla korrekta modeller. Kontinuerlig utbildning kostar dock en kostnad, särskilt för djupinlärningsmodeller på GPU:er.

Azure Machine Learning-användare kan använda det hanterade Azure Machine Learning-beräkningsklustret, även kallat AmlCompute. AmlCompute stöder en mängd olika GPU- och CPU-alternativ. AmlCompute hanteras internt för din prenumeration av Azure Machine Learning. Det ger samma säkerhet, efterlevnad och styrning i företagsklass i Azure IaaS-molnskala.

Eftersom dessa beräkningspooler finns i Azures IaaS-infrastruktur kan du distribuera, skala och hantera din utbildning med samma säkerhets- och efterlevnadskrav som resten av infrastrukturen. Dessa distributioner sker i din prenumeration och följer dina styrningsregler. Läs mer om Azure Machine Learning-beräkning.

Konfigurera träningskluster för automatisk skalning

Autoskalningskluster baserat på kraven för din arbetsbelastning bidrar till att minska dina kostnader så att du bara använder det du behöver.

AmlCompute-kluster är utformade för att skalas dynamiskt baserat på din arbetsbelastning. Klustret kan skalas upp till det maximala antalet noder som du konfigurerar. När varje jobb slutförs släpper klustret noder och skalar till det konfigurerade minsta antalet noder.

Viktigt

Om du vill undvika avgifter när inga jobb körs anger du minsta noder 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.

Du kan också konfigurera hur lång tid noden är inaktiv innan den skalas ned. Som standard är inaktivitetstiden före nedskalning inställd på 120 sekunder.

  • Om du utför mindre iterativa experiment kan du minska den här tiden för att spara kostnader.
  • Om du utför mycket iterativa utvecklings-/testexperiment kan du behöva öka tiden så att du inte betalar för konstant skalning upp och ned efter varje ändring av träningsskriptet eller miljön.

AmlCompute-kluster kan konfigureras för dina föränderliga arbetsbelastningskrav i Azure Portal med hjälp av klassen AmlCompute SDK, AmlCompute CLI, med REST-API:erna.

Ange kvoter för resurser

AmlCompute levereras med en kvotkonfiguration (eller gräns). Den här kvoten är per VM-familj (till exempel Dv2-serien, NCv3-serien) och varierar beroende på region för varje prenumeration. Prenumerationer börjar med små standardvärden för att komma igång, men använd den här inställningen för att styra hur mycket Amlcompute-resurser som ska spunnas upp i din prenumeration.

Konfigurera även kvoten för arbetsytor efter VM-familj för varje arbetsyta i en prenumeration. På så sätt kan du ha mer detaljerad kontroll över de kostnader som varje arbetsyta potentiellt kan medföra och begränsa vissa VM-familjer.

Om du vill ange kvoter på arbetsytenivå börjar du i Azure Portal. Välj valfri arbetsyta i din prenumeration och välj Användningar + kvoter i det vänstra fönstret. Välj sedan fliken Konfigurera kvoter för att visa kvoterna. Du behöver behörigheter i prenumerationsomfånget för att ange kvoten, eftersom det är en inställning som påverkar flera arbetsytor.

Ange principer för automatisk jobbbestämmande

I vissa fall bör du konfigurera dina träningskörningar för att begränsa deras varaktighet eller avsluta dem tidigt. När du till exempel använder Azure Machine Learnings inbyggda hyperparameterjustering eller automatiserad maskininlärning.

Här är några alternativ som du har:

  • Definiera en parameter som anropas max_run_duration_seconds i din RunConfiguration för att styra den maximala varaktighet som en körning kan utökas till på den beräkning du väljer (antingen lokal eller fjärransluten molnberäkning).
  • För justering av hyperparameter definierar du en princip för tidig avslutning från en Bandit-princip, en princip för medianstopp eller en princip för trunkeringsval. Om du vill kontrollera hyperparameterrensningar ytterligare använder du parametrar som max_total_runs eller max_duration_minutes.
  • För automatiserad maskininlärning anger du liknande avslutningsprinciper med enable_early_stopping flaggan . Använd även egenskaper som iteration_timeout_minutes och experiment_timeout_minutes för att styra den maximala varaktigheten för ett jobb eller för hela experimentet.

Använda lågprioriterade virtuella datorer

Med Azure kan du använda överflödig outnyttvänd kapacitet som Low-Priority virtuella datorer i vm-skalningsuppsättningar, Batch och Machine Learning-tjänsten. Dessa allokeringar är förebyggande men har ett reducerat pris jämfört med dedikerade virtuella datorer. I allmänhet rekommenderar vi att du använder Low-Priority virtuella datorer för Batch-arbetsbelastningar. Du bör också använda dem där avbrott kan återställas antingen via återprenumereringar (för Batch-slutsatsdragning) eller genom omstarter (för djupinlärningsträning med kontrollpunkter).

Low-Priority virtuella datorer har en enda kvot separat från det dedikerade kvotvärdet, som är efter VM-familj. Läs mer om AmlCompute-kvoter.

Low-Priority virtuella datorer fungerar inte för beräkningsinstanser, eftersom de behöver stöd för interaktiva notebook-upplevelser.

Schemalägga beräkningsinstanser

När du skapar en beräkningsinstans förblir den virtuella datorn på så att den är tillgänglig för ditt arbete.

Använda reserverade instanser

Ett annat sätt att spara pengar på beräkningsresurser är Azure Reserved VM Instance. Med det här erbjudandet förbinder du dig till ett- eller treårsvillkor. Dessa rabatter sträcker sig upp till 72 % av priserna för betala per användning och tillämpas direkt på din månatliga Azure-faktura.

Azure Machine Learning Compute stöder reserverade instanser i sig. Om du köper en reserverad instans på ett eller tre år tillämpar vi automatiskt rabatt mot din hanterade Azure Machine Learning-beräkning.

Träna lokalt

När du skapar prototyper och kör träningsjobb som är tillräckligt små för att köras på din lokala dator bör du överväga att träna lokalt. Med Hjälp av Python SDK anger du beräkningsmålet så att local skriptet körs lokalt.

Visual Studio Code tillhandahåller en komplett miljö för utveckling av dina maskininlärningsprogram. Med hjälp av visualiseringstillägget för Visual Studio Code i Azure Machine Learning och Docker kan du köra och felsöka lokalt. Mer information finns i interaktiv felsökning med Visual Studio Code.

Parallellisera träning

En av de viktigaste metoderna för att optimera kostnader och prestanda är att parallellisera arbetsbelastningen med hjälp av ett parallellt körningssteg i Azure Machine Learning. Med det här steget kan du använda många mindre noder för att köra uppgiften parallellt, så att du kan skala vågrätt. Det finns en omkostnad för parallellisering. Beroende på arbetsbelastningen och graden av parallellitet som kan uppnås kan detta vara ett alternativ. Mer information finns i dokumentationen om ParallelRunStep .

Ange principer för borttagning av datakvarhållning &

Varje gång en pipeline körs genereras mellanliggande datauppsättningar i varje steg. Med tiden tar dessa mellanliggande datamängder upp utrymme i ditt lagringskonto. Överväg att konfigurera principer för att hantera dina data under hela livscykeln för att arkivera och ta bort dina datauppsättningar. Mer information finns i Optimera kostnader genom att automatisera Azure Blob Storage åtkomstnivåer.

Distribuera resurser till samma region

Beräkningar som finns i olika regioner kan få nätverksfördröjning och ökade dataöverföringskostnader. Kostnader för Azure-nätverk tillkommer från utgående bandbredd från Azure-datacenter. Distribuera alla resurser i regionen för att minska nätverkskostnaderna. Genom att etablera din Azure Machine Learning-arbetsyta och beroende resurser i samma region som dina data kan du sänka kostnaderna och förbättra prestandan.

För hybridmolnscenarier som de som använder ExpressRoute kan det ibland vara mer kostnadseffektivt att flytta alla resurser till Azure för att optimera nätverkskostnader och svarstider.

Nästa steg