Introducción
Es tentador utilizar GPU para deep learning y la inferencia, dado el entusiasmo en torno a su aceleración. Sin embargo, es importante obtener una comprensión más profunda de la fuente de aceleración para utilizar estos recursos de manera efectiva. En este artículo, examinaremos la dependencia del rendimiento de una aplicación Deep Learning típica. Usaremos como ejemplo la máquina DGX-1 de nVidia, muy publicitada, pero los puntos a continuación son lo suficientemente genéricos como para aplicarlos a una GPU o TPU genérica.
1. Hardware
Las especificaciones de hardware subyacentes desempeñan el papel más importante en la determinación de la aceleración de DL. Tener un hardware rápido no se traduce automáticamente en tener una mejor aceleración para una aplicación DL típica, a menos que se tenga cuidado.
- número de GPU (8 Tesla P100s)
- Núcleos CUDA ( 28672 núcleos CUDA)
- Núcleos Tensor (Ninguno)
- Memoria GPU (128 GB)
- Memoria del sistema (512 GB con 2,13 MHz DDR4)
2. Transferencia de datos
Dado que las aplicaciones DL llevan a cabo operaciones de uso intensivo de datos, es increíblemente importante comprender el flujo de datos entre los componentes de hardware durante el entrenamiento y la inferencia. La transferencia de datos en las máquinas de primer nivel actuales varía desde unos pocos Gigabit / seg en la red hasta más de cien Gigabytes / seg dentro de las clicas de GPU. Esto puede afectar el rendimiento de la aplicación DL hasta 100 veces. Por ejemplo, la arquitectura Tesla P-100 con nVLink permite la transferencia de datos entre GPU de hasta 160 GB / s. Al mismo tiempo, puede disminuir la velocidad mediante las interfaces HDD / SSD, NIC o RAM.
Es útil recordar que un tren de transferencia de datos es tan rápido como su enlace más lento. A continuación se muestran los componentes en cuya velocidad se basa la transferencia de datos.
- Unidad de disco duro o disco duro (velocidad típica de 100MB / s)
- Unidad de estado sólido o SSD (velocidad típica de 500 MB / s)
- PCI express 5 (velocidad típica 4GB / s-60GB / s)
- Tarjeta de interfaz de red (velocidad típica 16 Gb / s)
3. Software de infraestructura
El software de infraestructura incluye las siguientes opciones
- Sistema operativo: Ubuntu 14.04 LTS sigue siendo una opción popular. Asegúrese de eliminar los daemons y servicios no utilizados (por ejemplo, ftp, firewall, etc.) antes de usar la máquina para la aplicación DL.
- Lenguaje de programación y marcos DL: Python y Tensorflow con soporte multi-threading es una combinación popular. El soporte nativo para algoritmos de optimización (como Allreduce, Parameter-Server & Worker, etc.) en una biblioteca de deep learning para equilibrar el flujo de datos puede ser de gran ayuda para utilizar un hardware rápido. Otras bibliotecas populares de DL que vale la pena mencionar son Caffe CNTK y pyTorch .
4. Modelos de deep learning
Si está utilizando modelos de deep learning (como VGG16, resNet50, etc.) para la inferencia, considere usar las versiones optimizadas para su biblioteca de deep learning para asegurarse de que la estructura de la red neuronal se optimice para la eficiencia de forma nativa. La comunidad Tensorflow continúa portando nuevos modelos de DL para el bien mayor. Puede acceder a ellos aquí .
5. Conjuntos de datos
El tamaño del conjunto de datos o una muestra es una medida importante. En general, los datos de la vida real son órdenes de magnitud más grandes en comparación con lo que necesitan las aplicaciones DL.
Por ejemplo, VGG-16 toma solo 224×224 píxeles en comparación con las imágenes de 4000×3000 píxeles de una cámara típica de un teléfono celular. Vale la pena reducir el tamaño una vez antes, en lugar de en el ciclo de entrenamiento o la inferencia para evitar el consumo innecesario de ancho de banda.
6. Entrenamiento
El soporte de la GPU nativa para DL primitivas de entrenamiento y estrategias de distribución hace productivos a DL.
Las primitivas de entrenamiento DL incluyen agrupamiento, normalización de lotes, abandono, ReLU, Sigmoid, Softmax, etc.
Estrategias de distribución técnicas de cobertura como Mirror Strategy, PS-worker, All reduce etc.
Distribuido sabor de back-propagation algoritmos como la diferenciación automática juega un papel crucial en eficiencia informática.
Es importante asegurarse de que el proveedor de GPU como nVidia y AMD brinden soporte para la biblioteca de deep learning que elija. nVidia ofrece madurado cuDNN para DL primitivas de entrenamiento, mientras que AMD ROCM tiene mucho que recuperar.
7. Inferencia
La Inferencia de DL podría ser un arrastre para modelos grandes de DL como resNet152 y puede usar GPU en modo de producción. La optimización de inferencia incluye dos enfoques:
Layer y Tensor Fusion cambian la estructura del gráfico para mejorar el rendimiento de la inferencia sin afectar la precisión de salida.
Calibración de precisión para reducir la precisión (de FP32 a FP24, FP16 o INT8) de las neuronas afecta adversamente la precisión del modelo DL y por lo tanto debe usarse con precaución.
Resumen
La imagen siguiente resume los 7 puntos que discutimos anteriormente.
Crédito
La mayoría de esto se recogieron datos para el libro Inteligencia artificial en Automatización del diseño.
7 puntos para considerar, antes de usar GPU para acelerar las aplicaciones Deep Learning se publicó originalmente en Towards Data Science en Medio, donde las personas continúan la conversación resaltando y respondiendo a esta historia.