Veebruaris 2022 lisas Amazon Web Services NVIDIA GPU mõõdikute tugi Amazon CloudWatchis, mis võimaldab edastada mõõdikuid Amazon CloudWatch Agent et Amazon CloudWatch ja jälgige oma koodi GPU optimaalseks kasutamiseks. Sellest ajast alates on see funktsioon integreeritud paljudesse meie hallatavatesse Amazoni masinapiltidesse (AMI), näiteks Süvaõppe AMI ja AWS ParallelCluster AMI. GPU kasutuse eksemplaritasemel mõõdikute hankimiseks saate kasutada Packerit või Amazon ImageBuilderit oma kohandatud AMI alglaadimiseks ja kasutada seda mitmesugustes hallatavates teenustes, näiteks AWS partii, Amazoni elastsete konteinerite teenus (Amazon ECS) või Amazoni elastse Kubernetese teenus (Amazon EKS). Paljude konteineripõhiste teenusepakkumiste ja töökoormuste puhul on aga ideaalne kasutusmõõdikute jäädvustamine konteineri, kausta või nimeruumi tasemel.
Selles postituses kirjeldatakse üksikasjalikult konteineripõhiste GPU-mõõdikute seadistamist ja on näide nende mõõdikute kogumisest EKS-i kaustadest.
Lahenduse ülevaade
Konteinerpõhiste GPU-mõõdikute demonstreerimiseks loome EKS-i klastri koos g5.2xlarge
juhtumid; see töötab aga kõigi toetatud NVIDIA kiirendatud eksemplariperedega.
Kasutame NVIDIA GPU operaatorit, et võimaldada kasutada GPU ressursse ja NVIDIA DCGM eksportija GPU mõõdikute kogumise lubamiseks. Seejärel uurime kahte arhitektuuri. Esimene ühendab NVIDIA DCGM Exporteri mõõdikud CloudWatchi agendi kaudu CloudWatchiga, nagu on näidatud järgmisel diagrammil.
Teine arhitektuur (vt järgmist diagrammi) ühendab mõõdikud DCGM eksportijast Prometheus, siis kasutame a grafana armatuurlaud, et neid mõõdikuid visualiseerida.
Eeldused
Sellest postitusest kogu virna reprodutseerimise lihtsustamiseks kasutame konteinerit, kuhu on juba installitud kõik vajalikud tööriistad (aws cli, eksctl, helm jne). Selleks, et kloonida konteinerprojekt GitHubilt, sa vajad git. Konteineri ehitamiseks ja käitamiseks vajate laevalaadija. Arhitektuuri juurutamiseks vajate AWS-i mandaadid. Kubernetese teenustele juurdepääsu võimaldamiseks pordi edastamise abil on teil vaja ka kubectl.
Need eeltingimused saab installida teie kohalikku masinasse, EC2 näide koos KENA DCVvõi AWSi pilv. Selles postituses kasutame a c5.2xlarge
Cloud9 eksemplar koos a 40GB
kohalik salvestusmaht. Cloud9 kasutamisel keelake AWS-i hallatavad ajutised mandaadid külastades Cloud9->Preferences->AWS Settings
nagu on näidatud alloleval ekraanipildil.
Ehitage ja käivitage aws-do-eks konteiner
Avage eelistatud keskkonnas terminali kest ja käivitage järgmised käsud:
git clone https://github.com/aws-samples/aws-do-eks
cd aws-do-eks
./build.sh
./run.sh
./exec.sh
Tulemus on järgmine:
Nüüd on teil konteinerikeskkonnas kest, millel on kõik allolevate ülesannete täitmiseks vajalikud tööriistad. Me nimetame seda "aws-do-eks kestaks". Kui pole konkreetselt teisiti juhitud, käivitate selle kesta järgmistes jaotistes olevaid käske.
Looge sõlmerühmaga EKS-klaster
See rühm sisaldab teie valitud GPU eksemplari perekonda; selles näites kasutame g5.2xlarge
eksemplari tüüp.
. aws-do-eks projekt kaasas klastri konfiguratsioonide kogu. Saate määrata soovitud klastri konfiguratsiooni ühe konfiguratsioonimuudatusega.
- Konteineri kestas jookse
./env-config.sh
ja seejärel seadistage CONF=conf/eksctl/yaml/eks-gpu-g5.yaml
- Klastri konfiguratsiooni kontrollimiseks käivitage
./eks-config.sh
Peaksite nägema järgmist klastri manifesti:
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
- Klastri loomiseks käivitage konteineris järgmine käsk
Väljund on järgmine:
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
- Klastri eduka loomise kontrollimiseks käivitage järgmine käsk
kubectl get nodes -L node.kubernetes.io/instance-type
Väljund on sarnane järgmisega:
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
Selles näites on meie klastris üks eksemplar m5.xlarge ja üks g5.2xlarge; seetõttu näeme eelmises väljundis loetletud kahte sõlme.
Klastri loomise käigus installitakse NVIDIA seadme pistikprogramm. Peate selle pärast klastri loomist eemaldama, sest me kasutame NVIDIA GPU operaator asemel.
- Kustutage plugin järgmise käsuga
kubectl -n kube-system delete daemonset nvidia-device-plugin-daemonset
Saame järgmise väljundi:
daemonset.apps "nvidia-device-plugin-daemonset" deleted
Installige NVIDIA Helmi repo
Installige NVIDIA Helmi repo järgmise käsuga:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia && helm repo update
Juurutage DCGM-eksportija koos NVIDIA GPU-operaatoriga
DCGM-eksportija juurutamiseks toimige järgmiselt.
- Valmistage ette DCGM-i eksportija GPU mõõdikute konfiguratsioon
curl https://raw.githubusercontent.com/NVIDIA/dcgm-exporter/main/etc/dcp-metrics-included.csv > dcgm-metrics.csv
Teil on võimalus redigeerida dcgm-metrics.csv
faili. Vajadusel saate mis tahes mõõdikuid lisada või eemaldada.
- Looge gpu-operaatori nimeruum ja DCGM-i eksportija ConfigMap
kubectl create namespace gpu-operator && /
kubectl create configmap metrics-config -n gpu-operator --from-file=dcgm-metrics.csv
Väljund on järgmine:
namespace/gpu-operator created
configmap/metrics-config created
- Rakendage GPU operaator EKS-klastrisse
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
Väljund on järgmine:
NAME: gpu-operator-1684795140
LAST DEPLOYED: Day Month Date HH:mm:ss YYYY
NAMESPACE: gpu-operator
STATUS: deployed
REVISION: 1
TEST SUITE: None
- Veenduge, et DCGM-i eksportijakast töötab
kubectl -n gpu-operator get pods | grep dcgm
Väljund on järgmine:
nvidia-dcgm-exporter-lkmfr 1/1 Running 0 1m
Kui kontrollite palke, peaksite nägema “Starting webserver”
teade:
kubectl -n gpu-operator logs -f $(kubectl -n gpu-operator get pods | grep dcgm | cut -d ' ' -f 1)
Väljund on järgmine:
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 paljastab Prometheuse mõõdikute lõpp-punkti, mille saab alla neelata CloudWatchi agent. Lõpp-punkti nägemiseks kasutage järgmist käsku:
kubectl -n gpu-operator get services | grep dcgm
Saame järgmise väljundi:
nvidia-dcgm-exporter ClusterIP 10.100.183.207 <none> 9400/TCP 10m
- GPU kasutuse genereerimiseks juurutame pod, mis käitab gpu-põletus binaarne
kubectl apply -f https://raw.githubusercontent.com/aws-samples/aws-do-eks/main/Container-Root/eks/deployment/gpu-metrics/gpu-burn-deployment.yaml
Väljund on järgmine:
deployment.apps/gpu-burn created
See juurutus kasutab ühte GPU-d, et luua pidev muster 100% kasutusega 20 sekundi jooksul, millele järgneb 0% kasutus 20 sekundi jooksul.
- Lõpp-punkti toimimise tagamiseks võite käivitada ajutise konteineri, mis kasutab sisu lugemiseks curl-i
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
Saame järgmise väljundi:
# 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
Seadistage ja juurutage CloudWatchi agent
CloudWatchi agendi konfigureerimiseks ja juurutamiseks toimige järgmiselt.
- Laadige alla YAML-fail ja muutke seda
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
Fail sisaldab a cwagent configmap
ja prometheus configmap
. Selle postituse jaoks muudame mõlemat.
- Muuda
prometheus-eks.yaml
fail
avage prometheus-eks.yaml
faili oma lemmikredaktorisse ja asendage cwagentconfig.json
järgmise sisuga jaotis:
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 } }
- aasta
prometheus
konfiguratsiooni jaotises lisage DCGM-eksportija jaoks järgmine töömääratlus
- 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
- Salvestage fail ja rakendage
cwagent-dcgm
konfiguratsiooni oma klastrisse
kubectl apply -f ./prometheus-eks.yaml
Saame järgmise väljundi:
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
- Veenduge, et CloudWatchi agendihoidik töötab
kubectl -n amazon-cloudwatch get pods
Saame järgmise väljundi:
NAME READY STATUS RESTARTS AGE
cwagent-prometheus-7dfd69cc46-s4cx7 1/1 Running 0 15m
Visualiseerige mõõdikuid CloudWatchi konsoolil
Mõõdikute visualiseerimiseks CloudWatchis toimige järgmiselt.
- CloudWatchi konsoolil, all Meetrika valige navigeerimispaanil Kõik mõõdikud
- aasta Kohandatud nimeruumid valige uus kirje ContainerInsights/Prometheus
Täpsemat infot ContainerInsights/Prometheus nimeruum, viidata Täiendavate Prometheuse allikate kraapimine ja nende mõõdikute importimine.
- Sirvige mõõdikute nimesid ja valige
DCGM_FI_DEV_GPU_UTIL
- Kohta Graafikulised mõõdikud sakk, komplekt Periood et 5 sekundit
- Seadke värskendusintervalliks 10 sekundit
Näete DCGM-i eksportijalt kogutud mõõdikuid, mis visualiseerivad gpu-burn
muster sisse ja välja iga 20 sekundi järel.
Kohta Sirvi vahekaardil näete andmeid, sealhulgas iga mõõdiku nimesid.
EKS API metaandmed on kombineeritud DCGM-i mõõdikute andmetega, mille tulemuseks on pod-põhised GPU mõõdikud.
Sellega on esimene lähenemisviis DCGM-i mõõdikute eksportimiseks CloudWatchi CloudWatchi agendi kaudu.
Järgmises jaotises konfigureerime teise arhitektuuri, mis ekspordib DCGM-i mõõdikud Prometheusesse, ja visualiseerime need Grafanaga.
Kasutage Prometheust ja Grafanat, et visualiseerida DCGM-i GPU mõõdikuid
Tehke järgmised toimingud.
- Lisage Prometheuse kogukonna tüürikaart
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
Sellel diagrammil on kasutusel nii Prometheus kui ka Grafana. Enne installikäsu käivitamist peame diagrammil mõned muudatused tegema.
- Salvestage diagrammi konfiguratsiooni väärtused faili
/tmp
helm inspect values prometheus-community/kube-prometheus-stack > /tmp/kube-prometheus-stack.values
- Redigeerige tähe konfiguratsioonifaili
Redigeeri salvestatud faili (/tmp/kube-prometheus-stack.values
) ja määrake järgmine valik, otsides sätte nime ja määrates väärtuse:
prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false
- Lisage sellele järgmine ConfigMap
additionalScrapeConfigs
lõik
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
- Juurutage Prometheuse virn koos värskendatud väärtustega
helm install prometheus-community/kube-prometheus-stack
--create-namespace --namespace prometheus
--generate-name
--values /tmp/kube-prometheus-stack.values
Saame järgmise väljundi:
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.
- Veenduge, et Prometheuse kaunad töötavad
kubectl get pods -n prometheus
Saame järgmise väljundi:
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
Prometheuse ja Grafana kaunad asuvad Running
riik.
Järgmisena kinnitame, et DCGM-i mõõdikud liiguvad Prometheusesse.
- Port-edasi Prometheuse kasutajaliides
EKS-is töötava Prometheuse kasutajaliidese avaldamiseks väljaspool klastrit pärinevatele päringutele on erinevaid viise. Me kasutame kubectl port-forwarding
. Siiani oleme täitnud käske rakenduse sees aws-do-eks
konteiner. Klastris töötavale Prometheuse teenusele juurdepääsuks loome hostist tunneli. Siin on aws-do-eks
konteiner töötab, käivitades järgmise käsu väljaspool konteinerit hosti uues terminali kestas. Me nimetame seda "host shelliks".
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 &
Kui pordi edastamise protsess töötab, pääseme Prometheuse kasutajaliidesele hostist juurde, nagu allpool kirjeldatud.
- Avage Prometheuse kasutajaliides
- Kui kasutate Cloud9, minge aadressile
Preview->Preview Running Application
Prometheuse kasutajaliidese avamiseks Cloud9 IDE vahekaardil, seejärel klõpsake nuppu ikooni vahekaardi paremas ülanurgas, et kuvada uude aknasse.
- Kui olete kohalikus hostis või olete kaugtöölaua kaudu ühendatud EC2 eksemplariga, avage brauser ja külastage URL-i
http://localhost:8080
.
- sisene
DCGM
et näha DCGM-i mõõdikuid, mis Prometheusesse voolavad
- valima
DCGM_FI_DEV_GPU_UTIL
, vali Täitmaja seejärel navigeerige lehele Graafik vahekaarti, et näha eeldatavat GPU kasutusmustrit
- Peatage Prometheuse pordi edastamise protsess
Käivitage oma hosti kestas järgmine käsurida:
kill -9 $(ps -aef | grep port-forward | grep -v grep | grep prometheus | awk '{print $2}')
Nüüd saame Grafana armatuurlaua kaudu visualiseerida DCGM-i mõõdikuid.
- Hankige Grafana kasutajaliidesesse sisselogimiseks parool
kubectl -n prometheus get secret $(kubectl -n prometheus get secrets | grep grafana | cut -d ' ' -f 1) -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
- Suunake Grafana teenus edasi
Käivitage oma hosti kestas järgmine käsurida:
kubectl port-forward -n prometheus svc/$(kubectl -n prometheus get svc | grep grafana | cut -d ' ' -f 1) 8080:80 &
- Logige sisse Grafana kasutajaliidesesse
Juurdepääs Grafana kasutajaliidese sisselogimisekraanile samamoodi nagu varem Prometheuse kasutajaliidesele. Kui kasutate Cloud9, valige Preview->Preview Running Application
, seejärel ilmub see uues aknas. Kui kasutate kohalikku hosti või kaugtöölauaga EC2 eksemplari, külastage URL-i http://localhost:8080
. Logige sisse kasutajanimega admin ja varem ammutatud parooliga.
- Valige navigeerimispaanil Verbi
- Vali Uus ja Import
Impordime DCGM Grafana vaikimisi armatuurlaua, mida on kirjeldatud artiklis NVIDIA DCGM eksportija armatuurlaud.
- Valdkonnas
import via grafana.com
, sisenema 12239
Ja vali Koormus
- Vali Prometheus andmeallikana
- Vali Import
Näete armatuurlauda, mis sarnaneb järgmisel ekraanipildil olevaga.
Et näidata, et need mõõdikud on pod-põhised, muudame me GPU kasutamine paani sellel armatuurlaual.
- Valige paan ja suvandite menüü (kolm punkti)
- Laienda Valikud jaotist ja redigeerige legend väli
- Asendage seal olev väärtus väärtusega
Pod {{pod}}
, siis vali Säästa
Legend näitab nüüd gpu-burn
kuvatava GPU kasutusega seotud podi nimi.
- Peatage Grafana kasutajaliidese teenuse pordiedastus
Käivitage oma hosti kestas järgmine:
kill -9 $(ps -aef | grep port-forward | grep -v grep | grep prometheus | awk '{print $2}')
Selles postituses demonstreerisime EKS-klastrisse juurutatud avatud lähtekoodiga Prometheuse ja Grafana kasutamist. Soovi korral saab selle kasutuselevõtu asendada Amazoni hallatav teenus Prometheuse jaoks ja Amazoni hallatav Grafana.
Koristage
Loodud ressursside puhastamiseks käivitage rakendusest järgmine skript aws-do-eks
konteineri kest:
Järeldus
Selles postituses kasutasime NVIDIA DCGM Exporterit GPU mõõdikute kogumiseks ja nende visualiseerimiseks kas CloudWatchi või Prometheuse ja Grafana abil. Kutsume teid kasutama siin näidatud arhitektuure, et võimaldada GPU kasutamise jälgimist NVIDIA DCGM-iga oma AWS-keskkonnas.
Lisaressursid
Autoritest
Amr Ragab on endine AWS-i EC2 Accelerated Computingi pealahenduste arhitekt. Ta on pühendunud sellele, et aidata klientidel arvutuslikku töökoormust mastaapselt kasutada. Vabal ajal meeldib talle reisida ja leida uusi viise, kuidas tehnoloogiat igapäevaellu integreerida.
Alex Iankoulski on AWS-i pealahenduste arhitekt, isejuhtiv masinõpe. Ta on täielik tarkvara- ja infrastruktuuriinsener, kellele meeldib teha põhjalikku ja praktilist tööd. Oma rollis keskendub ta klientide abistamisele konteineritel töötavate AWS-teenuste ML ja AI töökoormuse konteineriseerimisel ja orkestreerimisel. Ta on ka avatud lähtekoodiga raamatu autor teha raamistik ja Dockeri kapten, kes armastab konteinertehnoloogiate rakendamist, et kiirendada innovatsioonitempot, lahendades samal ajal maailma suurimaid väljakutseid. Viimase 10 aasta jooksul on Alex töötanud tehisintellekti ja ML demokratiseerimise, kliimamuutuste vastu võitlemise ning reisimise turvalisemaks, tervishoiu paremaks ja energiatargemaks muutmise nimel.
Keita Watanabe on Amazon Web Services Frameworks ML Solutionsi vanemlahenduste arhitekt, kus ta aitab arendada valdkonna parimaid pilvepõhiseid isehallatavaid masinõppelahendusi. Tema taust on masinõppe uurimis- ja arendustegevuses. Enne AWS-iga liitumist töötas Keita e-kaubanduse valdkonnas. Keital on Ph.D. Tokyo ülikooli loodusteadustes.
- SEO-põhise sisu ja PR-levi. Võimenduge juba täna.
- PlatoData.Network Vertikaalne generatiivne Ai. Jõustage ennast. Juurdepääs siia.
- PlatoAiStream. Web3 luure. Täiustatud teadmised. Juurdepääs siia.
- PlatoESG. Autod/elektrisõidukid, Süsinik, CleanTech, Energia, Keskkond päikeseenergia, Jäätmekäitluse. Juurdepääs siia.
- PlatoTervis. Biotehnoloogia ja kliiniliste uuringute luureandmed. Juurdepääs siia.
- ChartPrime. Tõsta oma kauplemismängu ChartPrime'iga kõrgemale. Juurdepääs siia.
- BlockOffsets. Keskkonnakompensatsiooni omandi ajakohastamine. Juurdepääs siia.
- Allikas: https://aws.amazon.com/blogs/machine-learning/enable-pod-based-gpu-metrics-in-amazon-cloudwatch/