Generatív adatintelligencia

Nyílt forráskódú megfigyelhetőség az Amazon EKS-fürtökön belüli AWS Inferentia csomópontokhoz | Amazon webszolgáltatások

Találka:

A gépi tanulás (ML) legújabb fejlesztései egyre nagyobb modellekhez vezettek, amelyek közül néhány százmilliárd paramétert igényel. Bár ezek a modellek erősebbek, az ezekre a modellekre vonatkozó képzés és következtetések jelentős számítási erőforrásokat igényelnek. A fejlett elosztott oktatókönyvtárak elérhetősége ellenére gyakori, hogy a képzési és következtetési feladatokhoz több száz gyorsítóra (GPU-kra vagy erre a célra épített ML chipekre, mint pl. AWS Trainium és a AWS Inferentia), és ezért több tíz vagy száz példány.

Az ilyen elosztott környezetekben mind a példányok, mind az ML chipek megfigyelhetősége kulcsfontosságú a modell teljesítményének finomhangolása és a költségoptimalizálás szempontjából. A mérőszámok lehetővé teszik a csapatok számára, hogy megértsék a munkaterhelés viselkedését, és optimalizálják az erőforrások elosztását és felhasználását, diagnosztizálják az anomáliákat, és növeljék az általános infrastruktúra hatékonyságát. Az adatkutatók számára az ML chipek kihasználtsága és telítettsége a kapacitástervezés szempontjából is lényeges.

Ez a bejegyzés végigvezeti Önt a Nyílt forráskódú megfigyelési minta az AWS Inferentiához, amely bemutatja, hogyan lehet nyomon követni az ML chipek teljesítményét, használt egy Amazon Elastic Kubernetes szolgáltatás (Amazon EKS) fürt, adatsík csomópontjai alapján Amazon rugalmas számítási felhő (Amazon EC2) típusú példányok Inf1 és a Inf2.

A minta része a AWS CDK megfigyelhetőségi gyorsító, véleményezett modulok készlete, amelyek segítenek beállítani a megfigyelhetőséget az Amazon EKS-fürtök számára. Az AWS CDK Observability Accelerator minták köré szerveződik, amelyek több erőforrás üzembe helyezéséhez használható újrafelhasználható egységek. A nyílt forráskódú megfigyelési minták halmaza a megfigyelhetőséget eszközli Amazon által kezelt Grafana műszerfalak, an AWS Distro az OpenTelemetry számára gyűjtő mérőszámok gyűjtéséhez, és Amazon által felügyelt szolgáltatás a Prometheus számára tárolni őket.

Megoldás áttekintése

A következő ábra a megoldás architektúráját mutatja be.

Ez a megoldás egy Amazon EKS-fürtöt telepít Inf1-példányokat tartalmazó csomópontcsoporttal.

A csomópontcsoport AMI típusa a AL2_x86_64_GPU, amely a Amazon EKS optimalizált gyorsított Amazon Linux AMI. A szabványos Amazon EKS-optimalizált AMI konfiguráció mellett a gyorsított AMI tartalmazza a NeuronX futási idő.

Az ML chipek Kubernetesből való eléréséhez a minta telepíti a AWS Neuron eszköz plugin.

A mutatókat az Amazon Managed Service for Prometheus számára teszi közzé a neuron-monitor A DaemonSet, amely egy minimális tárolót telepít, a Neuron eszközök telepítve. Konkrétan a neuron-monitor A DaemonSet futtatja a neuron-monitor parancsot a neuron-monitor-prometheus.py kísérő szkript (mindkét parancs a tároló része):

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

A parancs a következő összetevőket használja:

  • neuron-monitor összegyűjti a rendszeren futó Neuron alkalmazások mérőszámait és statisztikáit, és az összegyűjtött adatokat az stdout-ba továbbítja. JSON formátum
  • neuron-monitor-prometheus.py leképezi és felteszi a telemetriai adatokat JSON formátumból Prometheus-kompatibilis formátumba

Az adatokat az Amazon Managed Grafana programban a megfelelő irányítópult jeleníti meg.

Az Amazon Managed Service for Prometheus és az Amazon Managed Grafana metrikák összegyűjtésére és megjelenítésére szolgáló többi beállítás hasonló a más nyílt forráskódú mintákban használthoz, amelyek a AWS Observability Accelerator for CDK GitHub adattár.

Előfeltételek

A bejegyzés lépéseinek végrehajtásához a következőkre lesz szüksége:

Állítsa be a környezetet

A környezet beállításához hajtsa végre a következő lépéseket:

  1. Nyisson meg egy terminálablakot, és futtassa a következő parancsokat:
export AWS_REGION=<YOUR AWS REGION>
export ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' --output text)

  1. A meglévő Amazon Managed Grafana munkaterületek munkaterület-azonosítóinak lekérése:
aws grafana list-workspaces

A következő minta kimenetünk:

{
  "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. Rendelje hozzá az értékeket id és a endpoint a következő környezeti változókhoz:
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 tartalmaznia kell https://.

  1. Hozzon létre egy Grafana API-kulcsot az Amazon Managed Grafana munkaterületéről:
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. Állíts be egy titkot AWS rendszermenedzser:
aws ssm put-parameter --name "/cdk-accelerator/grafana-api-key" 
--type "SecureString" 
--value $AMG_API_KEY 
--region $AWS_REGION

A titokhoz az External Secrets bővítmény fog hozzáférni, és natív Kubernetes-titokként elérhető lesz az EKS-fürtben.

Indítsa el az AWS CDK környezetet

Az AWS CDK-telepítés első lépése a környezet rendszerindítása. Használod a cdk bootstrap parancsot az AWS CDK parancssori felületen, hogy előkészítse a környezetet (az AWS-fiók és az AWS-régió kombinációja) az AWS CDK-nak az adott környezetben történő központi telepítéséhez szükséges erőforrásokkal. Az AWS CDK rendszerindításra minden fiókhoz és régiókombinációhoz szükség van, így ha már beindította az AWS CDK-t egy régióban, akkor nem kell megismételnie a rendszerindítási folyamatot.

cdk bootstrap aws://$ACCOUNT_ID/$AWS_REGION

Telepítse a megoldást

A megoldás üzembe helyezéséhez hajtsa végre a következő lépéseket:

  1. Klónozza a cdk-aws-observability-accelerator tárolót, és telepítse a függőségi csomagokat. Ez a tárhely TypeScriptben írt AWS CDK v2 kódot tartalmaz.
git clone https://github.com/aws-observability/cdk-aws-observability-accelerator.git
cd cdk-aws-observability-accelerator

A Grafana irányítópult JSON-fájlok tényleges beállításait az AWS CDK-kontextusban kell megadni. Frissíteni kell context a cdk.json fájl, amely az aktuális könyvtárban található. A műszerfal helyét a fluxRepository.values.GRAFANA_NEURON_DASH_URL paraméter, és neuronNodeGroup a példány típusának, számának és számának beállítására szolgál Amazon Elastic Block Store (Amazon EBS) méretet használtak a csomópontokhoz.

  1. Írja be a következő kódrészletet cdk.jsonhelyettesítve 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
    }
  }

Az Inf1 példánytípust lecserélheti Inf2-re, és szükség szerint módosíthatja a méretet. A kiválasztott régióban való elérhetőség ellenőrzéséhez futtassa a következő parancsot (módosítsa Values ahogy jónak látod):

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

  1. Telepítse a projektfüggőségeket:
npm install

  1. Futtassa a következő parancsokat a nyílt forráskódú megfigyelési minta telepítéséhez:
make build
make pattern single-new-eks-inferentia-opensource-observability deploy

Érvényesítse a megoldást

A megoldás érvényesítéséhez hajtsa végre a következő lépéseket:

  1. Futtassa a update-kubeconfig parancs. A parancsot az előző parancs kimeneti üzenetéből kell megkapnia:
aws eks update-kubeconfig --name single-new-eks-inferentia-opensource... --region <your region> --role-arn arn:aws:iam::xxxxxxxxx:role/single-new-eks-....

  1. Ellenőrizze a létrehozott erőforrásokat:
kubectl get pods -A

A következő képernyőkép a minta kimenetünket mutatja.

  1. Ellenőrizze, hogy a neuron-device-plugin-daemonset A DaemonSet fut:
kubectl get ds neuron-device-plugin-daemonset --namespace kube-system

A következő a várt eredményünk:

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

  1. Ellenőrizze, hogy a neuron-monitor A DaemonSet fut:
kubectl get ds neuron-monitor --namespace kube-system

A következő a várt eredményünk:

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

  1. A Neuron eszközök és magok láthatóságának ellenőrzéséhez futtassa a neuron-ls és a neuron-top parancsokat például a neuron-monitor podból (a pod nevét megkaphatja a kubectl get pods -A):
kubectl exec -it {your neuron-monitor pod} -n kube-system -- /bin/bash -c "neuron-ls"

A következő képernyőkép a várt kimenetünket mutatja.

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

A következő képernyőkép a várt kimenetünket mutatja.

Vizualizálja az adatokat a Grafana Neuron irányítópultjával

Jelentkezzen be az Amazon Managed Grafana munkaterületére, és navigáljon a Dashboards panel. nevű irányítópultot kell látnia Neuron / Monitor.

Ha érdekes mutatókat szeretne látni a Grafana irányítópulton, a következő jegyzéket alkalmazzuk:

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

Ez egy minta munkaterhelés, amely összeállítja a torchvision ResNet50 modell és ismétlődő következtetéseket futtat egy hurokban a telemetriai adatok generálásához.

A pod sikeres telepítésének ellenőrzéséhez futtassa a következő kódot:

kubectl get pods

Egy elnevezett tokot kell látnod pytorch-inference-resnet50.

Néhány perc múlva belenézett a Neuron / Monitor irányítópulton, az alábbi képernyőképekhez hasonló összegyűjtött mutatókat kell látnia.

A Grafana Operator és a Flux mindig együtt dolgozik, hogy szinkronizálja irányítópultjait a Git-tel. Ha véletlenül törli az irányítópultokat, a rendszer automatikusan újra hozzárendeli azokat.

Tisztítsuk meg

A teljes AWS CDK-vermet a következő paranccsal törölheti:

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

Következtetés

Ebben a bejegyzésben megmutattuk, hogyan lehet a megfigyelhetőséget nyílt forráskódú eszközökkel bevezetni egy EC2 Inf1 példányokat futtató adatsíkot tartalmazó EKS-fürtbe. Kezdetben az Amazon EKS-re optimalizált gyorsított AMI-t választottuk az adatsík csomópontjaihoz, amely magában foglalja a Neuron konténer futtatókörnyezetét, hozzáférést biztosítva az AWS Inferentia és Trainium Neuron eszközökhöz. Ezután a Neuron magok és eszközök Kubernetes számára való megjelenítéséhez telepítettük a Neuron eszközbővítményt. A telemetriai adatok tényleges gyűjtését és leképezését Prometheus-kompatibilis formátumba a neuron-monitor és a neuron-monitor-prometheus.py. A mutatók az Amazon Managed Service for Prometheus szolgáltatástól származnak, és az Amazon Managed Grafana Neuron irányítópultján jelennek meg.

Javasoljuk, hogy vizsgáljon meg további megfigyelhetőségi mintákat a AWS megfigyelhetőségi gyorsító CDK-hoz GitHub repó. Ha többet szeretne megtudni a Neuronról, tekintse meg a AWS Neuron dokumentáció.


A szerzőről

Riccardo Freschi az AWS Sr. Solutions Architect munkatársa, aki az alkalmazások modernizálására összpontosít. Szorosan együttműködik partnereivel és ügyfeleivel, hogy a meglévő alkalmazások átalakításával és újak építésével segítse őket informatikai környezetük átalakítására az AWS Cloud felé vezető úton.

spot_img

Legújabb intelligencia

spot_img