Helmikuussa 2022 Amazon Web Services lisäsi tuki NVIDIA GPU -mittareille Amazon CloudWatchissa, jolloin on mahdollista siirtää mittareita Amazon CloudWatch Agent että amazonin pilvikello ja tarkkaile koodiasi optimaalisen GPU-käytön varmistamiseksi. Siitä lähtien tämä ominaisuus on integroitu moniin hallinnoimiimme Amazon Machine Images (AMI) -kuviin, kuten Syvä oppiminen AMI ja AWS ParallelCluster AMI. Saadaksesi ilmentymätason mittareita GPU:n käytöstä voit käyttää Packeria tai Amazon ImageBuilderiä käynnistääksesi oman mukautetun AMI:n ja käyttää sitä erilaisissa hallinnoiduissa palvelutarjouksissa, kuten AWS-erä, Amazonin elastisten säiliöiden palvelu (Amazon ECS), tai Amazonin elastisten kuberneettien palvelu (Amazon EKS). Kuitenkin monille säilöpohjaisille palvelutarjouksille ja työkuormille on ihanteellista kerätä käyttömittarit säilö-, ryhmä- tai nimitilatasolla.
Tässä viestissä kerrotaan, kuinka säilöpohjaisia GPU-mittareita määritetään, ja annetaan esimerkki näiden mittareiden keräämisestä EKS-podista.
Ratkaisun yleiskatsaus
Säiliöpohjaisten GPU-mittareiden esittelemiseksi luomme EKS-klusterin g5.2xlarge
tapaukset; Tämä toimii kuitenkin kaikkien tuettujen NVIDIA-kiihdytettyjen ilmentymien perheiden kanssa.
Käytämme NVIDIA GPU -operaattoria mahdollistaaksemme GPU-resurssien käytön ja NVIDIA DCGM -vienti ottaaksesi GPU-mittareiden keräämisen käyttöön. Sitten tutkimme kahta arkkitehtuuria. Ensimmäinen yhdistää NVIDIA DCGM Exporterin mittarit CloudWatchiin CloudWatch-agentin kautta, kuten seuraavassa kaaviossa näkyy.
Toinen arkkitehtuuri (katso seuraava kaavio) yhdistää mittaukset DCGM Exporterista Prometheus, käytämme a grafana kojelaudan visualisoidaksesi nämä tiedot.
Edellytykset
Koko pinon toistamisen yksinkertaistamiseksi tästä viestistä käytämme säilöä, johon on jo asennettu kaikki tarvittavat työkalut (aws cli, eksctl, helm jne.). Kloonatakseen konttiprojekti GitHubilta, tarvitset mennä. Tarvitset kontin rakentamiseen ja käyttämiseen Satamatyöläinen. Arkkitehtuurin käyttöönottamiseksi tarvitset AWS-tunnistetiedot. Tarvitset myös pääsyn Kubernetes-palveluihin porttiohjauksen avulla kubectl.
Nämä edellytykset voidaan asentaa paikalliselle koneellesi, EC2-esimerkki with HYVÄ DCVtai AWS-pilvi9. Tässä viestissä käytämme a c5.2xlarge
Cloud9-esiintymä a 40GB
paikallista tallennustilaa. Kun käytät Cloud9:ää, poista AWS-hallitut väliaikaiset kirjautumistiedot käytöstä käymällä osoitteessa Cloud9->Preferences->AWS Settings
kuten alla olevassa kuvakaappauksessa näkyy.
Rakenna ja käytä aws-do-eks-säiliötä
Avaa päätteen kuori haluamassasi ympäristössä ja suorita seuraavat komennot:
git clone https://github.com/aws-samples/aws-do-eks
cd aws-do-eks
./build.sh
./run.sh
./exec.sh
Tulos on seuraava:
Sinulla on nyt kuori konttiympäristössä, jossa on kaikki alla olevien tehtävien suorittamiseen tarvittavat työkalut. Kutsumme sitä "aws-do-eks shelliksi". Suoritat tämän komentotulkin seuraavien osien komennot, ellei toisin ole erikseen ohjeistettu.
Luo EKS-klusteri solmuryhmällä
Tämä ryhmä sisältää valitsemasi grafiikkasuoritinperheen; tässä esimerkissä käytämme g5.2xlarge
ilmentymän tyyppi.
- aws-do-eks -projekti mukana tulee kokoelma klusterikokoonpanoja. Voit määrittää haluamasi klusterin kokoonpanon yhdellä konfiguraatiomuutoksella.
- Juokse säiliökuoressa
./env-config.sh
ja aseta sitten CONF=conf/eksctl/yaml/eks-gpu-g5.yaml
- Tarkista klusterin kokoonpano suorittamalla
./eks-config.sh
Sinun pitäisi nähdä seuraava klusterin luettelo:
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
- Luo klusteri suorittamalla seuraava komento säilössä
Tuotos on seuraava:
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
- Varmista, että klusterin luominen onnistui, suorittamalla seuraava komento
kubectl get nodes -L node.kubernetes.io/instance-type
Tulos on seuraavanlainen:
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
Tässä esimerkissä klusterissamme on yksi m5.xlarge ja yksi g5.2xlarge esiintymä; siksi näemme kaksi solmua lueteltuna edellisessä lähdössä.
NVIDIA-laitelaajennus asennetaan klusterin luomisprosessin aikana. Sinun on poistettava se klusterin luomisen jälkeen, koska käytämme NVIDIA GPU -operaattori sen sijaan.
- Poista laajennus seuraavalla komennolla
kubectl -n kube-system delete daemonset nvidia-device-plugin-daemonset
Saamme seuraavan tuloksen:
daemonset.apps "nvidia-device-plugin-daemonset" deleted
Asenna NVIDIA Helm repo
Asenna NVIDIA Helm -repo seuraavalla komennolla:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia && helm repo update
Ota DCGM-vienti käyttöön NVIDIA GPU -operaattorin kanssa
Ota DCGM-vienti käyttöön suorittamalla seuraavat vaiheet:
- Valmistele DCGM-viennin GPU-metriikkamääritys
curl https://raw.githubusercontent.com/NVIDIA/dcgm-exporter/main/etc/dcp-metrics-included.csv > dcgm-metrics.csv
Sinulla on mahdollisuus muokata dcgm-metrics.csv
tiedosto. Voit lisätä tai poistaa mitä tahansa mittareita tarpeen mukaan.
- Luo gpu-operaattorin nimiavaruus ja DCGM-vienti ConfigMap
kubectl create namespace gpu-operator && /
kubectl create configmap metrics-config -n gpu-operator --from-file=dcgm-metrics.csv
Tuotos on seuraava:
namespace/gpu-operator created
configmap/metrics-config created
- Käytä GPU-operaattoria EKS-klusteriin
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
Tuotos on seuraava:
NAME: gpu-operator-1684795140
LAST DEPLOYED: Day Month Date HH:mm:ss YYYY
NAMESPACE: gpu-operator
STATUS: deployed
REVISION: 1
TEST SUITE: None
- Varmista, että DCGM-vientiyksikkö on käynnissä
kubectl -n gpu-operator get pods | grep dcgm
Tuotos on seuraava:
nvidia-dcgm-exporter-lkmfr 1/1 Running 0 1m
Jos tarkastat lokit, sinun pitäisi nähdä “Starting webserver”
viesti:
kubectl -n gpu-operator logs -f $(kubectl -n gpu-operator get pods | grep dcgm | cut -d ' ' -f 1)
Tuotos on seuraava:
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 paljastaa Prometheus-metriikkapäätepisteen, jonka CloudWatch-agentti voi ottaa vastaan. Voit nähdä päätepisteen käyttämällä seuraavaa komentoa:
kubectl -n gpu-operator get services | grep dcgm
Saamme seuraavan tuloksen:
nvidia-dcgm-exporter ClusterIP 10.100.183.207 <none> 9400/TCP 10m
- GPU-käytön luomiseksi otamme käyttöön podin, joka suorittaa gpu-burn binaarinen
kubectl apply -f https://raw.githubusercontent.com/aws-samples/aws-do-eks/main/Container-Root/eks/deployment/gpu-metrics/gpu-burn-deployment.yaml
Tuotos on seuraava:
deployment.apps/gpu-burn created
Tämä käyttöönotto käyttää yhtä GPU:ta tuottamaan jatkuvan 100 %:n käyttöasteen 20 sekunnin ajan, jota seuraa 0 %:n käyttöaste 20 sekunnin ajan.
- Varmistaaksesi, että päätepiste toimii, voit suorittaa väliaikaisen säilön, joka käyttää curl-toimintoa sisällön lukemiseen
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
Saamme seuraavan tuloksen:
# 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
Määritä ja ota käyttöön CloudWatch-agentti
Määritä ja ota CloudWatch-agentti käyttöön seuraavasti:
- Lataa YAML-tiedosto ja muokkaa sitä
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
Tiedosto sisältää a cwagent configmap
ja prometheus configmap
. Tässä viestissä muokkaamme molempia.
- Muokkaa
prometheus-eks.yaml
tiedosto
Avaa prometheus-eks.yaml
tiedosto suosikkieditorissasi ja korvaa cwagentconfig.json
osio, jossa on seuraava sisältö:
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 } }
- In
prometheus
config, liitä seuraava työn määritelmä DCGM-viejälle
- 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
- Tallenna tiedosto ja käytä
cwagent-dcgm
määritykset klusteriisi
kubectl apply -f ./prometheus-eks.yaml
Saamme seuraavan tuloksen:
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
- Varmista, että CloudWatch-agenttikotelo on käynnissä
kubectl -n amazon-cloudwatch get pods
Saamme seuraavan tuloksen:
NAME READY STATUS RESTARTS AGE
cwagent-prometheus-7dfd69cc46-s4cx7 1/1 Running 0 15m
Visualisoi mittareita CloudWatch-konsolissa
Voit visualisoida CloudWatchin tiedot suorittamalla seuraavat vaiheet:
- CloudWatch-konsolin alla Metrics valitse siirtymisruudussa Kaikki mittarit
- In Mukautetut nimitilat -osiosta, valitse uusi merkintä ContainerInsights/Prometheus
Saat lisätietoja ContainerInsights/Prometheus nimiavaruus, katso Kaavitaan lisää Prometheus-lähteitä ja tuodaan nämä tiedot.
- Tarkastele mittareiden nimiä ja valitse
DCGM_FI_DEV_GPU_UTIL
- On Graafiset mittarit välilehti, asetettu Ajanjakso että 5 sekuntia
- Aseta päivitysväliksi 10 sekuntia
Näet DCGM-viejältä kerätyt tiedot, jotka visualisoivat gpu-burn
kuvio päälle ja pois päältä 20 sekunnin välein.
On selailla -välilehdellä näet tiedot, mukaan lukien kunkin mittarin pod-nimen.
EKS-sovellusliittymän metatiedot on yhdistetty DCGM-mittaustietoihin, minkä tuloksena on toimitettu pod-pohjainen GPU-metriikka.
Tämä päättää ensimmäisen lähestymistavan viedä DCGM-mittareita CloudWatchiin CloudWatch-agentin kautta.
Seuraavassa osiossa konfiguroimme toisen arkkitehtuurin, joka vie DCGM-metriikat Prometheukseen, ja visualisoimme ne Grafanalla.
Käytä Prometheusta ja Grafanaa visualisoidaksesi GPU-mittauksia DCGM:stä
Suorita seuraavat vaiheet:
- Lisää Prometheus-yhteisön ruorikaavio
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
Tämä kaavio käyttää sekä Prometheusta että Grafanaa. Meidän on tehtävä joitain muutoksia kaavioon ennen asennuskomennon suorittamista.
- Tallenna kaavion määritysarvot tiedostoon
/tmp
helm inspect values prometheus-community/kube-prometheus-stack > /tmp/kube-prometheus-stack.values
- Muokkaa char-määritystiedostoa
Muokkaa tallennettua tiedostoa (/tmp/kube-prometheus-stack.values
) ja aseta seuraava vaihtoehto etsimällä asetuksen nimi ja asettamalla arvo:
prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false
- Lisää seuraava ConfigMap
additionalScrapeConfigs
jakso
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
- Ota Prometheus-pino käyttöön päivitetyillä arvoilla
helm install prometheus-community/kube-prometheus-stack
--create-namespace --namespace prometheus
--generate-name
--values /tmp/kube-prometheus-stack.values
Saamme seuraavan tuloksen:
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.
- Varmista, että Prometheus-tyynyt ovat käynnissä
kubectl get pods -n prometheus
Saamme seuraavan tuloksen:
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- ja Grafana-palot ovat sisällä Running
valtio.
Seuraavaksi vahvistamme, että DCGM-mittarit virtaavat Prometheukseen.
- Siirrä Prometheus-käyttöliittymä eteenpäin
On olemassa erilaisia tapoja altistaa EKS:ssä toimiva Prometheus-käyttöliittymä klusterin ulkopuolelta tuleville pyynnöille. Me käytämme kubectl port-forwarding
. Toistaiseksi olemme suorittaneet komentoja sisällä aws-do-eks
kontti. Luomme tunnelin isännästä päästäksemme käyttämään klusterissa käynnissä olevaa Prometheus-palvelua. Tässä aws-do-eks
säilö on käynnissä suorittamalla seuraavan komennon säilön ulkopuolella, isäntäkoneen uudessa päätekuoressa. Kutsumme tätä "isäntäkuoreksi".
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 &
Kun portin edelleenlähetysprosessi on käynnissä, voimme käyttää Prometheus-käyttöliittymää isännästä alla kuvatulla tavalla.
- Avaa Prometheus-käyttöliittymä
- Jos käytät Cloud9:ää, siirry kohtaan
Preview->Preview Running Application
avataksesi Prometheus-käyttöliittymän Cloud9 IDE:n sisällä olevalla välilehdellä ja napsauta sitten -kuvake välilehden oikeassa yläkulmassa ponnahtaa uuteen ikkunaan.
- Jos olet paikallisessa isännässäsi tai olet yhteydessä EC2-esiintymään etätyöpöydän kautta, avaa selain ja käy URL-osoitteessa
http://localhost:8080
.
- enter
DCGM
nähdäksesi DCGM-mittarit, jotka virtaavat Prometheukseen
- valita
DCGM_FI_DEV_GPU_UTIL
, valitse Suorittaaja siirry sitten kohtaan Kaavio -välilehteä nähdäksesi odotetun GPU-käyttömallin
- Pysäytä Prometheus-portin edelleenlähetysprosessi
Suorita seuraava komentorivi isäntäkuoressa:
kill -9 $(ps -aef | grep port-forward | grep -v grep | grep prometheus | awk '{print $2}')
Nyt voimme visualisoida DCGM-mittarit Grafana Dashboardin kautta.
- Hae salasana kirjautuaksesi Grafana-käyttöliittymää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
- Siirrä Grafana-palvelu eteenpäin
Suorita seuraava komentorivi isäntäkuoressa:
kubectl port-forward -n prometheus svc/$(kubectl -n prometheus get svc | grep grafana | cut -d ' ' -f 1) 8080:80 &
- Kirjaudu Grafana-käyttöliittymään
Käytä Grafana-käyttöliittymän kirjautumisnäyttöä samalla tavalla kuin käytit Prometheus-käyttöliittymää aiemmin. Jos käytät Cloud9:ää, valitse Preview->Preview Running Application
, ponnahtaa sitten uuteen ikkunaan. Jos käytät paikallista isäntääsi tai EC2-esiintymää, jossa on etätyöpöytä, käy URL-osoitteessa http://localhost:8080
. Kirjaudu sisään käyttäjätunnuksella admin ja aiemmin hakemallasi salasanalla.
- Valitse siirtymisruudussa Mittaristot
- Valita Uusi ja Tuo
Aiomme tuoda oletusarvoisen DCGM Grafana -hallintapaneelin, joka on kuvattu kohdassa NVIDIA DCGM Exporter Dashboard.
- Kentällä
import via grafana.com
, tulla sisään 12239
Ja valitse Ladata
- Valita Prometheus tietolähteenä
- Valita Tuo
Näet seuraavan kuvakaappauksen kaltaisen kojelaudan.
Osoittaaksemme, että nämä mittarit ovat pod-pohjaisia, aiomme muokata GPU:n käyttö -ruutua tässä kojelaudassa.
- Valitse ruutu ja asetusvalikko (kolme pistettä)
- Laajenna Vaihtoehdot -osio ja muokkaa Legenda ala
- Korvaa siellä oleva arvo arvolla
Pod {{pod}}
, valitse sitten Säästä
Legenda näyttää nyt gpu-burn
näytettävään GPU:n käyttöön liittyvä pod-nimi.
- Lopeta Grafana UI -palvelun porttien edelleenlähetys
Suorita seuraavat komennot isäntäkuoressa:
kill -9 $(ps -aef | grep port-forward | grep -v grep | grep prometheus | awk '{print $2}')
Tässä viestissä esitimme avoimen lähdekoodin Prometheuksen ja Grafanan käyttöä EKS-klusteriin. Haluttaessa tämä käyttöönotto voidaan korvata Amazonin hallinnoima palvelu Prometheukselle ja Amazonin hallinnoima Grafana.
Puhdistaa
Jos haluat puhdistaa luomasi resurssit, suorita seuraava komentosarja tiedostosta aws-do-eks
kontin kuori:
Yhteenveto
Tässä viestissä käytimme NVIDIA DCGM Exporteria GPU-mittareiden keräämiseen ja visualisoimiseen joko CloudWatchin tai Prometheuksen ja Grafanan avulla. Kutsumme sinut käyttämään tässä esiteltyjä arkkitehtuureja mahdollistaaksesi GPU-käytön valvonnan NVIDIA DCGM:n avulla omassa AWS-ympäristössäsi.
Lisäresurssit
Tietoja kirjoittajista
Amr Ragab on entinen pääratkaisuarkkitehti, EC2 Accelerated Computing, AWS. Hän on omistautunut auttamaan asiakkaita suorittamaan laskennallisia työkuormia mittakaavassa. Vapaa-ajallaan hän tykkää matkustaa ja löytää uusia tapoja integroida teknologiaa jokapäiväiseen elämään.
Alex Iankoulski on pääratkaisuarkkitehti, itsehallinnollinen koneoppiminen AWS:ssä. Hän on täyspinon ohjelmisto- ja infrastruktuuriinsinööri, joka haluaa tehdä syvällistä, käytännönläheistä työtä. Tehtävässään hän keskittyy auttamaan asiakkaita ML- ja AI-työkuormien konteinnissa ja organisoinnissa konttikäyttöisissä AWS-palveluissa. Hän on myös avoimen lähdekoodin kirjoittaja tee puitteet ja Docker-kapteeni, joka rakastaa konttitekniikoiden soveltamista innovaation vauhdittamiseen ja samalla maailman suurimpien haasteiden ratkaisemiseen. Viimeisten 10 vuoden aikana Alex on työskennellyt tekoälyn ja ML:n demokratisoimiseksi, ilmastonmuutoksen torjumiseksi ja matkustamisen turvallisuuden parantamiseksi, terveydenhuollon parantamiseksi ja energiaa älykkäämmäksi.
Keita Watanabe on vanhempi ratkaisuarkkitehti Frameworks ML Solutionsista Amazon Web Servicesissä, jossa hän auttaa kehittämään alan parhaita pilvipohjaisia itsehallittuja koneoppimisratkaisuja. Hänen taustansa on koneoppimisen tutkimus- ja kehitystyössä. Ennen tuloaan AWS:ään Keita työskenteli verkkokaupan parissa. Keita on Ph.D. luonnontieteissä Tokion yliopistosta.
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- PlatoData.Network Vertical Generatiivinen Ai. Vahvista itseäsi. Pääsy tästä.
- PlatoAiStream. Web3 Intelligence. Tietoa laajennettu. Pääsy tästä.
- PlatoESG. Autot / sähköautot, hiili, CleanTech, energia, ympäristö, Aurinko, Jätehuolto. Pääsy tästä.
- PlatonHealth. Biotekniikan ja kliinisten kokeiden älykkyys. Pääsy tästä.
- ChartPrime. Nosta kaupankäyntipeliäsi ChartPrimen avulla. Pääsy tästä.
- BlockOffsets. Ympäristövastuun omistuksen nykyaikaistaminen. Pääsy tästä.
- Lähde: https://aws.amazon.com/blogs/machine-learning/enable-pod-based-gpu-metrics-in-amazon-cloudwatch/