¿Qué idioma es el mejor para construir código de producción de aprendizaje automático?

Mencionar el “código de producción” en la pregunta significa que la velocidad / rendimiento de ejecución y las escalas son importantes. Supongo que otros criterios de elección, como la disponibilidad de la biblioteca y los desarrolladores, etc., no son importantes aquí.

Por lo tanto, es posible que necesitemos elegir un idioma con la siguiente función para obtener el rendimiento

  1. Un lenguaje compilado (tipo estático): en general, los lenguajes compilados de tipo estático tardan en compilar el código para producir archivos ejecutables, pero se ejecuta más rápido que el programa escrito en lenguaje de secuencias de comandos de tipo dinámico. La compilación Just in Time (JIT) es otra alternativa. La administración de memoria podría aumentar el rendimiento, pero no es necesario en la programación de ML, ya que agrega más complejidades en el proceso de desarrollo.
  2. Expresividad: hay una buena cantidad de complejidades involucradas (tanto en términos de estructura de datos como de algoritmos) para escribir un programa de aprendizaje automático. Un lenguaje de paradigma múltiple (OOP + FP + ..) sería mejor. Las características como la sobrecarga del operador, la creación de iteradores, etc. son muy importantes.
  3. Ejecución en paralelo: utilizar GPU y soporte de múltiples idiomas centrales para ejecución paralela (y concurrente) es una buena característica para incluir en la programación de aprendizaje automático.

Algunos idiomas potenciales (que probé) son

  1. Julia
  2. Capilla: una muy prometedora, pero a menudo me encuentro con dificultades en el proceso de instalación (especialmente en Windows, instancia de Linux vm en Google Compute Engine)
  3. Nim: potencialmente una buena pero limitada compatibilidad con la biblioteca en este momento. Recursos limitados para aprender el idioma.
  4. Cristal: Característica completa, sintaxis similar a Ruby. Biblioteca y documentación limitadas. No hay soporte para subprocesos múltiples todavía. Todavía no está disponible para Windows
  5. Scala: Java + FP. Demasiadas funciones Compilado en código Java Byte.
  6. Swift: biblioteca Grand Central Dispatch (que se adapta bien a los sistemas Apple) para ejecución paralela.
  7. Ir: fácil pero faltan muchas funciones: sobrecarga, genéricos, etc. Muy bueno para tareas / aplicaciones específicas, pero no para el desarrollo de la biblioteca debido a la falta de funciones.
  8. C ++, Rust: complejidad añadida debido a la gestión de memoria

Ningún idioma es perfecto para el aprendizaje automático. En mi opinión, Julia o Chapel tiene un buen potencial para ser utilizado en la producción. Nim, Crystal son buenos. Ir también es una buena opción a pesar de la falta de características (a diferencia del desarrollo de la biblioteca, el desarrollo de aplicaciones requiere generalización ocasionalmente).

Python es el mejor lenguaje para construir código de producción de aprendizaje automático debido a su simplicidad, precisión y disponibilidad de una vasta biblioteca rica y poderosa para temas como el aprendizaje automático y la inteligencia artificial, uno puede encontrarlos más útiles en el caso del aprendizaje automático.

C ++ si está construyendo cada clasificador y modelo desde cero.

Si desea utilizar clasificadores existentes, no creo que C ++ tenga una biblioteca tan grande. En este caso, Python es una muy buena alternativa.

Lamentablemente Python. No por su falta de un hilo de diseño lingüístico, sino por la amplia disponibilidad y accesibilidad de las herramientas y bibliotecas de aprendizaje automático. Y también el grupo existente de homínidos AI (o, a veces, “AI”) con los que puede interactuar.