प्लेटो डेटा इंटेलिजेंस।
लंबवत खोज और एआई।

अमेज़ॅन ईकेएस क्लस्टर के भीतर एडब्ल्यूएस इनफेरेंटिया नोड्स के लिए ओपन सोर्स अवलोकनशीलता | अमेज़न वेब सेवाएँ

दिनांक:

मशीन लर्निंग (एमएल) में हाल के विकास ने तेजी से बड़े मॉडलों को जन्म दिया है, जिनमें से कुछ के लिए सैकड़ों अरबों मापदंडों की आवश्यकता होती है। यद्यपि वे अधिक शक्तिशाली हैं, उन मॉडलों पर प्रशिक्षण और अनुमान के लिए महत्वपूर्ण कम्प्यूटेशनल संसाधनों की आवश्यकता होती है। उन्नत वितरित प्रशिक्षण पुस्तकालयों की उपलब्धता के बावजूद, प्रशिक्षण और अनुमान कार्यों के लिए सैकड़ों त्वरक (जीपीयू या उद्देश्य-निर्मित एमएल चिप्स जैसे) की आवश्यकता होना आम बात है। एडब्ल्यूएस ट्रेनियम और एडब्ल्यूएस इन्फेंटेंटिया), और इसलिए दसियों या सैकड़ों उदाहरण।

ऐसे वितरित वातावरण में, उदाहरणों और एमएल चिप्स दोनों की अवलोकन क्षमता मॉडल प्रदर्शन को ठीक करने और लागत अनुकूलन के लिए महत्वपूर्ण बन जाती है। मेट्रिक्स टीमों को कार्यभार व्यवहार को समझने और संसाधन आवंटन और उपयोग को अनुकूलित करने, विसंगतियों का निदान करने और समग्र बुनियादी ढांचे की दक्षता बढ़ाने की अनुमति देते हैं। डेटा वैज्ञानिकों के लिए, क्षमता नियोजन के लिए एमएल चिप्स का उपयोग और संतृप्ति भी प्रासंगिक है।

यह पोस्ट आपको इसके बारे में बताती है AWS इन्फेरेंटिया के लिए ओपन सोर्स ऑब्जर्वेबिलिटी पैटर्न, जो आपको दिखाता है कि उपयोग किए गए एमएल चिप्स के प्रदर्शन की निगरानी कैसे करें अमेज़ॅन इलास्टिक कुबेरनेट्स सेवा (अमेज़ॅन ईकेएस) क्लस्टर, डेटा प्लेन नोड्स पर आधारित है अमेज़ॅन इलास्टिक कम्प्यूट क्लाउड (अमेज़ॅन EC2) प्रकार के उदाहरण सूचना1 और सूचना2.

पैटर्न का हिस्सा है एडब्ल्यूएस सीडीके ऑब्जर्वेबिलिटी एक्सेलेरेटर, अमेज़ॅन ईकेएस क्लस्टर के लिए अवलोकन क्षमता निर्धारित करने में मदद करने के लिए रायशुदा मॉड्यूल का एक सेट। एडब्ल्यूएस सीडीके ऑब्जर्वेबिलिटी एक्सेलेरेटर को पैटर्न के आसपास व्यवस्थित किया गया है, जो कई संसाधनों को तैनात करने के लिए पुन: प्रयोज्य इकाइयां हैं। पैटर्न उपकरणों का खुला स्रोत अवलोकन सेट अवलोकन के साथ अमेज़न प्रबंधित ग्राफाना डैशबोर्ड, ए ओपनटेलीमेट्री के लिए एडब्ल्यूएस डिस्ट्रो मेट्रिक्स एकत्र करने के लिए कलेक्टर, और प्रोमेथियस के लिए अमेज़न प्रबंधित सेवा उन्हें स्टोर करने के लिए।

समाधान अवलोकन

निम्नलिखित चित्र समाधान वास्तुकला को दर्शाता है।

यह समाधान एक अमेज़ॅन ईकेएस क्लस्टर को एक नोड समूह के साथ तैनात करता है जिसमें Inf1 उदाहरण शामिल हैं।

नोड समूह का AMI प्रकार है AL2_x86_64_GPU, जो उपयोग करता है अमेज़ॅन ईकेएस ने त्वरित अमेज़ॅन लिनक्स एएमआई को अनुकूलित किया. मानक अमेज़ॅन ईकेएस-अनुकूलित एएमआई कॉन्फ़िगरेशन के अलावा, त्वरित एएमआई में शामिल हैं न्यूरॉनएक्स रनटाइम.

कुबेरनेट्स से एमएल चिप्स तक पहुंचने के लिए, पैटर्न तैनात करता है AWS न्यूरॉन डिवाइस प्लगइन.

प्रोमेथियस के लिए मेट्रिक्स अमेज़ॅन प्रबंधित सेवा के संपर्क में हैं neuron-monitor DaemonSet, जो एक न्यूनतम कंटेनर को तैनात करता है न्यूरॉन उपकरण स्थापित. विशेष रूप से, neuron-monitor डेमनसेट चलाता है neuron-monitor कमांड को पाइप में डाल दिया गया neuron-monitor-prometheus.py सहयोगी स्क्रिप्ट (दोनों कमांड कंटेनर का हिस्सा हैं):

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

कमांड निम्नलिखित घटकों का उपयोग करता है:

  • neuron-monitor सिस्टम पर चल रहे न्यूरॉन अनुप्रयोगों से मेट्रिक्स और आँकड़े एकत्र करता है और एकत्रित डेटा को स्टडआउट में स्ट्रीम करता है JSON प्रारूप
  • neuron-monitor-prometheus.py JSON प्रारूप से टेलीमेट्री डेटा को प्रोमेथियस-संगत प्रारूप में मैप और प्रदर्शित करता है

अमेज़ॅन प्रबंधित ग्राफ़ाना में संबंधित डैशबोर्ड द्वारा डेटा की कल्पना की जाती है।

प्रोमेथियस और अमेज़ॅन प्रबंधित ग्राफाना के लिए अमेज़ॅन प्रबंधित सेवा के साथ मेट्रिक्स को इकट्ठा करने और विज़ुअलाइज़ करने के लिए बाकी सेटअप अन्य ओपन सोर्स आधारित पैटर्न में उपयोग किए जाने वाले समान है, जो इसमें शामिल हैं AWS Observability Accelerator for CDK गिटहब भंडार।

.. पूर्वापेक्षाएँ

इस पोस्ट में दिए गए चरणों को पूरा करने के लिए आपको निम्नलिखित की आवश्यकता है:

पर्यावरण स्थापित करें

अपना परिवेश स्थापित करने के लिए निम्नलिखित चरणों को पूरा करें:

  1. एक टर्मिनल विंडो खोलें और निम्नलिखित कमांड चलाएँ:
export AWS_REGION=<YOUR AWS REGION>
export ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' --output text)

  1. किसी भी मौजूदा अमेज़ॅन प्रबंधित ग्राफ़ाना कार्यक्षेत्र की कार्यस्थान आईडी पुनर्प्राप्त करें:
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. अमेज़ॅन प्रबंधित ग्राफ़ाना कार्यक्षेत्र से एक ग्राफ़ाना एपीआई कुंजी बनाएं:
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 ssm put-parameter --name "/cdk-accelerator/grafana-api-key" 
--type "SecureString" 
--value $AMG_API_KEY 
--region $AWS_REGION

इस रहस्य को एक्सटर्नल सीक्रेट्स ऐड-ऑन द्वारा एक्सेस किया जाएगा और ईकेएस क्लस्टर में मूल कुबेरनेट्स रहस्य के रूप में उपलब्ध कराया जाएगा।

AWS CDK वातावरण को बूटस्ट्रैप करें

किसी भी AWS CDK परिनियोजन के लिए पहला चरण पर्यावरण को बूटस्ट्रैप करना है। आप इसका उपयोग करें cdk bootstrap उस वातावरण में तैनाती करने के लिए AWS CDK द्वारा आवश्यक संसाधनों के साथ पर्यावरण (AWS खाते और AWS क्षेत्र का एक संयोजन) तैयार करने के लिए AWS CDK CLI में कमांड। प्रत्येक खाते और क्षेत्र संयोजन के लिए AWS CDK बूटस्ट्रैपिंग की आवश्यकता होती है, इसलिए यदि आपने पहले से ही किसी क्षेत्र में AWS CDK को बूटस्ट्रैप किया है, तो आपको बूटस्ट्रैपिंग प्रक्रिया को दोहराने की आवश्यकता नहीं है।

cdk bootstrap aws://$ACCOUNT_ID/$AWS_REGION

समाधान तैनात करें

समाधान तैनात करने के लिए निम्नलिखित चरणों को पूरा करें:

  1. क्लोन किया गया सीडीके-एडब्ल्यूएस-अवलोकन-त्वरक रिपॉजिटरी और निर्भरता पैकेज स्थापित करें। इस रिपॉजिटरी में टाइपस्क्रिप्ट में लिखा गया AWS CDK v2 कोड है।
git clone https://github.com/aws-observability/cdk-aws-observability-accelerator.git
cd cdk-aws-observability-accelerator

ग्राफाना डैशबोर्ड JSON फ़ाइलों के लिए वास्तविक सेटिंग्स AWS CDK संदर्भ में निर्दिष्ट होने की उम्मीद है। आपको अपडेट करना होगा context में cdk.json फ़ाइल, वर्तमान निर्देशिका में स्थित है। डैशबोर्ड का स्थान इसके द्वारा निर्दिष्ट किया गया है fluxRepository.values.GRAFANA_NEURON_DASH_URL पैरामीटर, और neuronNodeGroup इंस्टेंस प्रकार, संख्या और सेट करने के लिए उपयोग किया जाता है अमेज़न इलास्टिक ब्लॉक स्टोर (अमेज़ॅन ईबीएस) आकार का उपयोग नोड्स के लिए किया जाता है।

  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 डेमनसेट चल रहा है:
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 डेमनसेट चल रहा है:
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-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"

निम्नलिखित स्क्रीनशॉट हमारा अपेक्षित आउटपुट दिखाता है।

ग्राफाना न्यूरॉन डैशबोर्ड का उपयोग करके डेटा विज़ुअलाइज़ करें

अपने अमेज़ॅन प्रबंधित ग्राफ़ाना कार्यक्षेत्र में लॉग इन करें और नेविगेट करें डैशबोर्ड पैनल. आपको नाम का एक डैशबोर्ड देखना चाहिए न्यूरॉन/मॉनिटर.

ग्राफाना डैशबोर्ड पर कुछ दिलचस्प मेट्रिक्स देखने के लिए, हम निम्नलिखित मैनिफ़ेस्ट लागू करते हैं:

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

यह एक नमूना कार्यभार है जो संकलित करता है टॉर्चविज़न ResNet50 मॉडल और टेलीमेट्री डेटा उत्पन्न करने के लिए एक लूप में दोहरावदार अनुमान चलाता है।

यह सत्यापित करने के लिए कि पॉड सफलतापूर्वक तैनात किया गया था, निम्नलिखित कोड चलाएँ:

kubectl get pods

आपको नाम का एक पॉड देखना चाहिए pytorch-inference-resnet50.

कुछ मिनटों के बाद, अंदर देखते हुए न्यूरॉन/मॉनिटर डैशबोर्ड, आपको निम्नलिखित स्क्रीनशॉट के समान एकत्रित मेट्रिक्स देखना चाहिए।

ग्राफाना ऑपरेटर और फ्लक्स आपके डैशबोर्ड को Git के साथ सिंक्रोनाइज़ करने के लिए हमेशा एक साथ काम करते हैं। यदि आप गलती से अपने डैशबोर्ड हटा देते हैं, तो उन्हें स्वचालित रूप से पुन: प्रावधानित कर दिया जाएगा।

क्लीन अप

आप निम्न आदेश से संपूर्ण AWS CDK स्टैक को हटा सकते हैं:

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

निष्कर्ष

इस पोस्ट में, हमने आपको दिखाया कि EC2 Inf1 इंस्टेंसेस चलाने वाले डेटा प्लेन की विशेषता वाले EKS क्लस्टर में ओपन सोर्स टूलींग के साथ अवलोकनशीलता कैसे पेश की जाए। हमने डेटा प्लेन नोड्स के लिए अमेज़ॅन ईकेएस-अनुकूलित त्वरित एएमआई का चयन करके शुरुआत की, जिसमें न्यूरॉन कंटेनर रनटाइम शामिल है, जो एडब्ल्यूएस इनफेरेंटिया और ट्रेनियम न्यूरॉन उपकरणों तक पहुंच प्रदान करता है। फिर, न्यूरॉन कोर और उपकरणों को कुबेरनेट्स के सामने लाने के लिए, हमने न्यूरॉन डिवाइस प्लगइन तैनात किया। प्रोमेथियस-संगत प्रारूप में टेलीमेट्री डेटा का वास्तविक संग्रह और मानचित्रण किसके माध्यम से हासिल किया गया था neuron-monitor और neuron-monitor-prometheus.py. मेट्रिक्स प्रोमेथियस के लिए अमेज़ॅन प्रबंधित सेवा से प्राप्त किए गए थे और अमेज़ॅन प्रबंधित ग्राफाना के न्यूरॉन डैशबोर्ड पर प्रदर्शित किए गए थे।

हम अनुशंसा करते हैं कि आप इसमें अतिरिक्त अवलोकन पैटर्न का पता लगाएं सीडीके के लिए एडब्ल्यूएस ऑब्जर्वेबिलिटी एक्सेलेरेटर गिटहब रेपो। न्यूरॉन के बारे में अधिक जानने के लिए, देखें एडब्ल्यूएस न्यूरॉन दस्तावेज़ीकरण.


लेखक के बारे में

रिकार्डो फ्रेस्ची AWS में एक सीनियर सॉल्यूशंस आर्किटेक्ट हैं, जो एप्लिकेशन आधुनिकीकरण पर ध्यान केंद्रित करते हैं। वह साझेदारों और ग्राहकों के साथ मिलकर काम करता है ताकि उन्हें मौजूदा अनुप्रयोगों को फिर से तैयार करके और नए निर्माण करके एडब्ल्यूएस क्लाउड की यात्रा में उनके आईटी परिदृश्य को बदलने में मदद मिल सके।

स्पॉट_आईएमजी

नवीनतम खुफिया

स्पॉट_आईएमजी

हमारे साथ चैट करें

नमस्ते! मैं आपकी कैसे मदद कर सकता हूँ?