Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En el ámbito de la informática de alto rendimiento (HPC) y la inteligencia artificial (IA), la optimización del rendimiento de las máquinas virtuales (VM) es fundamental. Azure ofrece un conjunto de herramientas y técnicas para garantizar que las cargas de trabajo de HPC y IA se ejecuten de forma eficaz en su plataforma. Dos aspectos clave de esta optimización son el anclaje de procesos y subprocesos, y la ubicación óptima de los procesos MPI.
En este artículo se proporcionan instrucciones detalladas sobre cómo mejorar el rendimiento de las cargas de trabajo de HPC y AI en máquinas virtuales de Azure. Tiene como objetivo la importancia del anclaje de procesos y subprocesos, la colocación óptima de los procesos de MPI y el uso de herramientas de Azure como checkapppinning.py para lograr estas optimizaciones. Además, trata estrategias para la selección de ubicación de procesos de MPI, la recopilación de métricas de rendimiento y recomendaciones para diferentes implementaciones de MPI para garantizar una ejecución eficaz y eficaz de las aplicaciones de HPC e IA en máquinas virtuales especializadas de HPC de Azure.
Herramienta para ayudar en el anclaje óptimo de procesos o subprocesos para máquinas virtuales de Azure HPC/AI
Para maximizar el rendimiento de las aplicaciones de HPC, es esencial distribuir procesos y subprocesos uniformemente en la máquina virtual, utilizando todos los sockets, dominios NUMA y cachés L3. Esta distribución garantiza que el ancho de banda de memoria y el rendimiento de punto flotante estén optimizados. En aplicaciones paralelas híbridas, cada proceso tiene varios subprocesos. Para maximizar el uso compartido y reutilización de datos, es mejor mantener un proceso y sus subprocesos en la misma memoria caché L3.
Azure proporciona una herramienta denominada Comprobar anclaje de aplicaciones para ayudar en este proceso. Ayuda a ver la topología de CPU de la máquina virtual, comprobar dónde se ejecutan los procesos de aplicación paralelos y los subprocesos, y generar argumentos óptimos de afinidad de proceso de MPI y Slurm. Con esta herramienta, asegúrese de que sus aplicaciones de HPC/AI se ejecutan de forma óptima en máquinas virtuales especializadas de HPC de Azure.
Ejemplo: Uso de la herramienta
- Visualización de la topología de CPU de máquina virtual
# python check_app_pinning.py --view-topology
- Comprobación de la selección de ubicación de procesos y subprocesos
# python check_app_pinning.py --check-placement
- Generación de argumentos de afinidad
# python check_app_pinning.py --generate-affinity
Al aprovechar esta herramienta, puede lograr un mejor rendimiento para las cargas de trabajo de HPC y AI en Azure, lo que garantiza que las aplicaciones se ejecuten de forma eficaz y eficaz.
Selección óptima de ubicación de procesos MPI para máquinas virtuales de la serie HB de Azure
En el caso de las aplicaciones MPI, el anclaje óptimo de los procesos puede dar lugar a mejoras de rendimiento significativas, especialmente para sistemas infraescritos. La introducción del diseño de CHIPLET de AMDs agrega complejidad a este proceso. En el diseño de Chiplet, AMD integra CPU más pequeñas juntas para proporcionar un socket con 64 núcleos. Para maximizar el rendimiento, es importante equilibrar la cantidad de ancho de banda de memoria y caché L3 por núcleo.
Las máquinas virtuales de la serie HB de Azure, como hb60rs y HBv2, incluyen varios dominios y núcleos NUMA. Por ejemplo, la máquina virtual HB60rs tiene 60 núcleos AMD Nápoles, con cada socket que contiene 8 dominios NUMA. Al suscribirse a la máquina virtual, debe equilibrar el ancho de banda de memoria y caché L3 entre núcleos. Se puede lograr seleccionando el número adecuado de núcleos por nodo y usando estrategias específicas de selección de ubicación de procesos de MPI.
Ejemplo: Selección de ubicación de proceso de MPI
- Selección del número de núcleos por nodo
# mpirun -np 60 --map-by ppr:8:node --bind-to core my_mpi_application
- Distribuir procesos de MPI uniformemente entre dominios NUMA
# mpirun -np 60 --map-by ppr:8:node:pe=8 --bind-to numa my_mpi_application
Recopilación de métricas de rendimiento
La recopilación de métricas de rendimiento es esencial para comprender y optimizar el rendimiento de las cargas de trabajo de HPC e IA. Azure proporciona varias herramientas y métodos para recopilar estas métricas.
Ejemplo: Recopilación de métricas de rendimiento
Uso de Azure Monitor:
- Configure Azure Monitor para recopilar métricas como el uso de CPU, el uso de memoria y el ancho de banda de red.
- Cree un área de trabajo de Log Analytics y configure las opciones de diagnóstico para enviar métricas al área de trabajo.
Uso de PerfCollect:
- Instalación de PerfCollect en la máquina virtual
# wget https://aka.ms/perfcollect -O perfcollect # chmod +x perfcollect # sudo ./perfcollect install
- Inicio de la recopilación de métricas
# sudo ./perfcollect start mysession
- Detener la recopilación de métricas y generar un informe
# sudo ./perfcollect stop mysession
Implementaciones de MPI
Las distintas implementaciones de MPI pueden tener características de rendimiento variables en máquinas virtuales de AZURE HPC/AI. Entre las implementaciones comunes de MPI se incluyen OpenMPI, MPICH e Intel MPI. Cada implementación tiene sus puntos fuertes y puede funcionar de forma diferente en función de la configuración específica de la carga de trabajo y la máquina virtual.
Recomendaciones para la configuración y el anclaje de procesos de MPI
- OpenMPI
- Use las opciones --bind-to y --map-by para controlar la selección de ubicación del proceso Ejemplo:
# mpirun -np 60 --bind-to core --map-by ppr:8:node my_mpi_application
- MPICH
- Use las variables de entorno HYDRA_BIND y HYDRA_RANK para controlar la selección de ubicación del proceso Ejemplo:
# export HYDRA_BIND=core # export HYDRA_RANK=8 # mpiexec -np 60 my_mpi_application
- Intel MPI
- Use las variables de entorno I_MPI_PIN y I_MPI_PIN_DOMAIN para controlar la selección de ubicación del proceso. Ejemplo:
# export I_MPI_PIN=1 # export I_MPI_PIN_DOMAIN=socket # mpirun -np 60 my_mpi_application
Al seguir estas recomendaciones y usar las herramientas y técnicas proporcionadas por Azure, puede optimizar el rendimiento de sus cargas de trabajo de HPC e IA, lo que garantiza una ejecución eficaz y eficaz en las máquinas virtuales especializadas de HPC de Azure.