בפברואר 2022 נוספו שירותי האינטרנט של אמזון תמיכה במדדי NVIDIA GPU ב-Amazon CloudWatch, מה שמאפשר לדחוף מדדים מה- סוכן אמזון CloudWatch ל אמזון CloudWatch ולפקח על הקוד שלך לניצול אופטימלי של GPU. מאז, תכונה זו שולבה ברבות מתמונות המכונה המנוהלות של אמזון (AMI), כגון למידה עמוקה AMI ו AWS ParallelCluster AMI. כדי להשיג מדדים ברמת המופע של ניצול GPU, אתה יכול להשתמש ב-Packer או ב-Amazon ImageBuilder כדי לאתחל AMI מותאם אישית משלך ולהשתמש בו במגוון שירותים מנוהלים כמו אצווה AWS, שירות מיכלים אלסטי של אמזון (Amazon ECS), או שירות קוברנט של אמזון (אמזון EKS). עם זאת, עבור הצעות שירות ועומסי עבודה רבים מבוססי קונטיינר, זה אידיאלי ללכוד מדדי ניצול ברמת המכולה, הפוד או מרחב השמות.
פוסט זה מפרט כיצד להגדיר מדדי GPU מבוססי מיכל ומספק דוגמה לאיסוף מדדים אלו מתרמי EKS.
סקירת פתרונות
כדי להדגים מדדי GPU מבוססי מיכל, אנו יוצרים אשכול EKS עם g5.2xlarge
מקרים; עם זאת, זה יעבוד עם כל משפחת מופעים מואצים של NVIDIA נתמכת.
אנו פורסים את מפעיל ה-NVIDIA GPU כדי לאפשר שימוש במשאבי GPU וב- יצואן NVIDIA DCGM כדי לאפשר איסוף מדדי GPU. לאחר מכן אנו חוקרים שתי ארכיטקטורות. הראשון מחבר את המדדים מ-NVIDIA DCGM Exporter ל-CloudWatch באמצעות סוכן CloudWatch, כפי שמוצג בתרשים הבא.
הארכיטקטורה השנייה (ראה בתרשים הבא) מחברת את המדדים מ-DCGM Exporter אל פרומתאוס, אז אנחנו משתמשים ב-a גרפנה לוח מחוונים כדי להמחיש את המדדים הללו.
תנאים מוקדמים
כדי לפשט את השחזור של כל הערימה מהפוסט הזה, אנו משתמשים במיכל שבו מותקן כבר כל הכלים הנדרשים (aws cli, eksctl, helm וכו'). על מנת לשכפל את פרויקט קונטיינר מבית GitHub, אתה תצטרך סילון. כדי לבנות ולהפעיל את המכולה, תצטרך סַוָר. כדי לפרוס את הארכיטקטורה, תצטרך אישורי AWS. כדי לאפשר גישה לשירותי Kubernetes באמצעות העברת יציאות, תצטרך גם קובקטל.
ניתן להתקין תנאים מוקדמים אלה במחשב המקומי שלך, מופע EC2 עם NICE DCV, או AWS Cloud9. בפוסט זה נשתמש ב- a c5.2xlarge
מופע Cloud9 עם a 40GB
נפח אחסון מקומי. בעת שימוש ב-Cloud9, אנא השבת את האישורים הזמניים המנוהלים של AWS על ידי ביקור Cloud9->Preferences->AWS Settings
כפי שמוצג בצילום המסך למטה.
בנה והפעל את מיכל aws-do-eks
פתח מעטפת מסוף בסביבה המועדפת עליך והפעל את הפקודות הבאות:
git clone https://github.com/aws-samples/aws-do-eks
cd aws-do-eks
./build.sh
./run.sh
./exec.sh
התוצאה היא כדלקמן:
כעת יש לך מעטפת בסביבת מיכל הכוללת את כל הכלים הדרושים להשלמת המשימות למטה. נתייחס אליו כאל "aws-do-eks shell". אתה תפעיל את הפקודות בסעיפים הבאים במעטפת זו, אלא אם הוראה אחרת במפורש.
צור אשכול EKS עם קבוצת צמתים
קבוצה זו כוללת משפחת מופעי GPU לבחירתך; בדוגמה זו אנו משתמשים ב- g5.2xlarge
סוג מופע.
השמיים פרויקט aws-do-eks מגיע עם אוסף של תצורות אשכול. אתה יכול להגדיר את תצורת האשכול הרצויה בשינוי תצורה בודד.
- במעטפת המיכל, רוץ
./env-config.sh
ואז להגדיר CONF=conf/eksctl/yaml/eks-gpu-g5.yaml
- כדי לאמת את תצורת האשכול, הפעל
./eks-config.sh
אתה אמור לראות את המניפסט הבא של האשכול:
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
- כדי ליצור את האשכול, הפעל את הפקודה הבאה במיכל
הפלט הוא כדלקמן:
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
- כדי לוודא שהאשכול שלך נוצר בהצלחה, הפעל את הפקודה הבאה
kubectl get nodes -L node.kubernetes.io/instance-type
הפלט דומה לחלק הבא:
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
בדוגמה זו, יש לנו מופע m5.xlarge ו-g5.2xlarge אחד באשכול שלנו; לכן, אנו רואים שני צמתים ברשימה בפלט הקודם.
במהלך תהליך יצירת האשכולות, תוסף התקן NVIDIA יותקן. תצטרך להסיר אותו לאחר יצירת אשכול מכיוון שאנו נשתמש ב- מפעיל NVIDIA GPU במקום.
- מחק את התוסף עם הפקודה הבאה
kubectl -n kube-system delete daemonset nvidia-device-plugin-daemonset
אנו מקבלים את הפלט הבא:
daemonset.apps "nvidia-device-plugin-daemonset" deleted
התקן את ה-NVIDIA Helm repo
התקן את ה-NVIDIA Helm repo עם הפקודה הבאה:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia && helm repo update
פרוס את יצואן DCGM עם ה-NVIDIA GPU Operator
כדי לפרוס את יצואן DCGM, בצע את השלבים הבאים:
- הכן את תצורת מדדי ה-GPU של יצואן DCGM
curl https://raw.githubusercontent.com/NVIDIA/dcgm-exporter/main/etc/dcp-metrics-included.csv > dcgm-metrics.csv
יש לך אפשרות לערוך את dcgm-metrics.csv
קוֹבֶץ. ניתן להוסיף או להסיר כל מדדים לפי הצורך.
- צור את מרחב השמות של ה-gpu-operator ואת יצואנית DCGM ConfigMap
kubectl create namespace gpu-operator && /
kubectl create configmap metrics-config -n gpu-operator --from-file=dcgm-metrics.csv
הפלט הוא כדלקמן:
namespace/gpu-operator created
configmap/metrics-config created
- החל את אופרטור ה-GPU על אשכול EKS
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
הפלט הוא כדלקמן:
NAME: gpu-operator-1684795140
LAST DEPLOYED: Day Month Date HH:mm:ss YYYY
NAMESPACE: gpu-operator
STATUS: deployed
REVISION: 1
TEST SUITE: None
- ודא שתרמיל היצואן של DCGM פועל
kubectl -n gpu-operator get pods | grep dcgm
הפלט הוא כדלקמן:
nvidia-dcgm-exporter-lkmfr 1/1 Running 0 1m
אם אתה בודק את היומנים, אתה אמור לראות את “Starting webserver”
הוֹדָעָה:
kubectl -n gpu-operator logs -f $(kubectl -n gpu-operator get pods | grep dcgm | cut -d ' ' -f 1)
הפלט הוא כדלקמן:
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 חושף נקודת קצה של מדדי Prometheus, אותה ניתן להטמיע על ידי סוכן CloudWatch. כדי לראות את נקודת הקצה, השתמש בפקודה הבאה:
kubectl -n gpu-operator get services | grep dcgm
אנו מקבלים את הפלט הבא:
nvidia-dcgm-exporter ClusterIP 10.100.183.207 <none> 9400/TCP 10m
- כדי ליצור ניצול GPU מסוים, אנו פורסים פוד שמריץ את gpu-burn בינרי
kubectl apply -f https://raw.githubusercontent.com/aws-samples/aws-do-eks/main/Container-Root/eks/deployment/gpu-metrics/gpu-burn-deployment.yaml
הפלט הוא כדלקמן:
deployment.apps/gpu-burn created
פריסה זו משתמשת ב-GPU יחיד כדי לייצר דפוס רציף של 100% ניצול למשך 20 שניות ואחריו 0% ניצול למשך 20 שניות.
- כדי לוודא שנקודת הקצה פועלת, אתה יכול להפעיל מיכל זמני המשתמש ב-Curl כדי לקרוא את התוכן של
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
אנו מקבלים את הפלט הבא:
# 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
כדי להגדיר ולפרוס את סוכן CloudWatch, בצע את השלבים הבאים:
- הורד את קובץ YAML וערוך אותו
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
הקובץ מכיל א cwagent configmap
וכן prometheus configmap
. עבור פוסט זה, אנו עורכים את שניהם.
- ערוך
prometheus-eks.yaml
פילה
פתח את prometheus-eks.yaml
קובץ בעורך המועדף עליך והחלף את cwagentconfig.json
קטע עם התוכן הבא:
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 } }
- ב
prometheus
סעיף config, הוסף את הגדרת התפקיד הבאה עבור יצואן DCGM
- 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
- שמור את הקובץ והחל את
cwagent-dcgm
תצורה לאשכול שלך
kubectl apply -f ./prometheus-eks.yaml
אנו מקבלים את הפלט הבא:
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 Agent Pod פועל
kubectl -n amazon-cloudwatch get pods
אנו מקבלים את הפלט הבא:
NAME READY STATUS RESTARTS AGE
cwagent-prometheus-7dfd69cc46-s4cx7 1/1 Running 0 15m
דמיין מדדים בקונסולת CloudWatch
כדי להמחיש את המדדים ב-CloudWatch, בצע את השלבים הבאים:
- במסוף CloudWatch, מתחת מדדים בחלונית הניווט, בחר כל המדדים
- ב מרחבי שמות מותאמים אישית בקטע, בחר את הערך החדש עבור ContainerInsights/Prometheus
לקבלת מידע נוסף על ContainerInsights/Prometheus מרחב שמות, עיין ב גירוד מקורות נוספים של פרומתאוס וייבוא מדדים אלה.
- התעמק בשמות המדדים ובחר
DCGM_FI_DEV_GPU_UTIL
- על מדדים גרפים לשונית, סט תְקוּפָה ל 5 שניות
- הגדר את מרווח הרענון ל-10 שניות
תראה את המדדים שנאספו מיצואן DCGM הממחישים את gpu-burn
דפוס מופעל ומכבה כל 20 שניות.
על לְדַפדֵף בכרטיסייה, תוכל לראות את הנתונים, כולל שם הפוד עבור כל מדד.
המטא נתונים של EKS API שולבו עם נתוני מדדי DCGM, וכתוצאה מכך למדדי GPU המבוססים על תרמילים.
בכך מסתיימת הגישה הראשונה של ייצוא מדדי DCGM ל-CloudWatch באמצעות סוכן CloudWatch.
בסעיף הבא, אנו מגדירים את הארכיטקטורה השנייה, המייצאת את מדדי DCGM ל-Prometheus, ואנו מדמיינים אותם עם Grafana.
השתמש ב-Prometheus ו-Grafana כדי להמחיש מדדי GPU מ-DCGM
בצע את הצעדים הבאים:
- הוסף את תרשים ההגה של קהילת פרומתאוס
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
תרשים זה פורס גם את פרומתאוס וגם את גרפאנה. עלינו לבצע כמה עריכות בתרשים לפני הפעלת פקודת ההתקנה.
- שמור את ערכי תצורת התרשים לקובץ ב
/tmp
helm inspect values prometheus-community/kube-prometheus-stack > /tmp/kube-prometheus-stack.values
- ערוך את קובץ תצורת ה-char
ערוך את הקובץ השמור (/tmp/kube-prometheus-stack.values
) והגדר את האפשרות הבאה על ידי חיפוש שם ההגדרה והגדרת הערך:
prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false
- הוסף את ה-ConfigMap הבא ל-
additionalScrapeConfigs
סעיף
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 עם הערכים המעודכנים
helm install prometheus-community/kube-prometheus-stack
--create-namespace --namespace prometheus
--generate-name
--values /tmp/kube-prometheus-stack.values
אנו מקבלים את הפלט הבא:
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.
- ודא שהתרמילים של פרומתאוס פועלים
kubectl get pods -n prometheus
אנו מקבלים את הפלט הבא:
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
תרמילי פרומתאוס וגרפאנה נמצאים ב Running
מדינה.
לאחר מכן, אנו מאשרים כי מדדי DCGM זורמים אל פרומתאוס.
- העבר קדימה את ממשק המשתמש של Prometheus
ישנן דרכים שונות לחשוף את ממשק המשתמש של Prometheus הפועל ב-EKS לבקשות שמקורן מחוץ לאשכול. אנחנו נשתמש kubectl port-forwarding
. עד כה, ביצענו פקודות בתוך aws-do-eks
מְכוֹלָה. כדי לגשת לשירות Prometheus הפועל באשכול, ניצור מנהרה מהמארח. הנה ה aws-do-eks
container פועל על ידי ביצוע הפקודה הבאה מחוץ לקונטיינר, במעטפת טרמינל חדשה במארח. נתייחס לזה כ"מעטפת מארח".
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 &
בזמן שתהליך העברת הפורטים פועל, אנו יכולים לגשת לממשק המשתמש של Prometheus מהמארח כמתואר להלן.
- פתח את ממשק המשתמש של Prometheus
- אם אתה משתמש ב-Cloud9, נא לנווט אל
Preview->Preview Running Application
כדי לפתוח את ממשק המשתמש של Prometheus בכרטיסייה בתוך ה-Cloud9 IDE, ואז לחץ על סמל בפינה השמאלית העליונה של הכרטיסייה כדי לצוץ בחלון חדש.
- אם אתה נמצא במארח המקומי שלך או מחובר למופע EC2 דרך שולחן עבודה מרוחק, פתח דפדפן ובקר בכתובת האתר
http://localhost:8080
.
- זן
DCGM
לראות את מדדי DCGM שזורמים לתוך פרומתאוס
- בחר
DCGM_FI_DEV_GPU_UTIL
, בחר לבצע, ולאחר מכן נווט אל ה- גרף לשונית כדי לראות את דפוס השימוש הצפוי ב-GPU
- עצור את תהליך העברת היציאות של פרומתאוס
הפעל את שורת הפקודה הבאה במעטפת המארח שלך:
kill -9 $(ps -aef | grep port-forward | grep -v grep | grep prometheus | awk '{print $2}')
כעת אנו יכולים לדמיין את מדדי DCGM דרך לוח המחוונים של Grafana.
- אחזר את הסיסמה כדי להיכנס לממשק המשתמש של Grafana
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
הפעל את שורת הפקודה הבאה במעטפת המארח שלך:
kubectl port-forward -n prometheus svc/$(kubectl -n prometheus get svc | grep grafana | cut -d ' ' -f 1) 8080:80 &
- היכנס לממשק המשתמש של Grafana
גש למסך ההתחברות של ממשק המשתמש של Grafana באותו אופן שבו ניגשת לממשק המשתמש של Prometheus קודם לכן. אם אתה משתמש ב-Cloud9, בחר Preview->Preview Running Application
, ואז צץ בחלון חדש. אם אתה משתמש במארח המקומי שלך או במופע EC2 עם שולחן עבודה מרוחק, בקר ב-URL http://localhost:8080
. התחבר עם שם המשתמש admin והסיסמה שאחזרת קודם לכן.
- בחלונית הניווט בחר לוחות מחוונים
- בחרו חדש ו תבואו
אנו הולכים לייבא את לוח המחוונים של DCGM Grafana המוגדר כברירת מחדל המתואר ב לוח המחוונים של NVIDIA DCGM ליצואן.
- בתחום
import via grafana.com
, להיכנס 12239
ולבחור לִטעוֹן
- בחרו פרומתאוס כמקור הנתונים
- בחרו תבואו
תראה לוח מחוונים דומה לזה שבצילום המסך הבא.
כדי להדגים שהמדדים האלה מבוססים על תרמילים, אנחנו הולכים לשנות את ה ניצול GPU בלוח המחוונים הזה.
- בחר בחלונית ובתפריט האפשרויות (שלוש נקודות)
- הרחב אפשרויות סעיף וערוך את אגדה שדה
- החלף את הערך שם ב
Pod {{pod}}
, ואז לבחור שמור
האגדה מציגה כעת את gpu-burn
שם הפוד המשויך לניצול ה-GPU המוצג.
- הפסק להעביר את שירות ממשק המשתמש של Grafana
הפעל את הדברים הבאים במעטפת המארח שלך:
kill -9 $(ps -aef | grep port-forward | grep -v grep | grep prometheus | awk '{print $2}')
בפוסט זה, הדגמנו שימוש בקוד פתוח של Prometheus ו-Grafana שנפרסו באשכול EKS. אם תרצה, ניתן להחליף את הפריסה הזו ב שירות מנוהל אמזון עבור פרומתאוס ו אמזון ניהלה את גרפאנה.
לנקות את
כדי לנקות את המשאבים שיצרת, הפעל את הסקריפט הבא מה- aws-do-eks
מעטפת מיכל:
סיכום
בפוסט זה, השתמשנו ב-NVIDIA DCGM Exporter כדי לאסוף מדדי GPU ולהמחיש אותם עם CloudWatch או Prometheus ו-Grafana. אנו מזמינים אותך להשתמש בארכיטקטורות שהוצגו כאן כדי לאפשר ניטור ניצול GPU עם NVIDIA DCGM בסביבת AWS משלך.
משאבים נוספים
על המחברים
אמר רגב הוא לשעבר אדריכל פתרונות ראשי, EC2 Accelerated Computing ב-AWS. הוא מסור לעזור ללקוחות להפעיל עומסי עבודה חישוביים בקנה מידה. בזמנו הפנוי הוא אוהב לטייל ולמצוא דרכים חדשות לשילוב טכנולוגיה בחיי היומיום.
אלכס יאנקולסקי הוא אדריכל פתרונות ראשי, למידת מכונה בניהול עצמי ב-AWS. הוא מהנדס תוכנה ותשתית מלא שאוהב לעשות עבודה מעמיקה ומעשית. בתפקידו, הוא מתמקד בסיוע ללקוחות עם מיכל ותזמור של עומסי עבודה של ML ו-AI בשירותי AWS המונעים על ידי קונטיינרים. הוא גם המחבר של הקוד הפתוח לעשות מסגרת וקפטן דוקר שאוהב ליישם טכנולוגיות מכולות כדי להאיץ את קצב החדשנות תוך פתרון האתגרים הגדולים בעולם. במהלך 10 השנים האחרונות, אלכס עבד על דמוקרטיזציה של AI ו-ML, מאבק בשינויי האקלים והפיכת נסיעות לבטוחות יותר, שירותי בריאות טובים יותר ואנרגיה חכמים יותר.
קייטה ווטנבה הוא ארכיטקט פתרונות בכיר של Frameworks ML Solutions בשירותי האינטרנט של אמזון, שם הוא עוזר לפתח את הפתרונות הטובים ביותר בתעשייה מבוססי ענן בניהול עצמי של Machine Learning. הרקע שלו הוא במחקר ופיתוח של Machine Learning. לפני שהצטרף ל-AWS, קייטה עבדה בתעשיית המסחר האלקטרוני. קייטה בעלת תואר Ph.D. במדעים מאוניברסיטת טוקיו.
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- PlatoData.Network Vertical Generative Ai. העצים את עצמך. גישה כאן.
- PlatoAiStream. Web3 Intelligence. הידע מוגבר. גישה כאן.
- PlatoESG. רכב / רכבים חשמליים, פחמן, קלינטק, אנרגיה, סביבה, שמש, ניהול פסולת. גישה כאן.
- PlatoHealth. מודיעין ביוטכנולוגיה וניסויים קליניים. גישה כאן.
- ChartPrime. הרם את משחק המסחר שלך עם ChartPrime. גישה כאן.
- BlockOffsets. מודרניזציה של בעלות על קיזוז סביבתי. גישה כאן.
- מקור: https://aws.amazon.com/blogs/machine-learning/enable-pod-based-gpu-metrics-in-amazon-cloudwatch/