Νοημοσύνη δεδομένων Πλάτωνα.
Κάθετη Αναζήτηση & Αι.

Παρατηρησιμότητα ανοιχτού κώδικα για κόμβους AWS Inferentia εντός συμπλεγμάτων Amazon EKS | Υπηρεσίες Ιστού της Amazon

Ημερομηνία:

Οι πρόσφατες εξελίξεις στη μηχανική μάθηση (ML) έχουν οδηγήσει σε ολοένα και πιο μεγάλα μοντέλα, μερικά από τα οποία απαιτούν εκατοντάδες δισεκατομμύρια παραμέτρους. Αν και είναι πιο ισχυρά, η εκπαίδευση και η εξαγωγή συμπερασμάτων σε αυτά τα μοντέλα απαιτούν σημαντικούς υπολογιστικούς πόρους. Παρά τη διαθεσιμότητα προηγμένων κατανεμημένων βιβλιοθηκών εκπαίδευσης, είναι σύνηθες για τις εργασίες εκπαίδευσης και συμπερασμάτων να χρειάζονται εκατοντάδες επιταχυντές (GPU ή ειδικά κατασκευασμένα τσιπ ML όπως π. Aws trainium και Αίσθηση AWS), και επομένως δεκάδες ή εκατοντάδες περιπτώσεις.

Σε τέτοια κατανεμημένα περιβάλλοντα, η παρατηρησιμότητα τόσο των παρουσιών όσο και των τσιπ ML γίνεται το κλειδί για τη βελτίωση της απόδοσης του μοντέλου και τη βελτιστοποίηση του κόστους. Οι μετρήσεις επιτρέπουν στις ομάδες να κατανοήσουν τη συμπεριφορά του φόρτου εργασίας και να βελτιστοποιήσουν την κατανομή και τη χρήση πόρων, να διαγνώσουν ανωμαλίες και να αυξήσουν τη συνολική απόδοση της υποδομής. Για τους επιστήμονες δεδομένων, η χρήση και ο κορεσμός των τσιπ ML σχετίζονται επίσης με τον προγραμματισμό χωρητικότητας.

Αυτή η ανάρτηση σας καθοδηγεί στο Μοτίβο παρατηρητικότητας ανοιχτού κώδικα για το AWS Inferentia, το οποίο σας δείχνει πώς να παρακολουθείτε την απόδοση των τσιπ ML, που χρησιμοποιούνται σε ένα Υπηρεσία Amazon Elastic Kubernetes (Amazon EKS) σύμπλεγμα, με κόμβους επιπέδου δεδομένων που βασίζονται σε Amazon Elastic Compute Cloud (Amazon EC2) περιπτώσεις του τύπου Inf1 και Inf2.

Το μοτίβο είναι μέρος του AWS CDK Observability Accelerator, ένα σύνολο ενοτήτων με γνώμη που θα σας βοηθήσουν να ορίσετε την παρατηρησιμότητα για τα συμπλέγματα Amazon EKS. Το AWS CDK Observability Accelerator είναι οργανωμένο γύρω από μοτίβα, τα οποία είναι επαναχρησιμοποιήσιμες μονάδες για την ανάπτυξη πολλαπλών πόρων. Το σύνολο μοτίβων παρατηρησιμότητας ανοιχτού κώδικα οργάνων παρατηρητικότητας με Η Amazon διαχειρίστηκε τη Grafana ταμπλό, an AWS Distro για OpenTelemetry συλλέκτης για τη συλλογή μετρήσεων και Διαχειριζόμενη υπηρεσία Amazon για τον Προμηθέα για να τα αποθηκεύσετε.

Επισκόπηση λύσεων

Το παρακάτω διάγραμμα απεικονίζει την αρχιτεκτονική λύσεων.

Αυτή η λύση αναπτύσσει ένα σύμπλεγμα Amazon EKS με μια ομάδα κόμβων που περιλαμβάνει παρουσίες Inf1.

Ο τύπος AMI της ομάδας κόμβων είναι AL2_x86_64_GPU, το οποίο χρησιμοποιεί το Το Amazon EKS βελτιστοποίησε το επιταχυνόμενο Amazon Linux AMI. Εκτός από την τυπική διαμόρφωση AMI βελτιστοποιημένης από το Amazon EKS, η επιταχυνόμενη AMI περιλαμβάνει Χρόνος εκτέλεσης NeuronX.

Για πρόσβαση στα τσιπ ML από το Kubernetes, το μοτίβο αναπτύσσει το AWS Neuron πρόσθετο συσκευής.

Οι μετρήσεις εκτίθενται στη διαχειριζόμενη υπηρεσία Amazon για τον Prometheus από το neuron-monitor Το DaemonSet, το οποίο αναπτύσσει ένα ελάχιστο κοντέινερ, με το Εργαλεία νευρώνων εγκατασταθεί. Συγκεκριμένα, το neuron-monitor Το DaemonSet εκτελεί το neuron-monitor εντολή που διοχετεύεται στο neuron-monitor-prometheus.py συνοδευτικό σενάριο (και οι δύο εντολές αποτελούν μέρος του κοντέινερ):

neuron-monitor | neuron-monitor-prometheus.py --port <port>

Η εντολή χρησιμοποιεί τα ακόλουθα στοιχεία:

  • neuron-monitor συλλέγει μετρήσεις και στατιστικά από τις εφαρμογές Neuron που εκτελούνται στο σύστημα και μεταδίδει τα συλλεγμένα δεδομένα στο stdout στο Μορφή JSON
  • neuron-monitor-prometheus.py χαρτογραφεί και εκθέτει τα δεδομένα τηλεμετρίας από τη μορφή JSON σε μορφή συμβατή με το Prometheus

Τα δεδομένα οπτικοποιούνται στο Amazon Managed Grafana από τον αντίστοιχο πίνακα εργαλείων.

Η υπόλοιπη ρύθμιση για τη συλλογή και την οπτικοποίηση μετρήσεων με την υπηρεσία διαχείρισης Amazon για Prometheus και Amazon Managed Grafana είναι παρόμοια με αυτή που χρησιμοποιείται σε άλλα μοτίβα που βασίζονται σε ανοιχτό κώδικα, τα οποία περιλαμβάνονται στο AWS Observability Accelerator for CDK Αποθήκη GitHub.

Προϋποθέσεις

Χρειάζεστε τα ακόλουθα για να ολοκληρώσετε τα βήματα σε αυτήν την ανάρτηση:

Ρυθμίστε το περιβάλλον

Ολοκληρώστε τα παρακάτω βήματα για να ρυθμίσετε το περιβάλλον σας:

  1. Ανοίξτε ένα παράθυρο τερματικού και εκτελέστε τις ακόλουθες εντολές:
export AWS_REGION=<YOUR AWS REGION>
export ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' --output text)

  1. Ανακτήστε τα αναγνωριστικά χώρου εργασίας οποιουδήποτε υπάρχοντος διαχειριζόμενου χώρου εργασίας του Amazon Grafana:
aws grafana list-workspaces

Το παρακάτω είναι το δείγμα εξόδου μας:

{
  "workspaces": [
    {
      "authentication": {
        "providers": [
          "AWS_SSO"
        ]
      },
      "created": "2023-06-07T12:23:56.625000-04:00",
      "description": "accelerator-workspace",
      "endpoint": "g-XYZ.grafana-workspace.us-east-2.amazonaws.com",
      "grafanaVersion": "9.4",
      "id": "g-XYZ",
      "modified": "2023-06-07T12:30:09.892000-04:00",
      "name": "accelerator-workspace",
      "notificationDestinations": [
        "SNS"
      ],
      "status": "ACTIVE",
      "tags": {}
    }
  ]
}

  1. Εκχωρήστε τις τιμές του id και endpoint στις ακόλουθες μεταβλητές περιβάλλοντος:
export COA_AMG_WORKSPACE_ID="<<YOUR-WORKSPACE-ID, similar to the above g-XYZ, without quotation marks>>"
export COA_AMG_ENDPOINT_URL="<<https://YOUR-WORKSPACE-URL, including protocol (i.e. https://), without quotation marks, similar to the above https://g-XYZ.grafana-workspace.us-east-2.amazonaws.com>>"

COA_AMG_ENDPOINT_URL πρέπει να περιλαμβάνει https://.

  1. Δημιουργήστε ένα κλειδί API Grafana από τον χώρο εργασίας του Amazon Managed Grafana:
export AMG_API_KEY=$(aws grafana create-workspace-api-key 
--key-name "grafana-operator-key" 
--key-role "ADMIN" 
--seconds-to-live 432000 
--workspace-id $COA_AMG_WORKSPACE_ID 
--query key 
--output text)

  1. Βάλτε ένα μυστικό Διευθυντής συστημάτων AWS:
aws ssm put-parameter --name "/cdk-accelerator/grafana-api-key" 
--type "SecureString" 
--value $AMG_API_KEY 
--region $AWS_REGION

Το μυστικό θα είναι προσβάσιμο από το πρόσθετο External Secrets και θα διατίθεται ως εγγενές μυστικό Kubernetes στο σύμπλεγμα EKS.

Εκκινήστε το περιβάλλον AWS CDK

Το πρώτο βήμα για οποιαδήποτε ανάπτυξη AWS CDK είναι η εκκίνηση του περιβάλλοντος. Χρησιμοποιείτε το cdk bootstrap εντολή στο AWS CDK CLI για προετοιμασία του περιβάλλοντος (συνδυασμός λογαριασμού AWS και Περιοχής AWS) με πόρους που απαιτούνται από το AWS CDK για την εκτέλεση αναπτύξεων σε αυτό το περιβάλλον. Απαιτείται bootstrapping AWS CDK για κάθε συνδυασμό λογαριασμού και Περιοχής, επομένως, εάν έχετε ήδη κάνει bootstrapping AWS CDK σε μια Περιοχή, δεν χρειάζεται να επαναλάβετε τη διαδικασία εκκίνησης.

cdk bootstrap aws://$ACCOUNT_ID/$AWS_REGION

Αναπτύξτε τη λύση

Ολοκληρώστε τα παρακάτω βήματα για να αναπτύξετε τη λύση:

  1. Κλωνοποιήστε το cdk-aws-observability-accelerator αποθετήριο και εγκαταστήστε τα πακέτα εξάρτησης. Αυτό το αποθετήριο περιέχει κώδικα AWS CDK v2 γραμμένο σε TypeScript.
git clone https://github.com/aws-observability/cdk-aws-observability-accelerator.git
cd cdk-aws-observability-accelerator

Οι πραγματικές ρυθμίσεις για τα αρχεία JSON του πίνακα ελέγχου Grafana αναμένεται να καθοριστούν στο πλαίσιο του AWS CDK. Πρέπει να ενημερώσετε context στο cdk.json αρχείο, που βρίσκεται στον τρέχοντα κατάλογο. Η θέση του ταμπλό καθορίζεται από το fluxRepository.values.GRAFANA_NEURON_DASH_URL παράμετρος και neuronNodeGroup χρησιμοποιείται για τον ορισμό του τύπου, του αριθμού και του στιγμιότυπου Κατάστημα Amazon Elastic Block (Amazon EBS) μέγεθος που χρησιμοποιείται για τους κόμβους.

  1. Εισαγάγετε το παρακάτω απόσπασμα cdk.json, αντικαθιστώντας context:
"context": {
    "fluxRepository": {
      "name": "grafana-dashboards",
      "namespace": "grafana-operator",
      "repository": {
        "repoUrl": "https://github.com/aws-observability/aws-observability-accelerator",
        "name": "grafana-dashboards",
        "targetRevision": "main",
        "path": "./artifacts/grafana-operator-manifests/eks/infrastructure"
      },
      "values": {
        "GRAFANA_CLUSTER_DASH_URL" : "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/cluster.json",
        "GRAFANA_KUBELET_DASH_URL" : "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/kubelet.json",
        "GRAFANA_NSWRKLDS_DASH_URL" : "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/namespace-workloads.json",
        "GRAFANA_NODEEXP_DASH_URL" : "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/nodeexporter-nodes.json",
        "GRAFANA_NODES_DASH_URL" : "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/nodes.json",
        "GRAFANA_WORKLOADS_DASH_URL" : "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/infrastructure/workloads.json",
        "GRAFANA_NEURON_DASH_URL" : "https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/grafana-dashboards/eks/neuron/neuron-monitor.json"
      },
      "kustomizations": [
        {
          "kustomizationPath": "./artifacts/grafana-operator-manifests/eks/infrastructure"
        },
        {
          "kustomizationPath": "./artifacts/grafana-operator-manifests/eks/neuron"
        }
      ]
    },
     "neuronNodeGroup": {
      "instanceClass": "inf1",
      "instanceSize": "2xlarge",
      "desiredSize": 1, 
      "minSize": 1, 
      "maxSize": 3,
      "ebsSize": 512
    }
  }

Μπορείτε να αντικαταστήσετε τον τύπο παρουσίας Inf1 με Inf2 και να αλλάξετε το μέγεθος όπως απαιτείται. Για να ελέγξετε τη διαθεσιμότητα στην επιλεγμένη περιοχή σας, εκτελέστε την ακόλουθη εντολή (τροποποίηση Values όπως σας ταιριάζει):

aws ec2 describe-instance-type-offerings 
--filters Name=instance-type,Values="inf1*" 
--query "InstanceTypeOfferings[].InstanceType" 
--region $AWS_REGION

  1. Εγκαταστήστε τις εξαρτήσεις του έργου:
npm install

  1. Εκτελέστε τις ακόλουθες εντολές για να αναπτύξετε το μοτίβο παρατηρησιμότητας ανοιχτού κώδικα:
make build
make pattern single-new-eks-inferentia-opensource-observability deploy

Επικυρώστε τη λύση

Ολοκληρώστε τα παρακάτω βήματα για να επικυρώσετε τη λύση:

  1. Εκτελέστε το update-kubeconfig εντολή. Θα πρέπει να μπορείτε να λάβετε την εντολή από το μήνυμα εξόδου της προηγούμενης εντολής:
aws eks update-kubeconfig --name single-new-eks-inferentia-opensource... --region <your region> --role-arn arn:aws:iam::xxxxxxxxx:role/single-new-eks-....

  1. Επαληθεύστε τους πόρους που δημιουργήσατε:
kubectl get pods -A

Το παρακάτω στιγμιότυπο οθόνης δείχνει το δείγμα εξόδου μας.

  1. Βεβαιωθείτε ότι η neuron-device-plugin-daemonset Το DaemonSet εκτελείται:
kubectl get ds neuron-device-plugin-daemonset --namespace kube-system

Το ακόλουθο είναι το αναμενόμενο αποτέλεσμα:

NAME                             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
neuron-device-plugin-daemonset   1         1         1       1            1           <none>          2h

  1. Επιβεβαιώστε ότι το neuron-monitor Το DaemonSet εκτελείται:
kubectl get ds neuron-monitor --namespace kube-system

Το ακόλουθο είναι το αναμενόμενο αποτέλεσμα:

NAME             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
neuron-monitor   1         1         1       1            1           <none>          2h

  1. Για να επαληθεύσετε ότι οι συσκευές και οι πυρήνες Neuron είναι ορατές, εκτελέστε το neuron-ls και neuron-top εντολές από, για παράδειγμα, την ομάδα παρακολούθησης νευρώνων σας (μπορείτε να λάβετε το όνομα της ομάδας από την έξοδο του kubectl get pods -A):
kubectl exec -it {your neuron-monitor pod} -n kube-system -- /bin/bash -c "neuron-ls"

Το παρακάτω στιγμιότυπο οθόνης δείχνει την αναμενόμενη έξοδο μας.

kubectl exec -it {your neuron-monitor pod} -n kube-system -- /bin/bash -c "neuron-top"

Το παρακάτω στιγμιότυπο οθόνης δείχνει την αναμενόμενη έξοδο μας.

Οπτικοποιήστε δεδομένα χρησιμοποιώντας τον πίνακα εργαλείων Grafana Neuron

Συνδεθείτε στον χώρο εργασίας σας στο Amazon Managed Grafana και μεταβείτε στο Dashboards πίνακας. Θα πρέπει να δείτε έναν πίνακα ελέγχου με το όνομα Νευρώνας / Μόνιτορ.

Για να δούμε μερικές ενδιαφέρουσες μετρήσεις στον πίνακα ελέγχου Grafana, εφαρμόζουμε την ακόλουθη δήλωση:

curl https://raw.githubusercontent.com/aws-observability/aws-observability-accelerator/main/artifacts/k8s-deployment-manifest-templates/neuron/pytorch-inference-resnet50.yml | kubectl apply -f -

Αυτό είναι ένα δείγμα φόρτου εργασίας που μεταγλωττίζει το μοντέλο Torchvision ResNet50 και εκτελεί επαναλαμβανόμενα συμπεράσματα σε έναν βρόχο για τη δημιουργία δεδομένων τηλεμετρίας.

Για να επαληθεύσετε ότι το pod αναπτύχθηκε με επιτυχία, εκτελέστε τον ακόλουθο κώδικα:

kubectl get pods

Θα πρέπει να δείτε μια ομάδα με το όνομα pytorch-inference-resnet50.

Μετά από λίγα λεπτά, κοιτάζοντας το Νευρώνας / Μόνιτορ πίνακα ελέγχου, θα πρέπει να δείτε τις συγκεντρωμένες μετρήσεις παρόμοιες με τα παρακάτω στιγμιότυπα οθόνης.

Το Grafana Operator και το Flux συνεργάζονται πάντα για να συγχρονίσουν τους πίνακες εργαλείων σας με το Git. Εάν διαγράψετε τους πίνακες εργαλείων σας κατά λάθος, θα τροφοδοτηθούν εκ νέου αυτόματα.

εκκαθάριση

Μπορείτε να διαγράψετε ολόκληρη τη στοίβα CDK AWS με την ακόλουθη εντολή:

make pattern single-new-eks-inferentia-opensource-observability destroy

Συμπέρασμα

Σε αυτήν την ανάρτηση, σας δείξαμε πώς να εισάγετε την παρατηρησιμότητα, με εργαλεία ανοιχτού κώδικα, σε ένα σύμπλεγμα EKS που διαθέτει ένα επίπεδο δεδομένων που εκτελεί περιπτώσεις EC2 Inf1. Ξεκινήσαμε επιλέγοντας το βελτιστοποιημένο από το Amazon EKS επιταχυνόμενο AMI για τους κόμβους επιπέδου δεδομένων, το οποίο περιλαμβάνει τον χρόνο εκτέλεσης κοντέινερ Neuron, παρέχοντας πρόσβαση σε συσκευές AWS Inferentia και Trainium Neuron. Στη συνέχεια, για να εκθέσουμε τους πυρήνες και τις συσκευές Neuron στο Kubernetes, αναπτύξαμε την προσθήκη συσκευής Neuron. Η πραγματική συλλογή και χαρτογράφηση δεδομένων τηλεμετρίας σε μορφή συμβατή με τον Προμηθέα επιτεύχθηκε μέσω neuron-monitor και neuron-monitor-prometheus.py. Οι μετρήσεις προέρχονται από την υπηρεσία διαχείρισης της Amazon για τον Prometheus και εμφανίζονται στον πίνακα ελέγχου Neuron του Amazon Managed Grafana.

Σας συνιστούμε να εξερευνήσετε πρόσθετα μοτίβα παρατηρησιμότητας στο AWS Observability Accelerator για CDK Αποθετήριο GitHub. Για να μάθετε περισσότερα για το Neuron, ανατρέξτε στο Τεκμηρίωση AWS Neuron.


Σχετικά με το Συγγραφέας

Riccardo Freschi είναι Sr. Solutions Architect στο AWS, με επίκεντρο τον εκσυγχρονισμό εφαρμογών. Συνεργάζεται στενά με συνεργάτες και πελάτες για να τους βοηθήσει να μεταμορφώσουν τα τοπία πληροφορικής τους στο ταξίδι τους προς το AWS Cloud, ανακατασκευάζοντας υπάρχουσες εφαρμογές και δημιουργώντας νέες.

spot_img

Τελευταία Νοημοσύνη

spot_img

Συνομιλία με μας

Γεια σου! Πώς μπορώ να σε βοηθήσω?