En febrero de 2022, Amazon Web Services agregó soporte para métricas de GPU NVIDIA en Amazon CloudWatch, haciendo posible impulsar métricas desde el Agente de Amazon CloudWatch a Reloj en la nube de Amazon y supervise su código para una utilización óptima de la GPU. Desde entonces, esta característica se ha integrado en muchas de nuestras Amazon Machine Images (AMI) administradas, como la AMI de aprendizaje profundo y del AMI de clúster paralelo de AWS. Para obtener métricas de utilización de GPU a nivel de instancia, puede usar Packer o Amazon ImageBuilder para iniciar su propia AMI personalizada y usarla en varias ofertas de servicios administrados como Lote de AWS, Servicio de contenedor elástico de Amazon (Amazon ECS), o Servicio Amazon Elastic Kubernetes (Amazon EKS). Sin embargo, para muchas cargas de trabajo y ofertas de servicios basados en contenedores, es ideal capturar métricas de utilización a nivel de contenedor, pod o espacio de nombres.
Esta publicación detalla cómo configurar métricas de GPU basadas en contenedores y proporciona un ejemplo de cómo recopilar estas métricas de los pods de EKS.
Resumen de la solución
Para demostrar las métricas de GPU basadas en contenedores, creamos un clúster EKS con g5.2xlarge
instancias; sin embargo, esto funcionará con cualquier familia de instancias aceleradas de NVIDIA compatibles.
Implementamos el operador de GPU NVIDIA para permitir el uso de recursos de GPU y la Exportador NVIDIA DCGM para habilitar la recopilación de métricas de GPU. Luego exploramos dos arquitecturas. El primero conecta las métricas de NVIDIA DCGM Exporter a CloudWatch a través de un agente de CloudWatch, como se muestra en el siguiente diagrama.
La segunda arquitectura (consulte el siguiente diagrama) conecta las métricas de DCGM Exporter a Prometeo, entonces usamos un Grafana panel para visualizar esas métricas.
Requisitos previos
Para simplificar la reproducción de toda la pila de esta publicación, utilizamos un contenedor que ya tiene instaladas todas las herramientas necesarias (aws cli, eksctl, helm, etc.). Para clonar el proyecto de contenedor de GitHub, necesitará git. Para construir y ejecutar el contenedor, necesitará Docker. Para implementar la arquitectura, necesitará Credenciales de AWS. Para habilitar el acceso a los servicios de Kubernetes mediante el reenvío de puertos, también necesitará kubectl.
Estos requisitos previos se pueden instalar en su máquina local, Instancia EC2 NIZA DCVo Nube de AWS9. En esta publicación usaremos un c5.2xlarge
Instancia de Cloud9 con un 40GB
Volumen de almacenamiento local. Cuando utilice Cloud9, desactive las credenciales temporales administradas por AWS visitando Cloud9->Preferences->AWS Settings
como se muestra en la captura de pantalla a continuación.
Compile y ejecute el contenedor aws-do-eks
Abra un shell de terminal en su entorno preferido y ejecute los siguientes comandos:
El resultado es el siguiente:
Ahora tiene un shell en un entorno de contenedor que tiene todas las herramientas necesarias para completar las tareas siguientes. Nos referiremos a él como "shell aws-do-eks". Ejecutará los comandos de las siguientes secciones de este shell, a menos que se le indique específicamente lo contrario.
Cree un clúster EKS con un grupo de nodos
Este grupo incluye una familia de instancias de GPU de su elección; en este ejemplo, utilizamos el g5.2xlarge
tipo de instancia.
La proyecto aws-do-eks viene con una colección de configuraciones de clúster. Puede establecer la configuración de clúster que desee con un único cambio de configuración.
- En el shell del contenedor, ejecute
./env-config.sh
y luego establecerCONF=conf/eksctl/yaml/eks-gpu-g5.yaml
- Para verificar la configuración del clúster, ejecute
./eks-config.sh
Debería ver el siguiente manifiesto de clúster:
- Para crear el clúster, ejecute el siguiente comando en el contenedor
El resultado es el siguiente:
- Para verificar que su clúster se haya creado correctamente, ejecute el siguiente comando
El resultado es similar al siguiente:
En este ejemplo, tenemos una instancia m5.xlarge y una g5.2xlarge en nuestro clúster; por lo tanto, vemos dos nodos enumerados en el resultado anterior.
Durante el proceso de creación del clúster, se instalará el complemento del dispositivo NVIDIA. Deberá eliminarlo después de la creación del clúster porque usaremos el Operador de GPU NVIDIA preferiblemente.
- Elimine el complemento con el siguiente comando
Obtenemos el siguiente resultado:
Instale el repositorio de NVIDIA Helm
Instale el repositorio de NVIDIA Helm con el siguiente comando:
Implemente el exportador DCGM con el operador de GPU NVIDIA
Para implementar el exportador DCGM, complete los siguientes pasos:
- Prepare la configuración de métricas de GPU del exportador DCGM
Tienes la opción de editar el dcgm-metrics.csv
archivo. Puede agregar o eliminar cualquier métrica según sea necesario.
- Cree el espacio de nombres gpu-operator y el ConfigMap del exportador DCGM
El resultado es el siguiente:
- Aplicar el operador de GPU al clúster EKS
El resultado es el siguiente:
- Confirme que el módulo exportador DCGM se esté ejecutando
El resultado es el siguiente:
Si inspecciona los registros, debería ver el “Starting webserver”
mensaje:
El resultado es el siguiente:
NVIDIA DCGM Exporter expone un punto final de métricas de Prometheus, que el agente de CloudWatch puede incorporar. Para ver el punto final, utilice el siguiente comando:
Obtenemos el siguiente resultado:
- Para generar cierta utilización de GPU, implementamos un pod que ejecuta el quemadura de gpu binario
El resultado es el siguiente:
Esta implementación utiliza una única GPU para producir un patrón continuo de 100 % de utilización durante 20 segundos seguido de 0 % de utilización durante 20 segundos.
- Para asegurarse de que el punto final funcione, puede ejecutar un contenedor temporal que use curl para leer el contenido de
http://nvidia-dcgm-exporter:9400/metrics
Obtenemos el siguiente resultado:
Configurar e implementar el agente de CloudWatch
Para configurar e implementar el agente de CloudWatch, complete los siguientes pasos:
- Descarga el archivo YAML y edítalo
El archivo contiene un cwagent configmap
y prometheus configmap
. Para esta publicación, editamos ambos.
- Editar el
prometheus-eks.yaml
presentar
Abra la prometheus-eks.yaml
archivo en su editor favorito y reemplace el cwagentconfig.json
sección con el siguiente contenido:
- En
prometheus
sección de configuración, agregue la siguiente definición de trabajo para el exportador DCGM
- Guarde el archivo y aplique el
cwagent-dcgm
configuración de su cluster
Obtenemos el siguiente resultado:
- Confirme que el pod del agente de CloudWatch se está ejecutando
Obtenemos el siguiente resultado:
Visualice métricas en la consola de CloudWatch
Para visualizar las métricas en CloudWatch, complete los siguientes pasos:
- En la consola de CloudWatch, debajo de Métrica en el panel de navegación, elija Todas las métricas
- En Espacios de nombres personalizados sección, elija la nueva entrada para ContainerInsights/Prometeo
Para obtener más información acerca de la ContainerInsights/Prometeo espacio de nombres, consulte Eliminación de fuentes adicionales de Prometheus e importación de esas métricas.
- Profundice en los nombres de las métricas y elija
DCGM_FI_DEV_GPU_UTIL
- En Métricas graficadas pestaña, establecer periodo a 5 segundos
- Establezca el intervalo de actualización en 10 segundos
Verá las métricas recopiladas del exportador DCGM que visualizan el gpu-burn
patrón encendido y apagado cada 20 segundos.
En Explorar , puede ver los datos, incluido el nombre del pod para cada métrica.
Los metadatos de la API de EKS se combinaron con los datos de métricas de DCGM, lo que dio como resultado las métricas de GPU basadas en pod proporcionadas.
Con esto concluye el primer enfoque de exportar métricas de DCGM a CloudWatch a través del agente de CloudWatch.
En la siguiente sección, configuramos la segunda arquitectura, que exporta las métricas DCGM a Prometheus y las visualizamos con Grafana.
Utilice Prometheus y Grafana para visualizar métricas de GPU de DCGM
Complete los siguientes pasos:
- Agregue el gráfico de timón de la comunidad de Prometheus
Este gráfico implementa tanto Prometheus como Grafana. Necesitamos realizar algunas modificaciones en el gráfico antes de ejecutar el comando de instalación.
- Guarde los valores de configuración del gráfico en un archivo en
/tmp
- Editar el archivo de configuración de caracteres
Edite el archivo guardado (/tmp/kube-prometheus-stack.values
) y configure la siguiente opción buscando el nombre de la configuración y estableciendo el valor:
- Agregue el siguiente ConfigMap al
additionalScrapeConfigs
.
- Implementar la pila de Prometheus con los valores actualizados
Obtenemos el siguiente resultado:
- Confirme que las cápsulas Prometheus se estén ejecutando
Obtenemos el siguiente resultado:
Las vainas de Prometheus y Grafana están en el Running
estado.
A continuación, validamos que las métricas de DCGM estén fluyendo hacia Prometheus.
- Reenvíe el puerto de la interfaz de usuario de Prometheus
Hay diferentes formas de exponer la interfaz de usuario de Prometheus que se ejecuta en EKS a solicitudes que se originan fuera del clúster. Usaremos kubectl port-forwarding
. Hasta ahora, hemos estado ejecutando comandos dentro del aws-do-eks
envase. Para acceder al servicio Prometheus que se ejecuta en el clúster, crearemos un túnel desde el host. Aquí el aws-do-eks
El contenedor se ejecuta ejecutando el siguiente comando fuera del contenedor, en un nuevo shell de terminal en el host. Nos referiremos a esto como "shell de host".
- Abra la interfaz de usuario de Prometheus
- Si está utilizando Cloud9, navegue hasta
Preview->Preview Running Application
para abrir la interfaz de usuario de Prometheus en una pestaña dentro del IDE de Cloud9, luego haga clic en el icono en la esquina superior derecha de la pestaña para que aparezca en una nueva ventana. - Si está en su host local o conectado a una instancia EC2 a través de un escritorio remoto, abra un navegador y visite la URL
http://localhost:8080
.
- Si está utilizando Cloud9, navegue hasta
- Participar
DCGM
para ver las métricas de DCGM que están fluyendo hacia Prometheus - Seleccione
DCGM_FI_DEV_GPU_UTIL
, escoger Implementacióny, a continuación, navegue hasta la Gráfico pestaña para ver el patrón de utilización de GPU esperado
- Detener el proceso de reenvío de puertos de Prometheus
Ejecute la siguiente línea de comando en su shell de host:
Ahora podemos visualizar las métricas de DCGM a través de Grafana Dashboard.
- Recupere la contraseña para iniciar sesión en la interfaz de usuario de Grafana
- Reenvío de puertos del servicio Grafana
Ejecute la siguiente línea de comando en su shell de host:
- Inicie sesión en la interfaz de usuario de Grafana
Acceda a la pantalla de inicio de sesión de la UI de Grafana de la misma manera que accedió a la UI de Prometheus anteriormente. Si usa Cloud9, seleccione Preview->Preview Running Application
y luego aparecerá en una nueva ventana. Si utiliza su host local o una instancia EC2 con escritorio remoto, visite la URL http://localhost:8080
. Inicie sesión con el nombre de usuario admin y la contraseña que recuperó anteriormente.
- En el panel de navegación, elija Cuadros de mando
- Elige Nuevo y Importa
Vamos a importar el panel predeterminado de DCGM Grafana descrito en Panel de control del exportador NVIDIA DCGM.
- En el campo
import via grafana.com
, introduzca12239
y elige Carga - Elige Prometeo como fuente de datos
- Elige Importa
Verá un panel similar al de la siguiente captura de pantalla.
Para demostrar que estas métricas están basadas en pods, vamos a modificar el Utilización de GPU panel en este panel.
- Elija el panel y el menú de opciones (tres puntos)
- Ampliar la opción Opciones sección y editar la Leyenda campo
- Reemplace el valor allí con
Pod {{pod}}
, A continuación, elija Guardar
La leyenda ahora muestra el gpu-burn
Nombre del pod asociado con la utilización de GPU mostrada.
- Detener el reenvío de puertos del servicio Grafana UI
Ejecute lo siguiente en su shell de host:
En esta publicación, demostramos el uso de Prometheus y Grafana de código abierto implementados en el clúster EKS. Si lo desea, esta implementación se puede sustituir por Servicio administrado de Amazon para Prometheus y Grafana gestionado por Amazon.
Limpiar
Para limpiar los recursos que creó, ejecute el siguiente script desde el aws-do-eks
cáscara del contenedor:
Conclusión
En esta publicación, utilizamos NVIDIA DCGM Exporter para recopilar métricas de GPU y visualizarlas con CloudWatch o Prometheus y Grafana. Lo invitamos a utilizar las arquitecturas que se muestran aquí para permitir el monitoreo de la utilización de GPU con NVIDIA DCGM en su propio entorno de AWS.
Recursos adicionales
Sobre los autores
amr ragab Es ex arquitecto principal de soluciones de EC2 Accelerated Computing en AWS. Se dedica a ayudar a los clientes a ejecutar cargas de trabajo computacionales a escala. En su tiempo libre le gusta viajar y encontrar nuevas formas de integrar la tecnología en la vida diaria.
Alex Iankoulski es arquitecto principal de soluciones y aprendizaje automático autogestionado en AWS. Es un ingeniero de infraestructura y software completo al que le gusta hacer un trabajo profundo y práctico. En su puesto, se centra en ayudar a los clientes con la contenerización y la orquestación de cargas de trabajo de aprendizaje automático e inteligencia artificial en servicios de AWS basados en contenedores. También es el autor del libro de código abierto. hacer marco y un capitán de Docker al que le encanta aplicar tecnologías de contenedores para acelerar el ritmo de la innovación mientras resuelve los mayores desafíos del mundo. Durante los últimos 10 años, Alex ha trabajado para democratizar la IA y el aprendizaje automático, combatir el cambio climático y hacer que los viajes sean más seguros, la atención médica sea mejor y la energía sea más inteligente.
Keita Watanabe es arquitecto de soluciones senior de Frameworks ML Solutions en Amazon Web Services, donde ayuda a desarrollar las mejores soluciones de aprendizaje automático autogestionadas basadas en la nube de la industria. Su experiencia es en investigación y desarrollo de aprendizaje automático. Antes de unirse a AWS, Keita trabajaba en la industria del comercio electrónico. Keita tiene un doctorado. en Ciencias de la Universidad de Tokio.
- Distribución de relaciones públicas y contenido potenciado por SEO. Consiga amplificado hoy.
- PlatoData.Network Vertical Generativo Ai. Empodérate. Accede Aquí.
- PlatoAiStream. Inteligencia Web3. Conocimiento amplificado. Accede Aquí.
- PlatoESG. Automoción / vehículos eléctricos, Carbón, tecnología limpia, Energía, Ambiente, Solar, Gestión de residuos. Accede Aquí.
- PlatoSalud. Inteligencia en Biotecnología y Ensayos Clínicos. Accede Aquí.
- ChartPrime. Eleve su juego comercial con ChartPrime. Accede Aquí.
- Desplazamientos de bloque. Modernización de la propiedad de compensaciones ambientales. Accede Aquí.
- Fuente: https://aws.amazon.com/blogs/machine-learning/enable-pod-based-gpu-metrics-in-amazon-cloudwatch/
- :posee
- :es
- :no
- :dónde
- $ UP
- 01
- 06
- 07
- 08
- 09
- 1
- 10
- 100
- 11
- 12
- 13
- 14
- 15%
- 16
- 160
- 17
- 20
- 2022
- 2023
- 22
- 224
- 23
- 24
- 25
- 27
- 29
- 30
- 32
- 40
- 50
- 51
- 54
- 7
- 70
- 8
- 80
- 9
- a
- Poder
- Nuestra Empresa
- acelerar
- acelerado
- de la máquina
- visitada
- la columna Acción
- lector activo
- add
- adicional
- Adicionales
- Admin
- Después
- edad
- Agente
- AI
- alex
- Todos
- Alpha
- ya haya utilizado
- también
- Amazon
- Amazon Web Services
- an
- y
- e infraestructura
- cualquier
- abejas
- Aplicá
- La aplicación de
- enfoque
- aplicaciones
- arquitectura
- somos
- AS
- Consejos
- asociado
- At
- autor
- autorización
- automáticamente
- AWS
- Atrás
- fondo
- Ancho de banda
- basado
- BE
- porque
- a las que has recomendado
- esto
- antes
- a continuación
- MEJOR
- mejores
- Mayor
- Bootstrap
- ambas
- cada navegador
- build
- Construir la
- autobús
- by
- PUEDEN
- capturar
- CD
- retos
- el cambio
- Tabla
- comprobar
- manera?
- Elige
- clic
- Clima
- Cambio climático
- Reloj
- Soluciones
- Cloud9
- Médico
- código
- recoger
- El cobro
- --
- COM
- combinado
- proviene
- vibrante e inclusiva
- completar
- informática
- Configuración
- conectado
- conecta
- Consola
- consumo
- Envase
- contiene
- contenido
- continuo
- control
- Esquina
- Para contrarrestar
- contadores
- Para crear
- creado
- Creamos
- creación
- Referencias
- personalizado
- Clientes
- Corte
- de ciclos
- todos los días
- página de información de sus operaciones
- de los tableros
- datos
- Fecha
- día
- profundo
- Predeterminado
- definición
- Democratizando
- demostrar
- demostrado
- desplegar
- desplegado
- Desplegando
- despliegue
- despliega
- descrito
- deseado
- computadora de escritorio
- detalles
- desarrollar
- Desarrollo
- dispositivo
- una experiencia diferente
- dimensiones
- aquí
- do
- Docker
- hecho
- DE INSCRIPCIÓN
- dibujar
- durante
- e
- comercio electrónico
- cada una
- Más temprano
- editor
- ya sea
- habilitar
- facilita
- Punto final
- energía
- Consumo de energía
- Motor
- ingeniero
- Participar
- Todo
- entidades
- entrada
- Entorno
- error
- Errores
- etc.
- ejemplo
- ejecución
- existe
- esperado
- explorar
- las exportaciones
- Fallidos
- Que cae
- false
- familia
- muchos
- Favoritos
- Feature
- Febrero
- campo
- Archive
- la búsqueda de
- Nombre
- Fluido
- se centra
- seguido
- siguiendo
- siguiente
- Ex
- marcos
- Gratuito
- Frecuencia
- Desde
- calibre
- generar
- obtener
- GitHub
- Go
- va
- GPU
- gráficos
- Grupo procesos
- emprendedor
- Tienen
- he
- cabeceras
- la salud
- ayuda
- ayudando
- ayuda
- esta página
- hh
- su
- mantiene
- fortaleza
- Cómo
- Como Hacer
- Sin embargo
- HTML
- http
- HTTPS
- ICON
- ID
- ideal
- if
- imágenes
- importar
- importador
- in
- incluido
- incluye
- Incluye
- energético
- de la industria
- información
- EN LA MINA
- Innovation
- dentro
- instalar
- instalado
- instalando
- ejemplo
- Instrucciones
- integrar
- COMPLETAMENTE
- Interfaz
- interno
- dentro
- invitar
- cuestiones
- IT
- SUS
- sí mismo
- Trabajos
- unión
- jpg
- json
- Guardar
- Tipo
- Apellido
- aprendizaje
- menos
- Nivel
- Licencia
- Vida
- como
- Me gusta
- línea
- LINK
- Listado
- carga
- local
- log
- registro
- Inicie sesión
- mirando
- ama
- máquina
- máquina de aprendizaje
- Inicio
- para lograr
- Realizar
- gestionado
- muchos
- Puede..
- Salud Cerebral
- Menú
- mensaje
- metadatos
- métrico
- Métrica
- ML
- modificar
- Monitorear
- monitoreo
- Mes
- más,
- nombre
- nombres
- Navegar
- Navegación
- ¿ Necesita ayuda
- nunca
- Nuevo
- Next
- no
- nodo
- nodos
- Notas
- ahora
- número
- Nvidia
- obtener
- of
- off
- Lista de ofrendas
- on
- ONE
- habiertos
- de código abierto
- operado
- operador
- óptimo
- Optión
- Opciones
- or
- orquestación
- solicite
- originario
- de otra manera
- nuestros
- salir
- salida
- afuera
- Más de
- EL DESARROLLADOR
- Paz
- cristal
- Paralelo
- Contraseña
- pasado
- Patrón de Costura
- para
- período
- tubo
- industrial
- Platón
- Inteligencia de datos de Platón
- PlatónDatos
- Por favor
- plugin
- Deliciosos
- posible
- Publicación
- industria
- preferido
- requisitos previos
- Vista previa
- Director de la escuela
- Anterior
- privada
- producir
- proyecto
- protocolo
- previsto
- proveedor
- proporciona un
- público
- Push
- Rate
- proporción
- Leer
- ready
- recibido
- aprovecha
- remitir
- expresiones regulares
- región
- sanaciones
- remove
- reemplazar
- reemplazo
- solicitudes
- Requisitos
- la investigación
- la investigación y el desarrollo
- Recursos
- renovadas
- resultado
- resultante
- Función
- También soy miembro del cuerpo docente de World Extreme Medicine (WEM) y embajadora europea de igualdad para The Transformational Travel Council (TTC). En mi tiempo libre, soy una incansable aventurera, escaladora, patrona de día, buceadora y defensora de la igualdad de género en el deporte y la aventura. En XNUMX, fundé Almas Libres, una ONG nacida para involucrar, educar y empoderar a mujeres y niñas a través del deporte urbano, la cultura y la tecnología.
- reglas
- Ejecutar
- correr
- corre
- s
- Safer
- mismo
- Escala
- esquema
- Ciencia:
- Pantalla
- guión
- Segundo
- segundos
- Secreto
- Sección
- (secciones)
- ver
- enviando
- mayor
- de coches
- Servicios
- set
- pólipo
- Cáscara
- tienes
- mostrado
- Shows
- similares
- simplificar
- desde
- soltero
- más inteligente
- So
- hasta aquí
- Software
- Soluciones
- Resolver
- algo
- Fuentes
- específicamente
- especificado
- montón
- Comience a
- Estado
- Estado
- pasos
- STORAGE
- subredes
- Con éxito
- tal
- suite
- Soportado
- seguro
- Switch
- SYS
- te
- Tarea
- tareas
- Tecnologías
- Tecnología
- plantilla
- temporal
- terminal
- test
- esa
- La
- Les
- luego
- Ahí.
- por lo tanto
- Estas
- así
- aquellos
- Tres
- equipo
- a
- Tokio
- caja de herramientas
- Total
- viajes
- Viajar
- verdadero
- try
- túnel
- dos
- tipo
- ui
- bajo
- universidad
- Universidad de Tokio
- actualizado
- Enlance
- utilizan el
- usado
- Usuario
- usos
- usando
- UTC
- utilizado
- v1
- VALIDAR
- propuesta de
- Valores
- diversos
- verificar
- versión
- vía
- Visite
- visualizar
- volumen
- W
- esperar
- Esperando
- fue
- Camino..
- formas
- we
- web
- servicios web
- tuvieron
- cuando
- sean
- que
- mientras
- QUIENES
- seguirá
- ventana
- Actividades:
- trabajado
- trabajando
- funciona
- mundo
- yaml
- años
- Usted
- tú
- zephyrnet