Den senaste tidens utveckling inom maskininlärning (ML) har lett till allt större modeller, av vilka några kräver hundratals miljarder parametrar. Även om de är mer kraftfulla kräver utbildning och slutsatser om dessa modeller betydande beräkningsresurser. Trots tillgången till avancerade distribuerade utbildningsbibliotek är det vanligt att utbildnings- och slutledningsjobb behöver hundratals acceleratorer (GPU:er eller specialbyggda ML-chips som t.ex. AWS Trainium och AWS slutledning), och därför tiotals eller hundratals instanser.
I sådana distribuerade miljöer blir observerbarheten av både instanser och ML-chips nyckeln till finjustering av modellprestanda och kostnadsoptimering. Mätvärden gör det möjligt för team att förstå arbetsbelastningsbeteende och optimera resursallokering och resursutnyttjande, diagnostisera anomalier och öka den övergripande effektiviteten i infrastrukturen. För datavetare är ML-chips utnyttjande och mättnad också relevant för kapacitetsplanering.
Det här inlägget leder dig genom Öppen källkods observationsmönster för AWS Inferentia, som visar hur du övervakar prestandan för ML-chips, som används i en Amazon Elastic Kubernetes-tjänst (Amazon EKS) kluster, med dataplansnoder baserade på Amazon Elastic Compute Cloud (Amazon EC2) instanser av typen INF1 och INF2.
Mönstret är en del av AWS CDK observationsaccelerator, en uppsättning opinionsbildande moduler som hjälper dig att ställa in observerbarhet för Amazon EKS-kluster. AWS CDK Observability Accelerator är organiserad kring mönster, som är återanvändbara enheter för att distribuera flera resurser. Den öppna källkodsobservationsuppsättningen av mönster instrument observerbarhet med Amazon Managed Grafana instrumentpaneler, en AWS Distro för OpenTelemetry samlare för att samla in mätvärden, och Amazon Managed Service för Prometheus att lagra dem.
Lösningsöversikt
Följande diagram illustrerar lösningsarkitekturen.
Denna lösning distribuerar ett Amazon EKS-kluster med en nodgrupp som inkluderar Inf1-instanser.
AMI-typen för nodgruppen är AL2_x86_64_GPU
, som använder Amazon EKS-optimerad accelererad Amazon Linux AMI. Förutom den vanliga Amazon EKS-optimerade AMI-konfigurationen, inkluderar den accelererade AMI NeuronX körtid.
För att komma åt ML-chippen från Kubernetes distribuerar mönstret AWS Neuron enhets plugin.
Mätvärden exponeras för Amazon Managed Service för Prometheus av neuron-monitor
DaemonSet, som distribuerar en minimal behållare, med Neuronverktyg installerat. Närmare bestämt neuron-monitor
DaemonSet kör neuron-monitor
kommandot leds in i neuron-monitor-prometheus.py
medföljande skript (båda kommandona är en del av behållaren):
Kommandot använder följande komponenter:
neuron-monitor
samlar in mätvärden och statistik från Neuron-applikationerna som körs på systemet och strömmar insamlad data till stdout i JSON-formatneuron-monitor-prometheus.py
mappar och exponerar telemetridata från JSON-format till Prometheus-kompatibelt format
Data visualiseras i Amazon Managed Grafana av motsvarande instrumentpanel.
Resten av installationen för att samla in och visualisera mätvärden med Amazon Managed Service för Prometheus och Amazon Managed Grafana liknar den som används i andra öppen källkodsbaserade mönster, som ingår i AWS Observability Accelerator for CDK
GitHub-förvar.
Förutsättningar
Du behöver följande för att slutföra stegen i det här inlägget:
Ställ in miljön
Utför följande steg för att konfigurera din miljö:
- Öppna ett terminalfönster och kör följande kommandon:
- Hämta arbetsyte-ID:n för alla befintliga Amazon Managed Grafana-arbetsyta:
Följande är vårt exempelutdata:
- Tilldela värdena för
id
ochendpoint
till följande miljövariabler:
COA_AMG_ENDPOINT_URL
behöver inkludera https://
.
- Skapa en Grafana API-nyckel från Amazon Managed Grafana-arbetsytan:
- Skapa en hemlighet i AWS systemchef:
Hemligheten kommer att nås av External Secrets-tillägget och göras tillgänglig som en inbyggd Kubernetes-hemlighet i EKS-klustret.
Starta AWS CDK-miljön
Det första steget till en AWS CDK-distribution är att starta upp miljön. Du använder cdk bootstrap
kommando i AWS CDK CLI för att förbereda miljön (en kombination av AWS-konto och AWS-region) med resurser som krävs av AWS CDK för att utföra distributioner i den miljön. AWS CDK-bootstrapping behövs för varje konto- och regionkombination, så om du redan har bootstrappat AWS CDK i en region, behöver du inte upprepa bootstrapping-processen.
Distribuera lösningen
Utför följande steg för att distribuera lösningen:
- Klona cdk-aws-observationsaccelerator repository och installera beroendepaketen. Det här arkivet innehåller AWS CDK v2-kod skriven i TypeScript.
De faktiska inställningarna för Grafana dashboard JSON-filer förväntas specificeras i AWS CDK-kontexten. Du måste uppdatera context
i cdk.json
fil, som finns i den aktuella katalogen. Placeringen av instrumentbrädan anges av fluxRepository.values.GRAFANA_NEURON_DASH_URL
parameter, och neuronNodeGroup
används för att ställa in instanstyp, nummer och Amazon Elastic Block Store (Amazon EBS) storlek som används för noderna.
- Skriv in följande utdrag i
cdk.json
, byter utcontext
:
Du kan ersätta Inf1-instanstypen med Inf2 och ändra storleken efter behov. För att kontrollera tillgänglighet i din valda region, kör följande kommando (ändra Values
som du tycker passar):
- Installera projektberoendena:
- Kör följande kommandon för att distribuera observerbarhetsmönstret med öppen källkod:
Validera lösningen
Utför följande steg för att validera lösningen:
- Kör
update-kubeconfig
kommando. Du bör kunna hämta kommandot från utdatameddelandet från föregående kommando:
- Verifiera resurserna du skapade:
Följande skärmdump visar vårt exempelutdata.
- Se till
neuron-device-plugin-daemonset
DaemonSet körs:
Följande är vår förväntade produktion:
- Bekräfta att
neuron-monitor
DaemonSet körs:
Följande är vår förväntade produktion:
- För att verifiera att Neuron-enheterna och kärnorna är synliga, kör du
neuron-ls
ochneuron-top
kommandon från till exempel din neuron-monitor pod (du kan få poddens namn från utdata frånkubectl get pods -A
):
Följande skärmdump visar vår förväntade produktion.
Följande skärmdump visar vår förväntade produktion.
Visualisera data med Grafana Neuron-instrumentpanelen
Logga in på din Amazon Managed Grafana-arbetsyta och navigera till Instrumentpaneler panel. Du bör se en instrumentpanel med namnet Neuron / Monitor.
För att se några intressanta mätvärden på Grafanas instrumentpanel tillämpar vi följande manifest:
Detta är ett exempel på en arbetsbelastning som kompilerar torchvision ResNet50 modell och kör repetitiv slutledning i en slinga för att generera telemetridata.
För att verifiera att podden har distribuerats framgångsrikt, kör följande kod:
Du bör se en pod som heter pytorch-inference-resnet50
.
Efter några minuter, titta in i Neuron / Monitor instrumentpanelen, bör du se den insamlade statistiken som liknar följande skärmdumpar.
Grafana Operator och Flux arbetar alltid tillsammans för att synkronisera dina instrumentpaneler med Git. Om du raderar dina instrumentpaneler av misstag, kommer de att tillhandahållas om automatiskt.
Städa upp
Du kan ta bort hela AWS CDK-stacken med följande kommando:
Slutsats
I det här inlägget visade vi dig hur du introducerar observerbarhet, med verktyg med öppen källkod, i ett EKS-kluster med ett dataplan som kör EC2 Inf1-instanser. Vi började med att välja Amazon EKS-optimerad accelererad AMI för dataplansnoderna, som inkluderar Neuron container runtime, vilket ger åtkomst till AWS Inferentia och Trainium Neuron-enheter. Sedan, för att exponera Neuron-kärnorna och enheterna för Kubernetes, distribuerade vi Neuron-enhetsplugin. Själva insamlingen och kartläggningen av telemetridata till Prometheus-kompatibelt format uppnåddes via neuron-monitor
och neuron-monitor-prometheus.py
. Mätvärden hämtades från Amazon Managed Service för Prometheus och visades på Neuron-instrumentpanelen för Amazon Managed Grafana.
Vi rekommenderar att du utforskar ytterligare observerbarhetsmönster i AWS Observability Accelerator för CDK GitHub repo. För att lära dig mer om Neuron, se AWS Neuron-dokumentation.
Om författaren
Riccardo Freschi är Sr. Solutions Architect på AWS, med fokus på applikationsmodernisering. Han arbetar nära partners och kunder för att hjälpa dem att förvandla sina IT-landskap på sin resa till AWS-molnet genom att omstrukturera befintliga applikationer och bygga nya.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- PlatoData.Network Vertical Generative Ai. Styrka dig själv. Tillgång här.
- PlatoAiStream. Web3 Intelligence. Kunskap förstärkt. Tillgång här.
- Platoesg. Kol, CleanTech, Energi, Miljö, Sol, Avfallshantering. Tillgång här.
- PlatoHealth. Biotech och kliniska prövningar Intelligence. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/open-source-observability-for-aws-inferentia-nodes-within-amazon-eks-clusters/