Zephyrnet-logotyp

Ställ in kostnadsallokering på företagsnivå för ML-miljöer och arbetsbelastningar med hjälp av resurstaggning i Amazon SageMaker

Datum:

När företag och IT-ledare vill påskynda införandet av maskininlärning (ML), finns det ett växande behov av att förstå utgifter och kostnadsallokering för din ML-miljö för att möta företagskrav. Utan korrekt kostnadshantering och styrning kan dina ML-utgifter leda till överraskningar i din månatliga AWS-faktura. Amazon SageMaker är en fullt hanterad ML-plattform i molnet som utrustar våra företagskunder med verktyg och resurser för att upprätta kostnadsfördelningsåtgärder och förbättra insynen i detaljerade kostnader och användning av dina team, affärsenheter, produkter och mer.

I det här inlägget delar vi tips och bästa praxis angående kostnadsfördelning för din SageMaker-miljö och arbetsbelastning. Över nästan alla AWS-tjänster, inklusive SageMaker, är applicering av taggar på resurser ett standardsätt att spåra kostnader. Dessa taggar kan hjälpa dig att spåra, rapportera och övervaka dina ML-utgifter genom färdiga lösningar som AWS Cost Explorer och AWS budgetar, samt anpassade lösningar som bygger på data från AWS kostnads- och användningsrapporter (CUR).

Taggning av kostnadsfördelning

Kostnadsfördelning på AWS är en process i tre steg:

  1. Bifoga kostnadsfördelningstaggar till dina resurser.
  2. Aktivera dina taggar i Kostnadsfördelningstaggar avsnitt av AWS Billing-konsol.
  3. Använd taggarna för att spåra och filtrera för kostnadsfördelningsrapportering.

När du har skapat och bifogat taggar till resurser visas de i AWS Billing-konsolens Kostnadsfördelningstaggar avsnittet under Användardefinierade kostnadsfördelningstaggar. Det kan ta upp till 24 timmar för taggar att visas efter att de har skapats. Du måste sedan aktivera dessa taggar för AWS för att börja spåra dem för dina resurser. Efter att en tagg har aktiverats tar det vanligtvis cirka 24–48 timmar för taggarna att dyka upp i Cost Explorer. Det enklaste sättet att kontrollera om dina taggar fungerar är att leta efter din nya tagg i taggfiltret i Cost Explorer. Om det finns där är du redo att använda taggarna för din kostnadsfördelningsrapportering. Du kan sedan välja att gruppera dina resultat efter taggnycklar eller filtrera efter taggvärden, som visas i följande skärmdump.

En sak att notera: om du använder AWS-organisationer och har länkade AWS-konton, kan taggar endast aktiveras på det primära betalarkontot. Alternativt kan du också aktivera CUR:er för AWS-konton som möjliggör kostnadsfördelningsrapporter som en CSV-fil med din användning och dina kostnader grupperade efter dina aktiva taggar. Detta ger dig mer detaljerad spårning av dina kostnader och gör det enklare att skapa dina egna anpassade rapporteringslösningar.

Taggar i SageMaker

På en hög nivå kan taggning av SageMaker-resurser grupperas i två segment:

  • Märkning av SageMaker notebook-miljö, heller Amazon SageMaker Studio domäner och domänanvändare, eller SageMaker-anteckningsboksinstanser
  • Tagga SageMaker-hanterade jobb (märkning, bearbetning, utbildning, hyperparameterjustering, batchtransformering och mer) och resurser (som modeller, arbetslag, slutpunktskonfigurationer och slutpunkter)

Vi tar upp dessa mer i detalj i det här inlägget och ger några lösningar på hur man tillämpar förvaltningskontroll för att säkerställa god märkningshygien.

Tagga SageMaker Studio-domäner och användare

Studio är en webbaserad, integrerad utvecklingsmiljö (IDE) för ML som låter dig bygga, träna, felsöka, distribuera och övervaka dina ML-modeller. Du kan starta Studio-anteckningsböcker snabbt och dynamiskt ringa upp eller ner de underliggande beräkningsresurserna utan att avbryta ditt arbete.

För att automatiskt tagga dessa dynamiska resurser måste du tilldela taggar till SageMaker-domänen och domänanvändare som har tilldelats åtkomst till dessa resurser. Du kan ange dessa taggar i taggarparametern för skapa-domän or skapa-användarprofil under skapande av profil eller domän, eller så kan du lägga till dem senare med hjälp av Lägg till taggar API. Studio kopierar automatiskt och tilldelar dessa taggar till Studio-anteckningsböckerna som skapats i domänen eller av de specifika användarna. Du kan också lägga till taggar till SageMaker-domäner genom att redigera domäninställningarna i Studios kontrollpanel.

Följande är ett exempel på att tilldela taggar till profilen under skapandet.

aws sagemaker create-user-profile --domain-id  --user-profile-name data-scientist-full --tags Key=studiouserid,Value= --user-settings ExecutionRole=arn:aws:iam:::role/SageMakerStudioExecutionRole_datascientist-full

För att tagga befintliga domäner och användare, använd add-tags API. Taggarna appliceras sedan på alla nya anteckningsböcker. För att få dessa taggar applicerade på dina befintliga anteckningsböcker måste du starta om Studio-appen (Kernel Gateway och Jupyter Server) som hör till den användarprofilen. Detta kommer inte att orsaka någon förlust av notebook-data. Hänvisa till detta Stäng av och uppdatera SageMaker Studio och Studio-appar för att lära dig hur du tar bort och startar om dina Studio-appar.

Tagga SageMaker-anteckningsbokinstanser

I fallet med en SageMaker-anteckningsbok-instans tillämpas taggning på själva instansen. Taggarna tilldelas alla resurser som körs i samma instans. Du kan ange taggar programmatiskt med hjälp av taggarparametern i skapa-anteckningsbok-instans API eller lägg till dem via SageMaker-konsolen under skapande av instanser. Du kan också lägga till eller uppdatera taggar när som helst med hjälp av Lägg till taggar API eller via SageMaker-konsolen.

Observera att detta exkluderar SageMaker-hanterade jobb och resurser som utbildnings- och bearbetningsjobb eftersom de är i tjänstemiljön snarare än i instansen. I nästa avsnitt går vi igenom hur man tillämpar taggning på dessa resurser mer i detalj.

Tagga SageMaker hanterade jobb och resurser

För SageMaker-hanterade jobb och resurser måste taggning tillämpas på tags attribut som en del av varje API-begäran. En SKLearnProcessor exemplet illustreras i följande kod. Du kan hitta fler exempel på hur du tilldelar taggar till andra SageMaker-hanterade jobb och resurser på GitHub repo.

from sagemaker import get_execution_role
from sagemaker.sklearn.processing import SKLearnProcessor

processing_tags = [{' Key':"cost-center','Value':'TF2WorkflowProcessing'}]
sklearn_processorl = SKLearnProcessor(framework_version='0.23-1' ,
									 role=get_execution_role(),
									 instance_type='ml.m5.xlarge',
									 instance_count=2,
									 tags=processing_tags)

Tagga SageMaker pipelines

När det gäller SageMaker pipelines kan du tagga hela pipelinen som en helhet istället för varje enskilt steg. SageMaker pipeline sprider automatiskt taggarna till varje pipelinesteg. Du har fortfarande möjlighet att lägga till ytterligare, separata taggar till enskilda steg om det behövs. I Studio-gränssnittet visas pipeline-taggarna i metadataavsnittet.

För att applicera taggar på en pipeline, använd SageMaker Python SDK:

pipeline_tags = [ {'Key': 'pipeline-type', 'Value': 'TF2WorkflowPipeline'}]
pipeline.upsert(role_arn=role, tags=pipeline_tags)
execution = pipeline.start()

Framtvinga taggning med IAM-policyer

Även om taggning är en effektiv mekanism för att implementera molnhanterings- och styrstrategier, kan det vara en utmaning att upprätthålla rätt taggningsbeteende om du bara lämnar det till slutanvändarna. Hur förhindrar du att ML-resurs skapas om en specifik tagg saknas, hur säkerställer du att rätt taggar appliceras och hur förhindrar du användare från att ta bort befintliga taggar?

Du kan åstadkomma detta med hjälp av AWS identitets- och åtkomsthantering (IAM) policyer. Följande kod är ett exempel på en policy som förhindrar SageMaker-åtgärder som t.ex CreateDomain or CreateNotebookInstance om begäran inte innehåller miljönyckeln och ett av listvärdena. De ForAllValues modifierare med aws:TagKeys villkorsnyckel indikerar att endast nyckeln environment tillåts i begäran. Detta hindrar användare från att inkludera andra nycklar, som att använda av misstag Environment istället för environment.

"sagemaker:CreateTrainingJob"
      ],
      "{
      "Sid": "SageMakerEnforceEnvtOnCreate",
      "Action": [
        "sagemaker:CreateDomain",
        "sagemaker:CreateEndpoint",
        "sagemaker:CreateNotebookInstance",
        Effect": "Allow",
      "Resource": "*",
  "Condition": {
            "StringEquals": {
                "aws:RequestTag/environment": [
                    "dev","staging","production"
                ]
            },
            "ForAllValues:StringEquals": {"aws:TagKeys": "environment"}
        }
      }

Taggpolicyer och tjänstekontrollpolicyer (SCP) kan också vara ett bra sätt att standardisera skapandet och märkningen av dina ML-resurser. För mer information om hur man implementerar en taggningsstrategi som upprätthåller och validerar taggning på organisationsnivå, se Kostnadsfördelningsbloggserie #3: Tillämpa och validera AWS-resurstaggar.

Rapportering av kostnadsfördelning

Du kan se taggarna genom att filtrera vyerna i Cost Explorer, se en månatlig kostnadsfördelningsrapport, eller genom att granska CUR.

Visualisera taggar i Cost Explorer

Cost Explorer är ett verktyg som gör att du kan se och analysera dina kostnader och användning. Du kan utforska din användning och dina kostnader med hjälp av huvuddiagrammet: Kostnadsutforskarens kostnads- och användningsrapporter. För en snabb video om hur du använder Cost Explorer, kolla in Hur kan jag använda Cost Explorer för att analysera mina utgifter och användning?

Med Cost Explorer kan du filtrera hur du ser dina AWS-kostnader efter taggar. Grupp av tillåter oss att filtrera bort resultat med taggnycklar som t.ex Environment, Deployment, eller Cost Center. Taggfiltret hjälper oss att välja det värde vi önskar oavsett nyckel. Exempel inkluderar Production och Staging. Tänk på att du måste köra resurserna efter att ha lagt till och aktiverat taggar; annars kommer Cost Explorer inte att ha några användningsdata och taggvärdet kommer inte att visas som ett filter eller grupp efter alternativ.

Följande skärmdump är ett exempel på filtrering efter alla värden för BusinessUnit märka.

Undersöker taggar i CUR

Kostnads- och användningsrapporten innehåller den mest omfattande uppsättningen tillgängliga kostnads- och användningsdata. Rapporten innehåller rader för varje unik kombination av AWS-produkt, användningstyp och operation som ditt AWS-konto använder. Du kan anpassa CUR för att aggregera informationen antingen per timme eller per dag. En månatlig kostnadsfördelningsrapport är ett sätt att ställa in kostnadsfördelningsrapportering. Du kan ställa in en månatlig kostnadsfördelningsrapport som listar AWS-användningen för ditt konto efter produktkategori och länkad kontoanvändare. Rapporten innehåller samma rader som detaljerad faktureringsrapport och ytterligare kolumner för dina taggnycklar. Du kan ställa in den och ladda ner din rapport genom att följa stegen i Månatlig kostnadsfördelningsrapport.

Följande skärmdump visar hur användardefinierade taggnycklar visas i CUR. Användardefinierade taggnycklar har prefixet user, Såsom user:Department och user:CostCenter. AWS-genererade taggnycklar har prefixet aws.

Visualisera CUR med Amazon Athena och Amazon QuickSight

Amazonas Athena är en interaktiv frågetjänst som gör det enkelt att analysera data i Amazon S3 med standard SQL. Athena är serverlöst, så det finns ingen infrastruktur att hantera, och du betalar bara för de frågor du kör. För att integrera Athena med CUR, se Fråga efter kostnads- och användningsrapporter med Amazon Athena. Du kan sedan bygga anpassade frågor för att fråga CUR-data med standard SQL. Följande skärmdump är ett exempel på en fråga för att filtrera alla resurser som har värdet TF2WorkflowTraining för cost-center märka.

select * from {$table_name} where resource_tags_user_cost-center= 'TF2WorkflowTraining'

I följande exempel försöker vi ta reda på vilka resurser som saknar värden under cost-center märka.

SELECT
 bill_payer_account_id, line_item_usage_account_id, DATE_FORMAT((line_item_usage_start_date), '%Y-%m-%d') AS day_line_item_usage_start_date, line_item_resource_id, line_item_usage_type, resource_tags_user_cost-center
FROM
{$table_name} 
WHERE
 resource_tags_user_cost-center IS NULL
AND line_item_product_code = 'AmazonSageMaker'

Mer information och exempelfrågor finns i AWS CUR frågebibliotek.

Du kan också mata in CUR-data Amazon QuickSight, där du kan skära och tärna det som du vill för rapporterings- eller visualiseringsändamål. För instruktioner om hur du matar in CUR-data i QuickSight, se Hur får jag in och visualiserar AWS Cost and Usage Report (CUR) i Amazon QuickSight.

Budgetövervakning med taggar

AWS Budgets är ett utmärkt sätt att ge en tidig varning om utgifterna ökar oväntat. Du kan skapa anpassade budgetar som varnar dig när dina ML-kostnader och användning överstiger (eller förväntas överstiga) dina användardefinierade tröskelvärden. Med AWS Budgets kan du övervaka dina totala månatliga ML-kostnader eller filtrera dina budgetar för att spåra kostnader kopplade till specifika användningsdimensioner. Du kan till exempel ställa in budgetomfattningen så att den inkluderar SageMaker-resurskostnader taggade som cost-center: ML-Marketing, som visas i följande skärmdump. För ytterligare dimensioner och detaljerade instruktioner om hur du ställer in AWS-budgetar, se här..

Med budgetvarningar, kan du skicka meddelanden när dina budgetgränser överskrids (eller är på väg att överskridas). Dessa varningar kan också skickas till en Amazon enkel meddelandetjänst (Amazon SNS) ämne. En AWS Lambda funktion som prenumererar på SNS-ämnet anropas sedan och alla programmässigt implementerbara åtgärder kan vidtas.

AWS Budgets låter dig också konfigurera budgetåtgärder, vilket är steg som du kan vidta när en budgettröskel överskrids (faktiska eller prognostiserade belopp). Denna kontrollnivå gör att du kan minska oavsiktliga överutgifter på ditt konto. Du kan konfigurera specifika svar på kostnad och användning i ditt konto som kommer att tillämpas automatiskt eller genom en process för godkännande av arbetsflöden när ett budgetmål har överskridits. Detta är en riktigt kraftfull lösning för att säkerställa att dina ML-utgifter överensstämmer med verksamhetens mål. Du kan välja vilken typ av åtgärd du ska vidta. Till exempel, när en budgettröskel överskrids kan du flytta specifika IAM-användare från administratörsbehörigheter till skrivskyddad. För kunder som använder Organisationer kan du tillämpa åtgärder på en hel organisationsenhet genom att flytta dem från admin till skrivskyddad. För mer information om hur du hanterar kostnader med hjälp av budgetåtgärder, se Hur man hanterar kostnadsöverskridanden i din AWS-multikontomiljö – Del 1.

Du kan också skapa en rapport för att övervaka prestandan för dina befintliga budgetar på en daglig, vecko- eller månadsfrekvens och leverera den rapporten till upp till 50 e-postadresser. Med AWS Budgets rapporterar, kan du kombinera alla SageMaker-relaterade budgetar till en enda rapport. Den här funktionen gör att du kan spåra ditt SageMaker-fotavtryck från en enda plats, som visas i följande skärmdump. Du kan välja att få dessa rapporter dagligen, veckovis eller månadsvis (jag har valt Varje vecka för det här exemplet), och välj vilken dag i veckan du vill ta emot dem.

Den här funktionen är användbar för att hålla dina intressenter uppdaterade med dina SageMaker-kostnader och användning, och hjälpa dem att se när utgifterna inte trendar som förväntat.

När du har ställt in den här konfigurationen bör du få ett e-postmeddelande som liknar följande.

Slutsats

I det här inlägget visade vi hur du kan ställa in kostnadsfördelningstaggning för SageMaker och delade tips om bästa praxis för taggning för din SageMaker-miljö och arbetsbelastningar. Vi diskuterade sedan olika rapporteringsalternativ som Cost Explorer och CUR för att hjälpa dig att förbättra insynen i dina ML-utgifter. Slutligen visade vi AWS-budgetar och budgetsammanfattningsrapporten för att hjälpa dig övervaka din organisations ML-utgifter.

För mer information om applicering och aktivering av kostnadsfördelningstaggar, se Användardefinierade kostnadsfördelningstaggar.


Om författarna

Sean MorganSean Morgan är AI/ML Solutions Architect på AWS. Han har erfarenhet inom halvledarforskning och akademisk forskning och använder sin erfarenhet för att hjälpa kunder att nå sina mål på AWS. På sin fritid är Sean en aktiv bidragsgivare och underhållare med öppen källkod och är specialintressegruppledare för TensorFlow-tillägg.

Brent Rabowsky fokuserar på datavetenskap på AWS och utnyttjar sin expertis för att hjälpa AWS-kunder med sina egna datavetenskapsprojekt.

Nilesh Shetty är Senior Technical Account Manager på AWS, där han hjälper företagssupportkunder att effektivisera sin molnverksamhet på AWS. Han brinner för maskininlärning och har erfarenhet av att arbeta som konsult, arkitekt och utvecklare. Utanför jobbet tycker han om att lyssna på musik och titta på sport.

James Wu är Senior AI/ML Specialist Solution Architect på AWS. hjälpa kunder att designa och bygga AI/ML-lösningar. James arbete täcker ett brett spektrum av ML-användningsfall, med ett primärt intresse för datorseende, djupinlärning och skalning av ML över hela företaget. Innan han började på AWS var James arkitekt, utvecklare och teknikledare i över 10 år, inklusive 6 år inom ingenjörsbranschen och 4 år inom marknadsförings- och reklambranschen.

plats_img

Senaste intelligens

plats_img

Chatta med oss

Hallå där! Hur kan jag hjälpa dig?