Artículo escrito por Rakshith Vasudev y John Lockman: Laboratorio de innovación de IA de HPC en octubre del 2019
Contenedor NGC nvcr.io/nvidia/tensorflow:19.06- py3 |
Versiones de entornos Conda |
|
Infraestructura |
TensorFlow 1.13.1 |
TensorFlow 1.12.0 |
Horovod |
0.15.1 |
0.16.1 |
MPI |
OpenMPI 3.1.3 |
OpenMPI 4.0.0 |
CUDA |
10,2 |
10,1 |
Controlador de CUDA |
430,26 |
418.40.04 |
NCCL |
2.4.7 |
2.4.7 |
CUDNN |
7.6.0 |
7.6.0 |
Python |
3.5.2 |
3.6.8 |
Sistema operativo |
Ubuntu 16.04.6 |
RHEL 7.4 |
GCC |
5.4.0 |
7.2.0 |
Tabla 1
Como se indicó anteriormente, CheXNet es un modelo de asistente de radiología de IA que utiliza DenseNet para identificar hasta 14 patologías desde una imagen determinada de rayos X de tórax. Se exploraron varios enfoques para escalar horizontalmente la capacitación de un modelo que podría funcionar tan bien como o mejor que el CheXNet-121 original con ResNet-50, lo que demuestra su promesa tanto en escalabilidad como en mayor precisión de capacitación (AUROC positivo). Los autores demostraron escalabilidades en los sistemas de CPU; sin embargo, estamos interesados en aprovechar el paralelismo de las GPU para acelerar el proceso de capacitación. Dell EMC PowerEdge C4140 proporciona densidad y rendimiento con cuatro GPU Nvidia V100 en la configuración SXM2.
Sistema de bajo nivel |
Sistema Kubernetes |
|
Plataforma |
PowerEdge C4140 |
PowerEdge C4140 |
CPU |
2 Intel® Xeon® Gold 6148 a 2,4 GHz |
2 Intel® Xeon® Gold 6148 a 2,4 GHz |
Memoria |
384 GB DDR4 a 2666 MHz |
384 GB DDR4 a 2666 MHz |
Almacenamiento |
Lustre |
NFS |
Unidad de procesamiento de gráficos (GPU) |
V100-SXM2 de 32 GB |
V100-SXM2 de 32 GB |
Sistema operativo |
RHEL 7.4 x86_64 |
CentOS 7.6 |
Kernel de Linux |
3.10.0-693.x86_64 |
3.10.0-957.21.3.el7.x86_64 |
Red |
Mellanox EDR InfiniBand |
Mellanox EDR InfiniBand (IP a través de IB) |
El rendimiento de la imagen, medido en imágenes por segundo, cuando la capacitación de CheXNet se midió con 1, 2, 3, 4 y 8 GPU en 2 nodos C4140 en ambos sistemas descritos en la Tabla 2. Las especificaciones de la ejecución, incluida la arquitectura del modelo, los datos de entrada, etc., se detallan en este artículo. En la Figura 1, se muestra la comparación de rendimiento medido en el sistema Kubernetes y el sistema de bajo nivel.
Figura 1: Ejecución de capacitación de CheXNet en K8s frente a un sistema de bajo nivel
El sistema de bajo nivel demuestra un aumento del 8 % en el rendimiento a medida que escalamos horizontalmente a 8 GPU. Sin embargo, las diferencias en el diseño de la arquitectura de sistema podrían causar esta ligera diferencia de rendimiento, más allá de solo el argumento de contenedor frente al argumento de bajo nivel. El sistema de bajo nivel puede aprovechar todo el ancho de banda y la latencia de la conexión InfiniBand cruda y no tiene que lidiar con la sobrecarga creada con redes definidas por software, como un flannel. También es cierto que el sistema K8s está utilizando IP a través de InfiniBand, lo que puede reducir el ancho de banda disponible.
Estos números pueden variar según la carga de trabajo y los patrones de comunicación definidos por el tipo de aplicaciones que se ejecutan. En el caso de un problema de clasificación de imagen, la velocidad a la que se produce la comunicación entre las GPU es alta y, por lo tanto, hay una tasa de cambio alta. Sin embargo, el uso de un enfoque sobre el otro depende de las necesidades de la carga de trabajo. A pesar de que nuestro sistema basado en Kubernetes tiene una pequeña pérdida de rendimiento, ~8 % en este caso, alivia a los usuarios y los administradores de tener que establecer bibliotecas, configuraciones, entornos y otras dependencias. Este enfoque permite que los científicos de datos sean más productivos y se centren en resolver los problemas principales del negocio, como la organización de datos y la creación de modelos.