¿Es posible el aprendizaje automático acelerado por GPU utilizando un controlador de gráficos de software libre?

EDITAR: La pregunta se editó para enfatizar el controlador de código abierto que no era el caso originalmente, preguntando sobre una pila de software de código abierto para el aprendizaje automático, que es más abstracto.

Con respecto al controlador: la mayoría de los marcos de aprendizaje profundo de hoy en día solo admiten controladores CUDA que son propietarios. Puede intentar entrenar redes neuronales en hardware de código abierto como el raspberry pi, pero se encontrará en una gran desventaja cuando se trata de software de aprendizaje profundo porque no tendrá acceso a los últimos y mejores modelos y marcos.

Aparte del controlador de GPU: si solo está mirando la pila de software de aprendizaje automático, la respuesta es SÍ. De hecho, la mayoría de las pilas de software disponibles que funcionan con GPU son de código abierto.

Es fundamental tener en cuenta que hay muchos algoritmos de aprendizaje automático hoy en día que no usan la aceleración de GPU, citando las preguntas frecuentes de scikit learn, que es un marco de aprendizaje automático de código abierto extremadamente popular en su elección de no agregar soporte de GPU en el marco :

¿Agregará soporte para GPU?

No, o al menos no en el futuro cercano. La razón principal es que el soporte de GPU introducirá muchas dependencias de software e introducirá problemas específicos de la plataforma. scikit-learn está diseñado para ser fácil de instalar en una amplia variedad de plataformas. Fuera de las redes neuronales, las GPU no juegan un papel importante en el aprendizaje automático hoy en día, y a menudo se pueden lograr ganancias mucho mayores en velocidad mediante una cuidadosa elección de algoritmos

  1. Los buenos marcos de código abierto de la CPU para recomendar son scikit learn, Apache Spark y XGBoost.
  2. XGBoost tiene soporte para GPU.
  3. Cada marco de aprendizaje profundo que vale la pena tiene soporte para GPU.

No, porque necesita un controlador de GPU de código cerrado. Todo lo anterior es o puede ser de código abierto.

No creo que ningún controlador de código abierto sea compatible con OpenCL / CUDA.

Incluso si puede obtener dicho controlador, el firmware de la GPU es de código cerrado. Incluso si obtiene ese código abierto, el microcódigo de la GPU y el diseño de la GPU siguen siendo de código cerrado.

Cuando dice “apilar”, siempre es útil especificar dónde considera que termina el “apilar”. Nada (bueno, casi nada) es de código abierto hasta el nivel de diseño del transistor.

(Respondió antes de la edición que enfatizó la parte de la pregunta que se centró en el controlador de gráficos)

El software es Por ejemplo, puede usar el código abierto yahoo / TensorFlowOnSpark de Yahoo. No necesita el hardware de la plataforma en la nube de Google para ejecutarlo. Obtener hardware gratis puede ser un problema. Necesitará un clúster que pueda pedir prestado (por ejemplo, si está afiliado a un laboratorio universitario o algo así), pero tendrá dificultades para obtener un clúster de servidores con GPU serias de forma gratuita. En el mejor de los casos, obtendrá un tiempo donado en un grupo de personas que tiene una causa que alguien quiere apoyar.

Si conoce el algoritmo para escribir usted mismo (como la propagación inversa de errores en capas ocultas) y sabe cómo escribir núcleos OpenCL pero si está trabajando en lenguaje C #, puede usar mi API GPGPU multi-gpu: tugrul512bit / Cekirdekler y su tutorial: Easy OpenCL Multiple Device Load Balancing and Pipelining For C #: Cekirdekler API

More Interesting

He asignado mis pesos (w) a un múltiple multinomial (o k-simplex), dividiendo cada componente de w por la suma de todos los componentes. ¿Cómo realizo la regularización (equivalente a l1 o l2) en el nuevo espacio multinomial múltiple (k-simplex)?

¿Cuáles son las relaciones entre diversidad y precisión en los enfoques de conjunto?

En su opinión, ¿la sugerencia de lectura recomendada basada en la actividad de navegación de los usuarios de Wikipedia mejorará la genialidad del sitio?

¿Cuáles son las ventajas de las máquinas de vectores de soporte (SVM) en comparación con la regresión lineal o la regresión logística?

¿Qué puedo hacer con un conjunto de datos de temperatura?

¿Qué es el sesgo y la varianza?

¿Cómo escribirías un programa de aprendizaje automático desde cero?

¿Son los modelos gráficos probabilísticos comúnmente vistos / muy utilizados en la minería de datos práctica / cotidiana?

¿Es el análisis de sentimientos todo sobre lingüística?

¿Qué son las unidades recurrentes cerradas y cómo se pueden implementar con TensorFlow?

¿Se puede usar una máquina de Boltzmann profunda para la clasificación de imágenes en una base de datos que tiene solo mil imágenes y tiene características de imagen de valor real como unidades de entrada (en lugar de unidades de píxeles binarios)?

¿Qué métodos (sin supervisión) deberían usarse para la categorización jerárquica automática de documentos?

¿Qué problemas o conjuntos de datos existen cuando usar el impulso da mejores resultados que usar un SGD simple?

Además de experimentar emoción, ¿qué cosas puede hacer un niño humano que una computadora no puede hacer?

Como principiante, ¿dónde y cómo aprendo a implementar algoritmos difíciles de aprendizaje profundo y otras técnicas similares en los lenguajes OOP?