Observabilidad de código abierto para nodos de AWS Inferentia dentro de clústeres de Amazon EKS
[ad_1]
Los avances recientes en el aprendizaje automático (ML) han dado lugar a modelos cada vez más grandes, que a veces requieren cientos de miles de millones de parámetros. Aunque son más potentes, el entrenamiento y la inferencia sobre estos modelos requieren importantes recursos computacionales. A pesar de la disponibilidad de bibliotecas de capacitación distribuidas avanzadas, las tareas de capacitación e inferencia a menudo requieren cientos de aceleradores (GPU o chips de aprendizaje automático especialmente diseñados, como AWS Trainium y AWS Inferentia) y, por lo tanto, decenas o cientos de instancias.
En dichos entornos distribuidos, la observabilidad tanto de las instancias como de los chips ML se vuelve clave para ajustar el rendimiento del modelo y optimizar los costos. Al utilizar métricas, los equipos pueden comprender el comportamiento de las cargas de trabajo, optimizar la asignación y utilización de recursos, diagnosticar anomalías y aumentar la eficiencia general de la infraestructura. Para los científicos de datos, la utilización y saturación de los chips ML también son relevantes para la planificación de la capacidad.
Esta publicación lo guía a través del patrón de observabilidad de código abierto para AWS Inferentia y le muestra cómo monitorear el rendimiento de los chips de aprendizaje automático utilizados en un clúster de Amazon Elastic Kubernetes Service (Amazon EKS) con nodos de nivel de datos que se ejecutan en Amazon Elastic Compute Cloud (Amazon EC2). ) instancias de tipo Inf1 e Inf2.
El patrón es parte del Acelerador de observabilidad de AWS CDK, un conjunto de módulos personalizados que puede utilizar para establecer la observabilidad de los clústeres de Amazon EKS. El Acelerador de observabilidad de AWS CDK está organizado en torno a patrones, que son unidades reutilizables para implementar múltiples recursos. El conjunto de patrones de observabilidad de código abierto instrumenta la observabilidad con paneles de control de Amazon Managed Grafana, un recopilador de AWS Distro para OpenTelemetry para recopilar métricas y Amazon Managed Service para Prometheus para almacenarlas.
Descripción general de la solución
El siguiente diagrama ilustra la arquitectura de la solución.
Esta solución implementa un clúster de Amazon EKS con un grupo de nodos que contiene instancias Inf1.
El tipo de AMI del grupo de nodos es AL2_x86_64_GPU
, que utiliza la AMI acelerada de Amazon Linux optimizada para Amazon EKS. Además de la configuración de AMI estándar optimizada para Amazon EKS, la AMI acelerada incluye el tiempo de ejecución de NeuronX.
Para acceder a los chips ML a través de Kubernetes, el patrón proporciona el complemento del dispositivo AWS Neuron.
Las métricas las proporciona Amazon Managed Service para Prometheus. neuron-monitor
DaemonSet, que proporciona un contenedor mínimo con herramientas Neuron instaladas. Específicamente que neuron-monitor
DaemonSet hace esto neuron-monitor
Comando reenviado al neuron-monitor-prometheus.py
Script complementario (ambos comandos son parte del contenedor):
El comando utiliza los siguientes componentes:
neuron-monitor
recopila métricas y estadísticas de las aplicaciones Neuron que se ejecutan en el sistema y transmite los datos recopilados a la salida estándar en formato JSONneuron-monitor-prometheus.py
Asigna y expone los datos de telemetría del formato JSON a un formato compatible con Prometheus.
Los datos se visualizan en Amazon Managed Grafana a través del panel correspondiente.
El resto de la configuración para recopilar y visualizar métricas con Amazon Managed Service for Prometheus y Amazon Managed Grafana es similar a la utilizada en otros patrones basados en código abierto incluidos en el AWS Observability Accelerator for CDK
Repositorio de GitHub.
requisitos
Necesitará lo siguiente para seguir los pasos de esta publicación:
Configurar el entorno
Complete los siguientes pasos para configurar su entorno:
- Abra una ventana de terminal y ejecute los siguientes comandos:
- Recupere los ID de los espacios de trabajo de todos los espacios de trabajo de Amazon Managed Grafana existentes:
El siguiente es nuestro resultado de muestra:
- asignar los valores
id
Yendpoint
a las siguientes variables de entorno:
COA_AMG_ENDPOINT_URL
debe incluir https://
.
- Cree una clave API de Grafana desde el espacio de trabajo de Amazon Managed Grafana:
- Configure un secreto en AWS Systems Manager:
Se accede al secreto a través del complemento Secretos externos y se expone como un secreto nativo de Kubernetes en el clúster EKS.
Arranque el entorno AWS CDK
El primer paso en cualquier implementación de AWS CDK es iniciar el entorno. ellos usan el cdk bootstrap
Comando en la CLI de AWS CDK para preparar el entorno (una combinación de cuenta de AWS y región de AWS) con los recursos que AWS CDK necesita para realizar implementaciones en ese entorno. Se requiere el arranque de AWS CDK para cualquier combinación de cuenta y región. Por lo tanto, si ya inició AWS CDK en una región, no necesita repetir el proceso de arranque.
Proporcionar la solución
Complete los siguientes pasos para implementar la solución:
- Clone el repositorio cdk-aws-observability-accelerator e instale los paquetes de dependencia. Este repositorio contiene código AWS CDK v2 escrito en TypeScript.
Se espera que la configuración real de los archivos JSON del panel de Grafana se especifique en el contexto de AWS CDK. Necesitas actualizar context
en el cdk.json
Archivo ubicado en el directorio actual. La ubicación del tablero se indica mediante fluxRepository.values.GRAFANA_NEURON_DASH_URL
Parámetros y neuronNodeGroup
se utiliza para configurar el tipo, el número y el tamaño de instancia de Amazon Elastic Block Store (Amazon EBS) utilizados para los nodos.
- Ingrese el siguiente fragmento
cdk.json
sustitutocontext
:
Puede reemplazar el tipo de instancia Inf1 con Inf2 y cambiar su tamaño según sea necesario. Para verificar la disponibilidad en la región seleccionada, ejecute el siguiente comando (cambiar Values
como veas conveniente):
- Instale las dependencias del proyecto:
- Ejecute los siguientes comandos para implementar el patrón de observabilidad de código abierto:
Validar la solución
Complete los siguientes pasos para validar la solución:
- Ejecuta esto
update-kubeconfig
Dominio. Debería poder obtener el comando del mensaje de salida del comando anterior:
- Revise los recursos que creó:
La siguiente captura de pantalla muestra nuestro resultado de ejemplo.
- Asegúrate de eso
neuron-device-plugin-daemonset
DaemonSet se está ejecutando:
El siguiente es nuestro resultado esperado:
- Confirme que el
neuron-monitor
DaemonSet se está ejecutando:
El siguiente es nuestro resultado esperado:
- Para verificar que los dispositivos y núcleos de Neuron estén visibles, ejecute:
neuron-ls
Yneuron-top
Por ejemplo, los comandos de su módulo Neuron Monitor (puede ver el nombre del módulo en la salida dekubectl get pods -A
):
La siguiente captura de pantalla muestra nuestro resultado esperado.
La siguiente captura de pantalla muestra nuestro resultado esperado.
Visualice datos con el panel de Grafana Neuron
Inicie sesión en su espacio de trabajo de Amazon Managed Grafana y navegue hasta Paneles de control panel. Deberías ver un panel llamado Neurona/Monitor.
Para mostrar algunas métricas interesantes en el panel de Grafana, aplicamos el siguiente manifiesto:
Esta es una carga de trabajo de muestra que compila el modelo Torchvision ResNet50 y ejecuta inferencias repetidas en un bucle para generar datos de telemetría.
Para verificar que el pod se implementó correctamente, ejecute el siguiente código:
Deberías ver un pod llamado pytorch-inference-resnet50
.
Después de unos minutos lo miré. Neurona/Monitor Panel de control, debería ver las métricas recopiladas similares a las capturas de pantalla a continuación.
Grafana Operador y Flux siempre trabajan juntos para sincronizar sus paneles con Git. Si elimina accidentalmente sus paneles, se volverán a implementar automáticamente.
Limpiar
Puede eliminar toda la pila de AWS CDK utilizando el siguiente comando:
Diploma
En esta publicación, le mostramos cómo introducir la observabilidad en un clúster EKS con un nivel de datos que ejecuta instancias EC2-Inf1 utilizando herramientas de código abierto. Comenzamos seleccionando la AMI acelerada optimizada para Amazon EKS para los nodos de la capa de datos, que incluye el tiempo de ejecución del contenedor Neuron y proporciona acceso a los dispositivos AWS Inferentia y Trainium Neuron. Luego implementamos el complemento Neuron Device para exponer los núcleos y dispositivos de Neuron a Kubernetes. La captura real y el mapeo de datos de telemetría en un formato compatible con Prometheus se logró a través de neuron-monitor
Y neuron-monitor-prometheus.py
. Las métricas se obtuvieron de Amazon Managed Service for Prometheus y se muestran en el panel de Amazon Managed Grafana Neuron.
Le recomendamos que explore patrones de observabilidad adicionales en el repositorio de GitHub de AWS Observability Accelerator para CDK. Para obtener más información sobre Neuron, consulte la documentación de AWS Neuron.
Sobre el Autor
Ricardo Freschi es arquitecto senior de soluciones en AWS y se centra en la modernización de aplicaciones. Trabaja en estrecha colaboración con socios y clientes para ayudarlos a transformar sus entornos de TI en el camino hacia la nube de AWS mediante el rediseño de aplicaciones existentes y la creación de otras nuevas.
[ad_2]
Deja una respuesta