Trí thông minh dữ liệu Plato.
Tìm kiếm dọc & Ai.

Khả năng quan sát nguồn mở cho các nút AWS Inferentia trong cụm Amazon EKS | Dịch vụ web của Amazon

Ngày:

Những phát triển gần đây trong học máy (ML) đã dẫn đến các mô hình ngày càng lớn, một số trong đó yêu cầu hàng trăm tỷ tham số. Mặc dù chúng mạnh hơn nhưng việc đào tạo và suy luận trên các mô hình đó đòi hỏi nguồn lực tính toán đáng kể. Mặc dù có sẵn các thư viện đào tạo phân tán nâng cao, nhưng các công việc đào tạo và suy luận thường cần hàng trăm bộ tăng tốc (GPU hoặc chip ML được xây dựng có mục đích như Đào tạo AWSSuy luận AWS), và do đó có hàng chục hoặc hàng trăm trường hợp.

Trong các môi trường phân tán như vậy, khả năng quan sát của cả phiên bản và chip ML trở thành chìa khóa để tinh chỉnh hiệu suất mô hình và tối ưu hóa chi phí. Số liệu cho phép các nhóm hiểu hành vi khối lượng công việc và tối ưu hóa việc phân bổ và sử dụng tài nguyên, chẩn đoán các điểm bất thường và tăng hiệu quả cơ sở hạ tầng tổng thể. Đối với các nhà khoa học dữ liệu, việc sử dụng và bão hòa chip ML cũng có liên quan đến việc lập kế hoạch công suất.

Bài đăng này hướng dẫn bạn qua Mẫu khả năng quan sát nguồn mở cho AWS Inferentia, hướng dẫn bạn cách giám sát hiệu suất của chip ML, được sử dụng trong Dịch vụ Kubernetes đàn hồi của Amazon Cụm (Amazon EKS), với các nút mặt phẳng dữ liệu dựa trên Đám mây điện toán đàn hồi Amazon (Amazon EC2) loại phiên bản thông tin1thông tin2.

Mẫu này là một phần của Trình tăng tốc khả năng quan sát CDK của AWS, một tập hợp các mô-đun có ý kiến ​​giúp bạn thiết lập khả năng quan sát cho các cụm Amazon EKS. Bộ tăng tốc khả năng quan sát CDK của AWS được tổ chức theo các mẫu, là các đơn vị có thể tái sử dụng để triển khai nhiều tài nguyên. Bộ khả năng quan sát mã nguồn mở của các công cụ mẫu có khả năng quan sát được với Grafana do Amazon quản lý bảng điều khiển, một Bản phân phối AWS dành cho OpenTelemetry người thu thập để thu thập số liệu và Dịch vụ được quản lý của Amazon dành cho Prometheus để lưu trữ chúng.

Tổng quan về giải pháp

Sơ đồ sau minh họa kiến ​​trúc giải pháp.

Giải pháp này triển khai cụm Amazon EKS với nhóm nút bao gồm các phiên bản Inf1.

Loại AMI của nhóm nút là AL2_x86_64_GPU, sử dụng Amazon Linux AMI tăng tốc được tối ưu hóa của Amazon EKS. Ngoài cấu hình AMI được tối ưu hóa cho Amazon EKS tiêu chuẩn, AMI được tăng tốc bao gồm Thời gian chạy NeuronX.

Để truy cập các chip ML từ Kubernetes, mẫu sẽ triển khai Tế bào thần kinh AWS plugin thiết bị.

Các số liệu được tiếp xúc với Amazon Managed Service dành cho Prometheus bởi neuron-monitor DaemonSet, triển khai một vùng chứa tối thiểu, với Công cụ nơ-ron Cài đặt. Cụ thể, neuron-monitor DaemonSet chạy neuron-monitor lệnh được dẫn vào neuron-monitor-prometheus.py tập lệnh đồng hành (cả hai lệnh đều là một phần của vùng chứa):

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

Lệnh sử dụng các thành phần sau:

  • neuron-monitor thu thập số liệu và số liệu thống kê từ các ứng dụng Neuron đang chạy trên hệ thống và truyền dữ liệu đã thu thập đến thiết bị xuất chuẩn Định dạng JSON
  • neuron-monitor-prometheus.py ánh xạ và hiển thị dữ liệu đo từ xa từ định dạng JSON sang định dạng tương thích với Prometheus

Dữ liệu được hiển thị trong Amazon Managed Grafana bằng bảng điều khiển tương ứng.

Phần còn lại của quá trình thiết lập để thu thập và trực quan hóa các số liệu với Amazon Managed Service cho Prometheus và Amazon Managed Grafana tương tự như phần được sử dụng trong các mẫu dựa trên nguồn mở khác, được bao gồm trong AWS Observability Accelerator for CDK Kho lưu trữ GitHub.

Điều kiện tiên quyết

Bạn cần những điều sau đây để hoàn thành các bước trong bài viết này:

Thiết lập môi trường

Hoàn thành các bước sau để thiết lập môi trường của bạn:

  1. Mở một cửa sổ terminal và chạy các lệnh sau:
export AWS_REGION=<YOUR AWS REGION>
export ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' --output text)

  1. Truy xuất ID không gian làm việc của bất kỳ không gian làm việc Amazon Managed Grafana hiện có nào:
aws grafana list-workspaces

Sau đây là đầu ra mẫu của chúng tôi:

{
  "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. Gán các giá trị của idendpoint đến các biến môi trường sau:
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 cần bao gồm https://.

  1. Tạo khóa API Grafana từ không gian làm việc Grafana được quản lý bởi Amazon:
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. Thiết lập một bí mật trong Người quản lý hệ thống AWS:
aws ssm put-parameter --name "/cdk-accelerator/grafana-api-key" 
--type "SecureString" 
--value $AMG_API_KEY 
--region $AWS_REGION

Bí mật sẽ được tiện ích bổ sung Bí mật bên ngoài truy cập và được cung cấp dưới dạng bí mật Kubernetes gốc trong cụm EKS.

Khởi động lại môi trường AWS CDK

Bước đầu tiên trong quá trình triển khai AWS CDK là khởi động môi trường. Bạn sử dụng cdk bootstrap lệnh trong AWS CDK CLI để chuẩn bị môi trường (sự kết hợp giữa tài khoản AWS và Khu vực AWS) với các tài nguyên mà AWS CDK yêu cầu để thực hiện triển khai vào môi trường đó. Việc khởi động AWS CDK là cần thiết cho từng tổ hợp tài khoản và Khu vực, vì vậy nếu bạn đã khởi động AWS CDK trong một Khu vực thì bạn không cần phải lặp lại quy trình khởi động.

cdk bootstrap aws://$ACCOUNT_ID/$AWS_REGION

Triển khai giải pháp

Hoàn thành các bước sau để triển khai giải pháp:

  1. Sao chép cdk-aws-khả năng quan sát-tăng tốc kho lưu trữ và cài đặt các gói phụ thuộc. Kho lưu trữ này chứa mã AWS CDK v2 được viết bằng TypeScript.
git clone https://github.com/aws-observability/cdk-aws-observability-accelerator.git
cd cdk-aws-observability-accelerator

Cài đặt thực tế cho các tệp JSON của bảng thông tin Grafana dự kiến ​​sẽ được chỉ định trong ngữ cảnh AWS CDK. Bạn cần cập nhật context trong cdk.json tập tin, nằm trong thư mục hiện tại. Vị trí của bảng điều khiển được chỉ định bởi fluxRepository.values.GRAFANA_NEURON_DASH_URL tham số và neuronNodeGroup được sử dụng để đặt loại phiên bản, số lượng và Cửa hàng đàn hồi Amazon (Amazon EBS) kích thước được sử dụng cho các nút.

  1. Nhập đoạn mã sau vào cdk.json, thay thế 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
    }
  }

Bạn có thể thay thế loại phiên bản Inf1 bằng Inf2 và thay đổi kích thước nếu cần. Để kiểm tra tính khả dụng trong Khu vực bạn đã chọn, hãy chạy lệnh sau (sửa đổi Values như bạn thấy phù hợp):

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

  1. Cài đặt các phụ thuộc của dự án:
npm install

  1. Chạy các lệnh sau để triển khai mẫu khả năng quan sát nguồn mở:
make build
make pattern single-new-eks-inferentia-opensource-observability deploy

Xác thực giải pháp

Hoàn thành các bước sau để xác thực giải pháp:

  1. Chạy update-kubeconfig yêu cầu. Bạn sẽ có thể nhận được lệnh từ thông báo đầu ra của lệnh trước đó:
aws eks update-kubeconfig --name single-new-eks-inferentia-opensource... --region <your region> --role-arn arn:aws:iam::xxxxxxxxx:role/single-new-eks-....

  1. Xác minh tài nguyên bạn đã tạo:
kubectl get pods -A

Ảnh chụp màn hình sau đây hiển thị đầu ra mẫu của chúng tôi.

  1. Hãy đảm bảo rằng neuron-device-plugin-daemonset DaemonSet đang chạy:
kubectl get ds neuron-device-plugin-daemonset --namespace kube-system

Sau đây là sản lượng dự kiến ​​của chúng tôi:

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

  1. Xác nhận rằng neuron-monitor DaemonSet đang chạy:
kubectl get ds neuron-monitor --namespace kube-system

Sau đây là sản lượng dự kiến ​​của chúng tôi:

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

  1. Để xác minh rằng các thiết bị và lõi Neuron có thể nhìn thấy được, hãy chạy lệnh neuron-lsneuron-top các lệnh từ, ví dụ: nhóm giám sát nơ-ron của bạn (bạn có thể lấy tên của nhóm từ đầu ra của kubectl get pods -A):
kubectl exec -it {your neuron-monitor pod} -n kube-system -- /bin/bash -c "neuron-ls"

Ảnh chụp màn hình sau đây hiển thị kết quả mong đợi của chúng tôi.

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

Ảnh chụp màn hình sau đây hiển thị kết quả mong đợi của chúng tôi.

Trực quan hóa dữ liệu bằng bảng điều khiển Grafana Neuron

Đăng nhập vào không gian làm việc Amazon Managed Grafana của bạn và điều hướng đến Biểu đồ bảng điều khiển. Bạn sẽ thấy một bảng điều khiển có tên Tế bào thần kinh / Màn hình.

Để xem một số số liệu thú vị trên bảng điều khiển Grafana, chúng tôi áp dụng bảng kê khai sau:

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

Đây là khối lượng công việc mẫu biên dịch Mô hình ResNet50 của torchvision và chạy suy luận lặp đi lặp lại trong một vòng lặp để tạo ra dữ liệu đo từ xa.

Để xác minh nhóm đã được triển khai thành công, hãy chạy đoạn mã sau:

kubectl get pods

Bạn sẽ thấy một nhóm có tên pytorch-inference-resnet50.

Sau vài phút, nhìn vào Tế bào thần kinh / Màn hình trang tổng quan, bạn sẽ thấy các số liệu được thu thập tương tự như ảnh chụp màn hình sau.

Grafana Operator và Flux luôn phối hợp với nhau để đồng bộ hóa bảng thông tin của bạn với Git. Nếu bạn vô tình xóa trang tổng quan của mình, chúng sẽ tự động được cấp lại.

Làm sạch

Bạn có thể xóa toàn bộ ngăn xếp CDK AWS bằng lệnh sau:

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

Kết luận

Trong bài đăng này, chúng tôi đã hướng dẫn bạn cách giới thiệu khả năng quan sát, bằng công cụ nguồn mở, vào cụm EKS có mặt phẳng dữ liệu chạy các phiên bản EC2 Inf1. Chúng tôi bắt đầu bằng cách chọn AMI tăng tốc được tối ưu hóa cho Amazon EKS cho các nút mặt phẳng dữ liệu, bao gồm thời gian chạy bộ chứa Neuron, cung cấp quyền truy cập vào các thiết bị AWS Inferentia và Trainium Neuron. Sau đó, để hiển thị các lõi và thiết bị Neuron cho Kubernetes, chúng tôi đã triển khai plugin thiết bị Neuron. Việc thu thập và ánh xạ thực tế dữ liệu đo từ xa sang định dạng tương thích với Prometheus đã đạt được thông qua neuron-monitorneuron-monitor-prometheus.py. Số liệu được lấy từ Amazon Managed Service dành cho Prometheus và được hiển thị trên bảng điều khiển Neuron của Amazon Managed Grafana.

Chúng tôi khuyên bạn nên khám phá các mẫu có thể quan sát bổ sung trong Trình tăng tốc khả năng quan sát của AWS dành cho CDK Kho lưu trữ GitHub. Để tìm hiểu thêm về Neuron, hãy tham khảo Tài liệu AWS Neuron.


Lưu ý

Riccardo Freschi là Kiến trúc sư giải pháp cấp cao tại AWS, tập trung vào hiện đại hóa ứng dụng. Anh hợp tác chặt chẽ với các đối tác và khách hàng để giúp họ chuyển đổi bối cảnh CNTT trong hành trình sử dụng Đám mây AWS bằng cách tái cấu trúc các ứng dụng hiện có và xây dựng các ứng dụng mới.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?