Şubat 2022'de Amazon Web Services eklendi Amazon CloudWatch'ta NVIDIA GPU ölçümleri desteğimetrikleri şuradan aktarmayı mümkün kılıyor: Amazon CloudWatch Aracısı için Amazon Bulut İzleme ve optimum GPU kullanımı için kodunuzu izleyin. O zamandan bu yana bu özellik, yönetilen Amazon Makine Görüntülerimizin (AMI'ler) çoğuna entegre edilmiştir. Derin Öğrenme AMI ve AWS Paralel Küme AMI. GPU kullanımına ilişkin örnek düzeyinde ölçümler elde etmek için Packer veya Amazon ImageBuilder'ı kullanarak kendi özel AMI'nizi önyükleyebilir ve bunu aşağıdakiler gibi çeşitli yönetilen hizmet tekliflerinde kullanabilirsiniz: AWS Toplu İş, Amazon Elastik Konteyner Hizmeti (Amazon ECS) veya Amazon Elastik Kubernetes Hizmeti (Amazon EKS). Ancak birçok konteyner tabanlı hizmet teklifi ve iş yükü için konteyner, kapsül veya ad alanı düzeyinde kullanım ölçümlerini yakalamak idealdir.
Bu gönderide kapsayıcı tabanlı GPU ölçümlerinin nasıl ayarlanacağı ayrıntılarıyla anlatılır ve bu ölçümlerin EKS bölmelerinden toplanmasına ilişkin bir örnek sunulur.
Çözüme genel bakış
Konteyner tabanlı GPU ölçümlerini göstermek için aşağıdakileri içeren bir EKS kümesi oluşturuyoruz: g5.2xlarge
örnekler; ancak bu, desteklenen tüm NVIDIA hızlandırmalı bulut sunucusu aileleriyle çalışacaktır.
GPU kaynaklarının kullanımını sağlamak için NVIDIA GPU operatörünü dağıtıyoruz ve NVIDIA DCGM Aktarıcı GPU ölçümlerinin toplanmasını etkinleştirmek için. Daha sonra iki mimariyi inceliyoruz. İlki, aşağıdaki şemada gösterildiği gibi, ölçümleri bir CloudWatch aracısı aracılığıyla NVIDIA DCGM Exporter'dan CloudWatch'a bağlar.
İkinci mimari (aşağıdaki şemaya bakın), metrikleri DCGM Exporter'dan Prometheus, sonra bir kullanırız grafana Bu ölçümleri görselleştirmek için kontrol paneli.
Önkoşullar
Bu yazıdaki tüm yığının yeniden oluşturulmasını kolaylaştırmak için, gerekli tüm araçların (aws cli, eksctl, helm, vb.) önceden kurulu olduğu bir konteyner kullanıyoruz. Klonlamak için GitHub'dan konteyner projesi, ihtiyacın olacak git. Konteyneri oluşturmak ve çalıştırmak için ihtiyacınız olacak liman işçisi. Mimariyi dağıtmak için ihtiyacınız olacak AWS kimlik bilgileri. Bağlantı noktası yönlendirmeyi kullanarak Kubernetes hizmetlerine erişimi etkinleştirmek için ayrıca Kubectl.
Bu önkoşullar yerel makinenize kurulabilir, EC2 örneği ile GÜZEL DCVya da AWS Bulut9. Bu yazıda bir kullanacağız c5.2xlarge
Cloud9 örneği ile 40GB
yerel depolama hacmi. Cloud9'u kullanırken lütfen şu adresi ziyaret ederek AWS tarafından yönetilen geçici kimlik bilgilerini devre dışı bırakın: Cloud9->Preferences->AWS Settings
aşağıdaki ekran görüntüsünde gösterildiği gibi.
aws-do-eks kapsayıcısını oluşturun ve çalıştırın
Tercih ettiğiniz ortamda bir terminal kabuğu açın ve aşağıdaki komutları çalıştırın:
git clone https://github.com/aws-samples/aws-do-eks
cd aws-do-eks
./build.sh
./run.sh
./exec.sh
Sonuç aşağıdaki gibidir:
Artık konteyner ortamında, aşağıdaki görevleri tamamlamak için gereken tüm araçlara sahip bir kabuğunuz var. Biz buna “aws-do-eks kabuğu” diyeceğiz. Aksi özellikle belirtilmediği sürece, aşağıdaki bölümlerdeki komutları bu kabukta çalıştıracaksınız.
Düğüm grubuyla EKS kümesi oluşturma
Bu grup, seçtiğiniz bir GPU bulut sunucusu ailesini içerir; bu örnekte şunu kullanıyoruz: g5.2xlarge
örnek türü.
The aws-do-eks projesi bir dizi küme yapılandırmasıyla birlikte gelir. Tek bir konfigürasyon değişikliği ile istediğiniz küme konfigürasyonunu belirleyebilirsiniz.
- Konteyner kabuğunda çalıştırın
./env-config.sh
ve sonra CONF=conf/eksctl/yaml/eks-gpu-g5.yaml
- Küme yapılandırmasını doğrulamak için çalıştırın
./eks-config.sh
Aşağıdaki küme bildirimini görmelisiniz:
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata: name: do-eks-yaml-g5 version: "1.25" region: us-east-1
availabilityZones: - us-east-1a - us-east-1b - us-east-1c - us-east-1d
managedNodeGroups: - name: sys instanceType: m5.xlarge desiredCapacity: 1 iam: withAddonPolicies: autoScaler: true cloudWatch: true - name: g5 instanceType: g5.2xlarge instancePrefix: g5-2xl privateNetworking: true efaEnabled: false minSize: 0 desiredCapacity: 1 maxSize: 10 volumeSize: 80 iam: withAddonPolicies: cloudWatch: true
iam: withOIDC: true
- Kümeyi oluşturmak için kapsayıcıda aşağıdaki komutu çalıştırın
Çıktı aşağıdaki gibidir:
root@e5ecb162812f:/eks# ./eks-create.sh /eks/impl/eksctl/yaml /eks ./eks-create.sh Mon May 22 20:50:59 UTC 2023
Creating cluster using /eks/conf/eksctl/yaml/eks-gpu-g5.yaml ... eksctl create cluster -f /eks/conf/eksctl/yaml/eks-gpu-g5.yaml 2023-05-22 20:50:59 [ℹ] eksctl version 0.133.0
2023-05-22 20:50:59 [ℹ] using region us-east-1
2023-05-22 20:50:59 [ℹ] subnets for us-east-1a - public:192.168.0.0/19 private:192.168.128.0/19
2023-05-22 20:50:59 [ℹ] subnets for us-east-1b - public:192.168.32.0/19 private:192.168.160.0/19
2023-05-22 20:50:59 [ℹ] subnets for us-east-1c - public:192.168.64.0/19 private:192.168.192.0/19
2023-05-22 20:50:59 [ℹ] subnets for us-east-1d - public:192.168.96.0/19 private:192.168.224.0/19
2023-05-22 20:50:59 [ℹ] nodegroup "sys" will use "" [AmazonLinux2/1.25]
2023-05-22 20:50:59 [ℹ] nodegroup "g5" will use "" [AmazonLinux2/1.25]
2023-05-22 20:50:59 [ℹ] using Kubernetes version 1.25
2023-05-22 20:50:59 [ℹ] creating EKS cluster "do-eks-yaml-g5" in "us-east-1" region with managed nodes
2023-05-22 20:50:59 [ℹ] 2 nodegroups (g5, sys) were included (based on the include/exclude rules)
2023-05-22 20:50:59 [ℹ] will create a CloudFormation stack for cluster itself and 0 nodegroup stack(s)
2023-05-22 20:50:59 [ℹ] will create a CloudFormation stack for cluster itself and 2 managed nodegroup stack(s)
2023-05-22 20:50:59 [ℹ] if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=us-east-1 --cluster=do-eks-yaml-g5'
2023-05-22 20:50:59 [ℹ] Kubernetes API endpoint access will use default of {publicAccess=true, privateAccess=false} for cluster "do-eks-yaml-g5" in "us-east-1"
2023-05-22 20:50:59 [ℹ] CloudWatch logging will not be enabled for cluster "do-eks-yaml-g5" in "us-east-1"
2023-05-22 20:50:59 [ℹ] you can enable it with 'eksctl utils update-cluster-logging --enable-types={SPECIFY-YOUR-LOG-TYPES-HERE (e.g. all)} --region=us-east-1 --cluster=do-eks-yaml-g5'
2023-05-22 20:50:59 [ℹ] 2 sequential tasks: { create cluster control plane "do-eks-yaml-g5", 2 sequential sub-tasks: { 4 sequential sub-tasks: { wait for control plane to become ready, associate IAM OIDC provider, 2 sequential sub-tasks: { create IAM role for serviceaccount "kube-system/aws-node", create serviceaccount "kube-system/aws-node", }, restart daemonset "kube-system/aws-node", }, 2 parallel sub-tasks: { create managed nodegroup "sys", create managed nodegroup "g5", }, } }
2023-05-22 20:50:59 [ℹ] building cluster stack "eksctl-do-eks-yaml-g5-cluster"
2023-05-22 20:51:00 [ℹ] deploying stack "eksctl-do-eks-yaml-g5-cluster"
2023-05-22 20:51:30 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-cluster"
2023-05-22 20:52:00 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-cluster"
2023-05-22 20:53:01 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-cluster"
2023-05-22 20:54:01 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-cluster"
2023-05-22 20:55:01 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-cluster"
2023-05-22 20:56:02 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-cluster"
2023-05-22 20:57:02 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-cluster"
2023-05-22 20:58:02 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-cluster"
2023-05-22 20:59:02 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-cluster"
2023-05-22 21:00:03 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-cluster"
2023-05-22 21:01:03 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-cluster"
2023-05-22 21:02:03 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-cluster"
2023-05-22 21:03:04 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-cluster"
2023-05-22 21:05:07 [ℹ] building iamserviceaccount stack "eksctl-do-eks-yaml-g5-addon-iamserviceaccount-kube-system-aws-node"
2023-05-22 21:05:10 [ℹ] deploying stack "eksctl-do-eks-yaml-g5-addon-iamserviceaccount-kube-system-aws-node"
2023-05-22 21:05:10 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-addon-iamserviceaccount-kube-system-aws-node"
2023-05-22 21:05:40 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-addon-iamserviceaccount-kube-system-aws-node"
2023-05-22 21:05:40 [ℹ] serviceaccount "kube-system/aws-node" already exists
2023-05-22 21:05:41 [ℹ] updated serviceaccount "kube-system/aws-node"
2023-05-22 21:05:41 [ℹ] daemonset "kube-system/aws-node" restarted
2023-05-22 21:05:41 [ℹ] building managed nodegroup stack "eksctl-do-eks-yaml-g5-nodegroup-sys"
2023-05-22 21:05:41 [ℹ] building managed nodegroup stack "eksctl-do-eks-yaml-g5-nodegroup-g5"
2023-05-22 21:05:42 [ℹ] deploying stack "eksctl-do-eks-yaml-g5-nodegroup-sys"
2023-05-22 21:05:42 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-nodegroup-sys"
2023-05-22 21:05:42 [ℹ] deploying stack "eksctl-do-eks-yaml-g5-nodegroup-g5"
2023-05-22 21:05:42 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-nodegroup-g5"
2023-05-22 21:06:12 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-nodegroup-sys"
2023-05-22 21:06:12 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-nodegroup-g5"
2023-05-22 21:06:55 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-nodegroup-sys"
2023-05-22 21:07:11 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-nodegroup-g5"
2023-05-22 21:08:29 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-nodegroup-g5"
2023-05-22 21:08:45 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-nodegroup-sys"
2023-05-22 21:09:52 [ℹ] waiting for CloudFormation stack "eksctl-do-eks-yaml-g5-nodegroup-g5"
2023-05-22 21:09:53 [ℹ] waiting for the control plane to become ready
2023-05-22 21:09:53 [✔] saved kubeconfig as "/root/.kube/config"
2023-05-22 21:09:53 [ℹ] 1 task: { install Nvidia device plugin }
W0522 21:09:54.155837 1668 warnings.go:70] spec.template.metadata.annotations[scheduler.alpha.kubernetes.io/critical-pod]: non-functional in v1.16+; use the "priorityClassName" field instead
2023-05-22 21:09:54 [ℹ] created "kube-system:DaemonSet.apps/nvidia-device-plugin-daemonset"
2023-05-22 21:09:54 [ℹ] as you are using the EKS-Optimized Accelerated AMI with a GPU-enabled instance type, the Nvidia Kubernetes device plugin was automatically installed. to skip installing it, use --install-nvidia-plugin=false.
2023-05-22 21:09:54 [✔] all EKS cluster resources for "do-eks-yaml-g5" have been created
2023-05-22 21:09:54 [ℹ] nodegroup "sys" has 1 node(s)
2023-05-22 21:09:54 [ℹ] node "ip-192-168-18-137.ec2.internal" is ready
2023-05-22 21:09:54 [ℹ] waiting for at least 1 node(s) to become ready in "sys"
2023-05-22 21:09:54 [ℹ] nodegroup "sys" has 1 node(s)
2023-05-22 21:09:54 [ℹ] node "ip-192-168-18-137.ec2.internal" is ready
2023-05-22 21:09:55 [ℹ] kubectl command should work with "/root/.kube/config", try 'kubectl get nodes'
2023-05-22 21:09:55 [✔] EKS cluster "do-eks-yaml-g5" in "us-east-1" region is ready Mon May 22 21:09:55 UTC 2023
Done creating cluster using /eks/conf/eksctl/yaml/eks-gpu-g5.yaml /eks
- Kümenizin başarıyla oluşturulduğunu doğrulamak için aşağıdaki komutu çalıştırın
kubectl get nodes -L node.kubernetes.io/instance-type
Çıktı aşağıdakine benzer:
NAME STATUS ROLES AGE VERSION INSTANCE_TYPE
ip-192-168-18-137.ec2.internal Ready <none> 47m v1.25.9-eks-0a21954 m5.xlarge
ip-192-168-214-241.ec2.internal Ready <none> 46m v1.25.9-eks-0a21954 g5.2xlarge
Bu örnekte kümemizde bir adet m5.xlarge ve bir adet g5.2xlarge örneğimiz var; bu nedenle önceki çıktıda iki düğümün listelendiğini görüyoruz.
Küme oluşturma işlemi sırasında NVIDIA cihaz eklentisi yüklenecektir. Küme oluşturulduktan sonra onu kaldırmanız gerekecek çünkü NVIDIA GPU Operatörü yerine.
- Aşağıdaki komutla eklentiyi silin
kubectl -n kube-system delete daemonset nvidia-device-plugin-daemonset
Aşağıdaki çıktıyı alıyoruz:
daemonset.apps "nvidia-device-plugin-daemonset" deleted
NVIDIA Helm deposunu yükleyin
NVIDIA Helm deposunu aşağıdaki komutla yükleyin:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia && helm repo update
DCGM dışa aktarıcısını NVIDIA GPU Operatörü ile dağıtın
DCGM dışa aktarıcısını dağıtmak için aşağıdaki adımları tamamlayın:
- DCGM dışa aktarıcı GPU ölçüm yapılandırmasını hazırlayın
curl https://raw.githubusercontent.com/NVIDIA/dcgm-exporter/main/etc/dcp-metrics-included.csv > dcgm-metrics.csv
Düzenleme seçeneğiniz var dcgm-metrics.csv
dosya. Gerektiğinde herhangi bir metriği ekleyebilir veya kaldırabilirsiniz.
- GPU operatörü ad alanını ve DCGM aktarıcı ConfigMap'i oluşturun
kubectl create namespace gpu-operator && /
kubectl create configmap metrics-config -n gpu-operator --from-file=dcgm-metrics.csv
Çıktı aşağıdaki gibidir:
namespace/gpu-operator created
configmap/metrics-config created
- GPU operatörünü EKS kümesine uygulama
helm install --wait --generate-name -n gpu-operator --create-namespace nvidia/gpu-operator --set dcgmExporter.config.name=metrics-config --set dcgmExporter.env[0].name=DCGM_EXPORTER_COLLECTORS --set dcgmExporter.env[0].value=/etc/dcgm-exporter/dcgm-metrics.csv --set toolkit.enabled=false
Çıktı aşağıdaki gibidir:
NAME: gpu-operator-1684795140
LAST DEPLOYED: Day Month Date HH:mm:ss YYYY
NAMESPACE: gpu-operator
STATUS: deployed
REVISION: 1
TEST SUITE: None
- DCGM dışa aktarma bölmesinin çalıştığını doğrulayın
kubectl -n gpu-operator get pods | grep dcgm
Çıktı aşağıdaki gibidir:
nvidia-dcgm-exporter-lkmfr 1/1 Running 0 1m
Günlükleri incelerseniz şunu görmelisiniz: “Starting webserver”
Mesaj:
kubectl -n gpu-operator logs -f $(kubectl -n gpu-operator get pods | grep dcgm | cut -d ' ' -f 1)
Çıktı aşağıdaki gibidir:
Defaulted container "nvidia-dcgm-exporter" out of: nvidia-dcgm-exporter, toolkit-validation (init)
time="2023-05-22T22:40:08Z" level=info msg="Starting dcgm-exporter"
time="2023-05-22T22:40:08Z" level=info msg="DCGM successfully initialized!"
time="2023-05-22T22:40:08Z" level=info msg="Collecting DCP Metrics"
time="2023-05-22T22:40:08Z" level=info msg="No configmap data specified, falling back to metric file /etc/dcgm-exporter/dcgm-metrics.csv"
time="2023-05-22T22:40:08Z" level=info msg="Initializing system entities of type: GPU"
time="2023-05-22T22:40:09Z" level=info msg="Initializing system entities of type: NvSwitch"
time="2023-05-22T22:40:09Z" level=info msg="Not collecting switch metrics: no switches to monitor"
time="2023-05-22T22:40:09Z" level=info msg="Initializing system entities of type: NvLink"
time="2023-05-22T22:40:09Z" level=info msg="Not collecting link metrics: no switches to monitor"
time="2023-05-22T22:40:09Z" level=info msg="Kubernetes metrics collection enabled!"
time="2023-05-22T22:40:09Z" level=info msg="Pipeline starting"
time="2023-05-22T22:40:09Z" level=info msg="Starting webserver"
NVIDIA DCGM Exporter, CloudWatch aracısı tarafından alınabilecek bir Prometheus ölçüm uç noktasını ortaya çıkarır. Uç noktayı görmek için aşağıdaki komutu kullanın:
kubectl -n gpu-operator get services | grep dcgm
Aşağıdaki çıktıyı alıyoruz:
nvidia-dcgm-exporter ClusterIP 10.100.183.207 <none> 9400/TCP 10m
- Bir miktar GPU kullanımı oluşturmak için, GPU'yu çalıştıran bir bölme yerleştiriyoruz. GPU yakma ikili
kubectl apply -f https://raw.githubusercontent.com/aws-samples/aws-do-eks/main/Container-Root/eks/deployment/gpu-metrics/gpu-burn-deployment.yaml
Çıktı aşağıdaki gibidir:
deployment.apps/gpu-burn created
Bu dağıtım, 100 saniye boyunca %20 kullanım ve ardından 0 saniye boyunca %20 kullanım şeklinde sürekli bir model oluşturmak için tek bir GPU kullanır.
- Uç noktanın çalıştığından emin olmak için, içeriğini okumak amacıyla curl kullanan geçici bir kapsayıcı çalıştırabilirsiniz.
http://nvidia-dcgm-exporter:9400/metrics
kubectl -n gpu-operator run -it --rm curl --restart='Never' --image=curlimages/curl --command -- curl http://nvidia-dcgm-exporter:9400/metrics
Aşağıdaki çıktıyı alıyoruz:
# HELP DCGM_FI_DEV_SM_CLOCK SM clock frequency (in MHz).
# TYPE DCGM_FI_DEV_SM_CLOCK gauge
DCGM_FI_DEV_SM_CLOCK{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 1455
# HELP DCGM_FI_DEV_MEM_CLOCK Memory clock frequency (in MHz).
# TYPE DCGM_FI_DEV_MEM_CLOCK gauge
DCGM_FI_DEV_MEM_CLOCK{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 6250
# HELP DCGM_FI_DEV_GPU_TEMP GPU temperature (in C).
# TYPE DCGM_FI_DEV_GPU_TEMP gauge
DCGM_FI_DEV_GPU_TEMP{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 65
# HELP DCGM_FI_DEV_POWER_USAGE Power draw (in W).
# TYPE DCGM_FI_DEV_POWER_USAGE gauge
DCGM_FI_DEV_POWER_USAGE{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 299.437000
# HELP DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION Total energy consumption since boot (in mJ).
# TYPE DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION counter
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 15782796862
# HELP DCGM_FI_DEV_PCIE_REPLAY_COUNTER Total number of PCIe retries.
# TYPE DCGM_FI_DEV_PCIE_REPLAY_COUNTER counter
DCGM_FI_DEV_PCIE_REPLAY_COUNTER{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 0
# HELP DCGM_FI_DEV_GPU_UTIL GPU utilization (in %).
# TYPE DCGM_FI_DEV_GPU_UTIL gauge
DCGM_FI_DEV_GPU_UTIL{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 100
# HELP DCGM_FI_DEV_MEM_COPY_UTIL Memory utilization (in %).
# TYPE DCGM_FI_DEV_MEM_COPY_UTIL gauge
DCGM_FI_DEV_MEM_COPY_UTIL{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 38
# HELP DCGM_FI_DEV_ENC_UTIL Encoder utilization (in %).
# TYPE DCGM_FI_DEV_ENC_UTIL gauge
DCGM_FI_DEV_ENC_UTIL{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 0
# HELP DCGM_FI_DEV_DEC_UTIL Decoder utilization (in %).
# TYPE DCGM_FI_DEV_DEC_UTIL gauge
DCGM_FI_DEV_DEC_UTIL{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 0
# HELP DCGM_FI_DEV_XID_ERRORS Value of the last XID error encountered.
# TYPE DCGM_FI_DEV_XID_ERRORS gauge
DCGM_FI_DEV_XID_ERRORS{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 0
# HELP DCGM_FI_DEV_FB_FREE Framebuffer memory free (in MiB).
# TYPE DCGM_FI_DEV_FB_FREE gauge
DCGM_FI_DEV_FB_FREE{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 2230
# HELP DCGM_FI_DEV_FB_USED Framebuffer memory used (in MiB).
# TYPE DCGM_FI_DEV_FB_USED gauge
DCGM_FI_DEV_FB_USED{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 20501
# HELP DCGM_FI_DEV_NVLINK_BANDWIDTH_TOTAL Total number of NVLink bandwidth counters for all lanes.
# TYPE DCGM_FI_DEV_NVLINK_BANDWIDTH_TOTAL counter
DCGM_FI_DEV_NVLINK_BANDWIDTH_TOTAL{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 0
# HELP DCGM_FI_DEV_VGPU_LICENSE_STATUS vGPU License status
# TYPE DCGM_FI_DEV_VGPU_LICENSE_STATUS gauge
DCGM_FI_DEV_VGPU_LICENSE_STATUS{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 0
# HELP DCGM_FI_DEV_UNCORRECTABLE_REMAPPED_ROWS Number of remapped rows for uncorrectable errors
# TYPE DCGM_FI_DEV_UNCORRECTABLE_REMAPPED_ROWS counter
DCGM_FI_DEV_UNCORRECTABLE_REMAPPED_ROWS{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 0
# HELP DCGM_FI_DEV_CORRECTABLE_REMAPPED_ROWS Number of remapped rows for correctable errors
# TYPE DCGM_FI_DEV_CORRECTABLE_REMAPPED_ROWS counter
DCGM_FI_DEV_CORRECTABLE_REMAPPED_ROWS{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 0
# HELP DCGM_FI_DEV_ROW_REMAP_FAILURE Whether remapping of rows has failed
# TYPE DCGM_FI_DEV_ROW_REMAP_FAILURE gauge
DCGM_FI_DEV_ROW_REMAP_FAILURE{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 0
# HELP DCGM_FI_PROF_GR_ENGINE_ACTIVE Ratio of time the graphics engine is active (in %).
# TYPE DCGM_FI_PROF_GR_ENGINE_ACTIVE gauge
DCGM_FI_PROF_GR_ENGINE_ACTIVE{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 0.808369
# HELP DCGM_FI_PROF_PIPE_TENSOR_ACTIVE Ratio of cycles the tensor (HMMA) pipe is active (in %).
# TYPE DCGM_FI_PROF_PIPE_TENSOR_ACTIVE gauge
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 0.000000
# HELP DCGM_FI_PROF_DRAM_ACTIVE Ratio of cycles the device memory interface is active sending or receiving data (in %).
# TYPE DCGM_FI_PROF_DRAM_ACTIVE gauge
DCGM_FI_PROF_DRAM_ACTIVE{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 0.315787
# HELP DCGM_FI_PROF_PCIE_TX_BYTES The rate of data transmitted over the PCIe bus - including both protocol headers and data payloads - in bytes per second.
# TYPE DCGM_FI_PROF_PCIE_TX_BYTES gauge
DCGM_FI_PROF_PCIE_TX_BYTES{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 3985328
# HELP DCGM_FI_PROF_PCIE_RX_BYTES The rate of data received over the PCIe bus - including both protocol headers and data payloads - in bytes per second.
# TYPE DCGM_FI_PROF_PCIE_RX_BYTES gauge
DCGM_FI_PROF_PCIE_RX_BYTES{gpu="0",UUID="GPU-ff76466b-22fc-f7a9-abe2-ce3ac453b8b3",device="nvidia0",modelName="NVIDIA A10G",Hostname="nvidia-dcgm-exporter-48cwd",DCGM_FI_DRIVER_VERSION="470.182.03",container="main",namespace="kube-system",pod="gpu-burn-c68d8c774-ltg9s"} 21715174
pod "curl" deleted
CloudWatch aracısını yapılandırma ve dağıtma
CloudWatch aracısını yapılandırmak ve dağıtmak için aşağıdaki adımları tamamlayın:
- YAML dosyasını indirin ve düzenleyin
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/k8s/1.3.15/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
Dosya bir içerir cwagent configmap
ve prometheus configmap
. Bu yazı için her ikisini de düzenliyoruz.
- Düzenle
prometheus-eks.yaml
dosya
Açın prometheus-eks.yaml
favori düzenleyicinizdeki dosyayı değiştirin ve cwagentconfig.json
aşağıdaki içeriğe sahip bölüm:
apiVersion: v1
data: # cwagent json config cwagentconfig.json: | { "logs": { "metrics_collected": { "prometheus": { "prometheus_config_path": "/etc/prometheusconfig/prometheus.yaml", "emf_processor": { "metric_declaration": [ { "source_labels": ["Service"], "label_matcher": ".*dcgm.*", "dimensions": [["Service","Namespace","ClusterName","job","pod"]], "metric_selectors": [ "^DCGM_FI_DEV_GPU_UTIL$", "^DCGM_FI_DEV_DEC_UTIL$", "^DCGM_FI_DEV_ENC_UTIL$", "^DCGM_FI_DEV_MEM_CLOCK$", "^DCGM_FI_DEV_MEM_COPY_UTIL$", "^DCGM_FI_DEV_POWER_USAGE$", "^DCGM_FI_DEV_ROW_REMAP_FAILURE$", "^DCGM_FI_DEV_SM_CLOCK$", "^DCGM_FI_DEV_XID_ERRORS$", "^DCGM_FI_PROF_DRAM_ACTIVE$", "^DCGM_FI_PROF_GR_ENGINE_ACTIVE$", "^DCGM_FI_PROF_PCIE_RX_BYTES$", "^DCGM_FI_PROF_PCIE_TX_BYTES$", "^DCGM_FI_PROF_PIPE_TENSOR_ACTIVE$" ] } ] } } }, "force_flush_interval": 5 } }
- içinde
prometheus
config bölümüne DCGM ihracatçısı için aşağıdaki iş tanımını ekleyin
- job_name: 'kubernetes-pod-dcgm-exporter' sample_limit: 10000 metrics_path: /api/v1/metrics/prometheus kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__meta_kubernetes_pod_container_name] action: keep regex: '^DCGM.*$' - source_labels: [__address__] action: replace regex: ([^:]+)(?::d+)? replacement: ${1}:9400 target_label: __address__ - action: labelmap regex: __meta_kubernetes_pod_label_(.+) - action: replace source_labels: - __meta_kubernetes_namespace target_label: Namespace - source_labels: [__meta_kubernetes_pod] action: replace target_label: pod - action: replace source_labels: - __meta_kubernetes_pod_container_name target_label: container_name - action: replace source_labels: - __meta_kubernetes_pod_controller_name target_label: pod_controller_name - action: replace source_labels: - __meta_kubernetes_pod_controller_kind target_label: pod_controller_kind - action: replace source_labels: - __meta_kubernetes_pod_phase target_label: pod_phase - action: replace source_labels: - __meta_kubernetes_pod_node_name target_label: NodeName
- Dosyayı kaydedin ve uygulayın
cwagent-dcgm
kümenize yapılandırma
kubectl apply -f ./prometheus-eks.yaml
Aşağıdaki çıktıyı alıyoruz:
namespace/amazon-cloudwatch created
configmap/prometheus-cwagentconfig created
configmap/prometheus-config created
serviceaccount/cwagent-prometheus created
clusterrole.rbac.authorization.k8s.io/cwagent-prometheus-role created
clusterrolebinding.rbac.authorization.k8s.io/cwagent-prometheus-role-binding created
deployment.apps/cwagent-prometheus created
- CloudWatch aracı bölmesinin çalıştığını doğrulayın
kubectl -n amazon-cloudwatch get pods
Aşağıdaki çıktıyı alıyoruz:
NAME READY STATUS RESTARTS AGE
cwagent-prometheus-7dfd69cc46-s4cx7 1/1 Running 0 15m
CloudWatch konsolunda metrikleri görselleştirin
CloudWatch'taki ölçümleri görselleştirmek için aşağıdaki adımları tamamlayın:
- CloudWatch konsolunda, altında Metrikleri gezinme bölmesinde öğesini seçin. Tüm ölçümler
- içinde Özel ad alanları bölümünde yeni girişi seçin ContainerInsights/Prometheus
Hakkında daha fazla bilgi için ContainerInsights/Prometheus ad alanı, bkz. Ek Prometheus kaynaklarını kazımak ve bu ölçümleri içe aktarmak.
- Metrik adlarının ayrıntısına gidin ve seçin
DCGM_FI_DEV_GPU_UTIL
- Üzerinde Grafikli metrikler sekmesi, ayarla Periyot için 5 saniye
- Yenileme aralığını 10 saniyeye ayarlayın
DCGM ihracatçısından toplanan ve görselleştiren ölçümleri göreceksiniz. gpu-burn
desen her 20 saniyede bir açılır ve kapanır.
Üzerinde Araştır sekmesinde, her metriğin kapsül adı da dahil olmak üzere verileri görebilirsiniz.
EKS API meta verileri, DCGM ölçüm verileriyle birleştirilerek sağlanan bölme tabanlı GPU ölçümleri elde edildi.
Bu, DCGM ölçümlerini CloudWatch aracısı aracılığıyla CloudWatch'a aktarmaya yönelik ilk yaklaşımı tamamlıyor.
Bir sonraki bölümde DCGM metriklerini Prometheus'a aktaran ikinci mimariyi yapılandırıyoruz ve Grafana ile görselleştiriyoruz.
DCGM'den GPU ölçümlerini görselleştirmek için Prometheus ve Grafana'yı kullanın
Aşağıdaki adımları tamamlayın:
- Prometheus topluluğu dümen grafiğini ekleyin
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
Bu grafik hem Prometheus'u hem de Grafana'yı konuşlandırıyor. Install komutunu çalıştırmadan önce grafikte bazı düzenlemeler yapmamız gerekiyor.
- Grafik yapılandırma değerlerini bir dosyaya kaydedin.
/tmp
helm inspect values prometheus-community/kube-prometheus-stack > /tmp/kube-prometheus-stack.values
- Karakter yapılandırma dosyasını düzenleyin
Kaydedilen dosyayı düzenleyin (/tmp/kube-prometheus-stack.values
) ve ayar adını arayıp değeri ayarlayarak aşağıdaki seçeneği ayarlayın:
prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false
- Aşağıdaki ConfigMap'i ekleyin
additionalScrapeConfigs
Bölüm
additionalScrapeConfigs:
- job_name: gpu-metrics scrape_interval: 1s metrics_path: /metrics scheme: http kubernetes_sd_configs: - role: endpoints namespaces: names: - gpu-operator relabel_configs: - source_labels: [__meta_kubernetes_pod_node_name] action: replace target_label: kubernetes_node
- Prometheus yığınını güncellenmiş değerlerle dağıtın
helm install prometheus-community/kube-prometheus-stack
--create-namespace --namespace prometheus
--generate-name
--values /tmp/kube-prometheus-stack.values
Aşağıdaki çıktıyı alıyoruz:
NAME: kube-prometheus-stack-1684965548
LAST DEPLOYED: Wed May 24 21:59:14 2023
NAMESPACE: prometheus
STATUS: deployed
REVISION: 1
NOTES:
kube-prometheus-stack has been installed. Check its status by running: kubectl --namespace prometheus get pods -l "release=kube-prometheus-stack-1684965548" Visit https://github.com/prometheus-operator/kube-prometheus for instructions on how to create & configure Alertmanager and Prometheus instances using the Operator.
- Prometheus bölmelerinin çalıştığını doğrulayın
kubectl get pods -n prometheus
Aşağıdaki çıktıyı alıyoruz:
NAME READY STATUS RESTARTS AGE
alertmanager-kube-prometheus-stack-1684-alertmanager-0 2/2 Running 0 6m55s
kube-prometheus-stack-1684-operator-6c87649878-j7v55 1/1 Running 0 6m58s
kube-prometheus-stack-1684965548-grafana-dcd7b4c96-bzm8p 3/3 Running 0 6m58s
kube-prometheus-stack-1684965548-kube-state-metrics-7d856dptlj5 1/1 Running 0 6m58s
kube-prometheus-stack-1684965548-prometheus-node-exporter-2fbl5 1/1 Running 0 6m58s
kube-prometheus-stack-1684965548-prometheus-node-exporter-m7zmv 1/1 Running 0 6m58s
prometheus-kube-prometheus-stack-1684-prometheus-0 2/2 Running 0 6m55s
Prometheus ve Grafana kapsülleri Running
devlet.
Daha sonra DCGM metriklerinin Prometheus'a aktığını doğruluyoruz.
- Prometheus kullanıcı arayüzünü ileri taşıma
EKS'de çalışan Prometheus kullanıcı arayüzünü kümenin dışından gelen isteklere maruz bırakmanın farklı yolları vardır. Kullanacağız kubectl port-forwarding
. Şu ana kadar komutları komutların içinde yürütüyorduk. aws-do-eks
konteyner. Clusterda çalışan Prometheus servisine erişmek için hosttan bir tünel oluşturacağız. İşte aws-do-eks
konteyner, aşağıdaki komutun konteynerin dışında, ana bilgisayardaki yeni bir terminal kabuğunda çalıştırılmasıyla çalışıyor. Buna “ana bilgisayar kabuğu” diyeceğiz.
kubectl -n prometheus port-forward svc/$(kubectl -n prometheus get svc | grep prometheus | grep -v alertmanager | grep -v operator | grep -v grafana | grep -v metrics | grep -v exporter | grep -v operated | cut -d ' ' -f 1) 8080:9090 &
Port yönlendirme işlemi çalışırken Prometheus UI'ya ana bilgisayardan aşağıda açıklandığı gibi erişebiliyoruz.
- Prometheus kullanıcı arayüzünü açın
- Cloud9 kullanıyorsanız lütfen şuraya gidin:
Preview->Preview Running Application
Prometheus kullanıcı arayüzünü Cloud9 IDE içindeki bir sekmede açmak için, ardından Yeni bir pencerede açmak için sekmenin sağ üst köşesindeki simgeye tıklayın.
- Yerel ana makinenizdeyseniz veya uzak masaüstü aracılığıyla bir EC2 örneğine bağlıysanız bir tarayıcı açın ve URL'yi ziyaret edin
http://localhost:8080
.
- Keşfet
DCGM
Prometheus'a akan DCGM ölçümlerini görmek için
- seç
DCGM_FI_DEV_GPU_UTIL
, seçmek Gerçekleştirmeköğesine gidin ve ardından grafik Beklenen GPU kullanım modelini görmek için sekme
- Prometheus bağlantı noktası yönlendirme işlemini durdurun
Ana makine kabuğunuzda aşağıdaki komut satırını çalıştırın:
kill -9 $(ps -aef | grep port-forward | grep -v grep | grep prometheus | awk '{print $2}')
Artık DCGM metriklerini Grafana Dashboard aracılığıyla görselleştirebiliyoruz.
- Grafana kullanıcı arayüzünde oturum açmak için şifreyi alın
kubectl -n prometheus get secret $(kubectl -n prometheus get secrets | grep grafana | cut -d ' ' -f 1) -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
- Grafana hizmetini ileri taşıma
Ana makine kabuğunuzda aşağıdaki komut satırını çalıştırın:
kubectl port-forward -n prometheus svc/$(kubectl -n prometheus get svc | grep grafana | cut -d ' ' -f 1) 8080:80 &
- Grafana kullanıcı arayüzünde oturum açın
Grafana Kullanıcı Arayüzü giriş ekranına, daha önce Prometheus Kullanıcı Arayüzüne eriştiğiniz şekilde erişin. Cloud9 kullanıyorsanız şunu seçin: Preview->Preview Running Application
, ardından yeni bir pencerede açılır. Yerel ana makinenizi veya uzak masaüstü ziyaret URL'sine sahip bir EC2 örneğini kullanıyorsanız http://localhost:8080
. Admin kullanıcı adı ve daha önce aldığınız şifreyle giriş yapın.
- Gezinti bölmesinde şunu seçin: Panolar
- Klinik yeni ve ithalat
bölümünde açıklanan varsayılan DCGM Grafana kontrol panelini içe aktaracağız. NVIDIA DCGM İhracatçı Kontrol Paneli.
- Alan içerisinde
import via grafana.com
, girmek 12239
Ve seç Yük
- Klinik Prometheus veri kaynağı olarak
- Klinik ithalat
Aşağıdaki ekran görüntüsündekine benzer bir kontrol paneli göreceksiniz.
Bu metriklerin kapsül tabanlı olduğunu göstermek için GPU Kullanımı Bu kontrol panelindeki bölme.
- Bölmeyi ve seçenekler menüsünü seçin (üç nokta)
- genişletmek Opsiyonlar bölümünü düzenleyin ve Efsane alan
- Buradaki değeri şununla değiştirin:
Pod {{pod}}
, Daha sonra seçmek İndirim
Efsane şimdi şunu gösteriyor: gpu-burn
görüntülenen GPU kullanımıyla ilişkili bölme adı.
- Grafana UI hizmetinde bağlantı noktası iletmeyi durdurun
Ana makine kabuğunuzda aşağıdakileri çalıştırın:
kill -9 $(ps -aef | grep port-forward | grep -v grep | grep prometheus | awk '{print $2}')
Bu yazıda, EKS kümesine dağıtılan açık kaynaklı Prometheus ve Grafana'nın kullanımını gösterdik. İstenirse, bu dağıtım şununla değiştirilebilir: Prometheus için Amazon Tarafından Yönetilen Hizmet ve Amazon Tarafından Yönetilen Grafana.
Temizlemek
Oluşturduğunuz kaynakları temizlemek için aşağıdaki betiği çalıştırın. aws-do-eks
konteyner kabuğu:
Sonuç
Bu yazıda GPU ölçümlerini toplamak ve bunları CloudWatch veya Prometheus ve Grafana ile görselleştirmek için NVIDIA DCGM Exporter'ı kullandık. Kendi AWS ortamınızda NVIDIA DCGM ile GPU kullanımının izlenmesini etkinleştirmek için sizi burada gösterilen mimarileri kullanmaya davet ediyoruz.
Ek kaynaklar
yazarlar hakkında
Amr Ragab AWS'de EC2 Hızlandırılmış Bilgi İşlem'in eski Baş Çözüm Mimarıdır. Kendini müşterilerin hesaplamalı iş yüklerini geniş ölçekte yürütmelerine yardımcı olmaya adamıştır. Boş zamanlarında seyahat etmeyi ve teknolojiyi günlük hayata entegre etmenin yeni yollarını bulmayı seviyor.
Alex Iankoulski AWS'de Kendi Kendini Yöneten Makine Öğrenimi Baş Çözüm Mimarıdır. Kendisi, derinlemesine, uygulamalı işler yapmayı seven, tam kapsamlı bir yazılım ve altyapı mühendisidir. Görevi gereği, konteyner destekli AWS hizmetlerinde ML ve AI iş yüklerinin konteynerleştirilmesi ve düzenlenmesi konusunda müşterilere yardımcı olmaya odaklanıyor. Aynı zamanda açık kaynak kitabının da yazarıdır. çerçeve yap ve dünyanın en büyük zorluklarını çözerken inovasyonun hızını artırmak için konteyner teknolojilerini uygulamayı seven bir Docker kaptanı. Geçtiğimiz 10 yıl boyunca Alex, yapay zeka ve makine öğrenimini demokratikleştirmek, iklim değişikliğiyle mücadele etmek, seyahati daha güvenli, sağlık hizmetlerini daha iyi ve enerjiyi daha akıllı hale getirmek için çalıştı.
Keita Watanabe Amazon Web Services'te Frameworks ML Çözümleri Kıdemli Çözüm Mimarıdır ve burada sektörün en iyi bulut tabanlı Kendi Kendini Yöneten Makine Öğrenimi çözümlerinin geliştirilmesine yardımcı olur. Geçmişi Makine Öğrenimi araştırma ve geliştirme üzerinedir. Keita, AWS'ye katılmadan önce e-ticaret sektöründe çalışıyordu. Keita'nın doktora derecesi vardır. Tokyo Üniversitesi'nden Bilim dalında.
- SEO Destekli İçerik ve Halkla İlişkiler Dağıtımı. Bugün Gücünüzü Artırın.
- PlatoData.Network Dikey Üretken Yapay Zeka. Kendine güç ver. Buradan Erişin.
- PlatoAiStream. Web3 Zekası. Bilgi Genişletildi. Buradan Erişin.
- PlatoESG. Otomotiv / EV'ler, karbon, temiz teknoloji, Enerji, Çevre, Güneş, Atık Yönetimi. Buradan Erişin.
- PlatoSağlık. Biyoteknoloji ve Klinik Araştırmalar Zekası. Buradan Erişin.
- ChartPrime. Ticaret Oyununuzu ChartPrime ile yükseltin. Buradan Erişin.
- Blok Ofsetleri. Çevre Dengeleme Sahipliğini Modernleştirme. Buradan Erişin.
- Kaynak: https://aws.amazon.com/blogs/machine-learning/enable-pod-based-gpu-metrics-in-amazon-cloudwatch/