¿Existe algún proyecto de código abierto que implemente algoritmos de aprendizaje profundo que aproveche la enorme potencia informática paralela de la GPU?

Deeplearning4j.org es una implementación de aprendizaje profundo de código abierto escrita para la JVM. Incluye una API Scala, y se integra con Spark y Hadoop / YARN. Puede comenzar a ejecutar ejemplos en unos minutos.

El DL4J es distribuido, de grado de producción y se integra con las GPU, por lo que puede manejar millones de parámetros rápidamente. De hecho, nos integramos con los núcleos CUDA para realizar operaciones en el almacenamiento subyacente de las GPU, lo que los hace mucho más rápidos.

Se integra con una vectorización “Rosetta Stone”, Canova, que facilita la carga de datos.

DL4J también puede desarrollar su propio sistema distribuido independiente a través de Akka y AWS.

DL4J ha implementado redes recurrentes (LSTM), autoencoders de eliminación de ruido recurrentes y apilados, Word2vec / Doc2vec / GloVe, RBM y DBN, Deep Autoencoders, redes convolucionales, redes tensoras neuronales recursivas.

Tenemos una comunidad activa en nuestro Grupo de Google. Dado que DL4J está escrito para JVM, funciona con Java, Clojure y Scala.

Creemos que Scala será el lenguaje dominante para la computación científica, para lo cual también creamos ND4J: N-Dimensional Arrays para Java.

  • Antorcha antorcha / antorcha7 antorcha / cutorch
  • Theano Theano / Theano Theano / libgpuarray
  • TensorFlow tensorflow / tensorflow
  • Veles Samsung / veles
  • Caffe BVLC / caffe
  • Deeplearning4j deeplearning4j / deeplearning4j

Todos estos marcos de aprendizaje profundo son de código abierto y tienen implementaciones de GPU. En general, CUDA parece ser la API preferida, pero algunos de ellos tienen implementaciones de OpenCL.

Hasta donde sé, la mejor biblioteca para el cálculo masivo de GPU paralelo / distribuido es la documentación de MXNet. Proporciona la implementación del sistema distribuido y MultiGPU. Además, su implementación es realmente rápida (más rápida que en Caffe o Torch). Si compara el número de dmlc / mxnet de implementación de GPU múltiple , verá que la escala es muy buena (el uso de 4 GPU en el caso de AlexNet proporciona una aceleración de 2.8, pero en el caso de GoogLeNet es 3.7).
Si analizamos el sistema distribuido dmlc / mxnet, se escala muy bien en el caso del ejemplo Cifar-10. Cuando analizamos la instancia de ImageNet y AWS, ¡tiene escalabilidad lineal! (usando 40 GPU en comparación con 4, obtén una velocidad 10 veces mayor). El GTX 980 no escala también, pero tal vez se deba a la lentitud de Ethernet.

En resumen, si desea entrenar un modelo realmente grande y tener más de 1 GPU, debe usar la biblioteca MxNet. Esta biblioteca está realmente optimizada para computación distribuida.

Las GPU son absolutamente esenciales para el aprendizaje profundo. Por lo tanto, se espera que la mayoría de los marcos DL de código abierto admitan GPU. De hecho, casi todos los marcos conocidos son compatibles con GPU. Sé de 4 formas en que las GPU son compatibles con los marcos DL. Estos son a través de cuDNN, cuBLAS, clBLAS y MKL. Los dos primeros son específicos de Nvidia, clBLAS es específico de OpenCL y el último es específico de Xeon Phi de Intel. Nervana y Facebook también tienen núcleos específicos de Nvidia.

Para Python, solo busca en Google theano. Tienen un buen tutorial para escribir software de aprendizaje profundo utilizando CUDA. La configuración e instalación lleva un poco de tiempo, pero es muy sencillo.

Está Caffe, una biblioteca C ++ / CUDA que implementa redes neuronales convolucionales profundas, con interfaces de Python y MATLAB.

Cafe

Los algoritmos de aprendizaje profundo son bastante recientes. Entonces no espero encontrar mucho. Una búsqueda rápida en Google me llevó a este proyecto: GPUMLib: Página principal

Por cierto, en estos días encontré una nueva plataforma que tiene capacidades muy interesantes y que se puede programar en el estándar C. Se llama Parallella. Podría ser un buen lugar para comenzar un nuevo proyecto si pudiera comprar algunos tableros, y son baratos. Parallella Computer Especificaciones

También hay deeplearning4j aunque está basado en Hadoop sobre hardware básico, no estoy seguro de que haya optimizaciones específicas de GPU en él.

More Interesting

¿Cuál es la diferencia entre D3M y el aprendizaje profundo?

¿Cómo escribe Google las pruebas para su algoritmo de búsqueda para que sepan que no lo rompieron al hacer cambios?

¿Cómo se asegura que el aprendizaje automático no aprenda la correlación cuando no hay causalidad, especialmente para la predicción?

¿Qué significa una probabilidad gaussiana en el clasificador bayesiano ingenuo gaussiano?

¿Cómo superan los modelos de lenguaje neuronal (NLM) la maldición del problema de dimensionalidad para modelar el lenguaje natural?

¿Funciona el aprendizaje profundo si las entradas están en un espacio dimensional relativamente bajo?

Cómo lidiar con una matriz escasa de pares de elementos de usuario mientras se construye un sistema de recomendación de filtrado colaborativo basado en perceptrón

¿Qué tan difícil es pasar de la optimización aplicada al aprendizaje automático / ciencia de datos?

¿Cuáles son los conceptos básicos de los campos aleatorios condicionales?

¿Cuál es la diferencia entre una inferencia y una predicción?

¿Puedo usar la agrupación (k-means, etc.) en un gran conjunto de datos para automatizar el proceso de búsqueda de similitudes y hacer recomendaciones?

¿Qué tipo de algoritmo de aprendizaje usa el cerebro humano y cómo se compara con los algoritmos que se están desarrollando actualmente para la inteligencia artificial?

Cómo combinar salidas del sistema de recomendación (matriz de elementos de usuario) a través de un conjunto

¿Necesita aprender CSE (motor de ciencias de la computación) para aprender inteligencia artificial, o hay cursos de ingeniería separados para IA y aprendizaje automático?

¿Prediciendo compras (en comercio electrónico) a través de modelos estadísticos o de aprendizaje automático?