플라톤 데이터 인텔리전스.
수직 검색 및 인공 지능.

Amazon EKS 클러스터 내 AWS Inferentia 노드에 대한 오픈 소스 관찰성 | 아마존 웹 서비스

시간

최근 기계 학습(ML)의 발전으로 인해 모델이 점점 더 커지고 있으며, 그 중 일부에는 수천억 개의 매개변수가 필요합니다. 더 강력하기는 하지만 해당 모델에 대한 교육 및 추론에는 상당한 계산 리소스가 필요합니다. 고급 분산 훈련 라이브러리의 가용성에도 불구하고 훈련 및 추론 작업에는 수백 개의 가속기(GPU 또는 다음과 같은 특수 제작된 ML 칩)가 필요한 것이 일반적입니다. AWS 트레이닝AWS 인 페렌 시아), 따라서 수십 또는 수백 개의 인스턴스가 있습니다.

이러한 분산 환경에서는 인스턴스와 ML 칩 모두의 관측 가능성이 모델 성능 미세 조정 및 비용 최적화의 핵심이 됩니다. 측정항목을 통해 팀은 워크로드 동작을 이해하고 리소스 할당 및 활용도를 최적화하며 이상 현상을 진단하고 전반적인 인프라 효율성을 높일 수 있습니다. 데이터 과학자의 경우 ML 칩 활용도 및 포화도는 용량 계획과 관련이 있습니다.

이 게시물에서는 다음 단계를 안내합니다. AWS Inferentia의 오픈 소스 관찰 가능성 패턴, ML 칩의 성능을 모니터링하는 방법을 보여줍니다. Amazon Elastic Kubernetes 서비스 (Amazon EKS) 클러스터, 다음을 기반으로 하는 데이터 플레인 노드 포함 아마존 엘라스틱 컴퓨트 클라우드 (Amazon EC2) 유형의 인스턴스 정보1정보2.

패턴은 다음의 일부입니다. AWS CDK 관측 가능성 액셀러레이터, Amazon EKS 클러스터에 대한 관찰 가능성을 설정하는 데 도움이 되는 독자적인 모듈 세트입니다. AWS CDK Observability Accelerator는 여러 리소스를 배포하기 위해 재사용 가능한 단위인 패턴을 중심으로 구성됩니다. 오픈 소스 관찰 가능성 패턴 세트는 관찰 가능성을 계측합니다. 아마존 매니지드 그라파나 대시보드, OpenTelemetry용 AWS Distro 측정항목을 수집하는 수집기 및 Prometheus용 Amazon 관리형 서비스 그들을 저장합니다.

솔루션 개요

다음 다이어그램은 솔루션 아키텍처를 보여줍니다.

이 솔루션은 Inf1 인스턴스가 포함된 노드 그룹이 있는 Amazon EKS 클러스터를 배포합니다.

노드 그룹의 AMI 유형은 다음과 같습니다. AL2_x86_64_GPU, 사용하는 Amazon EKS는 가속화된 Amazon Linux AMI에 최적화되었습니다.. 표준 Amazon EKS 최적화 AMI 구성 외에도 가속화된 AMI에는 다음이 포함됩니다. NeuronX 런타임.

Kubernetes에서 ML 칩에 액세스하기 위해 패턴은 AWS 뉴런 장치 플러그인.

지표는 다음을 통해 Amazon Managed Service for 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 Managed Service for 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 Managed Grafana 작업공간의 작업공간 ID를 검색합니다.
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. 다음의 값을 할당합니다. idendpoint 다음 환경 변수에:
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. Amazon Managed Grafana 작업 공간에서 Grafana API 키를 생성합니다.
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

비밀은 외부 비밀 추가 기능을 통해 액세스되며 EKS 클러스터에서 기본 Kubernetes 비밀로 제공됩니다.

AWS CDK 환경 부트스트랩

AWS CDK 배포의 첫 번째 단계는 환경을 부트스트랩하는 것입니다. 당신은 cdk bootstrap AWS CDK CLI의 명령을 사용하여 AWS CDK에서 해당 환경에 배포를 수행하는 데 필요한 리소스로 환경(AWS 계정과 AWS 리전의 조합)을 준비합니다. AWS CDK 부트스트래핑은 각 계정 및 지역 조합에 필요하므로 이미 한 지역에서 AWS CDK를 부트스트랩한 경우 부트스트래핑 프로세스를 반복할 필요가 없습니다.

cdk bootstrap aws://$ACCOUNT_ID/$AWS_REGION

솔루션 배포

솔루션을 배포하려면 다음 단계를 완료하세요.

  1. 클론 cdk-aws-관찰 가능성-가속기 저장소를 열고 종속성 패키지를 설치하십시오. 이 리포지토리에는 TypeScript로 작성된 AWS CDK v2 코드가 포함되어 있습니다.
git clone https://github.com/aws-observability/cdk-aws-observability-accelerator.git
cd cdk-aws-observability-accelerator

Grafana 대시보드 JSON 파일의 실제 설정은 AWS CDK 컨텍스트에서 지정되어야 합니다. 업데이트해야합니다 context FBI 증오 범죄 보고서 cdk.json 현재 디렉터리에 있는 파일입니다. 대시보드의 위치는 다음에 의해 지정됩니다. fluxRepository.values.GRAFANA_NEURON_DASH_URL 매개변수 및 neuronNodeGroup 인스턴스 유형, 수 및 인스턴스를 설정하는 데 사용됩니다. 아마존 엘라스틱 블록 스토어 (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-lsneuron-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 작업 공간에 로그인하고 다음으로 이동합니다. 대시 보드 패널. 라는 대시보드가 ​​표시됩니다. 뉴런/모니터.

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 -

이는 다음을 컴파일하는 샘플 워크로드입니다. 토치비전 ResNet50 모델 루프에서 반복적인 추론을 실행하여 원격 측정 데이터를 생성합니다.

Pod가 성공적으로 배포되었는지 확인하려면 다음 코드를 실행하세요.

kubectl get pods

이름이 지정된 포드가 표시됩니다. pytorch-inference-resnet50.

몇 분 후에 내용을 살펴보니 뉴런/모니터 대시보드에는 다음 스크린샷과 유사한 수집된 측정항목이 표시됩니다.

Grafana Operator와 Flux는 항상 함께 작동하여 대시보드를 Git과 동기화합니다. 실수로 대시보드를 삭제하면 자동으로 다시 프로비저닝됩니다.

정리

다음 명령을 사용하여 전체 AWS CDK 스택을 삭제할 수 있습니다.

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

결론

이 게시물에서는 EC2 Inf1 인스턴스를 실행하는 데이터 플레인을 갖춘 EKS 클러스터에 오픈 소스 도구를 사용하여 관찰 가능성을 도입하는 방법을 보여주었습니다. 먼저 Neuron 컨테이너 런타임을 포함하고 AWS Inferentia 및 Trainium Neuron 디바이스에 대한 액세스를 제공하는 데이터 플레인 노드에 대해 Amazon EKS 최적화 가속 AMI를 선택했습니다. 그런 다음 Neuron 코어와 장치를 Kubernetes에 노출하기 위해 Neuron 장치 플러그인을 배포했습니다. Prometheus 호환 형식으로 원격 측정 데이터를 실제로 수집하고 매핑하는 작업은 다음을 통해 이루어졌습니다. neuron-monitorneuron-monitor-prometheus.py. 지표는 Amazon Managed Service for Prometheus에서 제공되었으며 Amazon Managed Grafana의 Neuron 대시보드에 표시되었습니다.

다음에서 추가 관찰 가능성 패턴을 탐색하는 것이 좋습니다. CDK용 AWS Observability Accelerator GitHub 레포. Neuron에 대해 자세히 알아보려면 다음을 참조하세요. AWS Neuron 설명서.


저자에 관하여

리카르도 프레스키 AWS의 수석 솔루션스 아키텍트로서 애플리케이션 현대화에 주력하고 있습니다. 그는 파트너 및 고객과 긴밀히 협력하여 기존 애플리케이션을 리팩터링하고 새로운 애플리케이션을 구축함으로써 AWS 클라우드로의 여정에서 IT 환경을 혁신하도록 돕습니다.

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?