¿Qué es mejor para el aprendizaje profundo dos 1070 o un 1080ti?

El uso de GPU para el aprendizaje profundo es la mejor opción. Antes de continuar, generalmente recomiendo aprovechar una solución en la nube como Amazon AWS o Azure NS. Tienen el mejor valor si planea usar GPU unas pocas (1–2h) horas al día durante un período de unos pocos meses, y no juegue videojuegos que justifiquen la compra de su propia tarjeta. 🙂

Analicemos cuál exactamente de estos dos será el mejor. Haré la comparación mirando el problema de inferencia [5] en el modelo típico de CNN [1]: GoogleNet.

La mayor parte del tiempo de cómputo es utilizado por convoluciones, y en su mayoría están limitados por la cantidad de FLOPS [2] que tiene la GPU. Basado en eso, dos 1070 parece una mejor opción, ya que 2 x 1070 dan 2 x 6.5 TFLOPS = 13 TFLOPS, mientras que 1080ti solo da
10.6 TFLOPS.

El resto de capas, por ejemplo. la capa de agrupación está limitada por el ancho de banda de transferencia de memoria. Aquí tiene una diferencia entre 2 x 8 Gbps = 16 Gbps con memoria GDDR5 utilizada en 1070 y 11 Gbps con GDDR5x utilizada en 1080ti. De nuevo, 2 x 1070 tienen una ventaja sobre 1080.

La cantidad de memoria limita el tamaño del lote de entrenamiento e inferencia y está moderadamente correlacionado con el tiempo de ejecución. Aquí la ventaja tiene una combinación de 2 x 1070 con 2 x 8 GB en comparación con 11 GB en 1080ti.

El factor más importante que explica el tiempo de inferencia es el # de FLOPS. Con otras redes CNN, y para fines de capacitación, el análisis anterior sigue siendo válido, suponiendo la escalabilidad de los algoritmos utilizados.

Para la capacitación, lo más importante a considerar para usted es que si planea utilizar algoritmos que sean lo suficientemente escalables para ejecutarse en más de una GPU. Los algoritmos de entrenamiento RNN [3] son ​​muy malos para escalar (y la inferencia RNN de grandes problemas también es difícil de escalar), los algoritmos RI [4] son ​​bastante buenos y los algoritmos clásicos CNN [1] dependen moderadamente del uso modelo. Los algoritmos actuales de última generación están cambiando recientemente con respecto a las soluciones similares a RNN.

Mi recomendación general es comprar 2 x 1070 para fines de ingeniería pura y para el plan de usar modelos más grandes, especialmente si desea usar modelos ya entrenados.

El 1 x 1080ti (o Titan X / P100 si puede pagarlo) es una mejor opción para la investigación, si va a entrenar nuevos modelos y realizar experimentos. También es mejor si está buscando una solución a largo plazo, ya que tener una tarjeta más fuerte le permitirá agregar fácilmente una nueva en el futuro.

Me he saltado el análisis del uso de energía, ya que no es tan importante para la I + D de DL amateur. Si planea utilizar la tarjeta con una utilización del 100% durante muchos meses, le recomendaría que compre una solución profesional dedicada / un servidor dedicado en un lugar donde la energía sea barata.

Si se enfoca en la inferencia, asegúrese de usar nuestra última herramienta gratuita, TensorRT, que le brindará el mayor rendimiento de la GPU.

Descargo de responsabilidad: soy el desarrollador principal de esta herramienta

Compruebe también ¿Es el NVIDIA Titan X mejor que dos GTX 980 para un aprendizaje profundo?

[1] Redes neuronales convolucionales.

[2] Operaciones de coma flotante por segundo.

[3] Redes neuronales recurrentes

[4] Aprendizaje de refuerzo

[5] El proceso de avance del modelo: operación utilizada en la producción para ejecutar algoritmos de aprendizaje profundo en nuevos datos.

Realmente depende de su caso de uso. Si planea construir modelos realmente gigantescos o entrenarse en una gran cantidad de datos, es mejor que tenga 1070 múltiples, pero si está construyendo modelos pequeños o medianos o tiene conjuntos de datos pequeños o medianos, probablemente mejor con el 1080. ¿Por qué? Escribir buenos modelos paralelos de aprendizaje profundo que se ejecutan en múltiples GPU es difícil. En realidad, hay dos formas diferentes de hacer esto:

1.) Modelo paralelo:

Si tiene un modelo que es tan grande que no cabe en la memoria en una sola GPU, entonces desea utilizar este enfoque. En una arquitectura de modelo paralelo, se estiman diferentes parámetros del modelo con respecto al mismo lote de datos en diferentes GPU, luego las partes intercambian sus estimaciones para obtener la correcta. Esto es extremadamente difícil de hacer correctamente porque la división entre GPU será diferente para diferentes modelos y un solo modelo se puede dividir de muchas maneras.

2.) Datos paralelos:

Si tiene una gran cantidad de datos pero un modelo que cabe en la memoria en una sola GPU, entonces desea utilizar este enfoque. En una arquitectura de datos paralelos, se estiman los mismos parámetros del modelo con respecto a diferentes lotes de datos en diferentes GPU, luego las partes intercambian sus estimaciones para obtener el correcto. Esto es algo más fácil porque existen algoritmos establecidos que funcionan, como SGD asíncrono, pero aún no es trivial de implementar.

En cualquier caso, la cantidad de esfuerzo será mucho mayor que ejecutar todo en una sola GPU, y debido a la penalización de velocidad de transferencia de datos, realmente necesita un modelo enorme o una cantidad enorme de datos para justificar cualquiera de las arquitecturas. Entonces, a menos que tenga datos masivos o modelos masivos, o si ya está familiarizado con los modelos de entrenamiento en paralelo, optaría por el 1080.

VRAM no se acumula en SLI. ¡Y por supuesto! 2x 1070 es mejor.