¿Debo usar GPU o CPU para inferencia?


12

Estoy ejecutando una red neuronal de aprendizaje profundo que ha sido entrenada por una GPU. Ahora quiero implementar esto en varios hosts para inferencia. La pregunta es ¿cuáles son las condiciones para decidir si debo usar GPU o CPU para inferencia?


Agregar más detalles de los comentarios a continuación.

Soy nuevo en esto, por lo que se agradece la orientación.

  • Memoria : GPU es K80

  • Marco : Cuda y cuDNN

  • Tamaño de datos por cargas de trabajo : 20G

  • Calcular nodos para consumir : uno por trabajo, aunque quisiera considerar una opción de escala

  • Costo : puedo pagar una opción de GPU si las razones tienen sentido

  • Implementación : se ejecuta en servidores bare metal alojados, no en la nube.

En este momento estoy corriendo en la CPU simplemente porque la aplicación funciona bien. Pero fuera de esa razón, no estoy seguro de por qué uno incluso consideraría GPU.


Para aconsejar sobre la comparación entre dos enfoques potenciales, será útil que otros conozcan algunos detalles de su tarea. Por ejemplo, cuál es el tamaño de sus datos, cuál es la capacidad de memoria de su GPU, la cantidad de nodos de computación que planea usar y quizás también qué marco de reducción de mapas tiene en mente.
Dynamic Stardust

@DynamicStardust ... y el costo. ¿Nodos de CPU EC2 baratos o nodos de GPU ECW caros? Esta es una pregunta demasiado vaga.
Spacedman

Respuestas:


7

@Dan @SmallChess, no estoy completamente de acuerdo. Es cierto que para el entrenamiento, gran parte de la paralalización puede ser explotada por las GPU, lo que resulta en un entrenamiento mucho más rápido. Por inferencia, esta paralización puede ser mucho menor, sin embargo, las CNN aún obtendrán una ventaja de esto, lo que resultará en una inferencia más rápida. Ahora solo tiene que preguntarse: ¿es importante una inferencia más rápida? ¿Quiero estas dependencias adicionales (una buena GPU, los archivos correctos instalados, etc.)?

Si la velocidad no es un problema, elige la CPU. Sin embargo, tenga en cuenta que las GPU pueden hacer que sea un orden de magnitud más rápido en mi experiencia.


Punto interesante que plantea, ¿por qué CNN se beneficiaría del procesamiento paralelo durante la inferencia?
Dan

1
Con el entrenamiento, los cálculos paralelos pueden ser obvios: tiene múltiples entradas, cada una de las cuales debe enviarse con alimentación, totalmente independientes entre sí. Para una convolución, el núcleo se multiplica sobre múltiples 'parches' de entrada. Estos se pueden hacer en paralelo también. Eso es lo que hace que CNN sea tan poderoso: no solo necesitan menos parámetros para entrenar, sino que también está más paralelo, lo que hace que las GPU sean tan poderosas. No sé en qué trabaja, pero trabajo en la segmentación (clasificación por píxeles) de imágenes y cuando uso GPU para inferencia obtengo una gran mejora de velocidad (> x10).
Laurens Meeus

@LaurensMeeus También soy nuevo en este espectro y estoy haciendo análisis de costos de máquinas virtuales en la nube. ¿Seguiría usando GPU para entrenar si solo estoy entrenando análisis de texto y no imágenes?
Squ1rr3lz

2
@ Squ1rr3lz Estoy 95% deberías. Toda forma de computación paralela debería obtener una ventaja en las GPU. No soy un experto en este campo, pero dado que el análisis de texto también es con capas convolucionales (ya sea 1D en lugar de 2D), esta es una razón por la que podría / debería ser más rápido. Si es posible, intente por sí mismo qué influencia tiene la activación / desactivación de la GPU.
Laurens Meeus

6

Ejecutar inferencia en una GPU en lugar de en una CPU te dará casi la misma velocidad que en el entrenamiento, menos un poco a la sobrecarga de memoria.

Sin embargo, como dijiste, la aplicación funciona bien en la CPU. Si llega al punto en que la velocidad de inferencia es un cuello de botella en la aplicación, la actualización a una GPU aliviará ese cuello de botella.


Totalmente de acuerdo. Todavía no entiendo por qué la publicación de la CPU está superada.
Laurens Meeus

1
GeForce GTX Titan X ofrece un rendimiento entre 5.3 y 6.7 veces mayor que la CPU Intel Xeon E5 de 16 núcleos, que es mucho menor que la velocidad alcanzada durante el entrenamiento, del propio blog de NVidia: devblogs.nvidia.com/…
seanhalle

4

Solo usaría GPU para la capacitación porque el aprendizaje profundo requiere un cálculo masivo para llegar a una solución óptima. Sin embargo, no necesita máquinas GPU para la implementación .

Tomemos como ejemplo el nuevo iPhone X de Apple. El nuevo iPhone X tiene un algoritmo avanzado de aprendizaje automático para la detección práctica. Los empleados de Apple deben tener un grupo de máquinas para capacitación y validación. Pero su iPhone X no necesita una GPU solo para ejecutar el modelo.


Gracias por esa explicación Lo que no entiendo es por qué Nvidia promueve el uso de GPU como la mejor solución para la inferencia si la CPU puede hacerlo bien. Además, ¿por qué Google también está presionando TPU para inferencia si lo hacen todo con CPU? ¿Tiene algo que ver con la computación paralela?
Dan

3
@SmallChess ¿IPhone X no tenía algún procesador avanzado similar a TPU solo por inferencia? extremetech.com/mobile/…
Laurens Meeus

3
@SmallChess ¿Pero por qué no puede ser? Tal vez simplemente no entiendo completamente. ¿Todavía no obtendrás alguna mejora en la velocidad?
Laurens Meeus

2
Honestamente, NVidia tiene un departamento de marketing fantástico, y les conviene promover el uso de GPU NVidia por inferencia. Es en su mejor interés, no en el tuyo.
seanhalle

1
Del blog de NVidia: "258 vs. 242 imágenes / segundo" para NVIDIA Tegra X1 vs i7 6700K CPU al realizar la inferencia: devblogs.nvidia.com/…
seanhalle
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.