Kecerdasan Data Plato.
Pencarian Vertikal & Ai.

Observabilitas sumber terbuka untuk node AWS Inferentia dalam klaster Amazon EKS | Layanan Web Amazon

Tanggal:

Perkembangan terkini dalam pembelajaran mesin (ML) telah menghasilkan model yang semakin besar, beberapa di antaranya memerlukan ratusan miliar parameter. Meskipun model ini lebih canggih, pelatihan dan inferensi pada model tersebut memerlukan sumber daya komputasi yang besar. Meskipun tersedia perpustakaan pelatihan terdistribusi tingkat lanjut, pekerjaan pelatihan dan inferensi biasanya memerlukan ratusan akselerator (GPU atau chip ML yang dibuat khusus seperti Pelatihan AWS dan Inferensi AWS), dan karenanya puluhan atau ratusan contoh.

Dalam lingkungan terdistribusi seperti itu, kemampuan observasi terhadap instance dan chip ML menjadi kunci untuk menyempurnakan performa model dan mengoptimalkan biaya. Metrik memungkinkan tim memahami perilaku beban kerja dan mengoptimalkan alokasi dan pemanfaatan sumber daya, mendiagnosis anomali, dan meningkatkan efisiensi infrastruktur secara keseluruhan. Bagi data scientist, pemanfaatan dan saturasi chip ML juga relevan untuk perencanaan kapasitas.

Posting ini memandu Anda melalui Pola Observabilitas Sumber Terbuka untuk AWS Inferentia, yang menunjukkan kepada Anda cara memantau kinerja chip ML, yang digunakan dalam sebuah Layanan Amazon Elastic Kubernetes Kluster (Amazon EKS), dengan node bidang data berdasarkan Cloud komputasi elastis Amazon (Amazon EC2) tipe instans inf1 dan inf2.

Polanya adalah bagian dari Akselerator Observabilitas AWS CDK, serangkaian modul yang disetujui untuk membantu Anda mengatur kemampuan observasi untuk klaster Amazon EKS. Akselerator Observabilitas AWS CDK disusun berdasarkan pola, yang merupakan unit yang dapat digunakan kembali untuk menerapkan beberapa sumber daya. Kumpulan instrumen pola observasi sumber terbuka yang dapat diamati dengan Grafana yang Dikelola Amazon dasbor, sebuah Distro AWS untuk OpenTelemetry kolektor untuk mengumpulkan metrik, dan Layanan Terkelola Amazon untuk Prometheus untuk menyimpannya.

Ikhtisar solusi

Diagram berikut menggambarkan arsitektur solusi.

Solusi ini menyebarkan klaster Amazon EKS dengan grup simpul yang mencakup instans Inf1.

Tipe AMI dari grup simpul adalah AL2_x86_64_GPU, yang menggunakan Amazon EKS mengoptimalkan akselerasi Amazon Linux AMI. Selain konfigurasi AMI standar yang dioptimalkan Amazon EKS, AMI yang dipercepat mencakup Waktu proses NeuronX.

Untuk mengakses chip ML dari Kubernetes, pola tersebut menyebarkan Neuron AWS plugin perangkat.

Metrik diekspos ke Amazon Managed Service untuk Prometheus oleh neuron-monitor DaemonSet, yang menyebarkan container minimal, dengan Alat neuron dipasang. Secara khusus, neuron-monitor DaemonSet menjalankan neuron-monitor perintah disalurkan ke neuron-monitor-prometheus.py skrip pendamping (kedua perintah adalah bagian dari wadah):

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

Perintah ini menggunakan komponen-komponen berikut:

  • neuron-monitor mengumpulkan metrik dan statistik dari aplikasi Neuron yang berjalan di sistem dan mengalirkan data yang dikumpulkan ke stdout Format JSON
  • neuron-monitor-prometheus.py memetakan dan memaparkan data telemetri dari format JSON ke dalam format yang kompatibel dengan Prometheus

Data divisualisasikan di Amazon Managed Grafana melalui dasbor yang sesuai.

Penyiapan selanjutnya untuk mengumpulkan dan memvisualisasikan metrik dengan Amazon Managed Service untuk Prometheus dan Amazon Managed Grafana serupa dengan yang digunakan dalam pola berbasis sumber terbuka lainnya, yang disertakan dalam AWS Observability Accelerator for CDK Repositori GitHub.

Prasyarat

Anda memerlukan yang berikut ini untuk menyelesaikan langkah-langkah dalam posting ini:

Mengatur lingkungan

Selesaikan langkah-langkah berikut untuk menyiapkan lingkungan Anda:

  1. Buka jendela terminal dan jalankan perintah berikut:
export AWS_REGION=<YOUR AWS REGION>
export ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' --output text)

  1. Ambil ID ruang kerja dari ruang kerja Amazon Managed Grafana yang ada:
aws grafana list-workspaces

Berikut ini adalah contoh keluaran kami:

{
  "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. Tetapkan nilai dari id dan endpoint ke variabel lingkungan berikut:
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 perlu disertakan https://.

  1. Buat kunci API Grafana dari ruang kerja 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. Siapkan rahasia di Manajer Sistem AWS:
aws ssm put-parameter --name "/cdk-accelerator/grafana-api-key" 
--type "SecureString" 
--value $AMG_API_KEY 
--region $AWS_REGION

Rahasia tersebut akan diakses oleh add-on Rahasia Eksternal dan tersedia sebagai rahasia asli Kubernetes di cluster EKS.

Bootstrap lingkungan AWS CDK

Langkah pertama dalam penerapan AWS CDK adalah melakukan bootstrap terhadap lingkungan. Anda menggunakan cdk bootstrap perintah di CLI AWS CDK untuk mempersiapkan lingkungan (kombinasi akun AWS dan Wilayah AWS) dengan sumber daya yang diperlukan oleh AWS CDK untuk melakukan penerapan ke lingkungan tersebut. Bootstrapping AWS CDK diperlukan untuk setiap kombinasi akun dan Wilayah, jadi jika Anda sudah melakukan bootstrap AWS CDK di suatu Wilayah, Anda tidak perlu mengulangi proses bootstrapping.

cdk bootstrap aws://$ACCOUNT_ID/$AWS_REGION

Terapkan solusinya

Selesaikan langkah-langkah berikut untuk menyebarkan solusi:

  1. Clone file cdk-aws-observabilitas-akselerator repositori dan instal paket ketergantungan. Repositori ini berisi kode AWS CDK v2 yang ditulis dalam TypeScript.
git clone https://github.com/aws-observability/cdk-aws-observability-accelerator.git
cd cdk-aws-observability-accelerator

Pengaturan sebenarnya untuk file JSON dasbor Grafana diharapkan ditentukan dalam konteks AWS CDK. Anda perlu memperbarui context dalam cdk.json file, terletak di direktori saat ini. Lokasi dasbor ditentukan oleh fluxRepository.values.GRAFANA_NEURON_DASH_URL parameter, dan neuronNodeGroup digunakan untuk mengatur jenis instance, nomor, dan Toko Blok Elastis Amazon (Amazon EBS) ukuran yang digunakan untuk node.

  1. Masukkan cuplikan berikut ke dalamnya cdk.json, mengganti 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
    }
  }

Anda dapat mengganti jenis instans Inf1 dengan Inf2 dan mengubah ukurannya sesuai kebutuhan. Untuk memeriksa ketersediaan di Wilayah yang Anda pilih, jalankan perintah berikut (ubah Values sesuai keinginan Anda):

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

  1. Instal dependensi proyek:
npm install

  1. Jalankan perintah berikut untuk menyebarkan pola observasi sumber terbuka:
make build
make pattern single-new-eks-inferentia-opensource-observability deploy

Validasi solusinya

Selesaikan langkah-langkah berikut untuk memvalidasi solusi:

  1. Jalankan update-kubeconfig memerintah. Anda seharusnya bisa mendapatkan perintah dari pesan keluaran dari perintah sebelumnya:
aws eks update-kubeconfig --name single-new-eks-inferentia-opensource... --region <your region> --role-arn arn:aws:iam::xxxxxxxxx:role/single-new-eks-....

  1. Verifikasi sumber daya yang Anda buat:
kubectl get pods -A

Tangkapan layar berikut menunjukkan contoh keluaran kami.

  1. Pastikan neuron-device-plugin-daemonset DaemonSet sedang berjalan:
kubectl get ds neuron-device-plugin-daemonset --namespace kube-system

Berikut ini adalah hasil yang kami harapkan:

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

  1. Konfirmasikan bahwa neuron-monitor DaemonSet sedang berjalan:
kubectl get ds neuron-monitor --namespace kube-system

Berikut ini adalah hasil yang kami harapkan:

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

  1. Untuk memverifikasi bahwa perangkat dan inti Neuron terlihat, jalankan neuron-ls dan neuron-top perintah dari, misalnya, pod monitor neuron Anda (Anda bisa mendapatkan nama pod dari output kubectl get pods -A):
kubectl exec -it {your neuron-monitor pod} -n kube-system -- /bin/bash -c "neuron-ls"

Tangkapan layar berikut menunjukkan keluaran yang diharapkan.

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

Tangkapan layar berikut menunjukkan keluaran yang diharapkan.

Visualisasikan data menggunakan dashboard Grafana Neuron

Masuk ke ruang kerja Amazon Managed Grafana Anda dan navigasikan ke Dashboard panel. Anda akan melihat dasbor bernama Neuron/Pemantau.

Untuk melihat beberapa metrik menarik di dashboard Grafana, kami menerapkan manifes berikut:

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

Ini adalah contoh beban kerja yang mengkompilasi model oborvision ResNet50 dan menjalankan inferensi berulang dalam satu lingkaran untuk menghasilkan data telemetri.

Untuk memverifikasi pod berhasil di-deploy, jalankan kode berikut:

kubectl get pods

Anda akan melihat sebuah pod bernama pytorch-inference-resnet50.

Setelah beberapa menit, melihat ke dalam Neuron/Pemantau dasbor, Anda akan melihat metrik yang dikumpulkan serupa dengan tangkapan layar berikut.

Operator Grafana dan Flux selalu bekerja sama untuk menyinkronkan dasbor Anda dengan Git. Jika Anda menghapus dasbor secara tidak sengaja, dasbor tersebut akan disediakan ulang secara otomatis.

Membersihkan

Anda dapat menghapus seluruh tumpukan AWS CDK dengan perintah berikut:

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

Kesimpulan

Dalam postingan ini, kami menunjukkan kepada Anda cara memperkenalkan kemampuan observasi, dengan peralatan sumber terbuka, ke dalam klaster EKS yang menampilkan bidang data yang menjalankan instans EC2 Inf1. Kami memulai dengan memilih AMI terakselerasi yang dioptimalkan Amazon EKS untuk node bidang data, yang mencakup runtime kontainer Neuron, yang menyediakan akses ke perangkat AWS Inferentia dan Trainium Neuron. Kemudian, untuk mengekspos inti dan perangkat Neuron ke Kubernetes, kami menerapkan plugin perangkat Neuron. Pengumpulan dan pemetaan data telemetri yang sebenarnya ke dalam format yang kompatibel dengan Prometheus dicapai melalui neuron-monitor dan neuron-monitor-prometheus.py. Metrik bersumber dari Amazon Managed Service untuk Prometheus dan ditampilkan di dasbor Neuron Amazon Managed Grafana.

Kami menyarankan Anda menjelajahi pola observasi tambahan di Akselerator Observabilitas AWS untuk CDK Repo GitHub. Untuk mempelajari lebih lanjut tentang Neuron, lihat Dokumentasi Neuron AWS.


tentang Penulis

Riccardo Freschi adalah Sr. Solutions Architect di AWS, dengan fokus pada modernisasi aplikasi. Dia bekerja sama dengan mitra dan pelanggan untuk membantu mereka mengubah lanskap TI dalam perjalanan mereka menuju AWS Cloud dengan memfaktorkan ulang aplikasi yang sudah ada dan membangun aplikasi baru.

tempat_img

Intelijen Terbaru

tempat_img

Hubungi kami

Hai, yang di sana! Apa yang bisa saya bantu?